Como registrar um número fixo na Cloud API do WhatsApp por chamada de API, com o código por ligação de voz?
Por NumioPublicado em
O registro de um número na Cloud API do WhatsApp são quatro chamadas à Graph API: criar o número na conta do WhatsApp Business (POST /{WABA_ID}/phone_numbers), pedir o código de verificação (POST /{PHONE_NUMBER_ID}/request_code), confirmar o código (POST /{PHONE_NUMBER_ID}/verify_code) e registrar o número pra mensagens (POST /{PHONE_NUMBER_ID}/register). Todas usam um token de usuário do sistema com a permissão whatsapp_business_management.
Em número fixo, a diferença está na segunda chamada: o parâmetro code_method vai como `VOICE` em vez de SMS. A Meta liga pro número e dita o código de 6 dígitos. Com um número da Numio, a ligação é atendida automaticamente e o código aparece no painel e no e-mail; pela API de parceiros, ele chega no webhook whatsapp_verification.code_ready, e o registro inteiro roda sem ninguém ouvindo telefone.
Os exemplos abaixo usam a versão v25.0 da Graph API, a mesma dos exemplos da documentação da Meta lida em 13 de outubro de 2026.
O que preciso ter antes de chamar a API?
- Uma conta empresarial na Meta (portfólio empresarial) e um app com o produto WhatsApp.
- O ID da conta do WhatsApp Business (WABA ID).
- Um token de usuário do sistema com
whatsapp_business_management. Pra registrar número na conta de outra empresa (cliente seu), o app precisa de acesso avançado a essa permissão. - Um número livre: que não esteja ativo em nenhuma conta do WhatsApp. Número que já está no app precisa ter a conta apagada antes.
- O nome de exibição que o número vai mostrar. Ele é obrigatório na criação e passa pela revisão da Meta.
A Numio fornece o número e entrega o código de verificação. Envio de mensagens, templates, webhook, token e cobrança por mensagem são da Meta (ou do provedor oficial que você escolher). O número é fixo: não recebe SMS.
Quais são as quatro chamadas? Exemplo com curl
1. Crie o número na conta
Envie o código do país (
cc), o número com DDD (phone_number) e o nome de exibição (verified_name). A resposta traz oiddo número, ainda não verificado. Guarde esse id: é oPHONE_NUMBER_IDdas próximas chamadas.2. Peça o código por ligação
Chame
request_codecomcode_method=VOICEelanguage=pt_BR. A Meta liga pro número em seguida. Antes de chamar, deixe aberta a tela de ativação do número no painel da Numio.3. Confirme o código
Pegue os 6 dígitos no painel da Numio (ou no e-mail) e envie em
verify_code, sem hífen. A resposta é{"success": true}.4. Registre o número pra mensagens
Chame
registercommessaging_productigual awhatsappe um PIN de 6 dígitos. Esse PIN vira a verificação em duas etapas do número; guarde, porque ele é pedido de novo em qualquer novo registro.
1. Criar o número na conta do WhatsApp Business
curl -X POST "https://graph.facebook.com/v25.0/$WABA_ID/phone_numbers" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"cc": "55", "phone_number": "1130000000", "verified_name": "Loja Exemplo"}'
# resposta: {"id": "106540352242922"}2. Pedir o código por ligação de voz, em português
curl -X POST "https://graph.facebook.com/v25.0/$PHONE_NUMBER_ID/request_code?code_method=VOICE&language=pt_BR" \
-H "Authorization: Bearer $TOKEN"3. Confirmar o código de 6 dígitos
curl -X POST "https://graph.facebook.com/v25.0/$PHONE_NUMBER_ID/verify_code?code=123456" \
-H "Authorization: Bearer $TOKEN"
# resposta: {"success": true}4. Registrar o número pra mensagens
curl -X POST "https://graph.facebook.com/v25.0/$PHONE_NUMBER_ID/register" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"messaging_product": "whatsapp", "pin": "482913"}'Como automatizar o registro inteiro, sem ninguém lendo o código?
É o caso de quem registra números em volume: plataforma de atendimento, agência, SaaS. Pela API de parceiros da Numio, o código chega no seu servidor por webhook, e o seu sistema encadeia as chamadas da Numio e da Meta.
- Seu sistema contrata o número na Numio e espera o webhook
did.ready. - Chama
POST /api/v1/dids/{didId}/whatsapp-verificationna Numio, que arma o recebimento da ligação por até 24 horas. - Chama
phone_numberserequest_codecomcode_method=VOICEna Meta. - A Meta liga, a Numio atende e extrai os 6 dígitos. Segundos depois chega o webhook
whatsapp_verification.code_ready, com o código emdata.verification.code. - Seu sistema chama
verify_codeeregisterna Meta. Número no ar.
Armar o recebimento da ligação e consultar o código (API de parceiros da Numio)
BASE="https://api.numio.com.br/api/v1"
# arma o recebimento (vale por até 24 h)
curl -X POST "$BASE/dids/$DID_ID/whatsapp-verification" \
-H "Authorization: Bearer $NUMIO_KEY"
# sem webhook, consulte: state passa de ARMED a CODE_READY
curl "$BASE/dids/$DID_ID/whatsapp-verification" \
-H "Authorization: Bearer $NUMIO_KEY"
# {"state": "CODE_READY", "code": "482913", ...}O webhook é assinado (Numio-Signature, HMAC-SHA256) e reenviado até 8 vezes. Se a ligação chegar e o código não for reconhecido, o estado vira NO_CODE e o áudio fica em /whatsapp-verification/recording. O limite é de 10 verificações por dia por número. Existe um sandbox (sandbox-api.numio.com.br) com um endpoint que simula a ligação da Meta, pra você testar o encadeamento sem comprar número. A referência completa está em /docs.
Quais erros aparecem no registro e o que cada um significa?
| Código | Quando acontece | O que fazer |
|---|---|---|
| 136024 | request_code num número que já foi verificado | Leia o campo code_verification_status do número antes de pedir o código e pule pro register |
| 133006 | register antes de verificar o número | Faça request_code e verify_code primeiro |
| 133005 | PIN incorreto no register | Use o PIN da verificação em duas etapas definido no primeiro registro |
| 133008 | Muitas tentativas de PIN | Espere antes de tentar de novo; cada erro conta |
| 133016 | Mais de 10 chamadas de register pro mesmo número em 72 horas | O número fica bloqueado pra registro por 72 horas |
| 133015 | Registrar um número que acabou de ser apagado | Espere 5 minutos |
A ligação não chegou. O que conferir?
- O número está pronto? Na Numio, o número só recebe a ligação depois do pagamento e da validação de identidade do titular.
- O número está livre? Se ele já foi ativado no app do WhatsApp, apague a conta no app antes.
- O pedido foi por voz? Com
code_method=SMSa Meta manda um SMS, que número fixo não recebe. - Pediu várias vezes seguidas? Pedidos de código repetidos em sequência costumam ser recusados por um tempo. Espere antes de tentar de novo, em vez de repetir a chamada em laço.
A Meta não aceita número atrás de URA que não entregue a ligação a alguém. No número da Numio não há menu: a ligação é atendida direto e o código é transcrito.
Perguntas frequentes
Dá. São quatro chamadas à Graph API: phone_numbers, request_code com code_method=VOICE, verify_code e register. O único passo fora da API da Meta é receber o código, que chega por ligação de voz no número.
SMS ou VOICE. Em número fixo use VOICE: a Meta liga e dita o código de 6 dígitos.
É o PIN de 6 dígitos da verificação em duas etapas do número. Se o número ainda não tem PIN, o valor enviado passa a ser o PIN. Ele é pedido de novo em qualquer novo registro.
Um token de usuário do sistema com a permissão whatsapp_business_management. Pra registrar em nome de outra empresa, o app precisa de acesso avançado a essa permissão.
Na API de parceiros, sim: o evento whatsapp_verification.code_ready traz o código em data.verification.code. Quem compra pelo site recebe o código no painel e por e-mail.
A Meta limita a 10 chamadas por número numa janela móvel de 72 horas. A 11ª devolve o erro 133016 e bloqueia o registro do número por 72 horas.
Do lado da Numio, sim: o sandbox da API de parceiros simula a ligação da Meta e dispara o mesmo webhook, com números fictícios e sem cobrança.