Instalar
require) com build ESM (import) e tipos .d.ts. Depende de axios. O pacote não declara versão mínima de Node; o build de publicação roda em Node 20, então use Node 18 ou superior.
Configurar
apiKey é obrigatória (o construtor lança Error sem ela) e usa o prefixo ara_live_. A Arara não tem modo de teste.
Enviar a primeira mensagem
Você precisa de plano assinado, número conectado, um template aprovado e saldo. Veja Antes de começar. Troquepedido_confirmado pelo nome do seu template.
Salve como enviar.js:
variables é aceito como apelido de templateVariables.
Para responder dentro da janela de 24h, mande body em vez de templateName:
sdk.messages.get(response.id). O status também chega pelo webhook message.status_updated.
Para mandar o mesmo template a até 1000 destinatários, use sendBatch:
Templates
Os métodosget, getStatus, delete e analytics recebem o id do template (UUID), não o nome. Para achar um template pelo nome, filtre a lista: sdk.templates.list({ name: 'promo_natal' }).
samples é um objeto com o nome da variável como chave ('1' para {{1}}).
Listar: list devolve { data, pagination } e aceita page, size, name e status.
Tratar erros
Toda falha lançaAraraError. Duas subclasses cobrem os casos comuns: AuthenticationError (401, ou 403 sem código de erro: chave inválida, expirada, sem permissão ou fora da allowlist de IP) e PlanFeatureLockedError (403 PLAN_FEATURE_LOCKED, com feature, currentPlan e upgradeTo).
A API responde 401 para chave inválida, revogada ou expirada, e 403 quando a chave não tem permissão para a rota. O corpo desses erros de autenticação não vem no envelope da API: o SDK lança
AuthenticationError com code UNKNOWN_ERROR. Teste a classe ou o statusCode, não o code. Lista de códigos em Erros.
Retentativas e idempotência
O SDK retenta, atémaxRetries vezes:
- falha de rede (sem resposta);
- 429, respeitando
Retry-After(até 30s); - qualquer 5xx.
maxRetries: 0.
Só se retenta requisição segura de repetir: GET, PUT, DELETE e POST com Idempotency-Key. messages.send, messages.sendBatch e campaigns.create sempre mandam esse header, então uma retentativa repete a mesma chave e não duplica o envio. templates.create não manda a chave e não é retentado.
send aceita um segundo argumento com idempotencyKey, enviado no header Idempotency-Key. Sem ele, o SDK gera um UUID por chamada (igual em todas as retentativas dela), o que não protege contra reenvio do seu lado. Derive a chave de um id do seu sistema (id do pedido, id da tentativa), não de um valor novo a cada chamada:
Webhooks
O SDK exporta guards de tipo para o corpo do webhook:WebhookUtils.parseEvent(payload) devolve o evento se for um desses tipos, ou null. Os demais eventos (conversation.needs_human, template.updated etc.) não têm guard; trate pelo campo event.
O SDK não valida a assinatura. Valide antes de processar, com o corpo cru da requisição:
Recursos disponíveis
As leituras de contacts, conversations, wallet, smart links, opt-outs e
auth.me() exigem chave ADMIN. Com chave só READ, lançam AuthenticationError (403). optOuts recusa telefone fora do formato +5511999999999 com RangeError, antes de chamar a API.
TypeScript
Tipos exportados na 2.0.0 (exemplos; o pacote exporta também os tipos de contatos, campanhas, carteira, números e smart links):InboundMessageWebhookEvent existe no código mas não é exportado pelo pacote.
Limitações conhecidas
Próximos passos
Next.js
Server Actions e route handlers.
API Reference
Endpoints REST que o SDK chama por baixo.