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
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"

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.

Q SMS Logo

Ready to integrate?

Get your API key in minutes. No approval process. No minimum spend.