WPPAPI
Blog

Como evitar banimento no WhatsApp com API não oficial

·Equipe WPPAPIboas práticasanti-ban

Vamos ser diretos: API não oficial de WhatsApp corre risco de banimento — e quem te promete “zero ban garantido” está mentindo. A conexão via QR Code não passa pela aprovação da Meta, então quem decide se o número fica ou cai é o algoritmo antispam do WhatsApp, não o seu provedor de API.

A boa notícia é que a esmagadora maioria dos banimentos não vem do “uso de API” em si — vem de comportamento que parece spam. Número novo disparando centenas de mensagens para desconhecidos é o retrato exato do que o WhatsApp caça. Este guia é sobre reduzir esse risco ao mínimo com hábitos concretos. Se o seu caso de uso é envio em massa para lista fria, nenhuma técnica aqui salva você — e a gente prefere avisar antes de você perder o número.

1. Aqueça o número antes de automatizar

Chip novo comprado hoje, API plugada amanhã, mil disparos na sexta: receita clássica de ban. Um número precisa parecer humano antes de virar robô.

  • Semana 1: use o número no celular normalmente. Converse com contatos reais, entre em 2–3 grupos, mande e receba áudios e fotos.
  • Semana 2: comece a automação com volume baixo (algumas dezenas de mensagens/dia), sempre para quem já te conhece.
  • Depois: suba o volume de forma gradual, nunca dobrando de um dia para o outro.

Números que já são usados há meses no atendimento têm reputação e aguentam muito mais. Chip recém-ativado é o mais frágil de todos.

2. Respeite o ritmo — 1 mensagem por segundo já é rápido

Disparar rápido demais é o sinal número um de bot. Na WPPAPI o próprio gateway aplica um limite de ~1 mensagem por segundo por instância (uso justo): se você tentar estourar isso, a API responde 429 Too Many Requests em vez de deixar você queimar o número.

Mas não delegue tudo ao limite técnico. Adote um espaçamento variável entre envios — algo entre 3 e 15 segundos, aleatório — para não criar um padrão robótico perfeito:

// espera aleatória entre mensagens (3s a 15s)
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));

for (const contato of lista) {
  await fetch(
    `https://api.wpp-api.com/instances/${ID}/token/${TOKEN}/send-text`,
    {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ phone: contato.telefone, message: contato.texto }),
    }
  );
  await sleep(3000 + Math.random() * 12000); // 3–15s
}

Para campanhas maiores, quebre o envio em janelas ao longo do dia em vez de despejar tudo de uma vez.

3. Só mande para quem pediu (opt-in de verdade)

Este é o ponto que mais protege o número — e o que a LGPD também exige. A denúncia de um usuário (“Bloquear e denunciar”) pesa muito mais no algoritmo do que o volume. Alguns bloqueios em sequência derrubam a conta.

  • Colete opt-in explícito: a pessoa marcou uma caixa, respondeu “quero receber” ou iniciou a conversa.
  • Ofereça descadastro fácil (“responda SAIR para parar”) e honre na hora.
  • Nunca compre lista. Lista fria = denúncia = ban. Sem exceção.

Vale a mesma lógica da confiabilidade de webhooks: processo previsível e rastreável evita dor de cabeça depois. Falamos disso no guia de webhooks com Node.js.

4. Valide o número antes de enviar

Mandar mensagem para número que não tem WhatsApp gera erro e piora sua reputação de envio. Cheque antes com o endpoint check-number:

curl "https://api.wpp-api.com/instances/{id}/token/{token}/check-number?phone=5511999998888"

Se o número não existir no WhatsApp, pule — não insista.

5. Comporte-se como gente, não como script

O WhatsApp observa padrões de interação, não só volume. Alguns hábitos que aproximam seu bot de um humano:

  • Simule digitação antes de responder, com o endpoint typing/start (e typing/stop ao terminar). Respostas instantâneas de madrugada denunciam automação.
  • Marque mensagens como lidas (send-seen) em vez de ignorar o “visto”.
  • Varie o conteúdo. Mil mensagens idênticas, palavra por palavra, é assinatura de spam. Use variáveis (nome, pedido, data) e monte 2–3 versões do mesmo texto.
  • Prefira responder a iniciar. Fluxos em que o cliente puxa a conversa (ele manda “oi”, você responde) são muito mais seguros do que disparos frios.

6. Reduza atrito operacional

Dois ajustes simples de instância ajudam a manter o número saudável:

  • Rejeitar chamadas automaticamente (rejectCalls): bots que recebem ligação e ninguém atende acumulam sinais ruins.
  • Distribua o risco. Se você tem volume alto, divida entre várias instâncias em vez de sobrecarregar um número só. No plano Pro são 3 instâncias, e cada adicional sai por R$ 45/mês — veja a grade em preços. Para quem precisa de isolamento total, o add-on de IP dedicado roda a instância em worker exclusivo.

O que nenhuma técnica resolve

Sendo honesto até o fim: se o seu modelo depende de disparo em massa para lista fria, marketing agressivo ou mensagens não solicitadas, o risco de ban é alto e permanente — e aí o caminho certo é a API oficial (Cloud API), que autoriza esse uso mediante pagamento por conversa e templates aprovados. A API não oficial brilha em atendimento, notificações transacionais e conversas 1:1 com quem já é seu cliente. Use para isso e o número dura anos.

Quer testar as boas práticas na prática, sem cartão? O trial de 3 dias já vem com todos os recursos — rate limit, check-number, presença e webhooks — para você aquecer e validar seu fluxo antes de escalar.

Coloque em prática

3 dias grátis, sem cartão — API, webhooks e Chatwoot inclusos.

Testar 3 dias grátis