What makes it different
Multi-country by default
NG · GH · KE · CI today. Country is auto-detected from the E.164 number.
Provider failover
Primary carrier down? We fail over automatically and log every attempt.
Test mode with DLRs
Magic numbers produce delivered / failed / slow / DND. Zero cost.
Templates with variables
{{.driver_name}} placeholders rendered server-side.How a send works
1
POST /v1/sms
Your request is validated (E.164, sender ID, body length) and assigned a message ID.
2
Billed
Wallet is reserved for overage (or covered by your plan’s monthly allowance). Country determines the rate.
3
Queued
Message is persisted and a background job is enqueued. Response returns
status: "queued" immediately.4
Routed
Worker picks the provider chain for the destination country, attempts each in order until one accepts. Every attempt is logged.
5
Delivered
Upstream carrier posts a delivery report to our DLR endpoint. We correlate, update status, and fire your webhook.
Pricing
Billing is per-segment (160 GSM-7 chars or 70 UCS-2 chars = 1 segment). Your plan includes a monthly allowance; overage is debited from your wallet at per-country rates.
See Multi-country for the full table and currency handling.
Start here
Send your first SMS
Full send API with all options explained.
API reference
Live playground for
POST /v1/sms.