number da API — em mensagens, contatos e flows — espera o mesmo formato: E.164 sem o +, ou seja DDI + DDD + número, só dígitos.
55 (Brasil) + 34 (DDD) + 999990000 (número com o nono dígito).
Escreveu → interpretado
Se depois de remover tudo que não é dígito não sobrar nenhum caractere (
number vazio, só espaços, ou só símbolos), a API responde 400 com code: ERR_NUMBER_INVALID. Mas um número sem DDI passa nessa checagem — o único jeito de garantir o envio certo é sempre mandar o formato completo.
O nono dígito
Números de celular brasileiros têm 9 dígitos depois do DDD desde a unificação nacional. A API aceita e normaliza variantes com e sem o nono dígito em campos de busca (comonumber em GET /v1/contacts), mas ao enviar mensagem ou criar contato, use sempre o formato completo com 9 dígitos — é o que garante a entrega correta pelo WhatsApp.
Validar no WhatsApp antes de salvar
No upsert de contato (POST /v1/contacts), o parâmetro opcional validateNumber confere se o número existe no WhatsApp antes de gravar:
422 com code: ERR_NUMBER_NOT_ON_WHATSAPP.
validateNumber só se aplica a conexões Baileys. Em conexões WABA a checagem não bloqueia o upsert — a Meta não expõe essa validação pela Cloud API.