Dev

WhatsApp desconecta sozinho na API: causas e solução

Uma instância de WhatsApp desconecta sozinha, na prática, por cinco motivos: o aparelho foi removido da lista de Aparelhos conectados no celular, a instância foi suspensa por falta de saldo, o WhatsApp restringiu o número, alguém chamou desconectar ou reiniciar pela API, ou a sessão foi invalidada pelo próprio WhatsApp. O status da instância costuma trazer o último motivo, e o evento connection do webhook avisa na hora em que a queda acontece. Aqui está como diferenciar cada caso e o que fazer.

Publicado em · 6 min de leitura

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

Como descobrir por que a instância caiu?

Comece pelo status da instância. A resposta traz o estado atual (disconnected, connecting ou connected) e, em instâncias desconectadas, campos como lastDisconnect e lastDisconnectReason, que registram quando e por qual motivo a conexão terminou (por exemplo, desconexão pedida pela própria API). Não é uma lista fechada de motivos: trate o texto como pista e cruze com a tabela abaixo.

Depois olhe o seu lado. Alguém da equipe chamou desconectar instância ou reiniciar instância? Um script de manutenção, um teste automatizado ou uma automação mal desenhada que chama desconectar em loop explicam muitos casos de queda recorrente.

Status e motivo da última desconexão

curl "https://api.zapzapapi.com/api/v1/$INSTANCE_ID/instance/status" \
  -H "x-api-key: $ZAPZAP_API_KEY" \
  -H "x-api-secret: $ZAPZAP_API_SECRET"
# veja instance.status e, quando houver, instance.lastDisconnect e instance.lastDisconnectReason

Quais são as causas mais comuns e o que fazer em cada uma?

CausaComo reconhecerO que fazer
Aparelho removido no celularO número aparece sem a sessão em Aparelhos conectadosLeia o QR code de novo. Oriente a equipe a não remover o aparelho
Celular com problema (sem internet, WhatsApp desatualizado, app reinstalado)Queda depois de troca de aparelho ou de reinstalaçãoAtualize o app, reconecte e evite reinstalar sem necessidade
Saldo insuficienteInstância suspensa, e a chamada de QR devolve 402 PROXY_SUSPENDEDRegularize o saldo. Depois da reativação, a instância volta desconectada e pede novo QR
Restrição ou banimento pelo WhatsAppReconexão recusada ou queda repetida logo após parearVeja o guia de número banido e pare os envios
Desconectar ou reiniciar chamado por APIlastDisconnectReason indica pedido pela APIRevise scripts e automações que chamam esses endpoints
Sessão invalidada pelo WhatsAppQueda sem causa aparente, sem ação suaReconecte e acompanhe se repete; se repetir, investigue o uso

Sobre saldo: a ZapZap suspende instâncias quando o saldo não cobre a renovação depois do período de carência, e a reativação após o pagamento deixa a instância desconectada, exigindo novo pareamento. É por isso que manter o saldo com folga evita a queda. Os detalhes de cobrança estão em preços.

Sobre o celular: a conexão de aparelhos adicionais depende do aparelho principal. Se o WhatsApp do celular principal ficar muito tempo sem uso, o WhatsApp pode encerrar as sessões conectadas. Consulte o artigo 'Sobre dispositivos conectados' na Central de Ajuda do WhatsApp para as regras atuais, porque elas mudam.

Como reconectar a instância?

Se a instância ficou desconectada, o caminho é parear de novo: peça o QR em QR Code da instância ou use o pareamento por código em conectar instância. O passo a passo e os códigos de erro estão no guia de QR code que não aparece.

Se a instância aparece conectada mas não responde, o reinício do runtime pode resolver. Ele não apaga a sua configuração. Se a instância estiver desconectada, o reinício não substitui o pareamento: será preciso ler o QR de novo. Registre cada reconexão com data e motivo; três quedas na mesma semana pedem investigação de causa, não só reconexão.

Reiniciar o runtime e conferir o status

BASE="https://api.zapzapapi.com/api/v1"
H1="x-api-key: $ZAPZAP_API_KEY"
H2="x-api-secret: $ZAPZAP_API_SECRET"

curl -X POST "$BASE/$INSTANCE_ID/instance/reset" -H "$H1" -H "$H2"
sleep 10
curl "$BASE/$INSTANCE_ID/instance/status" -H "$H1" -H "$H2"

Como ser avisado da queda antes do cliente?

Ligue o evento connection no webhook. Ele dispara a cada mudança de estado do número (conectado, desconectado, conectando). Ao receber desconectado, o seu sistema pode abrir um alerta para a equipe, pausar filas de envio e, se a regra de negócio permitir, avisar o cliente final de que o atendimento está instável. A configuração está em configurar webhook, e o tratamento seguro do evento no guia de webhook em produção.

