SHULESMS FOR DEVELOPERS

Connect your system.
Send SMS with one API.

Create a key in your dashboard, keep it on your server, quote each campaign, send it, then track delivery using its public key.

REST APIBearer authenticationJSON payloadsUganda SMS
Base URLhttps://www.shulekeeper.com/api/v1/standlone-sms/api

This URL follows the domain serving this page. On production it becomes https://shulekeeper.com/api/v1/standlone-sms/api.

Quick start

  1. Open API integration in the dashboard and create a named key with an expiry date.
  2. Copy the slsms_... token immediately. Only its SHA-256 hash is stored.
  3. Send it from your server as Authorization: Bearer slsms_....
  4. Fund the same ShuleSMS wallet used by the dashboard before sending.

Endpoints

MethodPathPurpose
POST/quoteValidate and estimate recipients, units and UGX cost
POST/messagesSend one campaign using wallet credit
GET/messages/:keyRead campaign and delivery status

Quote payload and response

request JSON
{
  "message": "Your order is ready for collection.",
  "contacts": [
    { "contact": "0772123456", "name": "Jane" },
    { "contact": "+256701234567", "name": "John" }
  ]
}
success response
{
  "success": true,
  "message": "SMS quote returned successfully.",
  "quote": { "recipients": 2, "units": 2, "cost": 70, "currency": "UGX" }
}

Send a message

POST the same payload to /messages. The message must be 1-160 characters and contacts must be valid Ugandan mobile numbers.

curl
curl -X POST "https://www.shulekeeper.com/api/v1/standlone-sms/api/messages"   -H "Authorization: Bearer $SHULESMS_API_KEY"   -H "Content-Type: application/json"   -d '{"message":"Your order is ready.","contacts":[{"contact":"0772123456"}]}'
success response
{
  "success": true,
  "message": "SMS accepted for delivery to 1 contact.",
  "history": {
    "key": "campaign-public-uuid",
    "status": "SENT",
    "contactsCount": 1,
    "deliveredCount": 0,
    "totalCost": 35
  },
  "account": { "balance": 99, "smsPrice": 35, "currency": "UGX" }
}

Check delivery status

curl
curl "https://www.shulekeeper.com/api/v1/standlone-sms/api/messages/campaign-public-uuid"   -H "Authorization: Bearer $SHULESMS_API_KEY"

Statuses progress from SENDING to SENT, then DELIVERED, PARTIAL, or FAILED as provider callbacks arrive.

Errors and safety

error response
{
  "success": false,
  "message": "API key is invalid or revoked."
}

Never place API keys in browser or mobile application code, query strings, logs, or source control. Revoke exposed keys immediately. Requests are scoped to the key owner's wallet and message history; payload owner IDs are ignored.