The API
Send, then read back
- Post a message with a number, a sender and a body. It answers with its ID, its encoding and part count, its price and its country.
- Get it back with its status, the network it went to, each part's operator ID and receipt, and the error in plain words if it failed.
- List your latest messages, and find any of them in the console's log and analytics.
{
"id": "6f1c3d2a-7c1e-4e0b-9d2f-2b1f4b9a2e10",
"to": "+447700900123",
"from": "Acme",
"status": "delivered",
"country": "GB",
"network": "Vodafone UK",
"encoding": "gsm7",
"segments": 1,
"price_micros": 29000,
"error_code": null,
"attempts": 1,
"created_at": "2026-10-30T14:02:08Z",
"done_at": "2026-10-30T14:02:12Z",
"parts": [
{ "seq": 1, "status": "delivered", "smsc_id": "beed0ac9ca",
"receipt_stat": "DELIVRD", "done_at": "2026-10-30T14:02:12Z" }
]
}
Every message tells you
its parts, its price
and how it was
delivered.
Webhooks
A delivery webhook you can trust
- Signed with your webhook secret, so you can check every event came from us.
- Retried automatically when your endpoint is down, so a short outage on your side loses nothing.
- A delivery log in the console: every event we sent and what your endpoint answered.
- One address or one per message, and a secret you can rotate.
X-Smsgw-Timestamp: 1792787391
X-Smsgw-Signature: v1=8f3c…e2a1
Content-Type: application/json
{
"event_id": "evt_01JB4…",
"type": "message.delivered",
"message_id": "6f1c3d2a-7c1e-4e0b-9d2f-2b1f4b9a2e10",
"status": "delivered",
"to": "+447700900123",
"from": "Acme",
"segments": 1,
"error_code": null,
"occurred_at": "2026-10-30T14:02:12Z"
}
Details
The small things that save a day
Idempotency keys
Send the same key with the same body and you get the original message back without a second charge. The same key with a different body is refused, so a retry can never send twice.
Encoding handled
GSM and Unicode are detected for each message. Smart encoding swaps curly quotes and dashes for their GSM equivalents, so a punctuation mark never splits a message in two.
Short links with clicks
Ask for links to be shortened and see who clicked, message by message, in the message log and campaign reports.
A rate limit that waits
Over your limit, the API tells you how long to wait instead of dropping the request. A big campaign never delays your codes.
Outages handled
If a destination cannot be reached for a while, messages wait and go out when it is back. Parts that never reach an operator are refunded.
Sender IDs, once
Register a sender for the countries you send to; approved senders work on the API, SMPP and the console alike.
Send a code to your own phone in five minutes
Get an API key, send a code to your own phone, and read it back with its receipt.
Free test credits. No card, no monthly fee, no contract.

