Como verificar se um número tem WhatsApp pela API (antes de enviar)
Valide se um telefone tem WhatsApp antes de enviar: no cadastro, no CRM e na importação. Endpoint, exemplos em cURL e Node e o uso que não arrisca o número.
Para saber se um número tem WhatsApp antes de enviar, faça um GET /{key}/actions/registered?number=... na API não oficial da WAME: a resposta diz se o número está registrado e devolve o JID dele. Nada chega ao celular da pessoa. O lugar certo para usar isso é no cadastro do cliente e na manutenção da sua própria base — não para varrer números desconhecidos, que é abuso e um dos jeitos mais rápidos de perder o número.
Neste guia você vê o endpoint, três lugares onde ele economiza dinheiro e dor de cabeça, e as regras de ritmo que mantêm a sua conta saudável.
Por que verificar antes de enviar
Telefone digitado errado é o erro mais comum de qualquer cadastro. Um dígito a menos, um 9 esquecido, um fixo no campo de celular — e a mensagem de confirmação de pedido nunca chega. O cliente acha que a loja não respondeu; a loja acha que avisou.
Verificar o número resolve três problemas de uma vez:
- Erro de digitação vira aviso na hora, enquanto a pessoa ainda está no formulário.
- Menos envio para o vazio. Envio que falha não ajuda ninguém e polui suas métricas.
- Base limpa. Você sabe quais contatos podem ser atendidos pelo WhatsApp e quais precisam de e-mail ou SMS.
A camada não oficial da WAME é independente e não é afiliada, endossada ou suportada pelo WhatsApp ou pela Meta. O uso é de responsabilidade de quem envia.
O endpoint
É um GET simples, com o número na query string:
curl "https://us.api-wa.me/SUA_KEY/actions/registered?number=5511999999999"A resposta informa se o número está no WhatsApp e, quando está, traz o JID — o identificador no formato [email protected]. O formato exato do retorno está na documentação.
Um detalhe que vale ouro no Brasil: por causa do nono dígito, alguns números antigos estão registrados no WhatsApp sem o 9 extra. O JID devolvido pela verificação é o identificador real — guarde ele, e não o que a pessoa digitou.
Normalize antes de consultar
Metade dos "números sem WhatsApp" são números mal formatados. Antes de chamar a API, limpe:
function normalizarTelefoneBR(entrada) {
let d = String(entrada).replace(/\D/g, ''); // só dígitos
if (d.startsWith('0')) d = d.replace(/^0+/, ''); // tira zero de operadora/DDD
if (d.length === 10 || d.length === 11) d = '55' + d; // sem país → Brasil
return d;
}
normalizarTelefoneBR('(11) 99999-9999'); // "5511999999999"
normalizarTelefoneBR('+55 21 98888-8888'); // "5521988888888"Para uma base internacional, use uma biblioteca como libphonenumber-js em vez de regras caseiras.
Uso 1: validação no formulário de cadastro
O melhor momento para verificar é quando a pessoa ainda está na tela. Um exemplo de rota no seu backend (Node.js + Express):
const BASE = 'https://us.api-wa.me/SUA_KEY';
app.post('/api/validar-whatsapp', async (req, res) => {
const numero = normalizarTelefoneBR(req.body.telefone);
const r = await fetch(`${BASE}/actions/registered?number=${numero}`);
if (!r.ok) return res.status(502).json({ erro: 'falha ao verificar' });
const dados = await r.json();
// Confira na documentação o campo exato que indica o registro
// e o campo com o JID, e guarde o JID no cadastro do cliente.
res.json({ numero, resultado: dados });
});No front, chame essa rota quando o campo perde o foco e mostre um aviso gentil: "Não encontramos WhatsApp neste número. Confere se está certo?". Não bloqueie o cadastro — a pessoa pode preferir e-mail — mas avise.
Duas regras importantes aqui:
- A chamada sai do seu backend, nunca do navegador. A
keyda instância autentica tudo; exposta no front, qualquer um usa a sua instância. Mais sobre isso em segurança da API do WhatsApp. - Proteja a rota com rate limit e captcha. Senão alguém transforma o seu formulário numa máquina de consultar números — e quem paga é o seu número.
Uso 2: higienizar a base do CRM
Você tem uma base de clientes que se cadastraram ao longo dos anos. Antes de ligar a automação de avisos, faz sentido saber quem tem WhatsApp. O jeito certo é devagar:
const esperar = (ms) => new Promise((r) => setTimeout(r, ms));
async function higienizar(clientes) {
for (const c of clientes) {
const numero = normalizarTelefoneBR(c.telefone);
const r = await fetch(`${BASE}/actions/registered?number=${numero}`);
c.whatsapp = r.ok ? await r.json() : null;
await salvar(c);
// Intervalo variável entre consultas: ritmo de gente, não de script
await esperar(3000 + Math.random() * 4000);
}
}É lento de propósito. Uma base de alguns milhares de contatos leva horas — rode em segundo plano, fora do horário de pico, e em lotes ao longo de dias se a base for grande. Lembre que esses contatos são seus clientes, que deram o telefone para você; higienizar não substitui ter o consentimento deles para receber mensagens. O processo completo de opt-in está em lista de contatos para WhatsApp: opt-in e opt-out.
Uso 3: antes do primeiro envio de uma automação
Em fluxos automáticos — confirmação de pedido, lembrete de consulta — verificar o número uma vez, no primeiro contato, e guardar o JID evita repetir a consulta a cada mensagem. A regra é simples: verifica uma vez, salva, reusa. Se o envio falhar lá na frente, aí sim vale verificar de novo (a pessoa pode ter trocado de número).
O que não fazer: varrer números
Existe um uso desse endpoint que a WAME não apoia e que derruba números com frequência: gerar sequências de telefones (11999990000, 11999990001, ...) ou comprar listas e consultar em massa para "descobrir quem tem WhatsApp" e depois disparar mensagens.
Isso é ruim por três motivos:
- É spam na origem. Ninguém ali pediu para falar com você. A WAME não apoia spam, e esse é o começo de toda operação de spam.
- É um padrão fácil de detectar. Milhares de consultas a números que não estão na sua agenda, em rajada, não se parecem com nenhum uso humano do WhatsApp.
- Viola a LGPD. Consultar e tratar dados de telefones de pessoas sem relação com você não tem base legal.
A WAME protege a sessão com uma camada de comportamento — limites de ritmo, identidade de dispositivo coerente com o país, reconexão espaçada — e por isso a taxa de bloqueio é muito baixa para quem usa do jeito certo. Mas nenhuma camada técnica disfarça uma varredura de números. Os detalhes estão em anti-detecção na API não oficial, e o que de fato derruba um número em a API não oficial bane? O que derruba um número.
Boas práticas resumidas
| Faça | Evite |
|---|---|
| Verificar no cadastro, um número por vez | Consultar listas compradas |
| Guardar o JID devolvido | Consultar o mesmo número a cada envio |
| Espalhar consultas de higienização no tempo | Rajadas de centenas de consultas por minuto |
| Chamar do backend com rate limit | Expor a key no front-end |
| Normalizar o número antes | Mandar com +, traço e espaço |
Conclusão
Verificar se um número tem WhatsApp pela API é uma das funções mais simples e mais úteis da API não oficial: um GET /{key}/actions/registered pega o erro de digitação no cadastro, limpa a sua base e evita envios para o vazio. Usado com o ritmo certo e só com contatos que são seus, ele deixa a operação mais eficiente sem colocar o número em risco. Veja outros recursos em API não oficial do WhatsApp: recursos e exemplos e o formato completo da resposta na documentação.
Pronto para automatizar seu WhatsApp?
Crie sua conta gratuita e comece a enviar mensagens pela API em minutos.
Começar grátisPerguntas frequentes
Como saber se um número tem WhatsApp pela API?+
Faça um GET em /{key}/actions/registered?number=5511999999999 na WAME API. A resposta indica se o número está registrado no WhatsApp e, quando está, devolve o JID dele — o identificador usado nos envios.
Verificar número tem custo ou conta como mensagem?+
Não é uma mensagem: nada chega ao celular da pessoa e ela não fica sabendo da consulta. Mesmo assim, cada verificação é uma consulta feita pela sua sessão ao WhatsApp, por isso deve ser usada com moderação.
Posso verificar uma lista de milhares de números de uma vez?+
Não é recomendado. Consultar em rajada milhares de números que você não conhece é o padrão de quem varre números aleatórios, e esse comportamento é um gatilho conhecido de bloqueio. Verifique no momento do cadastro, um a um, e espalhe as consultas no tempo quando for higienizar uma base própria.
Em que formato devo enviar o número?+
Formato internacional só com dígitos: código do país + DDD + número, sem +, espaços, parênteses ou traços. Exemplo: 5511999999999. Normalize o telefone antes de consultar para evitar falsos negativos.
A verificação funciona para números de outros países?+
Sim. Basta enviar o número com o código do país correto, por exemplo 351 para Portugal ou 1 para Estados Unidos.
Continue lendo
Agente de voz no WhatsApp: latência, interrupção (barge-in) e silêncio
Como deixar um agente de voz no WhatsApp natural: latência, streaming, detecção de fala, interrupção (barge-in), silêncio e eco, com exemplos em Node.js.
Anti-detecção na API não oficial do WhatsApp: como a WAME protege seu número
Como funciona a camada de anti-detecção da API não oficial da WAME: identidade de dispositivo, tempo humano, ritmo de envio, reconexão e monitor de saúde.
API do WhatsApp em C# (.NET): enviar mensagens e receber webhook
Tutorial de API do WhatsApp em C# e .NET: HttpClient tipado, envio de texto, imagem e lista, webhook em ASP.NET Core com fila em background e tratamento de 429.