SMS OTP Docs Log in Start free →

SMS API Documentation

REST API. JSON in, JSON out. No SDKs required.

Base URL

https://api.ekukhulenilabs.co.za

All requests require the X-Api-Key header.

Endpoints

Send SMS
POST /sms/send { "to": "+27764378335", "message": "Your order #123 is confirmed." } Response: { "success": true, "message": "SMS sent", "credits_remaining": 94, "cost": 1, "destination": "South Africa" }
Bulk SMS (up to 50)
POST /sms/send-bulk { "messages": [ { "to": "+27764378335", "message": "Order ready." }, { "to": "+26879531182", "message": "Payment received." } ] } Response: { "success": true, "sent": 2, "total": 2 }
Check Balance
GET /sms/balance Response: { "notification_credits": 468 }
Usage History
GET /sms/usage Response: { "total": 6, "recent": [ { "timestamp": "2026-04-12T06:03:38", "recipient": "268761***", "success": true, "preview": "Reminder: Please verify..." } ] }
Price Check
POST /sms/price-check { "to": "+447846426683" } Response: { "country": "UK", "credits_per_sms": 2 }
Pricing Table
GET /sms/pricing Response: { "rates": [ { "country": "Eswatini", "credits_per_sms": 1 }, { "country": "South Africa", "credits_per_sms": 1 }, { "country": "UK", "credits_per_sms": 2 }, { "country": "US/Canada", "credits_per_sms": 2 }, { "country": "International", "credits_per_sms": 3 } ]}

Error Codes

400 Missing fields or message too long (max 480 chars) 401 Invalid or missing API key 402 Insufficient SMS credits 500 SMS delivery failed

Quick Start

cURL
curl -X POST https://api.ekukhulenilabs.co.za/sms/send \ -H "X-Api-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"to": "+27764378335", "message": "Hello from Ekukhuleni Labs!"}'
Python
import requests r = requests.post( 'https://api.ekukhulenilabs.co.za/sms/send', headers={'X-Api-Key': 'YOUR_API_KEY'}, json={'to': '+27764378335', 'message': 'Hello from Ekukhuleni Labs!'}) print(r.json())
Node.js
const res = await fetch( 'https://api.ekukhulenilabs.co.za/sms/send', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Api-Key': process.env.EK_API_KEY }, body: JSON.stringify({ to: '+27764378335', message: 'Hello from Ekukhuleni Labs!' }) } ); const data = await res.json();

Try it live

Don't have an API key? Register here. Same key works for OTP and SMS.