Send SMS
Send SMS messages globally with intelligent routing. We automatically optimize delivery routes to ensure the best rates and reliability for every destination.
from parameter will be delivered from "Sendcomms". To use a custom sender ID, add and verify numbers in your dashboard.Coverage
Select Language
How your message is routed
We pick the carrier route from the destination number. You do not choose a provider β if the first route is unavailable we automatically fall back to the next one, and you are billed at the rate you were quoted.
| Destination | Route |
|---|---|
| 31 African countries | Local African network β best rates and deliverability |
| Rest of Africa | Regional African route |
| Everywhere else | Global route (180+ countries) |
Check any destination with GET /api/v1/sms/countries rather than hard-coding a list β routes change as coverage does.
Delivery status is reported on every route. Check it with the request log or subscribe to sms.delivered / sms.failed webhooks β a successful send means the carrier accepted it, not that it has arrived yet.
Choosing the sender
- Omit
fromand the message goes out under the default sender. This always works. - A phone number must be one you have verified.
- An alphanumeric name (e.g.
AcmeCorp) must be a registered sender ID β see Sender IDs. Ghanaian carriers block unregistered names outright. - Using a sender ID registered to another account returns
403 SENDER_ID_NOT_YOURS.
# Send SMS using default "Sendcomms" sender
curl -X POST \
https://api.sendcomms.com/api/v1/sms/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+233540800994",
"message": "Your verification code is 123456"
}'
# Send SMS with custom sender (requires verified number)
curl -X POST \
https://api.sendcomms.com/api/v1/sms/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+233540800994",
"message": "Your order is ready!",
"from": "+1234567890"
}'Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| to | string | Required | Phone number in E.164 format (+233...) |
| message | string | Required | SMS content (max 1600 chars) |
| from | string | Optional | Sender ID or phone number. If omitted, messages are sent from "Sendcomms" |
| reference | string | Optional | Your reference for tracking |
| region | string | Optional | Force routing: africa, europe, asia, north_america |
| idempotency_key | string | Optional | Unique key to prevent duplicates |
Response Codes
Response
Success Response
When an SMS is successfully sent, you'll receive details including the provider used, pricing, and destination info.
{
"success": true,
"data": {
"transaction_id": "sms_abc123xyz",
"message_id": "SM1234567890",
"status": "sent",
"to": "+233540800994",
"message_length": 32,
"segments": 1,
"country": {
"code": "233",
"name": "Ghana"
},
"region": "africa",
"created_at": "2025-12-23T10:00:00.000Z"
}
}SMS Segments
Long messages are split into multiple segments. Each segment is billed separately.
