Connect Media’s bulk SMS API lets your app, website or back office send SMS to Safaricom, Airtel and Telkom numbers with a single HTTPS request. Use it for OTPs, payment receipts, alerts and campaigns.
Send your first SMS
curl -X POST "https://dashboard.connectmedia.co.ke/api.php" \
-H "Authorization: Bearer $CM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"send","to":"254712345678","message":"Your order has shipped."}'
A response code of 201 means the message was accepted. Full examples in PHP, Node.js and Python are on the developer page.
What the API covers
- send — one number or thousands (comma-separated), optional sender ID and scheduling.
- balance — check credit before large sends.
- history — sent messages with delivery status.
- inbox — replies from two-way SMS.
What to look for in any bulk SMS API
- Key-based auth in a header, not usernames and passwords in the URL.
- Consistent JSON responses with clear error codes you can act on.
- Delivery reports for every message.
- An OpenAPI spec so you can import it into Postman or generate a client.
- Local numbers handled correctly — 2547XXXXXXXX and 2541XXXXXXXX.
Common integrations
- OTP and login verification
- M-Pesa payment confirmations
- School, SACCO and property management systems
- E-commerce order and delivery updates
Sending mainly to Safaricom subscribers? See Safaricom bulk SMS API options.
Start sending with Connect Media
Create an account — no minimum top-up, credit that never expires, and SMS from KES 1.0 to Safaricom, Airtel and Telkom numbers. Questions? Call +254 707 339 945 or email info@connectmedia.co.ke.
Tutorials: PHP · Python · Node.js · WooCommerce · SMS gateway
Frequently asked questions
How do I get a bulk SMS API key in Kenya?
Create a Connect Media account, then go to Profile, API keys in the dashboard. The key is shown once, so store it securely.
Can I send bulk SMS to multiple numbers in one API call?
Yes. Pass several numbers, comma-separated, in the to field of a send request.
Does the API support delivery reports?
Yes. The history action returns sent messages with their delivery status.