Quickstart
Send your first SMS in under 5 minutes.
Get started with eSMS Africa in three steps.
-
Create an account at auth.esmsafrica.io
-
Top up your balance - go to Billing → Top Up and deposit using Flutterwave
-
Get an API key - go to API Keys → Create key, choose
liveenvironment
Send your first message
Replace YOUR_API_KEY and YOUR_ACCOUNT_ID with your credentials from the dashboard.
curl -X POST https://sms.esmsafrica.io/api/messages/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+254712345678",
"text": "Hello from eSMS Africa!"
}'import httpx
resp = httpx.post(
"https://sms.esmsafrica.io/api/messages/send",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"to": "+254712345678",
"text": "Hello from eSMS Africa!",
},
)
print(resp.json())const resp = await fetch("https://sms.esmsafrica.io/api/messages/send", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
to: "+254712345678",
text: "Hello from eSMS Africa!",
}),
});
const data = await resp.json();
console.log(data);$ch = curl_init("https://sms.esmsafrica.io/api/messages/send");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_API_KEY",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"to" => "+254712345678",
"text" => "Hello from eSMS Africa!",
]),
]);
$result = curl_exec($ch);
echo $result;Successful response
{
"id": "msg-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "submitted",
"segments": 1,
"cost": 9.10,
"cost_currency": "NGN",
"route_cost": 450.00,
"route_currency": "NGN",
"route": "ESMS_NG",
"balance_after": 990.90
}The message is now in the gateway queue. Use the id to check delivery status.
Always use E.164 format for phone numbers - include the country code, no spaces or dashes. Example: +256712345678 not 0712345678.
What's next?
- Authentication - API keys vs session auth
- Single SMS reference - all request parameters
- Bulk send - campaigns to thousands of contacts
- Delivery webhooks - get notified when messages land