Developers

Documentação
API REST

API RESTful simples, poderosa e bem documentada. Integre em minutos com qualquer linguagem.

Base URL: api.zexa.co.ao/v1
Versão: v1.4

Rate Limits

Starter100 req/min
Business1.000 req/min
EnterprisePersonalizado

Autenticação

Use um Bearer Token no header Authorization de cada request.

auth.js
JavaScript
"code-comment">// Autenticação via Bearer Token
"code-keyword">const response = "code-keyword">await fetch("code-string">'https:"code-comment">//api.zexa.co.ao/v1/messages', {
  method: "code-string">'POST',
  headers: {
    "code-string">'Authorization': `Bearer ${process.env.ZEXA_API_KEY}`,
    "code-string">'Content-Type': "code-string">'application/json',
    "code-string">'X-Idempotency-Key': crypto.randomUUID(), "code-comment">// Evita duplicados
  },
  body: JSON.stringify({
    to: "code-string">'+244923456789',
    "code-keyword">from: "code-string">'MinhaEmpresa',
    text: "code-string">'Código: 847291'
  })
})

Endpoints

POST/v1/messagesEnviar um SMS

Request Body

JSON
{
  "to": "+244923456789",
  "from": "MinhaEmpresa",
  "text": "Olá! A sua encomenda foi confirmada.",
  "callbackUrl": "https://meusite.com/webhook/sms"
}

Response 200

JSON
{
  "messageId": "msg_01JK4M2NXPQRS",
  "status": "queued",
  "to": "+244923456789",
  "from": "MinhaEmpresa",
  "segments": 1,
  "cost": 8.50,
  "currency": "AOA",
  "createdAt": "2025-06-05T09:41:00Z"
}

Webhooks

Receba notificações em tempo real sobre o status de entrega de cada mensagem.

webhook.js
JavaScript
"code-comment">// Seu endpoint recebe este payload quando o SMS é entregue
app.post("code-string">'/webhook/sms', (req, res) => {
  "code-keyword">const { messageId, status, to, deliveredAt } = req.body

  "code-keyword">if (status === "code-string">'delivered') {
    console.log(`SMS ${messageId} entregue a ${to} às ${deliveredAt}`)
    "code-comment">// Atualizar base de dados, enviar confirmação, etc.
  }

  "code-keyword">if (status === "code-string">'failed') {
    console.log(`SMS ${messageId} falhou: ${req.body.failureReason}`)
    "code-comment">// Lógica de retry ou alerta
  }

  res.status(200).json({ received: true })
})

CLI Playground

Use o CLI Zexa diretamente no terminal para testar envios.

Terminal
$ zexa auth login
✓ Autenticado como comercial@empresa.ao
$ zexa send --to +244923456789 --text "Olá!"
⟳ Enviando...
✓ SMS enviado — msg_01JK4M2N (1.1s)
$ zexa messages list --limit 5
ID STATUS TO COST
msg_01JK4M2N delivered +244923456789 Kz 8.50

SDKs Oficiais

Node.js

Oficial
npm install @zexa/sms-sdk
🐍

Python

Oficial
pip install zexa-sms
🐘

PHP

Oficial
composer require zexa/sms

Java

Oficial
implementation "co.zexa:sms-sdk"