Base URL
/v1. O prefixo /api (https://api.ararahq.com/api/v1/...) também é aceito por compatibilidade, mas use a forma sem prefixo.
Autenticação
Envie a chave de API no headerAuthorization:
Telefone
O formato canônico é E.164 com+: +5511999999999. Use esse formato em corpo, path e query.
No envio de mensagem a API também aceita 5511999999999 e whatsapp:+5511999999999. Ela remove o prefixo e o + e exige de 7 a 15 dígitos. Fora disso responde 422 INVALID_RECIPIENT.
POST /v1/conversations/window-status não faz essa normalização. Mande só dígitos com DDI, com ou sem + (+5511999999999 ou 5511999999999). A busca tolera o + e o nono dígito de celular brasileiro. Com whatsapp:, espaços, parênteses ou hífens o telefone não casa com a conversa e a janela volta como fechada.
O que a chave de API alcança
Gestão de chaves, pagamentos e perfil pessoal são operações do painel e não aceitam chave de API.
O webhook também é configurado só pelo painel, em Webhooks. URL, lista de entregas, reenvio e teste não funcionam com chave de API. Veja Webhooks.
Formato de resposta
Toda resposta com corpo é JSON. Datas em ISO 8601 (UTC). Exceções:204 No Contentnão tem corpo (por exemplo, cancelar campanha).GET /v1/messages/{id}responde403e404sem corpo.401e403de autenticação trazem o JSON padrão do servidor, fora do envelope de erro. Veja Autenticação.
Objeto único
Listas
O envelope mais comum é{ data, pagination }:
Erro
error.code. Falha de autenticação e alguns 404 saem fora desse formato. Códigos e exceções em Erros.
Paginação
GET /v1/opt-outs não tem paginação.
Idempotência
Regras:
- A chave tem de 1 a 255 caracteres, sem caracteres de controle. Fora disso:
400 INVALID_IDEMPOTENCY_KEY. - A chave não expira.
- Derive a chave de um evento do seu sistema (id do pedido, id da tentativa). Não gere um valor novo a cada chamada, senão a retentativa duplica o envio.
- Em
POST /v1/messageso corpo não é comparado: reusar a chave com outro destinatário devolve a mensagem antiga, sem erro. Use uma chave por intenção de envio.
Rate limits
O limite é por usuário dono da chave. Toda resposta traz
X-RateLimit-Remaining. Ao estourar:
Quais respostas trazem Retry-After
Quando o header vier, espere o tempo indicado e repita a chamada com a mesma
Idempotency-Key.
Status HTTP
Status e enums
Enums vêm em maiúsculas (LIVE, MARKETING, APPROVED).
O status da mensagem tem duas grafias:
PENDING no REST é queued no webhook.
IDs
Rota que espera UUID e recebe outra coisa responde
400 INVALID_PATH_PARAM.
Valores monetários
Custos e saldos (cost, totalCost, balance, threshold, amount) vêm em reais, decimal (0.3835). Campos com sufixo Cents (amountCents, monthlyPriceCents) vêm em centavos inteiros.
CORS
A API só libera CORS para domínios da Arara. Chamada direta do navegador é bloqueada. Chame a API a partir do seu backend.Próximos passos
Autenticação
Como enviar a chave, permissões e erros.
Erros
Códigos e como tratar cada um.
Mensagens
O endpoint mais usado.
Webhooks
Eventos em tempo real no seu backend.