Migração

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

Este artigo também está disponível em: English · Español

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çãoEvolution APIZapZap
Autenticaçãocabeçalho apikey (chave global ou da instância)x-api-key e x-api-secret
Enviar textoPOST /message/sendText/{instanceName}, com number e textMessage.textPOST /api/v1/{instanceId}/send/text, com number e text
Enviar arquivoendpoints de mídia por tipoPOST /api/v1/{instanceId}/send/media com type, file, text e docName
Verificar númeroconferir na documentação da EvolutionPOST /api/v1/{instanceId}/chat/check com numbers
EventosMESSAGES_UPSERT, MESSAGES_UPDATE, CONNECTION_UPDATE e outros, por instânciamessages, messages_update, connection e outros, em PUT /api/v1/instances/{id}/webhook
ConectarQR code ou código de pareamento na instânciaQR 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.

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.