Build with the SoarSend API

Send SMS, email, and Telegram broadcasts from your own app with a single REST API. GHS 0.08 per message, no monthly fees.

This page is a public overview. Once you sign up, your dashboard has full, personalized API docs with your own key and live examples.

Base URL
https://api.soarsend.web.app/v1
Authentication
Bearer token
Pricing
GHS 0.08 / message

Authentication

Every request needs your API key sent as a Bearer token in the Authorization header. Get your key from the dashboard under Settings → API Keys.

curl https://api.soarsend.web.app/v1/messages \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json"

Keep your API key server-side. Anyone with it can send messages and spend your wallet balance.

Endpoints

One unified endpoint handles all three channels — pass channel as sms, email, or telegram and SoarSend formats the message for that channel automatically.

POST /v1/messages

Send a message

Queues a broadcast on the given channel. Returns immediately with a message ID you can use to check delivery status.

Request body
FieldTypeDescription
channelstringOne of sms, email, telegram
tostringPhone number (E.164), email address, or Telegram chat ID
messagestringBody text of the message
sender_idstringOptional. Sender name shown for SMS/email
Example request
curl -X POST https://api.soarsend.web.app/v1/messages \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "channel": "sms", "to": "+233551234567", "message": "Your order has shipped!", "sender_id": "SoarSend" }'
Example response 200 OK
{ "id": "msg_8f2a1c", "status": "queued", "channel": "sms", "cost": 0.08, "currency": "GHS" // deducted from your wallet }
GET /v1/messages/{id}

Check delivery status

Look up the current status of a message by ID.

Example response 200 OK
{ "id": "msg_8f2a1c", "status": "delivered", // queued | sent | delivered | failed "channel": "sms", "delivered_at": "2026-07-07T10:32:00Z" }
GET /v1/wallet

Check wallet balance

Returns your current prepaid balance, so you can warn users or top up automatically before it runs low.

Example response 200 OK
{ "balance": 245.50, "currency": "GHS" }

Webhooks

Configure a webhook URL in your dashboard to get notified the moment a message's status changes, instead of polling the status endpoint.

{ "event": "message.delivered", "id": "msg_8f2a1c", "status": "delivered", "timestamp": "2026-07-07T10:32:00Z" }

Your endpoint should respond with a 2xx status within a few seconds. Failed deliveries are retried with backoff.

Errors

SoarSend uses standard HTTP status codes. The response body always includes a short message explaining what went wrong.

StatusMeaning
200Request succeeded
400Malformed request — check required fields
401Missing or invalid API key
402Insufficient wallet balance
429Rate limit exceeded — slow down and retry
500Something went wrong on our end

Rate limits

API requests are limited per key to keep the platform stable for everyone. Current default is 100 requests per minute. Need a higher limit for a large broadcast? Reach out and we'll adjust it for your account.

This is an early-access reference. Endpoint names, fields, and limits may change before general availability — contact us to confirm current behavior before building production integrations.