Verificação síncrona
Como uma verificação de registro no WhatsApp em tempo real se encaixa em um fluxo síncrono
Saiba como verificar se um número de telefone está registrado no WhatsApp e usar o resultado na mesma resposta síncrona da API.

O que “tempo real” significa para este produto
Tempo real significa que a decisão de registro é devolvida na mesma requisição HTTP, e não por meio de um job em segundo plano, webhook ou exportação posterior.
O chamador envia um número de telefone normalizado e aguarda a resposta. Quando a verificação é concluída, data.registered informa se esse número estava registrado no WhatsApp no momento da requisição. O chamador pode usar o resultado imediatamente, sem consultar outro endpoint.
Esse é um contrato de produto restrito. O WA Lookup verifica o status de registro; ele não identifica a pessoa por trás do número, não monitora a atividade da conta e não opera um serviço de mensagens. Deixar esse escopo explícito facilita o uso correto do campo retornado.
| Dados retornados | Significado | Ação recomendada |
|---|---|---|
code=0, registered=true |
A verificação concluída indicou registrado | Use o resultado booleano retornado por esta requisição |
code=0, registered=false |
A verificação concluída indicou não registrado | Use false como resultado concluído |
| Código de negócio diferente de zero | O serviço não devolveu decisão de registro | Não invente um booleano; trate o erro ou tente novamente conforme a documentação da API |
Por que verificações síncronas são úteis
Um resultado síncrono é útil quando a próxima etapa do software depende de uma resposta de registro atual. A aplicação não precisa criar um job, persistir um token de consulta ou aguardar um callback antes de classificar o número.
Integrações típicas incluem um formulário interno que verifica um número, uma ferramenta de suporte que confere um registro sob demanda ou um worker de backend. Para listas pequenas, o endpoint síncrono em lote aceita até 100 identificadores em E.164 e devolve o lote concluído na própria resposta da requisição. Ainda assim, os clientes devem controlar a própria concorrência.
O principal benefício arquitetural é o determinismo: uma resposta concluída contém uma única decisão booleana de registro. Erros da API e verificações indeterminadas usam o envelope externo code, msg e data, em vez de acrescentar mais valores a registered.
O caminho da requisição, passo a passo
- Normalize o número de telefone — Converta um código de discagem do país bem conhecido e o número nacional para o formato E.164. Não tente adivinhar o contexto de país ausente.
- Envie uma verificação — Chame o endpoint de verificação autenticado com o número normalizado e
service_type=ws. - Leia o resultado concluído — Use
data.registeredquandocode=0; deixe-o sem valor quando a API retornar um código de negócio diferente de zero. - Armazene o horário da observação — O registro é um resultado pontual, então salve quando ele foi verificado.
- Trate os não resultados separadamente — Uma requisição inválida ou uma falha temporária exige correção ou nova tentativa, não um valor de registro false.
Modele o resultado sem perder o significado
Evite um campo genérico como valid. Ele não consegue distinguir uma entrada malformada de um número válido cuja verificação terminou como não registrado. Um registro pequeno e explícito é mais seguro:
| Campo | Finalidade |
|---|---|
source_phone |
Preserva o valor fornecido pelo sistema de origem |
e164_phone |
Armazena o número canônico enviado para verificação |
outcome |
A classificação da sua aplicação: concluído, passível de nova tentativa ou requisição com falha |
registered |
Armazena true ou false apenas para uma verificação concluída |
checked_at |
Registra quando a observação pontual foi feita |
service_type |
Registra qual contrato de produto gerou o resultado |
Erros HTTP não são valores adicionais para esse registro. Se uma aplicação os registrar em log, deve armazenar o status HTTP retornado e o code da API separadamente das observações de registro.
Uma regra prática de integração
Só tome decisões com base em data.registered quando a resposta externa tiver code=0.
Essa única regra evita o erro de interpretação mais comum: tratar um timeout, uma requisição rejeitada ou um número malformado como se o WhatsApp tivesse informado que o número não está registrado. Se a decisão precisar estar atualizada em um momento posterior, faça uma nova verificação síncrona e salve-a como uma nova observação, em vez de alterar silenciosamente o carimbo de data/hora antigo.