Pular para o conteúdo
Nigora Zap API

    Entrar Criar conta

    Enviar uma mensagem de WhatsApp com Node.js

    Ao final, você terá um script Node.js que envia uma mensagem de texto pela Nigora Zap API e mostra a resposta. Sem pacotes extras: o fetch já vem no Node.

    • Uma instância conectada. Se ainda não conectou, veja Conexão.
    • O ID e o token da instância, como em Primeiros passos.
    • Node.js 18 ou mais novo. Confira com node --version.

    Não escreva o token no código. Leia-o de variáveis de ambiente:

    Terminal window
    export NIGORA_INSTANCIA_ID="cole-aqui-o-id-da-instancia"
    export NIGORA_TOKEN="cole-aqui-o-token"

    Salve como enviar.mjs. A extensão .mjs permite usar await direto no arquivo:

    const { NIGORA_INSTANCIA_ID: instanciaId, NIGORA_TOKEN: token } = process.env
    if (!instanciaId || !token) {
    console.error('Defina NIGORA_INSTANCIA_ID e NIGORA_TOKEN.')
    process.exit(1)
    }
    const resposta = await fetch(`https://api.zap.nigora.com.br/v1/instances/${instanciaId}/messages/text`, {
    method: 'POST',
    headers: {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'application/json',
    },
    body: JSON.stringify({
    to: '5511999999999',
    text: 'Olá! Esta mensagem saiu pela API.',
    }),
    signal: AbortSignal.timeout(15000),
    })
    console.log('Status HTTP:', resposta.status)
    console.log(await resposta.text())
    process.exit(resposta.ok ? 0 : 1)

    Troque 5511999999999 pelo telefone de quem vai receber, com DDI e DDD. A API ignora tudo que não for dígito e acrescenta o 55 quando o número tem 10 ou 11 dígitos.

    Terminal window
    node enviar.mjs

    Resultado esperado:

    Status HTTP: 202
    {"id":"…","status":"queued"}

    O 202 quer dizer que a mensagem entrou na fila. Ela ainda não foi entregue. Guarde o id: é com ele que você liga a resposta aos eventos message.sent e message.status, que chegam por webhook.

    Status Código O que fazer
    400 invalid_phone Corrija o telefone: ele precisa ter 12 ou 13 dígitos com o 55
    401 invalid_token Confira o token e o ID da instância
    402 instance_suspended A instância está suspensa ou com pagamento pendente
    422 contact_opted_out O contato pediu para não receber mensagens

    Se faltar rede ou o tempo esgotar, o fetch lança uma exceção e o Node a mostra no terminal.