Skip to main content

Adresse et format

  • Toutes les routes sont sous https://lekalao.example.com/api/v1.
  • Envoyez et recevez du JSON : Content-Type: application/json et Accept: application/json.
  • Une ressource seule est enveloppée dans data : {"data": {…}}.
  • Les dates sont en ISO 8601 avec fuseau : 2026-09-17T09:12:44+00:00. Sans fuseau, une date envoyée est lue dans le fuseau de l’installation (UTC par défaut).
  • Les montants sont des entiers dans la plus petite unité de la devise : 1250 = 12,50 €. Pour le franc CFA, qui n’a pas de subdivision, 15000 = 15 000 FCFA.

Identifiants

Chaque ressource est désignée par son id, qui est un uuid et jamais un numéro de ligne. Les adresses se construisent avec : /api/v1/lists/{id}/subscribers. Les tags peuvent aussi être désignés par leur nom là où c’est naturel : tags d’un abonné, règles de segment.

Pagination

Les listes sont paginées :
Suivez links.next jusqu’à ce qu’il vaille null.

Limite de débit

Chaque jeton peut faire 120 appels par minute (réglable par l’installation). Chaque réponse dit où vous en êtes :
Au-delà, la réponse est 429 avec Retry-After en secondes :
Attendez Retry-After secondes avant de reprendre. Pour inscrire beaucoup de monde, utilisez le lot : un appel pour 1 000 adresses.

Idempotence

Un appel qui expire vous laisse dans le doute : la commande est-elle passée ? Ajoutez un en-tête Idempotency-Key à vos POST et PUT et renvoyez le même appel sans risque :
Choisissez une clé qui décrit l’opération (numéro de commande + action) ou un UUID généré avant le premier essai. 255 caractères au plus. Les clés sont propres à chaque équipe.

CORS

Les routes api/* et subscribe/* acceptent les appels venant de n’importe quelle origine, sans cookies. Les en-têtes de débit et d’idempotence sont lisibles par le navigateur.
CORS ouvert ne veut pas dire qu’il faut appeler l’API depuis un navigateur : le jeton y serait visible de tous. Seul le formulaire d’inscription est fait pour ça.