SMS API
Branded SMS to every Kenyan network. Safaricom, Airtel, Telkom and Equitel. Through a REST API whose contract is frozen: it will never change under you.
Endpoints at a glance
- POST /v1/send/message, one message to one number
- GET /v1/send/messageget. The same send as a plain URL, for ERPs that can't POST
- POST /v1/send/bulk, one message to many numbers
- POST /v1/send/bulk-personalized. A different message per number
- POST /v2/send/message. Adds your own trackingId and returns cost
- POST /v1/dlr. Delivery report lookup (plus push webhooks)
- GET /v1/get-balance/: SMS credit balance
- GET /v1/groups/. Contact group management
Platform endpoints (under /api/v1/, scoped tokens):
- Sender ID requests. Apply for your branded sender with documents, track approval
- Campaigns. Group sends with drafts, scheduling, live progress and resend
- Blacklist. Your opt-out list, per sender or global
Concepts in one minute
Sender IDs
The name that appears on the recipient's phone (e.g. MOBILESASA, your brand). Sender IDs are registered per network. apply over the API with your business documents; the API rejects sends from names your account doesn't own.
Message parts & billing
A single SMS carries 160 GSM-7 characters (70 for Unicode). Longer texts are split into parts of 153 (67 Unicode) and rebuilt on the handset. You are billed per part. Accented characters are transliterated to plain ASCII before sending so a stray “é” doesn't silently double your bill.
Priority
Transactional traffic (OTPs, alerts) is dispatched on a high-priority lane ahead of bulk marketing, so a campaign never delays a login code.
Which endpoint should I use?
/v1/send/message. Same text to a list → /v1/send/bulk. Different text per person (names, amounts) → /v1/send/bulk-personalized. Need to reconcile sends against your own IDs, or want the cost back → use the v2 variant.