JKASMS API
Send individual or bulk SMS, verify phone numbers with one-time codes, and get a delivery receipt for every recipient — over one REST API.
The API is HTTP with JSON request and response bodies. Every response carries a success boolean, and every error carries a stable machine-readable code you can branch on.
curl -X POST https://api.jkasms.com/api/v1/sms/send \
-H "Authorization: Bearer $JKASMS_SECRET_KEY" \
-H "X-JKASMS-Org-Id: $JKASMS_ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"sender": "JKASMS",
"message": "Your order is on the way.",
"recipients": ["0241234567"]
}'What makes this different
You are told the cost before you commit
SMS is billed per segment, not per message, and a single character outside the GSM-7 alphabet — a curly apostrophe pasted from Word, an emoji — cuts capacity from 160 characters to 70. That is the most common unpleasant surprise in SMS billing.
POST /api/v1/sms/quote prices a send without sending it, using the same code path as the real send, so the quote and the charge cannot disagree.
Delivery is reported per recipient
Not just “batch accepted”. Every number resolves to DELIVERED, FAILED, REJECTED or EXPIRED, pushed to your webhook as it happens.
The routing underneath can change; your integration cannot
JKASMS routes across mobile networks and upstream carriers on your behalf. That routing changes as we negotiate rates and as carriers have outages. None of it reaches your code.
Voice works the same way as SMS
POST /api/v1/voice/send rings a list of phones and plays a recording — upload the audio in the request, reference one you saved earlier, or type the text and have us speak it. Same envelope, same error codes, same signed webhooks; the unit is seconds of call time rather than segments.
The field names follow the conventions most Ghanaian voice APIs use, so an existing integration can usually be repointed rather than rewritten.
Base URL
https://api.jkasms.comsk_test_… key routes to test mode on the same URL — nothing is sent to a handset and nothing is charged. See Test mode.Start here
- Quickstart — send your first message in about five minutes
- Authentication — API keys and the headers every request needs
- Segments and pricing — how an SMS is counted and charged
- Errors — every error code and what to do about it
- Voice calls — how call time is bought and billed