Como segunda rede, faça uma checagem periódica do status da instância. Webhook pode falhar, e um monitor simples que consulta o status a cada poucos minutos e alerta em caso de queda cobre esse buraco. Se você usa o n8n, a integração com n8n traz o gatilho de webhook pronto para essa automação.

Node.js: monitor simples de status

const BASE = "https://api.zapzapapi.com/api/v1";
const headers = {
  "x-api-key": process.env.ZAPZAP_API_KEY,
  "x-api-secret": process.env.ZAPZAP_API_SECRET,
};

async function checar(id) {
  const resp = await fetch(BASE + "/" + id + "/instance/status", { headers });
  if (!resp.ok) return console.error("status falhou", resp.status);
  const { instance } = await resp.json();
  if (instance.status !== "connected") {
    console.error("ALERTA: instância", id, "está", instance.status, instance.lastDisconnectReason || "");
    // aqui: enviar e-mail, Slack, etc.
  }
}

setInterval(() => checar(process.env.INSTANCE_ID).catch(console.error), 3 * 60 * 1000);

Como reduzir quedas e risco no dia a dia?

Quedas recorrentes têm menos a ver com sorte e mais com processo. Tenha um responsável pelo celular do número, mantenha o aplicativo atualizado, não remova o aparelho conectado sem avisar a operação e evite usar o mesmo número em outra ferramenta ao mesmo tempo. Para operações em que o número é crítico, mantenha um número reserva e separe funções (atendimento, cobrança, vendas) em instâncias diferentes, de modo que uma queda não pare tudo.

Se a desconexão veio acompanhada de restrição pelo WhatsApp, ela não é uma falha técnica a ser consertada com reinício. Nenhuma ferramenta elimina esse risco, e o uso de API não oficial não está previsto nos Termos do WhatsApp. O guia anti-bloqueio no WhatsApp explica o que reduz o risco e o que não o elimina.

Checklist rápido para uma instância estável

[ ] Há um responsável pelo celular do número e pelo aplicativo atualizado

[ ] Ninguém remove o aparelho conectado sem avisar a operação

[ ] O saldo cobre a renovação com folga

[ ] Scripts e automações não chamam desconectar ou reiniciar sem necessidade

[ ] O evento connection está ligado no webhook e alerta a equipe

[ ] Existe um monitor de status como segunda rede

[ ] Há um número reserva e um canal alternativo para avisar clientes

Cada queda que se repete é um dado. Anote a data, o horário, o lastDisconnectReason e o que mudou naquele dia (deploy, troca de celular, campanha). Em poucas semanas o padrão aparece, e é quase sempre uma causa operacional que se resolve com processo e não com tecnologia.

Resumo rápido

  • O status da instância traz o estado e, quando desconectada, o último motivo (lastDisconnectReason).
  • Causas comuns: aparelho removido no celular, saldo insuficiente, restrição do WhatsApp, desconectar ou reiniciar por API e sessão invalidada.
  • Depois de suspensão por saldo, a instância volta desconectada e precisa de novo pareamento.
  • Ligue o evento connection no webhook e tenha um monitor de status como segunda rede.
  • Quedas recorrentes pedem investigação de causa, não só reconexão.

Perguntas frequentes

Por que minha instância de WhatsApp desconecta sozinha?

As causas mais comuns são aparelho removido da lista de Aparelhos conectados, saldo insuficiente, restrição do WhatsApp ao número, chamada de desconectar ou reiniciar pela API e sessão invalidada pelo WhatsApp. O status da instância traz o último motivo.

Preciso ler o QR code toda vez que cai?

Se a instância foi desconectada de fato, sim: é preciso parear de novo, por QR code ou por código de telefone. Reiniciar o runtime só resolve instância conectada que parou de responder.

Como ser avisado quando o número desconectar?

Ligue o evento connection no webhook da instância e trate o estado desconectado. Como segunda rede, consulte o status da instância periodicamente.

O saldo acabou. O que acontece com a instância?

Ela é suspensa depois do período de carência. Ao regularizar o saldo, a instância é reativada, volta desconectada e exige novo pareamento.

Desconexão significa que o número foi banido?

Não necessariamente. Muitas quedas são de sessão, celular ou saldo. Se a reconexão for recusada ou a queda se repetir logo após parear, vale investigar restrição do número.

Monitore suas instâncias por webhook

Crie a conta, verifique o telefone e receba o crédito de boas-vindas, sem depositar (um por telefone, sujeito à campanha vigente). Conecte um número e ligue o evento connection.