For partner apps

Your users post their progress on Bemelio, with a visual in your colors.

A button in your app opens Bemelio with a ready-made post, signed “via” your app. All it takes is a link: no SDK, no key.

Request access

Free access. Members always approve their post.

Bemelio story of a daily streak, signed via your appBemelio story of a run, signed via your appBemelio story of a reading session, signed via VREAD
Screenshots of the Bemelio app. In the middle, a reading session shared from VREAD.

How it works

  1. 1
    A button in your app

    After a workout, a reading session or a run, “Share on Bemelio” opens a link that carries the activity.

  2. 2
    The member approves on Bemelio

    The post is ready, in the right goal. They review it, can edit the text, then post it themselves.

  3. 3
    The story spreads the word about your app

    In one tap, they share it as a story, in your colors, with your logo and “via” your app, for their friends to see.

What your app does: open a link

No SDK, no server-to-server exchange. The activity travels in the d parameter, a JSON encoded in base64url.

https://bemelio.com/partage?app=slug&outil=outil&d=base64url(JSON)
Build your link
Your link
https://bemelio.com/partage?app=your-app&outil=lecture&d=eyJ0aXRyZSI6IlRoZSBTdHJhbmdlciIsInZpc3VlbCI6eyJ0aXRyZSI6IlRoZSBTdHJhbmdlciIsInBhZ2UiOjE0OCwidG90YWwiOjE4Nn19
See the JSON
{
  "titre": "The Stranger",
  "visuel": {
    "titre": "The Stranger",
    "page": 148,
    "total": 186
  }
}

Scan this code to try the link on your phone.

Until your app is activated, the link opens Bemelio on a polite error message, and nothing is posted.

The button, in a few lines

The examples use the link you just built.

func shareOnBemelio() {
  let data: [String: Any] = [
    "titre": "The Stranger",
    "visuel": ["titre": "The Stranger", "page": 148, "total": 186],
  ]
  guard let json = try? JSONSerialization.data(withJSONObject: data) else { return }
  let d = json.base64EncodedString()
    .replacingOccurrences(of: "+", with: "-")
    .replacingOccurrences(of: "/", with: "_")
    .replacingOccurrences(of: "=", with: "")
  if let url = URL(string: "https://bemelio.com/partage?app=your-app&outil=lecture&d=\(d)") {
    UIApplication.shared.open(url)
  }
}
See all tools
Fields of d
titrestring(48)The card title, on one line.
textestring(500)The message suggested to the member, who can edit it.
visuel{ }Required: the numbers that draw the tool's visual.
stats[3]Optional: let Bemelio compute them, in the member's language.
Tools and fields of visuel
ToolFieldsKey data
Reading lecture
titre string(80) · auteur string(60) · page, total 0-20000 · jour 0-5000 · semaine [7] · serie 0-3650 · finDans 0-999 · fini bool · note 0-5 · lus [24] string(60) · cible 0-365titre | cible | lus
Run course
km 0-1000 · duree 0-360000 (s) · dplus 0-20000 · trace [[lat, lon], ...] (100)km + duree
Streak serie
mois 0-11 · annee · coches [31] 1-31 · aujourdhui 0-31 · serie, record, prochain 0-100000serie
Ride velo
km 0-2000 · semaines [8] · objectif · dplus 0-20000 · vitesse 0-200km
Hike rando
km 0-500 · dplus, dmoins 0-20000 · altMax 0-9000 · saisonDpluskm
Swim natation
m 0-100000 · longueurs 0-4000 · bassin 0-100 · allure string(8) · semaines [8]m
Meditation meditation
Yoga yoga
min 0-1440 · jours [7] · objectifmin
Languages langue
code string(3) · niveau, cible A1-C2 · min · mots 0-1000000 · seriemin | mots
Music musique
min · jours [7] · bpm, cibleBpm 0-400min
Drawing dessin
Photography photo
Timer chrono
min 0-100000 · jours [7] · unite string(14)min
Writing ecriture
mots 0-1000000 · jours [14] · objectif · manuscrit 0-100mots
Cooking cuisine
recettes 0-1000 · cuisines [12] string(3) · niveau 0-4 · pct 0-100recettes | cuisines
Study etudes
min · jours [7] · pct 0-100 · examDans 0-999 · matieres [5] 0-1min | pct
Savings epargne
pct 0-100 · mois 0-600 · versements
Never an amount
pct
Habits habitudes
jours [84] 0-1 · faites, prevues 0-100 · serieprevues
Climbing escalade
voies [24] { cote, res: onsight | flash | sent | project | failed } · maxvoies[0]
Job search emploi
envoyees, reponses, entretiens, offres 0-10000envoyees
Audience audience
points [16] · palier · plateforme string(20)points (2+)

Numbers are positive and clamped to their bounds. Unknown fields are ignored. A visual without its key data gets the link refused. The full link is 6,000 characters at most.

The rules

  • The member always approves. A link never posts anything on its own.
  • For finance, no amounts: only percentages. Always the member's real numbers, with no health data.
  • Access is free.
  • Your app must be activated by Bemelio, which gives you your ID, your color and your tools.

Ready to plug in your button?

Tell us which app and which tools. We activate your ID and your colors.

Request access