API de SMS
Envie SMS a partir do seu site, loja online ou sistema. Simples: um pedido HTTP com o número e o texto.
Começar em 3 passos
- Crie a conta e compre SMS em AXAM Links (a partir de 10 SMS, pagamento com M-Pesa ou e-Mola). Clientes AXAM entram com a senha do Painel AXAM.
- Crie a chave de API em A minha conta → SMS → Chaves da API. A chave começa por
axk_e só é mostrada uma vez: guarde-a num sítio seguro (nunca dentro de código que corre no navegador). - Envie um pedido
POSTparahttps://links.axam.co.mz/api/v1/sms.phpcom o número e o texto.
Endereço da API: https://links.axam.co.mz/api/v1. As chaves antigas continuam a funcionar também em https://axam.co.mz/sistema/api/v1.
Preços
Sem pacotes nem mensalidade: compre a quantidade que quiser (a partir do mínimo). Os SMS de uma mensagem que o operador não aceita voltam ao seu saldo.
Autenticação
Envie a chave em todos os pedidos, no cabeçalho Authorization:
Authorization: Bearer axk_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxx
Também aceitamos o cabeçalho X-API-Key: axk_.... Pode ter até 5 chaves ativas (ex.: uma por site) e desativar uma chave a qualquer momento na sua conta.
POST/sms.php — enviar SMS
| Campo | Tipo | Descrição |
|---|---|---|
para | texto ou lista | Número(s) de Moçambique: 841234567, +258841234567 ou uma lista ["84…","85…"] (até 1 000 por pedido). |
texto | texto | A mensagem (até 918 caracteres). |
referencia | texto (opcional) | O seu identificador (ex.: nº da encomenda), para consultar depois. |
curl -X POST https://links.axam.co.mz/api/v1/sms.php \
-H "Authorization: Bearer $AXAM_SMS_CHAVE" \
-H "Content-Type: application/json" \
-d '{"para": "841234567", "texto": "A sua encomenda 1234 esta pronta.", "referencia": "enc-1234"}'
<?php
$ch = curl_init('https://links.axam.co.mz/api/v1/sms.php');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('AXAM_SMS_CHAVE'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['para' => '841234567', 'texto' => 'A sua encomenda 1234 esta pronta.', 'referencia' => 'enc-1234']),
]);
$r = json_decode(curl_exec($ch), true);
if (!empty($r['ok'])) echo 'Enviado. Saldo: ' . $r['data']['saldo'];
else echo 'Erro: ' . $r['error'];
const r = await fetch('https://links.axam.co.mz/api/v1/sms.php', {
method: 'POST',
headers: { Authorization: 'Bearer ' + process.env.AXAM_SMS_CHAVE, 'Content-Type': 'application/json' },
body: JSON.stringify({ para: ['841234567', '851234567'], texto: 'Promocao: 10% de desconto hoje!' }),
});
const j = await r.json();
console.log(j.ok ? 'Saldo: ' + j.data.saldo : 'Erro: ' + j.error);
import os, requests
r = requests.post('https://links.axam.co.mz/api/v1/sms.php',
headers={'Authorization': 'Bearer ' + os.environ['AXAM_SMS_CHAVE']},
json={'para': '841234567', 'texto': 'A sua consulta e amanha as 9h.', 'referencia': 'consulta-77'})
j = r.json()
print(j['data']['saldo'] if j['ok'] else j['error'])
Resposta (202)
{"ok": true, "data": {"ids": [5012], "partes": 1, "sms_gastos": 1, "saldo": 1499}}
A mensagem entra na fila e sai em segundos. O valor é descontado logo; se o operador recusar a mensagem, os SMS voltam ao saldo.
GET/sms.php?id=… — estado de uma mensagem
curl "https://links.axam.co.mz/api/v1/sms.php?id=5012" -H "Authorization: Bearer $AXAM_SMS_CHAVE"
# ou todas as mensagens com a sua referência:
curl "https://links.axam.co.mz/api/v1/sms.php?referencia=enc-1234" -H "Authorization: Bearer $AXAM_SMS_CHAVE"
Estados: fila, enviando, enviado, falhou (os SMS voltam ao saldo) e cancelado.
GET/saldo.php — saldo
curl https://links.axam.co.mz/api/v1/saldo.php -H "Authorization: Bearer $AXAM_SMS_CHAVE"
# {"ok":true,"data":{"empresa":"A minha loja","saldo":1499,"expira_primeiro":"2027-10-10","lotes":[…]}}Erros e limites
| Código | Quando |
|---|---|
400 | Falta o número ou o texto, número inválido, texto longo demais. |
401 | Chave em falta, errada ou desativada. |
402 | Saldo insuficiente — compre mais SMS. |
403 | A conta da empresa está suspensa. |
429 | Mais de 120 pedidos por minuto com a mesma chave. Espere uns segundos. |
Todas as respostas são JSON: {"ok": true, "data": …} ou {"ok": false, "error": "mensagem"}.
Regras do texto
- Até 160 caracteres = 1 SMS. Mensagens mais longas gastam 1 SMS por cada 153 caracteres (máximo 6 partes, 918 caracteres).
- Os acentos são retirados no envio (ex.: "ação" sai "acao"), para a mensagem chegar bem a todos os telemóveis.
- O texto das mensagens é apagado ao fim de 90 dias; fica só a contagem para a sua fatura.
- Use a API só para mensagens que os seus clientes esperam receber (avisos, confirmações, promoções a quem aceitou).
Especificação OpenAPI
Para gerar um cliente automaticamente ou importar no Postman/Insomnia: openapi.json (OpenAPI 3.0).
Dúvidas? WhatsApp +258 82 213 5020 · axam@axam.co.mz