Authentication
Create a key under Business → API keys. Send it on every request:
Authorization: Api-Key ll_xxxxxxxx.your-secret
Keys are shown once and stored hashed. Revoke a key at any time; requests using it fail immediately.
List bundles
GET /api/v1/bundles/
Returns each bundle's code, network, allowances, retail price and your_price.
Place an order
POST /api/v1/orders/
Idempotency-Key: 6f1c2a0e-… (8–64 characters, required)
Content-Type: application/json
{"bundle": "mtn-1gb-daily", "recipient": "0241234567"}
Responds 201 with the order. Re-sending the same Idempotency-Key returns the original order instead of charging again — always retry with the same key.
Errors: 400 invalid bundle or number, 402 insufficient wallet balance, 429 rate limit (60 orders/minute).
Track an order
GET /api/v1/orders/LL-XXXXXXXX/
status is one of queued, processing, under_review, delivered, failed, refunded. Only delivered means the network confirmed delivery. Failed orders are refunded to your wallet automatically.
Wallet balance
GET /api/v1/wallet/