Luma
Log in
Developers

Everything the dashboard can do. Also an API call.

A REST API for SMS, WhatsApp and Email, plus the same AI that writes campaigns in the dashboard, available at a single endpoint.

curl -X POST https://api.luma.africa/v1/messages \
-H "Authorization: Bearer sk_live_•••" \
-H "Content-Type: application/json" \
-d '{
"channel": "sms",
"to": "+2348012345678",
"sender_id": "ADIRECO",
"body": "Hi {FIRST_NAME}, your order has shipped."
}'

Why developers pick Luma

Live & test keys

Every account gets a live and test key pair. Test mode simulates delivery webhooks and is never billed.

Idempotency keys

Every send endpoint accepts an idempotency key, so a retried request never double-sends or double-charges.

Webhooks

Delivery, read and click events pushed to your endpoint as they happen.

Generous rate limits

100 requests/second on send endpoints, 20/second on contact endpoints — with clear 429 and Retry-After responses.

Request logs

Every call logged for 30 days — method, endpoint, status, latency, response body, searchable by request ID.

Postman & OpenAPI

A published OpenAPI 3.1 spec and Postman collection, so your team can start without reading a page of docs.

POST /v1/ai/generate

The AI Message Studio, over the API.

Send your product and audience; get back channel-ready copy, screened against NCC and DND rules, ready to send with any endpoint below.

{
"product": "New Ankara arrivals, 10% off",
"audience": "Lagos, purchased in 90 days",
"channel": "sms"
}
 
→ 3 variants, screened & ready

Core API surface

Method
Endpoint
Purpose
POST/v1/messagesSend a single message (SMS/WhatsApp/Email)
POST/v1/campaignsCreate and optionally send a campaign
GET/v1/campaigns/{id}Retrieve campaign status and stats
GET/v1/messages/{id}Retrieve delivery status of one message
POST/v1/phonebooksCreate a phonebook
GET/v1/phonebooksList phonebooks
POST/v1/phonebooks/{id}/contactsAdd contacts (single or bulk)
GET/v1/phonebooks/{id}/contactsList contacts
DELETE/v1/contacts/{id}Remove a contact
GET/v1/walletRetrieve balance
GET/v1/transactionsList transactions
GET/v1/sender-idsList sender IDs and approval status
POST/v1/ai/generateGenerate message copy from a brief
GET/v1/insightsRetrieve aggregated analytics
Authentication

Bearer token in the Authorization header. Live keys are prefixed sk_live_, test keys sk_test_.

Secret keys are shown in full only once at generation, then masked with a reveal action requiring password re-entry.

Rate limits

100 requests/second on send endpoints, 20 requests/second on contact endpoints.

429 responses include a Retry-After header.

Webhooks

Configure endpoints and signing secrets from Settings → Webhook Configuration.

message.sentmessage.deliveredmessage.failedmessage.readcampaign.completed

Start building in minutes.

Free live and test keys the moment you sign up.