Instâncias
Cada instância representa uma conexão de mensageria.
A chave fica salva no localStorage deste navegador.
Cada instância representa uma conexão de mensageria.
Visão geral da instância.
Aparência e comportamentos automáticos da instância.
Nome e avatar exibidos no painel.
PNG, JPG, WebP ou SVG. Até ~1.5 MB.
Endpoints HTTP que recebem os eventos desta instância.
Guia rápido para integrar o Ignitecore GO com seu backend, n8n ou qualquer cliente HTTP. Todas as rotas retornam JSON. Autenticação por header apikey.
Duas camadas de chave. Envie em apikey: <chave> ou Authorization: Bearer <chave>.
Criar, listar e deletar instâncias. Vem do .env do servidor.
Operar uma instância (mensagens, conexão, webhooks). Devolvido no POST /instance.
curl https://sua-api.com/instance \ -H "apikey: SUA_MASTER_KEY"
Cria uma nova instância e retorna o token.
{ "name": "minha-loja" }
{
"id": "ba6bd24e-3870-42a9-b13e-...",
"name": "minha-loja",
"token": "7cf1cebce83c1208...",
"status": "disconnected",
"settings": { ... }
}
Lista todas as instâncias.
Detalhes (settings + status).
Desconecta e apaga a instância. Irreversível.
Renomeia a instância.
{ "name": "loja-sp" }
Aceita URL, data:…;base64,… ou preset:ignitecore. Vazio volta pras iniciais.
{ "avatar": "preset:ignitecore" }
Comportamentos automáticos.
{
"reject_calls": true,
"ignore_groups": false,
"always_online": true,
"auto_read_messages": true,
"auto_read_status": false
}
Pareie por QR (chama /connect) ou por código de 8 dígitos (alternativa pra quem não consegue ler QR).
{
"status": "qr",
"qr_code": "2@abc...",
"qr_image": "data:image/png;base64,iVBORw0KG..."
}
Status possíveis: qr, connecting, connected, disconnected, logged_out.
Devolve o QR direto como image/png (útil pra <img src>).
Pareamento sem QR. Devolve um código de 8 dígitos. No celular: Aparelhos conectados → Conectar com número de telefone e digite o código.
{ "phone": "5511999999999" }
→
{ "code": "ABCD-WXYZ" }
Fecha a conexão WS preservando o pareamento. /connect reconecta sem QR.
Desfaz o pareamento (apaga sessão). Diferente de /disconnect.
Campo to aceita só o número (5511999999999) ou o JID completo (…@s.whatsapp.net / …@g.us pra grupos).
{
"to": "5511999999999",
"message": "Olá do n8n!",
"reply_to": "MSG_ID_OPCIONAL"
}
Texto com preview de link (Title/Description aparece no balão).
{
"to": "5511999999999",
"text": "Olha esse artigo: https://exemplo.com/post",
"title": "Título exibido",
"description": "Descrição exibida (opcional)",
"thumbnail_url": "https://...image.jpg (opcional)"
}
Mesmo padrão para sendVideo, sendAudio, sendDocument, sendSticker.
{
"to": "5511999999999",
"url": "https://exemplo.com/foto.jpg",
"base64": "(alternativa a url)",
"caption": "texto opcional",
"filename": "arquivo.pdf", // só no sendDocument
"mime_type": "image/jpeg" // opcional
}
{
"to": "5511999999999",
"latitude": -23.550,
"longitude": -46.633,
"name": "Paulista",
"address": "Av. Paulista, São Paulo"
}
{
"to": "5511999999999",
"display_name": "Fulano",
"vcard": "BEGIN:VCARD\nVERSION:3.0\nFN:Fulano\nTEL:+5511...\nEND:VCARD"
}
{ "to": "5511…", "message_id": "ABC…", "emoji": "👍" }
Emoji vazio remove a reação.
{
"to": "5511999999999",
"name": "Qual horário?",
"options": ["Manhã","Tarde","Noite"],
"selectable_count": 1
}
Histórico persistido. Default limit=100, máx 500.
Baixa e descriptografa a mídia. Devolve bytes com o Content-Type correto. Aceita apikey via query (?apikey=…) pra usar em <img>/<video>.
Edita o texto. WhatsApp permite só dentro de ~15 min do envio.
{ "to": "5511999999999", "text": "novo texto" }
Apaga pra todos (revoke).
{ "to": "5511999999999" }
Marca mensagens como lidas (manual). Em grupos, sender é o JID do remetente.
{
"chat": "5511999999999@s.whatsapp.net",
"sender": "5511999999999@s.whatsapp.net",
"message_ids": ["ABC123","DEF456"]
}
Detalhe de uma mensagem persistida.
Cria um grupo. Nome até 25 chars.
{
"subject": "Time vendas",
"participants": ["5511999999999","5511888888888"]
}
Lista todos os grupos da conta.
Detalhes do grupo, com lista de participantes (is_admin, is_super_admin).
Link de convite. Use ?reset=true para revogar e gerar um novo.
→ { "link": "https://chat.whatsapp.com/ABCD..." }
Entra num grupo via link/código de convite.
{ "code": "https://chat.whatsapp.com/ABCD..." }
{ "name": "novo nome" }{ "topic": "descrição do grupo" }{ "url": "https://…" } // ou { "base64": "..." }action: add · remove · promote · demote
{
"action": "promote",
"participants": ["5511999999999"]
}
Confere em batch quais números têm conta no WhatsApp. Útil pra validar antes de mandar.
{ "phones": ["5511999999999","5511888888888"] }
→
[
{ "phone": "+5511999999999", "exists": true, "jid": "...@s.whatsapp.net" },
{ "phone": "+5511888888888", "exists": false }
]
{ "jid": "5511999999999@s.whatsapp.net" }{ "jid": "5511999999999@s.whatsapp.net" }→ { "jids": ["...@s.whatsapp.net", ...] }{ "jid": "...@s.whatsapp.net", "value": true }{ "jid": "...@s.whatsapp.net", "value": true }duration_seconds=0 = mudo permanente, negativo = desmuta.
{ "jid": "...@s.whatsapp.net", "duration_seconds": 3600 }
Disponível em contas WhatsApp Business. color = índice 0–19 da paleta.
Cria, edita ou apaga uma label. Use deleted:true pra remover.
{ "label_id":"1", "name":"Cliente VIP", "color":5 }
{ "label_id":"1", "deleted":true }
{ "jid":"...@s.whatsapp.net", "label_id":"1", "labeled":true }
{ "jid":"...@s.whatsapp.net", "label_id":"1", "message_id":"ABC...", "labeled":true }
URL da foto de perfil de qualquer JID (contato ou grupo).
→ { "url": "https://pps.whatsapp.net/..." }
Atualiza o "recado" (about) da conta.
{ "text": "Disponível 24h" }
{ "state": "available" } // ou "unavailable"
Sinaliza "digitando" ou "gravando áudio" num chat.
{
"to": "5511999999999",
"state": "composing", // composing | paused
"media": "audio" // text | audio
}
Lista todos os contatos que o WhatsApp conhece (push name + business name).
{
"messages": 1024,
"messages_sent": 400,
"messages_received": 624,
"chats": 42,
"groups": 3,
"contacts": 1200,
"connected": true,
"status": "connected",
"last_message_at": "2026-04-24T21:00:00Z"
}
Lista conversas com preview da última mensagem e total.
[{
"chat_jid": "5511999…@s.whatsapp.net",
"last_content": "Valeu!",
"last_type": "text",
"last_from_me": false,
"last_timestamp": "2026-04-24T20:00:00Z",
"total": 17
}]
Cada webhook é um endpoint HTTP seu que recebe POSTs com os eventos da instância. Suporta múltiplos por instância, com escolha granular de eventos e assinatura HMAC opcional.
{
"url": "https://n8n.seu-dominio.com/webhook/abc",
"events": ["message.received", "connection.state"],
"secret": "opcional-para-hmac-sha256"
}
Atualiza URL, eventos, secret ou enabled. Envie só os campos que deseja alterar.
Corpo enviado ao webhook. Estrutura flat — o campo type indica qual evento foi disparado e timestamp vem em milissegundos.
{
"type": "message.received",
"instanceId": "ba6bd24e-…",
"instanceName": "minha-loja",
"connectedPhone": "5511950448963",
"messageId": "ACEDD27D…",
"phone": "5512981713261",
"chatLid": "5512981713261@s.whatsapp.net",
"chatName": "Fulano",
"senderName": "Fulano",
"fromMe": false,
"timestamp": 1775604007000,
"status": "RECEIVED",
"isGroup": false,
"isNewsletter": false,
"isStatusReply": false,
"isEdit": false,
"messageType": "text",
"text": { "message": "Olá!" }
}
{
"type": "message.status",
"instanceId": "ba6bd24e-…",
"messageId": "ABC…",
"chatLid": "5511…@s.whatsapp.net",
"phone": "5511…",
"status": "READ", // ou DELIVERED
"timestamp": 1775604007000
}
{
"type": "connection.connected",
"instanceId": "ba6bd24e-…",
"instanceName": "minha-loja",
"connectedPhone": "5511950448963",
"status": "connected",
"timestamp": 1775604007000
}
{
"type": "connection.qr",
"instanceId": "…",
"instanceName": "minha-loja",
"qrCode": "2@abc…",
"timestamp": 1775604007000
}
{
"type": "call.rejected",
"instanceId": "…",
"callId": "XYZ",
"phone": "5511999999999",
"rejected": true,
"timestamp": 1775604007000
}
Se o webhook tiver secret, cada POST chega com:
X-Webhook-Signature: sha256=<hex>
Onde hex é HMAC-SHA256(secret, body_bytes).
const crypto = require('crypto');
const sig = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
// comparar com req.headers['x-webhook-signature']
const sig = $request.headers['x-webhook-signature'];
const expect = 'sha256=' + require('crypto')
.createHmac('sha256', 'SEU_SECRET')
.update($request.rawBody)
.digest('hex');
if (sig !== expect) throw new Error('invalid signature');
Broadcasts nomeados com auto-rewrite de URLs e funnel completo.
Encurta URLs e mede cliques. Compartilhe o short URL (não o destino) — quando alguém clica, a API redireciona e grava o evento. Use em campanhas, bio do WhatsApp Business ou mensagens manuais.
Score 0-100 por contato. Use pra filtrar leads quentes antes de campanha, identificar quem precisa de reativação, ou priorizar atendimento.
O lookup individual calcula response_rate também (mais preciso, mas mais lento que o ranking).
Eventos que sua aplicação registrou via POST /events/{instance}/conversion. Cada conversão é atribuída à última campanha enviada pro contato (janela padrão 7d).
POST /events/{instance}/conversion quando concluir uma venda — a conversão aparece aqui e é atribuída à última campanha que enviou pro contato.URLs serão reescritas como short links se "auto-rewrite" estiver ligado.
Recomendado: 20-30/min pra disparos grandes (evita ban). Use 60+ só pra listas pequenas (≤50 contatos).
Atalhos só funcionam fora de campos de texto (exceto Ctrl+K, que funciona em qualquer lugar).