Migrar da Evolution API para a ZapZap: guia passo a passo
Migrar da Evolution API para a ZapZap troca um sistema que você hospeda por um serviço gerenciado. Você deixa de operar servidor, banco e atualização, e passa a pagar R$15 por número ativo ao mês. A troca no código é pequena: URL e cabeçalhos de envio e o leitor de webhook. Os fatos sobre a Evolution vêm do repositório e da documentação oficial, lidos em 27/10/2026.
Publicado em · 4 min de leitura
O que muda ao sair do self-hosted
A Evolution API é de código aberto: o repositório oficial indica licença Apache 2.0 com condições adicionais de preservação de logo e aviso de uso, Node.js 20 ou superior, PostgreSQL ou MySQL e Redis recomendado. A própria descrição do projeto diz que a conexão por Baileys depende do WhatsApp Web e pode ter limitações em relação às APIs oficiais. Você escolhe o servidor, a versão e o momento de atualizar.
Na ZapZap, o servidor, a atualização e o monitoramento ficam com a gente, e a cobrança é por número ativo. Em troca, você não controla a infraestrutura nem o código. Os dois são não oficiais, então o risco de bloqueio do número é do mesmo tipo.
Quanto custa manter a Evolution: a conta aberta
Software livre não é custo zero. Monte a conta com os seus números: servidor (VPS ou nuvem) que roda Node, banco e Redis; backup; monitoramento; e as horas de quem atualiza e investiga quando uma sessão cai. Some o custo mensal do servidor ao valor da hora do responsável vezes as horas por mês e divida pelo número de instâncias.
Compare com R$15 por número ativo ao mês. Se você opera muitas instâncias e já tem DevOps, a conta pode favorecer a Evolution. Se tem poucas instâncias e ninguém dedicado, costuma favorecer o gerenciado. O post sobre Evolution e WAHA hospedados x API gerenciada tem a fórmula completa.
Mapa de endpoints: Evolution API para ZapZap
A coluna da Evolution vem da documentação oficial (docs.evolutionfoundation.com.br, 27/10/2026). Versões diferentes da Evolution usam formatos diferentes, então confira a sua.
| Ação | Evolution API | ZapZap |
|---|---|---|
| Autenticação | cabeçalho apikey (chave global ou da instância) | x-api-key e x-api-secret |
| Enviar texto | POST /message/sendText/{instanceName}, com number e textMessage.text | POST /api/v1/{instanceId}/send/text, com number e text |
| Enviar arquivo | endpoints de mídia por tipo | POST /api/v1/{instanceId}/send/media com type, file, text e docName |
| Verificar número | conferir na documentação da Evolution | POST /api/v1/{instanceId}/chat/check com numbers |
| Eventos | MESSAGES_UPSERT, MESSAGES_UPDATE, CONNECTION_UPDATE e outros, por instância | messages, messages_update, connection e outros, em PUT /api/v1/instances/{id}/webhook |
| Conectar | QR code ou código de pareamento na instância | QR code em QR da instância ou código de pareamento em conectar |
Como mudar o envio e o webhook
O envio muda em URL, cabeçalhos e forma do corpo: na Evolution, o texto fica dentro de um objeto textMessage; na ZapZap, é o campo text no topo. Mantenha uma função única de envio e troque só o interior dela.
No webhook, a Evolution envia o nome do evento em maiúsculas (por exemplo, MESSAGES_UPSERT); a ZapZap envia event em minúsculas (messages) dentro de um envelope com data.message. Escreva um adaptador e ligue na ZapZap só o evento messages, mais messages_update se você usa status de entrega.
Node.js: envio e adaptador
// ANTES: Evolution API
// POST {EVOLUTION_URL}/message/sendText/{instancia} header: apikey
// body: { number: "5511999999999", textMessage: { text: "Olá!" } }
// DEPOIS: ZapZap
export async function enviarWhatsApp(numero, texto) {
const r = await fetch(
"https://api.zapzapapi.com/api/v1/" + process.env.ZAPZAP_INSTANCE_ID + "/send/text",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": process.env.ZAPZAP_API_KEY,
"x-api-secret": process.env.ZAPZAP_API_SECRET,
},
body: JSON.stringify({ number: numero, text: texto }),
signal: AbortSignal.timeout(15000),
}
);
if (!r.ok) throw new Error("ZapZap " + r.status + " " + (await r.text()));
return r.json();
}
export function deZapZap(evento) {
const m = evento?.data?.message;
if (evento?.event !== "messages" || !m || m.fromMe) return null;
return { telefone: String(m.chatid || "").replace(/\D/g, ""), texto: m.text || "" };
}Como mover o número e checklist de virada
Crie a instância na ZapZap (Criar Instância) e conecte o número por QR code. As mensagens e contatos guardados no seu banco da Evolution continuam seus: exporte-os antes de desligar o servidor. Não mantenha o mesmo número conectado nos dois ao mesmo tempo.
Checklist: 1) criar a conta e testar com um número seu; 2) trocar a função de envio; 3) apontar o webhook para o adaptador e validar a assinatura (guia); 4) exportar o que quiser guardar da Evolution; 5) virar em horário calmo; 6) desligar o servidor antigo só depois de alguns dias de operação estável.
Quando continuar na Evolution
Continue na Evolution se você tem DevOps e quer o código e os dados dentro do seu ambiente, se opera muitas instâncias e a conta de servidor fecha a seu favor, ou se depende de uma integração específica dela. Veja também o comparativo Evolution API x ZapZap. Se você precisa de canal homologado pela Meta, a opção é a API oficial.
Resumo rápido
- A troca no código é pequena: URL e cabeçalhos de envio e um adaptador de webhook.
- Software livre tem custo de servidor, atualização e tempo: faça a conta com os seus números.
- Os dois são não oficiais; o risco do número é do mesmo tipo.
- Exporte os dados que quiser guardar antes de desligar o servidor da Evolution.
Continue lendo
Perguntas frequentes
Meus dados da Evolution vão para a ZapZap?
Não automaticamente. A Evolution guarda dados no seu banco; exporte o que precisar. A ZapZap começa com a instância vazia, conectada pelo QR code.
A ZapZap usa Baileys como a Evolution?
Não publicamos detalhes de implementação como critério de escolha. Do ponto de vista de quem usa, a conexão é por QR code, como no WhatsApp Web, e o risco de uma solução não oficial existe nos dois.
Posso migrar aos poucos?
Pode: migre uma instância por vez, começando por uma de menor risco, e mantenha a função de envio configurável por instância durante a transição.
A ZapZap garante que o número não será bloqueado?
Não. Nenhuma API não oficial pode garantir isso. Aquecimento, atraso e digitando automáticos reduzem o risco, mas opt-in, ritmo e lista limpa continuam sendo seus.
Compare na prática
Crie a conta, conecte um número de teste e rode o mapa de endpoints. R$15 por número ativo ao mês, sem cobrança por mensagem.
