API Docs
Build with
Q SMS API.
A clean, predictable REST API. Send SMS, track delivery, manage contacts, and automate campaigns from any language or framework.
send_sms.py
import requests
response = requests.post(
"https://sms.qorami.io/api/sms/sendsms",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"api_key": "YOUR_API_KEY",
"service_id": 0,
"mobile": "254722XXXX00",
"response_type": "json",
"shortcode": "YOUR_SENDER_ID",
"message": "this is a test message",
"date_send": "2025-01-01 16:40:00"
}
)
print(response.json())
{
"status_code": "1000",
"status_desc": "Success",
"message_id": 10,
"mobile_number": "254722000000",
"network_id": "1",
"message_cost": 1,
"credit_balance": -100
}Getting started
From zero to first SMS in 3 steps
1
Get your API key
Sign up at qsms.co.ke → Dashboard → Settings → API Keys. Generate your key and store it securely.
API Key: qsms_live_••••••••••••••••
2
Make your first call
POST to our messages endpoint with your recipient, sender ID, and message body.
POST /v1/messages
Host: api.qsms.co.ke
Host: api.qsms.co.ke
3
Track delivery
Use webhooks to receive real-time delivery status callbacks, or poll the messages endpoint.
"status": "delivered"
"delivered_at": "2025-03-25T09:14:03Z"
"delivered_at": "2025-03-25T09:14:03Z"
Reference
API Endpoints
POST/api/sms/sendmultiple
Send a single message or bulk messages to multiple recipients in one API call.
{
"api_key": "YOUR_API_KEY",
"serviceId": "0",
"from": "YOUR_SENDER_ID",
"date_send": "2025-01-01 17:40:00",
"messages": [
{
"mobile": "254722000000",
"message": "This is a first message",
"client_ref": "001A"
},
{
"mobile": "254707410000",
"message": "This is a second message",
"client_ref": "001B"
}
]
}POSThttp://client.example.com/dlr/receive
Retrieve the current delivery status of any sent message.
{
"messageId": "75",
"dlrTime": "2024-09-25 20:24:18",
"dlrStatus": "1",
"dlrDesc": "DeliveredToTerminal",
"tat": 6,
"network": "",
"destaddr": "254722322095",
"sourceaddr": "533",
"origin": "Safaricom"
}POST/v1/contacts
Import contacts with custom fields for personalized messaging.
{
"group": "loan_clients",
"contacts": [
{"phone": "+254712345678", "name": "Jane Wanjiru", "balance": "5000"},
{"phone": "+254723456789", "name": "John Mwangi", "balance": "12000"}
]
}GET/v1/balance
Returns your current credit balance and usage summary.
{
"balance_kes": 4200.00,
"sms_remaining": 10500,
"rate_per_sms": 0.4
}SDKs & Libraries
Use your preferred language
Py
Python
JS
Node.js
PHP
PHP
Rb
Ruby
Go
Go
Or use any HTTP client — the API is pure REST.

