Integrar WhatsApp ao seu sistema Node.js ficou simples com a ZAP API. Neste tutorial você aprende a enviar e receber mensagens em menos de 10 minutos — sem precisar de aprovação da Meta, conta Business verificada ou qualquer burocracia.
Pré-requisitos
- Node.js 18 ou superior instalado
- Uma conta gratuita na ZAP API (trial 7 dias, sem cartão)
- Instância criada e WhatsApp conectado via QR code ou pairing code
Passo 1: Criar sua conta e instância
Acesse zap-api.tech/register, preencha nome, e-mail e senha. Ao registrar, você recebe automaticamente:
- Um instanceId no formato
inst_xxxxxxxxxxxxxxx - Um token Bearer no formato
tk_xxxxxxxx... - 7 dias de trial gratuito, sem precisar de cartão
Importante: salve o token em um local seguro — ele é exibido apenas uma vez no registro.
Passo 2: Conectar o WhatsApp
Abra o dashboard e clique em Conectar. Escaneie o QR code com o WhatsApp do celular (Menu → Aparelhos conectados → Conectar aparelho). Em segundos a instância estará online.
Prefere conectar sem QR? Use o pairing code:
curl -X POST https://zap-api.tech/v1/instances/INSTANCE_ID/pairing \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"phone":"5511999998888"}'
# Resposta: { "code": "ABCD-1234" }
# Digite esse código no WhatsApp: Menu → Aparelhos conectados → Conectar com código
Passo 3: Instalar a dependência
npm install axios
Passo 4: Enviar sua primeira mensagem
Crie um arquivo send.js:
const axios = require('axios');
const INSTANCE = 'inst_SEU_ID';
const TOKEN = 'tk_SEU_TOKEN';
const BASE_URL = 'https://zap-api.tech/v1';
const api = axios.create({
baseURL: BASE_URL,
headers: { Authorization: 'Bearer ' + TOKEN }
});
async function sendText(phone, body) {
const { data } = await api.post('/instances/' + INSTANCE + '/send', {
phone, // formato: '5511999998888' (com DDI, sem +)
type: 'text',
body
});
return data; // { messageId: '...', status: 'sent' }
}
sendText('5511999998888', 'Ola! Mensagem enviada via ZAP API.')
.then(console.log)
.catch(console.error);
Execute com node send.js. A mensagem chegará instantaneamente ao celular.
Passo 5: Enviar outros tipos de mídia
A ZAP API suporta texto, imagem, áudio, vídeo e documentos no mesmo endpoint — basta mudar o campo type:
Imagem com legenda
await api.post('/instances/' + INSTANCE + '/send', {
phone: '5511999998888',
type: 'image',
mediaUrl: 'https://seu-cdn.com/banner.jpg',
caption: 'Confira nossa promocao de verao!'
});
Áudio (MP3 ou OGG)
await api.post('/instances/' + INSTANCE + '/send', {
phone: '5511999998888',
type: 'audio',
mediaUrl: 'https://seu-cdn.com/audio.mp3'
});
Documento (PDF, Excel, DOCX)
await api.post('/instances/' + INSTANCE + '/send', {
phone: '5511999998888',
type: 'document',
mediaUrl: 'https://seu-cdn.com/relatorio.pdf',
fileName: 'relatorio-mensal.pdf'
});
Passo 6: Receber mensagens via webhook
Configure a URL do seu servidor para receber mensagens em tempo real:
await api.put('/instances/' + INSTANCE + '/webhook', {
url: 'https://seu-servidor.com/whatsapp-webhook',
secret: 'um-secret-forte-para-validar-assinatura'
});
A ZAP API enviará um POST para sua URL com o payload:
{
"event": "message.received",
"instanceId": "inst_xxx",
"timestamp": "2026-02-24T10:00:00Z",
"data": {
"phone": "5511999998888",
"name": "Joao Silva",
"type": "text",
"body": "Ola, quero saber mais!",
"messageId": "msg_xxx",
"fromMe": false
}
}
Exemplo de handler com Express:
const express = require('express');
const app = express();
app.use(express.json());
app.post('/whatsapp-webhook', async (req, res) => {
const { event, data } = req.body;
if (event === 'message.received' && !data.fromMe) {
console.log('Mensagem de ' + data.name + ': ' + data.body);
// Responder automaticamente
await sendText(data.phone, 'Oi ' + data.name + '! Em breve te atendemos.');
}
res.json({ ok: true }); // Sempre responda 200 rapidamente
});
app.listen(3000);
Verificar a assinatura do webhook (segurança)
Se você configurou um secret, valide o header X-Zap-Signature para garantir que o POST veio da ZAP API:
const crypto = require('crypto');
function verificarAssinatura(payload, signature, secret) {
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(JSON.stringify(payload))
.digest('hex');
return expected === signature;
}
app.post('/whatsapp-webhook', (req, res) => {
const sig = req.headers['x-zap-signature'];
if (!verificarAssinatura(req.body, sig, 'seu-secret')) {
return res.status(401).json({ error: 'Assinatura invalida' });
}
// processar...
});
Conclusão
Com menos de 50 linhas de código, você tem uma integração WhatsApp completa: envio de múltiplos tipos de mídia, recebimento em tempo real via webhook e validação de assinatura para segurança.
A ZAP API custa a partir de R$29/mês por instância* com trial de 7 dias sem precisar de cartão.