Dev

Checklist de migração de outra API de WhatsApp para a ZapZap sem perder o histórico

Quem já opera numa API de WhatsApp (Evolution, Z-API, WAHA ou outra) e quer migrar teme três coisas: ficar fora do ar, perder o histórico e quebrar o sistema dos clientes. A boa notícia é que, para uma API REST com webhook, a migração é troca de endereço e de formato, feita número a número. O histórico de conversas do seu sistema continua sendo seu e não migra sozinho: a ZapZap não importa o banco da API anterior. A ZapZap é uma solução não oficial, como boa parte das alternativas citadas, e o WhatsApp pode limitar ou bloquear números em qualquer uma.

Publicado em · 4 min de leitura

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

Passo 1: inventário antes de mexer em qualquer coisa

Liste, por número: cliente, quem usa, volume diário, integrações que chamam a API (CRM, n8n, chatbot), o endereço de webhook atual e o formato dos eventos que seu sistema espera. Marque os números críticos e os de baixo risco. O primeiro a migrar é o de menor risco, não o maior cliente.

Faça também o inventário do histórico: o que está no seu banco (conversas, leads) e o que existe só na API antiga. Exporte o que só existe lá antes de cancelar qualquer coisa. Para a comparação do que cada alternativa entrega, veja os comparativos.

Passo 2: troque o cliente HTTP, não o seu sistema

Crie uma camada pequena no seu código (uma função enviarTexto) e deixe a troca de API acontecer só nela. Na ZapZap, o envio de texto é POST https://api.zapzapapi.com/api/v1/{instanceId}/send/text, com number e text no corpo e os cabeçalhos x-api-key e x-api-secret. A referência e o arquivo OpenAPI listam os demais endpoints (mídia, botões, enquetes, grupos), e há SDKs em Node.js, Python e PHP.

Faça o mesmo para o webhook: um adaptador que converte o envelope da ZapZap para o formato interno do seu sistema. Valide a assinatura e deduplique, como no guia de webhooks idempotentes.

The main calls of a migration

# 1) Inventory: list the instances already created on ZapZap
curl "https://api.zapzapapi.com/api/v1/instances" \
  -H "x-api-key: $ZAPZAP_API_KEY" -H "x-api-secret: $ZAPZAP_API_SECRET"

# 2) Point the new webhook at your system and keep the old one running during the cutover
curl -X PUT "https://api.zapzapapi.com/api/v1/instances/INSTANCE_ID/webhook" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $ZAPZAP_API_KEY" -H "x-api-secret: $ZAPZAP_API_SECRET" \
  -d '{"webhook_url":"https://your-system.example/webhook","events":"messages,messages_update"}'

# 3) Optional: ask for older messages of ONE chat (they arrive through the webhook, not in the response)
curl -X POST "https://api.zapzapapi.com/api/v1/INSTANCE_ID/message/history-sync" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $ZAPZAP_API_KEY" -H "x-api-secret: $ZAPZAP_API_SECRET" \
  -d '{"number":"5511999999999@s.whatsapp.net","count":50}'

# 4) Switch the send call: same idea, new base URL and headers
curl -X POST "https://api.zapzapapi.com/api/v1/INSTANCE_ID/send/text" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $ZAPZAP_API_KEY" -H "x-api-secret: $ZAPZAP_API_SECRET" \
  -d '{"number":"5511999999999","text":"Test after migration"}'

Passo 3: conecte o número e rode os dois lados em paralelo

Conectar o número na ZapZap é escanear um QR code, e isso exige o aparelho em mãos: programe a janela com o cliente. Mudar de ferramenta é uma mudança de sessão do número, então evite disparos nas primeiras horas e comece por conversas de quem já fala com o cliente.

Durante o corte, mantenha o webhook antigo e o novo ativos para o mesmo número só se o seu sistema deduplicar. Teste com o POST de teste do webhook, envie uma mensagem de teste e confirme o recebimento de uma resposta real.

Passo 4: o que fazer com o histórico

O histórico de conversas que está no seu banco continua lá: não precisa migrar nada. O que a API antiga guardava e o seu sistema não, você exporta por ela. Do lado da ZapZap, existe POST /{instanceId}/message/history-sync, que solicita a sincronização de mensagens antigas de um chat; as mensagens chegam pelo webhook ou pelo SSE, não na resposta, e os parâmetros são o JID do chat, uma mensagem de referência e a quantidade. Peça por chat e trate o volume recebido, porque o que o WhatsApp devolve depende do que ele ainda mantém.

Não prometa ao cliente o histórico completo. Combine o que fica: o que está no seu banco, mais o que a sincronização trouxer. Consulte mensagens já recebidas com POST /{instanceId}/message/find.

Passo 5: corte gradual, um número por vez

Migre um número, observe um dia útil inteiro (entregas, respostas, erros no webhook, status da instância) e só então migre o próximo. Mantenha a API antiga paga até o último número estabilizar, porque ela é o seu plano de volta. O custo da ZapZap é R$15 por número ativo ao mês, pré-pago e sem cobrança por mensagem, mais a taxa de ativação por instância: consulte o GET /instances/cost e a página de preços.

Feche cada número com uma revisão curta: webhook com taxa de erro baixa, taxa de resposta parecida com a anterior e o cliente avisado. Para quem opera em escala, veja agências com IA, revenda com a marca do cliente e o aquecimento de chip.

Resumo rápido

  • Migrar é trocar chamadas HTTP, webhook e a conexão do número; o seu sistema deve ter uma camada única de envio.
  • O histórico que está no seu banco continua seu; a ZapZap não importa o banco da API anterior.
  • message/history-sync pede mensagens antigas de um chat e as entrega por webhook ou SSE, sem garantia de histórico completo.
  • Migre um número por vez, observe um dia útil e mantenha a API antiga até o fim.
  • A ZapZap é uma solução não oficial: o risco de limite ou bloqueio existe em qualquer API não oficial.

Perguntas frequentes

A ZapZap importa o histórico da minha API atual?

Não há importação do banco de outra API. O histórico do seu sistema permanece com você, e é possível solicitar mensagens antigas de um chat com message/history-sync.

Preciso reconectar o número por QR code?

Sim. Cada número é conectado à ZapZap por QR code, com o aparelho em mãos. Agende a janela com o cliente.

Posso manter a API antiga durante a migração?

Pode e deve, até o último número estabilizar. Só deixe os dois webhooks ativos se o seu sistema deduplicar eventos.

O formato do webhook é igual ao da minha API atual?

Provavelmente não. O envelope da ZapZap tem delivery_id, event_id, instance_id, event e data; crie um adaptador para o formato interno.

Migrar reduz o risco de bloqueio?

Não por si só. A ZapZap é uma solução não oficial e o WhatsApp pode limitar ou bloquear números. O que ajuda é ritmo, consentimento e aquecimento.

Migre o primeiro número e compare

Crie a conta, conecte um número de teste e troque uma chamada. R$15 por número ativo ao mês, sem cobrança por mensagem. Ao verificar o telefone há crédito de boas-vindas, sujeito à campanha vigente.