Sendora Developer API
The Sendora REST API gives developers direct programmatic control over high-throughput SMS delivery, sub-second 2FA OTP codes, balance checks, scheduled broadcast drops, and automated two-way STOP opt-out compliance.
https://api.sendora.com/api/v1Authentication
Authenticate all requests by including your secret API key in the HTTP request headers. Sendora supports both the standard Authorization: Bearer <API_KEY> header and the custom api-key: <API_KEY> header.
Dispatch an SMS message immediately or schedule it for a future timestamp.
curl -X POST https://api.sendora.com/api/v1/send \
-H "Authorization: Bearer sk_live_sendora_9f82d1c7e4a10" \
-H "Content-Type: application/json" \
-d '{
"to": "+233241234567",
"body": "Your Sendora verification OTP is 849201. Valid for 10 minutes.",
"from": "Sendora"
}'Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| to | string | Required | Destination phone number in international E.164 format (e.g. +233241234567) or local format (0241234567). |
| body | string | Required | The text message content. Automatically segmented based on GSM-7 (160 chars) or Unicode (70 chars). |
| from | string | Optional | Alphanumeric Sender ID (up to 11 characters, e.g. Sendora). Defaults to your verified organization Sender ID. |
| schedule | string | Optional | ISO 8601 timestamp (e.g. 2026-10-20T10:00:00Z) for future scheduled delivery. |
Sample 200 OK Response
{
"id": "msg_1729000182_a8f9",
"direction": "outbound",
"from": "Sendora",
"to": "+233241234567",
"status": "delivered",
"segments": 1,
"cost": 0.0800,
"currency": "GHS",
"provider": "telecom_gateway",
"created_at": "2026-10-16 23:15:00"
}Query your remaining prepaid wallet balance and estimated SMS units.
curl -X GET https://api.sendora.com/api/v1/balance \ -H "Authorization: Bearer sk_live_sendora_9f82d1c7e4a10"
Sample 200 OK Response
{
"status": "success",
"data": {
"currency": "GHS",
"currency_symbol": "GH₵",
"balance_ghs": 2450.50,
"sms_units_remaining": 30631,
"plan": "Pay-As-You-Go",
"rates": {
"mtn": 0.0800,
"telecel": 0.0800,
"airteltigo": 0.0800,
"international": 0.3500
}
}
}Inbound SMS & TCPA Opt-Out Webhook
Sendora automatically listens for inbound recipient replies and handles TCPA opt-out compliance. When a customer replies with STOP, CANCEL, or UNSUBSCRIBE, our system automatically adds them to your suppression list and triggers an inbound webhook.
{
"event": "sms.received",
"from": "+233241234567",
"to": "Sendora",
"body": "STOP",
"action_taken": "opted_out",
"timestamp": "2026-10-16T23:18:22Z"
}HTTP Status Codes & Errors
The Sendora API uses standard HTTP response codes to indicate success or failure.
| Status Code | Meaning | Remediation |
|---|---|---|
| 200 OK | Success | Request processed successfully. |
| 400 Bad Request | Missing Parameters | Ensure to and body are present in JSON body. |
| 401 Unauthorized | Invalid API Key | Check that your Authorization: Bearer token is active. |
| 402 Payment Required | Insufficient Wallet Credits | Top up your wallet via Paystack or GHIPSS Bank Transfer. |
| 429 Too Many Requests | Rate Limited | Exceeded 100 req/sec quota. Implement exponential backoff. |
Ready to integrate Sendora into your application?
Generate free developer API keys in seconds, top up with pure Pay-As-You-Go pricing, and enjoy 99.98% delivery SLA across West Africa and globally.