Passer au contenu principal

Adresse et format

  • Toutes les routes sont sous https://api.lekalao.com/v1 ; sur votre propre installation, sous https://votre-domaine/api/v1.
  • Les formulaires d’inscription, les webhooks d’automatisation et les archives sont des pages, pas des routes de l’API : ils restent sur https://panel.lekalao.com.
  • 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 : /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, PUT et PATCH 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. DELETE ignore l’en-tête : supprimer deux fois supprime une fois, et le second appel répond 404. Les appels GET ne changent rien et n’ont pas besoin de clé.

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.