
Visão geral
É gerado um relatório de telefone sempre que um nó do fluxo executa a funcionalidade Verificação de telefone. Cada relatório representa um desafio de OTP para um número de telefone e contém:- O número de telefone dividido em prefixo, número nacional e formato E.164 completo, além do código de país ISO e do nome do país.
- Metadados da operadora (
name,type) obtidos a partir da rede de destino. - Sinalizadores de risco booleanos (
is_disposable,is_virtual) derivados da análise do tipo de linha. - O canal de entrega efetivamente utilizado (
verification_method) e a contagem de tentativas de envio de OTP. - Um registo cronológico em
lifecycle[]de cada envio, nova tentativa, evento de entrega e tentativa de verificação de código. - Um array
matches[]que apresenta o mesmo número noutras sessões — qualquer estado, em verificações de KYC, KYB e de API autónoma — ou na sua lista de bloqueio. - Um array
warnings[]— eventos de risco emitidos durante a verificação (consulte Avisos de Verificação de telefone). - Um
node_idque identifica qual o nó do grafo de fluxo que gerou o relatório (apenas em sessões V3).
POST /v3/phone/send/ para entregar o código e POST /v3/phone/check/ para validar o código introduzido pelo utilizador. Um OTP pendente é válido durante 5 minutos a partir do primeiro envio (novas tentativas não prolongam a janela). Nas sessões de fluxo, os utilizadores têm por predefinição 2 tentativas de envio de OTP (phone_max_retries) e 2 tentativas de introdução do código (phone_max_check_attempts) — ambas configuráveis por nó do fluxo; esgotar qualquer um dos limites finaliza o passo como Declined com VERIFICATION_CODE_ATTEMPTS_EXCEEDED. A API de telefone autónoma permite 3 tentativas de introdução do código por verificação.
Onde surge nas respostas da API
O endpoint de decisão (GET /v3/session/{sessionId}/decision/) devolve relatórios de telefone sob a chave de array no plural phone_verifications. O array contém uma entrada por nó de Verificação de telefone no grafo do fluxo — normalmente uma, mas fluxos de step-up podem produzir várias.
null significa que nenhum passo de Verificação de telefone foi ainda executado. Itere o array (em vez de ler phone_verifications[0]) quando o seu fluxo puder recolher mais do que um número de telefone.
Schema
O esquema canónico campo a campo encontra-se na página Modelos de dados.Valores de estado
Tipos de eventos do ciclo de vida
lifecycle[] está ordenado cronologicamente. Cada evento tem type, timestamp, details e uma taxa faturável fee (quando aplicável):
O payload de
details depende da família de eventos:
- Eventos de envio (
PHONE_VERIFICATION_MESSAGE_SENT,PHONE_VERIFICATION_RETRY_MESSAGE_SENT,PHONE_VERIFICATION_BLOCKED) —{ status, reason, channel, actual_channel }.statuséSuccess,RetryouBlocked;reasonénulla menos que o envio tenha sido bloqueado (invalid_phone_number,repeated_attempts,suspicious,spam,unknown);channelé o canal solicitado eactual_channelo canal que efetivamente realizou a entrega (por exemplo, um envio por WhatsApp que recorreu a SMS como alternativa). - Eventos de entrega (
PHONE_DELIVERY_DELIVERED,PHONE_DELIVERY_UNDELIVERABLE) —{ channel, status }comstatussendodeliveredouundeliverable. - Eventos de validação (
VALID_CODE_ENTERED,INVALID_CODE_ENTERED) —{ code_tried, status }comstatussendoApproved,Declined,FailedouExpired or Not Found. - Eventos de estado final —
null, excetoPHONE_VERIFICATION_DECLINED/PHONE_VERIFICATION_IN_REVIEW, que incluem{ "reason": "<risk code>" }(por exemplo,PHONE_NUMBER_IN_BLOCKLIST).
fee num evento de envio corresponde ao preço total desse envio: o preço da operadora ou do WhatsApp mais a taxa Didit de $0.02, ou apenas a taxa Didit de $0.02 para um código WhatsApp enviado a partir do seu próprio número WhatsApp Business. É o preço estimado até que a entrega seja confirmada, passando depois a ser o montante faturado real. Apenas os envios com Blocked são garantidamente gratuitos: qualquer outro envio é cobrado quando a verificação é finalizada ou expira, mesmo que a entrega nunca tenha sido confirmada ou a mensagem não tenha podido ser entregue. Os eventos de entrega, validação e estado incluem sempre fee: 0.
Correspondências entre sessões
matches[] regista outras sessões na mesma aplicação onde o mesmo número foi observado — em verificações de KYC, KYB e na API autónoma, independentemente do respetivo estado — além de ocorrências em listas de bloqueio configuradas nas listas da API de gestão. As sessões que partilham o vendor_data da sessão atual são excluídas (o mesmo utilizador final não faz correspondência consigo próprio) e o array está limitado a 5 entradas. Quando o número está na sua lista de bloqueio mas nenhuma das sessões correspondentes se encontra na lista de bloqueio, uma entrada sintética com source: "list_entry" (com todos os campos de sessão a null) é colocada no início do array.
Exemplos
Aprovada — OTP por WhatsApp, operadora móvel
Recusada — número VoIP na lista de bloqueio
O utilizador introduziu um OTP válido, mas a finalização detetou o número na lista de bloqueio da aplicação (recusa automática) e sinalizou o tipo de linha VoIP (voip_number_action mantido como NO_ACTION, pelo que é registado como information). Dado que nenhuma sessão correspondente se encontra na lista de bloqueio, a ocorrência na lista de bloqueio surge como uma correspondência sintética list_entry.
Relacionado
- Visão geral da Verificação de telefone — comportamento da funcionalidade, preços, canais suportados.
- Avisos da Verificação de telefone — todos os códigos de risco, acionadores de recusa e ações configuráveis.
- Modelos de dados — verificação de telefone — esquema canónico campo a campo.
- API de telefone autónoma — endpoints
POST /v3/phone/send/ePOST /v3/phone/check/. - API de gestão — Listas — faça a gestão da lista de bloqueio de números de telefone que alimenta
matches[]comsource: list_entry.