API Docs

Send SMS and check your wallet balance from your own systems. Generate a personal API key from your dashboard under SMS Api, then integrate directly against the endpoints below — no SDK to install.

Send SMS

POST Endpoint

/api/v1/sms/send

Headers

Authorization: Bearer sms_live_...
Content-Type: application/json

Request body

{
  "senderId": "YourBrand",
  "to": ["+233244000000", "+233201234567"],
  "message": "Hello from the API",
  "unicode": false
}

Response (200)

{
  "sent": 2,
  "failed": 0,
  "unitsCharged": 2,
  "walletBalance": 148,
  "recipients": [
    { "to": "+233244000000", "status": "sent" },
    { "to": "+233201234567", "status": "sent" }
  ]
}

Every send debits the caller's own wallet and requires an approved Sender ID on their account, exactly like sending from the dashboard. Errors return a non-2xx status with { "error": "..." }.

Check balance

GET Endpoint

/api/v1/sms/balance

Headers

Authorization: Bearer sms_live_...

Response (200)

{
  "balance": 148,
  "currency": "units"
}
Legacy URL-based endpoints

For systems that can't send custom headers, the API key can go in the query string instead — mirrors the old system's own API shape, for drop-in migration. Prefer the header-based endpoints above where possible: a key in a URL can end up in server logs or browser history.

Endpoints

GET /api/v1/sms/api?action=send-sms&api_key=...&to=...&from=...&sms=...
GET /api/v1/sms/api?action=check-balance&api_key=...
GET /api/v1/contacts/api?action=subscribe-us&api_key=...&phone_number=...