Ir al contenido
Nigora Zap API

    Entrar Crear cuenta

    Enviar un mensaje de WhatsApp con Node.js

    Al final, tendrá un script Node.js que envía un mensaje de texto mediante la Nigora Zap API y muestra la respuesta. Sin paquetes adicionales: fetch ya viene incluido en Node.

    • Una instancia conectada. Si aún no la conectó, vea Conexión.
    • El ID y el token de la instancia, como en Primeros pasos.
    • Node.js 18 o más nuevo. Compruébelo con node --version.

    No escriba el token en el código. Léalo de variables de entorno:

    Ventana de terminal
    export NIGORA_INSTANCIA_ID="cole-aqui-o-id-da-instancia"
    export NIGORA_TOKEN="cole-aqui-o-token"

    Guárdelo como enviar.mjs. La extensión .mjs permite usar await directamente en el archivo:

    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)

    Cambie 5511999999999 por el teléfono de quien va a recibir el mensaje, con código de país y de área. La API ignora todo lo que no sea un dígito y agrega el 55 cuando el número tiene 10 u 11 dígitos.

    Ventana de terminal
    node enviar.mjs

    Resultado esperado:

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

    El 202 significa que el mensaje entró en la cola. Todavía no fue entregado. Guarde el id: con él usted relaciona la respuesta con los eventos message.sent y message.status, que llegan por webhook.

    Status Código Qué hacer
    400 invalid_phone Corrija el teléfono: debe tener 12 o 13 dígitos con el 55
    401 invalid_token Revise el token y el ID de la instancia
    402 instance_suspended La instancia está suspendida o con un pago pendiente
    422 contact_opted_out El contacto pidió no recibir mensajes

    Si falla la red o se agota el tiempo, fetch lanza una excepción y Node la muestra en la terminal.