SendComms
SMS API

Send SMS

POST/api/v1/sms/send

Send SMS messages globally with intelligent routing. We automatically optimize delivery routes to ensure the best rates and reliability for every destination.

Global Coverage: 180+ countries with optimized delivery routes
Default Sender:Messages sent without a from parameter will be delivered from "Sendcomms". To use a custom sender ID, add and verify numbers in your dashboard.

Coverage

🌍
Africa
Optimized
54 countries
πŸ‡ΊπŸ‡Έ
Americas
Full Coverage
US, Canada, LATAM
πŸ‡ͺπŸ‡Ί
Europe
Full Coverage
45+ countries
🌏
Asia Pacific
Full Coverage
35+ countries

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.

DestinationRoute
31 African countriesLocal African network β€” best rates and deliverability
Rest of AfricaRegional African route
Everywhere elseGlobal 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 from and 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.
REQUEST
# 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

ParameterTypeRequiredDescription
tostringRequiredPhone number in E.164 format (+233...)
messagestringRequiredSMS content (max 1600 chars)
fromstringOptionalSender ID or phone number. If omitted, messages are sent from "Sendcomms"
referencestringOptionalYour reference for tracking
regionstringOptionalForce routing: africa, europe, asia, north_america
idempotency_keystringOptionalUnique key to prevent duplicates

Response Codes

200Success400Bad request401Unauthorized402Insufficient balance429Rate limit exceeded

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.

Standard (GSM-7)
160
characters per segment
A-Z, 0-9, basic punctuation
Unicode (UCS-2)
70
characters per segment
Emojis, non-Latin scripts