Skip to main content
O @routa-chat/sdk é o SDK oficial da Routa para Node.js. Ele oferece um cliente tipado para enviar mensagens de WhatsApp e receber eventos de entrega, com retentativas, idempotência e verificação de webhooks incluídas.

Tipos estritos

Tipos para toda requisição e resposta, com IDs branded que evitam trocar um canal por uma mensagem.

Retentativas seguras

Espera exponencial com jitter, respeito a Retry-After e Idempotency-Key automática.

Sem dependências

Usa fetch e Web Crypto da plataforma. ESM e CommonJS, com declarações de tipos.

Requisitos

Node.js 22 ou superior (engines.node é >=22). O pacote publica as versões ESM e CommonJS, então funciona com import e com require.

Instalação

Primeiro envio

status: 'accepted' significa que a Routa recebeu a mensagem, não que ela chegou ao destinatário. A entrega é assíncrona: a mensagem avança por sent, delivered e read (ou failed), e você acompanha cada etapa por webhooks ou por routa.events.list(). Para enviar um template aprovado no lugar de texto livre, passe template em vez de text:
text e template são mutuamente exclusivos: passar os dois é um erro de compilação.

Autenticação

O cliente envia a chave como Authorization: Bearer <chave>. Crie chaves no painel, em Configurações → Chaves de API. O SDK não lê variáveis de ambiente por conta própria: passe o valor explicitamente.
new Routa('rt_live_...') é um atalho para new Routa({ apiKey: 'rt_live_...' }). Uma chave vazia lança um erro imediatamente, na construção, e não na primeira requisição. Para verificar uma chave sem efeitos colaterais, chame routa.whoami():
Veja mais em Chaves de API.

Recursos do cliente

As demais operações estão em Eventos, templates, mídia e uso.

Ainda não suportado

Conheça estas lacunas antes de construir sobre o SDK. Todas estão disponíveis pela API REST:
  • Envio de mídia (upload). routa.media.retrieve(id) funciona, mas não existe media.upload().
  • Envio de mídia, localização ou reações. messages.send() aceita apenas text e template. Mensagens recebidas e históricas desses tipos podem ser lidas, mas não enviadas.
  • Canais. Não existe o namespace routa.channels. Conecte e gerencie canais no painel e passe o id do canal para send().
  • Componentes de template. templates.submit() aceita apenas o corpo de texto. Cabeçalho, rodapé e botões dependem da API REST.

Contribuir

Issues e pull requests são bem-vindos no GitHub. O SDK é distribuído sob a licença MIT.