Skip to main content
SMS is the most universally accessible channel. Zexa routes SMS through local and international carriers, ensuring high deliverability to Angolan and international numbers. Whether you’re sending a single transactional alert or a bulk campaign, SMS reaches your customers directly on any mobile device — no app required.

Before you start

Before you can send your first SMS, make sure you have the following in place:
1

Register a Sender ID

A Sender ID is the name or number displayed to recipients as the message sender. Register and get your Sender ID approved in the Zexa dashboard before sending. See Sender IDs for full instructions.
2

Check your credit balance

Each SMS segment consumes one credit from your account balance. Make sure your account has sufficient credits before sending. Top up your balance at app.zexa.ao.
You must have a registered and approved Sender ID before sending any SMS messages through Zexa.

Send an SMS via API

Send a POST request to /messages with "channel": "sms" to dispatch an SMS message.
curl --request POST \
  --url https://api.zexa.ao/v1/messages \
  --header 'Authorization: Bearer <api_key>' \
  --header 'Content-Type: application/json' \
  --data '{
    "channel": "sms",
    "to": "+244912345678",
    "from": "MYSENDER",
    "body": "Your order #1234 has been shipped."
  }'
A successful request returns a 201 response with the message object:
{
  "id": "msg_xyz789",
  "status": "queued",
  "channel": "sms",
  "to": "+244912345678",
  "created_at": "2026-06-24T10:00:00Z"
}
Always use E.164 format for phone numbers (e.g., +244912345678 for Angola). Numbers without the country code prefix may fail to deliver.

Message limits

Keep the following character limits in mind when composing SMS messages:
  • Single segment: Up to 160 characters using standard GSM-7 encoding.
  • Multi-part SMS: Messages longer than 160 characters are automatically split into multiple segments. Each segment consumes one credit.
  • Unicode messages: Messages containing Unicode characters (e.g., Arabic, Chinese, emoji) have a reduced per-segment limit of 70 characters.
Plan your message length carefully to control credit usage. For longer content, consider using WhatsApp or Email instead.

Delivery statuses

After a message is sent, Zexa updates its status as it moves through the delivery pipeline. Use the id returned at send time to poll for status updates or configure a webhook.
StatusDescription
queuedThe message has been accepted and is waiting to be dispatched to a carrier.
sentThe message has been handed off to the carrier for delivery.
deliveredThe carrier has confirmed the message was delivered to the handset.
failedThe message could not be sent due to an error (e.g., invalid number).
undeliverableThe message reached the carrier but could not be delivered to the handset.

Next steps

Bulk SMS Campaigns

Send SMS to large contact lists with scheduling, personalisation, and delivery reporting.

Sender IDs

Register and manage the Sender IDs displayed to your SMS recipients.