SMS API for Kenya: bulk SMS to +254 numbers
Kenya
Calling code +254
- Per SMS segment
- $0.02147
- Messages for $100
- 4,657
- Local language
- English and Swahili
- Encoding
- GSM-7
What a bulk SMS send to Kenya costs
| Messages | 1 segment | 2 segments |
|---|---|---|
| 1 | $0.02147 | $0.04294 |
| 1,000 | $21.47 | $42.94 |
| 10,000 | $214.70 | $429.40 |
| 100,000 | $2,147.00 | $4,294.00 |
Number format in Kenya
Mobile numbers in Kenya have 9 digits after +254. Locally they are written with a leading 0 (0712 123456); in the API that 0 is dropped, so the same number goes in the to field as +254 712 123456.
Alphabet and segments
English and Swahili text stays inside the GSM-7 alphabet, so one segment to Kenya holds 160 characters and each part of a longer text 153. Watch for curly quotes and emoji copied from other tools: one of them moves the whole text to Unicode at 70 characters per segment, and POST /v1/estimates shows the encoding before you send.
Time zone and timing
Kenya keeps UTC+3 all year with no clock change, so 09:00 in Nairobi is always 06:00 UTC. send_at takes UTC or any ISO 8601 offset, and the console scheduler converts from your own time zone.
Send to Kenya with one request
The answer comes back at once with the message id, the country the number was matched to (KE) and the price. A delivered or failed event follows on your webhook, and a failed message is refunded.
For a list, send the same text to up to 10,000 numbers with POST /v1/batches, or a personal text per number in messages.
curl https://bulksmsapi.cc/v1/messages \
-H "Authorization: Bearer $BULKSMSAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"to": "+254712123456", "text": "Your Northwind code is 482913. It expires in 10 minutes."}'const res = await fetch("https://bulksmsapi.cc/v1/messages", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.BULKSMSAPI_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ to: "+254712123456", text: "Your Northwind code is 482913. It expires in 10 minutes." }),
});
console.log(await res.json()); // price: "0.02147", country: "KE"import json, os, urllib.request
req = urllib.request.Request(
"https://bulksmsapi.cc/v1/messages",
data=json.dumps({"to": "+254712123456", "text": "Your Northwind code is 482913. It expires in 10 minutes."}).encode(),
headers={"Authorization": "Bearer " + os.environ["BULKSMSAPI_KEY"], "Content-Type": "application/json", "User-Agent": "northwind-app/1.0"},
method="POST",
)
with urllib.request.urlopen(req) as res:
print(json.load(res)["price"]) # "0.02147"What developers send to Kenya
Mobile money
A mobile money transfer in Nairobi triggers a text confirming the transaction amount and recipient details.
Ride confirmations
A ride-hailing app in Mombasa sends a text with driver details and estimated arrival time.
Order updates
An e-commerce store in Kisumu texts customers when their order leaves the warehouse.
Appointment reminders
A clinic in Nakuru sends SMS reminders for upcoming medical appointments.
More countries in East and Southern Africa
SMS to Kenya: questions
More answers on accounts, payments and the API are in the FAQ.
How much does it cost to send bulk SMS to Kenya?
How many SMS to Kenya does a $100 top-up send?
How do I write Kenya numbers for the API?
Which language should we use for SMS in Kenya?
How can we reach both residents and visitors?
Start sending to Kenya
Create an account, top up from $40 and send to Kenya at $0.02147 per segment, from the console or with one API call.