@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 comoAuthorization: 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():
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 existemedia.upload(). - Envio de mídia, localização ou reações.
messages.send()aceita apenastextetemplate. 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 parasend(). - Componentes de template.
templates.submit()aceita apenas o corpo de texto. Cabeçalho, rodapé e botões dependem da API REST.