Address and format
- Every route lives under
https://lekalao.example.com/api/v1. - Send and receive JSON:
Content-Type: application/jsonandAccept: application/json. - A single resource is wrapped in
data:{"data": {…}}. - Dates are ISO 8601 with a time zone:
2026-09-17T09:12:44+00:00. Without one, a date you send is read in the installation’s time zone (UTC by default). - Amounts are integers in the smallest unit of the currency:
1250is 12.50 €. For the CFA franc, which has no subdivision,15000is 15,000 FCFA.
Identifiers
Every resource is named by itsid, which is a uuid and never a row number. Addresses are built with it: /api/v1/lists/{id}/subscribers.
Tags may also be named by their name where that reads better: a subscriber’s tags, segment rules.
Pagination
Listings are paginated:links.next until it is null.
Rate limit
Each token may make 120 calls a minute (the installation can change it). Every answer says where you stand:429 with Retry-After in seconds:
Retry-After seconds before starting again. To subscribe many people, use the batch: one call for 1,000 addresses.
Idempotency
A call that times out leaves you guessing: did the order go through? Add anIdempotency-Key header to your POST and PUT calls and send the same call again without risk:
Choose a key that describes the operation (order number plus action) or a UUID generated before the first attempt. 255 characters at most. Keys belong to one team.
CORS
Theapi/* and subscribe/* routes accept calls from any origin, without cookies. The rate-limit and idempotency headers are readable by the browser.