Skip to content
WhatIsUp.dev

Mantendo os números saudáveis

O WhatsApp restringe e bane números pela forma como as pessoas reagem a eles. Um número que responde principalmente quem escreveu pra ele dura anos; um número que manda mensagem principalmente pra estranhos é denunciado, restringido e depois banido — muitas vezes junto com todos os outros números que se comportaram igual. Este guia mostra o que fazer, e as ferramentas que o gateway te dá em cada passo.

Ligado por padrão: nota de saúde e avisos

Você não precisa configurar nada pra começar. Todo número ganha um nível de saúde — good, warning, danger ou restricted — recalculado a cada 15 minutos com base nos últimos 7 dias: quantas pessoas ele chamou primeiro, quantas responderam, quão novo é o número e o que o próprio WhatsApp informa. Você vê isso como selo na lista de canais, aviso na página do canal, webhook channel.health e um email quando um número vira danger ou restricted. Leia com GET /v1/channels/{id}/health.

A auto-proteção (desligada, a menos que você ligue — por número, nas configurações dele ou com PUT /v1/channels/{id}/pacing) age em cima disso: mensagens pra quem nunca escreveu pro número são espaçadas — uns poucos segundos quando está saudável (uma mensagem sozinha ainda sai na hora), 30–90 segundos com "digitando…" em warning, 2–5 minutos em danger e em restricted. Respostas nunca atrasam, e o gateway nunca recusa nem desacelera um envio sozinho por causa da saúde do número — ele avisa, e o seu tráfego sai no seu ritmo. O resto deste guia é como nem chegar em warning.

O que faz um número ser banido

  • Mensagens pra quem nunca te escreveu. O primeiro contato frio é o sinal mais forte, e o WhatsApp conta isso por número.
  • Gente bloqueando ou denunciando. Algumas denúncias a cada cem destinatários já podem bastar.
  • O mesmo texto pra muita gente. Modelos idênticos em vários números ligam esses números entre si.
  • Ninguém respondendo. Um número saudável recebe respostas; tráfego de mão única parece disparo em massa.
  • Números novos com volume alto, e muitos números no mesmo IP.

1 — Deixe a pessoa escrever primeiro

A mensagem mais segura que um número pode mandar é uma resposta. Pra códigos de verificação, inverta o fluxo: em vez de mandar o código, mostre um botão que abre o WhatsApp com o código já escrito, e deixe a pessoa mandar pra você.

https://wa.me/5511999990000?text=Meu%20c%C3%B3digo%3A%20482913

Você recebe isso como webhook message.received, confere o código, marca o número como verificado e responde na mesma conversa ("✅ Verificado!"). Deixe o envio do código só como plano B.

2 — Se você precisa mandar primeiro

  • Só mande pra números que pediram. Confirme o número antes de enviar ("Mandar o código pra (11) 9••••-0000?"), limite o botão e reenvie o mesmo código em vez de uma mensagem nova a cada toque.
  • Peça uma resposta. Termine com algo como "Responda OK se foi você". Resposta é o sinal mais forte de que a mensagem foi desejada.
  • Varie o texto, diga quem está mandando e deixe links fora das primeiras mensagens.
  • Não insista em números mortos. Um 400 undeliverable_recipient significa que o número não tem WhatsApp — marque como inválido, não tente por outro número.
  • Limite conversas novas pela idade do número. Pontos de partida conservadores: menos de 7 dias, só respostas; de 7 a 14 dias, até 10 conversas novas por dia; de 15 a 30 dias, até 25; mais velhos, até 40. Quando todos os números chegarem no limite, use outro canal (email, SMS) em vez de forçar.
  • Fixe cada pessoa num número. Mande o mesmo destinatário sempre pelo mesmo número em vez de espalhar entre vários.

3 — Acompanhe o que o WhatsApp diz de cada número

O WhatsApp informa ao gateway o quanto um número está perto da cota de conversas novas, e quando bloqueou temporariamente o número de mandar mensagem pra gente nova. Leia com GET /v1/channels/{id}/limits ou assine o webhook channel.limits:

{
  "new_chats": { "status": "first_warning", "used": 34, "quota": 50, "cycle_ends_at": "2026-10-28T21:09:00.000Z" },
  "restriction": { "active": false, "ends_at": null, "reason": null },
  "checked_at": "2026-10-25T18:05:00.000Z"
}

Trate first_warning como "desacelera este número agora": mande as conversas novas dele pra outro número até o status voltar a none. Enquanto uma restriction estiver ativa — ou o número estiver capped até o ciclo acabar — o WhatsApp recusa mensagens pra quem nunca escreveu pra ele. O gateway envia mesmo assim; o 202 de cada envio desses traz um aviso, pra você passar a conversa pra outro número:

{
  "message_id": "3EB0C431D5A8F2E91B7C",
  "client_ref": null,
  "status": "sent",
  "warnings": [
    {
      "code": "new_chat_restricted",
      "message": "WhatsApp has blocked this number from messaging new people until 2026-10-27T14:05:00.000Z. …",
      "ends_at": "2026-10-27T14:05:00.000Z"
    }
  ]
}

Uma mensagem que o WhatsApp recusa vira failed (webhook message.status). Respostas não são afetadas. new_chat_capped é o mesmo aviso pra cota esgotada.

4 — Dê ritmo aos envios

Dê a um número uma pausa aleatória entre as mensagens e um "digitando…" antes de cada uma, pra ele enviar como uma pessoa:

curl -X PUT https://api.whatisup.dev/v1/channels/$CHANNEL_ID/pacing \
  -H "Authorization: Bearer $WHATISUP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "min_gap_seconds": 20, "max_gap_seconds": 90, "typing": true }'

Envios com ritmo entram na fila (202 com status: "queued") e saem um de cada vez; o tempo de espera nunca conta pro vencimento da fila. Um envio também pode trazer o próprio typing_time (segundos).

5 — Um IP por número

Por padrão, todos os números chegam ao WhatsApp pelos endereços do próprio gateway. Dê a cada número o próprio proxy, pra um número marcado não derrubar os outros:

curl -X PUT https://api.whatisup.dev/v1/channels/$CHANNEL_ID/proxy \
  -H "Authorization: Bearer $WHATISUP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "socks5://usuario:senha@203.0.113.7:1080" }'

Use um IP residencial ou móvel fixo (sticky) no país do número — um por número. Proxies grátis e de datacenter são compartilhados e já estão marcados. O proxy é testado antes de salvar; o teste avisa sobre rotating_ip (o endereço muda entre conexões) e country_mismatch. Não existe fallback: com um proxy definido, o número só se conecta por ele, e uma falha do proxy aparece como proxy_error no channel.disconnected.

6 — Aqueça números novos

Antes de um número novo enviar em volume, dê a ele um perfil de verdade (nome, foto, recado) e conversas reais com gente que responde — não só com seus outros números. Comece com respostas e aumente o limite diário de conversas novas semana a semana.

Checklist

  • Códigos de verificação usam o link "mande pra gente"; o envio do código é o plano B.
  • Os números são confirmados e limitados antes de qualquer primeira mensagem.
  • Toda primeira mensagem pede resposta e não tem links.
  • As conversas novas por número ficam dentro do limite pela idade.
  • O webhook channel.limits está assinado e first_warning tira o número da rotação.
  • Os envios têm ritmo; cada número tem o próprio proxy fixo no país dele.