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
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.
Continue lendo
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.
