Send SMS
Send a single SMS message with comprehensive delivery tracking, automatic number formatting, and real-time status updates.
Quick Start Video (2 mins)
2:15
International Format Support
Automatically converts local Ghanaian numbers (055xxxxxxx) to international format (23355xxxxxxx)
Smart Segmentation
Messages >160 characters are automatically split into multiple segments (max 1530 chars)
Sender ID Verification
Only pre-approved sender IDs can be used. Pending IDs will be automatically rejected.
Delivery Tracking
Real-time delivery status with provider-level feedback and error codes
Authentication Required
Use Basic Auth with your API credentials. Encode your API Key and Secret in base64 format:
base64(api_key:api_secret)Avg Response Time
150ms
95th percentile
Cost per SMS
₵0.035
1 credit = 1 SMS
Max Message Length
1530
characters (10 segments)
Rate Limit
100/s
per API key
POST
/v1/sms/send
Core
Stable
Request Body
application/json
{"to": "0555539152","from": "YourBrand","message": "Hello from Sendexa!"}
Response
{"success": true,"message": "SMS sent successfully","data": {"id": "clxyz123abc","messageId": "exa_api_123456789_abc123def","status": "delivered","cost": 1,"to": "233555539152","from": "YourBrand","segments": 1,"timestamp": "2024-01-15T10:30:00Z","estimatedDelivery": "2024-01-15T10:30:05Z"}}
Try It Yourself
POST
https://api.sendexa.co/v1/sms/sendCode Examples
curl -X POST 'https://api.sendexa.co/v1/sms/send' \-H 'Content-Type: application/json' \-H 'Authorization: Basic YOUR_BASE64_CREDENTIALS' \-d '{"to": "0555539152","from": "YourBrand","message": "Hello from Sendexa SMS API!"}'
Common Use Cases
OTP
Two-Factor Authentication
Send verification codes with 5-minute expiry
Marketing
Promotional Messages
Schedule campaigns with personalized content
Transactional
Order Confirmations
Real-time updates with delivery tracking
Rate Limits
Burst limit for peak traffic
100 requests per second
Sustained rate limit
5000 requests per minute
Daily soft limit
100000 requests per day
HTTP Status Codes
| Code | Status | Description |
|---|---|---|
| 200 | OK | SMS sent successfully |
| 400 | Bad Request | Invalid phone number or missing parameters |
| 401 | Unauthorized | Invalid or missing API credentials |
| 403 | Forbidden | Sender ID not approved or insufficient credits |
| 429 | Too Many Requests | Rate limit exceeded (100 requests/second) |
Best Practices
- Always validate phone numbers client-side before sending
- Store messageId for future status checks and resends
- Implement exponential backoff for retries on 429 responses
- Use webhooks instead of polling for delivery status updates