Skip to main content
This guide walks you through everything you need to go from zero to your first sent message. By the end you’ll have a verified Zexa account, a topped-up credit balance, an API key, and a working example that sends a real SMS. The whole process takes less than five minutes.
1

Create your account

Go to https://app.zexa.ao/signup and fill in the registration form.You will need to provide:
  • Company NIF (Número de Identificação Fiscal) if you are registering a business account, or your Bilhete de Identidade (BI) number for a personal account
  • A valid business or personal email address
  • A phone number that can receive SMS verification codes
  • A strong password
After you submit the form, Zexa sends a verification email. Click the confirmation link to activate your account before proceeding.
2

Add credits

Zexa uses a credit-based billing model — you pay in advance and credits are deducted each time a message is sent.To top up your balance:
  1. Log in to the dashboard at https://app.zexa.ao.
  2. Open the Billing section from the left navigation menu.
  3. Click Top Up Balance, choose an amount, and complete the payment.
Your credits are available immediately after the transaction is confirmed.
3

Get your API key

Your API key authenticates every request you make to the Zexa REST API.
  1. In the dashboard, go to Settings → API Keys.
  2. Click Generate New Key.
  3. Give the key a descriptive name (for example, production-backend).
  4. Copy the key and store it somewhere safe — Zexa only shows the full key once.
Use this key in the Authorization header of every API request:
Authorization: Bearer YOUR_API_KEY
Never expose your API key in client-side code, public repositories, or logs. If a key is compromised, revoke it immediately from Settings → API Keys and generate a new one.
4

Send your first message

With your account active, credits loaded, and API key in hand, you’re ready to send a message. Use the endpoint below to send an SMS.Endpoint: POST https://api.zexa.ao/v1/messages
Always use E.164 format for phone numbers — a + sign followed by the country code and subscriber number, with no spaces or dashes. For Angolan numbers this looks like +244912345678.
The from field must be a registered and approved Sender ID. If you haven’t registered one yet, see Sender ID Registration before sending SMS or WhatsApp messages.
Request body:
{
  "channel": "sms",
  "to": "+244912345678",
  "from": "ZEXA",
  "body": "Hello from Zexa!"
}
Example response:
{
  "id": "msg_abc123",
  "status": "queued",
  "channel": "sms",
  "to": "+244912345678",
  "created_at": "2026-06-24T10:00:00Z"
}
A status of queued means Zexa has accepted the message and is dispatching it to the carrier. The status updates to delivered or failed within seconds to minutes depending on the channel.
curl --request POST \
  --url https://api.zexa.ao/v1/messages \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "channel": "sms",
    "to": "+244912345678",
    "from": "ZEXA",
    "body": "Hello from Zexa!"
  }'
5

Check delivery status

After sending a message you can track its delivery status in two ways:Dashboard: Open the Messages section in https://app.zexa.ao. Every outbound message appears here with its current status (queued, sent, delivered, or failed), the channel used, and a timestamp.Webhooks: For real-time updates in your own system, configure a webhook URL in Settings → Webhooks. Zexa posts a status-update event to your endpoint each time a message status changes, so you can react instantly — for example, to retry a failed delivery or trigger a follow-up workflow.

What’s next?

Now that you’ve sent your first message, explore the rest of the platform:

Account Setup

Enable 2FA, verify your identity, and invite your team members.

Sender ID Registration

Register a custom Sender ID to send SMS and WhatsApp messages under your brand name.

Campaigns

Send broadcast messages to segmented contact lists with scheduling and throttling.

API Reference

Explore the full REST API — all endpoints, parameters, and response schemas.