SMS API
Send transactional and marketing SMS messages to any mobile number. From single alerts to bulk campaigns — with automatic formatting, segmentation, and real-time delivery receipts.
Global Delivery
Reach any mobile number worldwide with intelligent routing across multiple carrier networks.
Instant Dispatch
Sub-second message queuing with typical delivery under 5 seconds for Ghana networks.
Sender ID Verified
Only pre-approved alphanumeric sender IDs are accepted — preventing spam and protecting your brand.
Delivery Tracking
Real-time delivery receipts with provider-level feedback and per-message status tracking.
Bulk Messaging
Send to thousands of recipients in one request with automatic batching and rate management.
Smart Segmentation
Messages over 160 characters are automatically split and concatenated on the recipient's device.
<5s
On Ghana networks
1530
characters (10 segments)
100/s
per API key
10,000
recipients per request
Authentication
Send your first SMS in under a minute:
curl -X POST 'https://api.sendexa.co/v1/sms/send' \-H 'Content-Type: application/json' \-H 'Authorization: Basic YOUR_DASHBOARD_BASE64_TOKEN' \-d '{"to": "0244123456","from": "MyBrand","message": "Hello from Sendexa! Your order #1234 is confirmed."}'
Response
{"success": true,"message": "SMS sent successfully","data": {"messageId": "exa_sms_1a2b3c4d5e6f","status": "queued","to": "233244123456","from": "MyBrand","segments": 1,"cost": 1}}
API Endpoints
/v1/sms/sendSend a single SMS to one recipient with full delivery tracking.
/v1/sms/bulkSend the same or personalised messages to multiple recipients in one call.
/v1/sms/status/:idPoll the delivery status of any message using its message ID.
/v1/sms/resend/:idRetry delivery of a failed or undelivered message without rebuilding the payload.
Order confirmations, delivery alerts, account notifications, and security codes triggered by user actions.
Promotional campaigns, offers, event reminders, and bulk announcements sent to opted-in subscriber lists.
Messages queued for future delivery at a specific ISO 8601 timestamp — ideal for reminders and campaigns.
Sender ID Requirements
- Must be 3–11 characters, letters and numbers only (no spaces or symbols)
- Must be pre-approved in the dashboard before use
- Unapproved or pending sender IDs will be rejected with a 403 error
| Status | Meaning | Action |
|---|---|---|
| queued | Message accepted, waiting to be sent to carrier | Wait — normal |
| sent | Handed off to the carrier network | Wait for delivery receipt |
| delivered | Confirmed delivered to the handset | Success — store the receipt |
| failed | Carrier rejected or number unreachable | Check error code, consider resend |
| expired | Message not delivered within validity period | Use /resend endpoint |
| HTTP | Code | Cause |
|---|---|---|
| 400 | INVALID_PHONE | Phone number format not recognised |
| 400 | MESSAGE_TOO_LONG | Message exceeds 1530 characters (10 segments) |
| 401 | UNAUTHORIZED | Missing or invalid Authorization header |
| 403 | SENDER_ID_NOT_APPROVED | Sender ID pending approval or rejected |
| 403 | INSUFFICIENT_CREDITS | Account balance too low to send |
| 429 | RATE_LIMIT_EXCEEDED | Exceeded 100 req/s — implement exponential backoff |
Best Practices
- Store the
messageIdfrom every response to enable status checks and resends - Use webhooks for delivery receipts instead of polling the status endpoint
- Validate phone numbers client-side before hitting the API to save credits
- For bulk sends, use
POST /v1/sms/bulk— not repeated single sends - Implement exponential backoff when you receive a 429 response
- Keep messages under 160 characters when possible to use a single SMS credit