
Vue d’ensemble
Un rapport téléphonique est généré chaque fois qu’un nœud de workflow exécute la fonctionnalité Vérification du téléphone. Chaque rapport représente une procédure OTP pour un numéro de téléphone et contient :- Le numéro de téléphone décomposé en préfixe, numéro national et format E.164 complet, ainsi que le code pays ISO et le nom du pays.
- Les métadonnées de l’opérateur (
name,type) obtenues auprès du réseau de destination. - Des indicateurs de risque booléens (
is_disposable,is_virtual) issus de l’analyse du type de ligne. - Le canal de livraison effectivement utilisé (
verification_method) et le nombre de tentatives d’envoi de l’OTP. - Un journal chronologique
lifecycle[]de chaque envoi, nouvelle tentative, événement de livraison et tentative de vérification de code. - Un tableau
matches[]faisant ressortir le même numéro sur d’autres sessions — quel que soit le statut, pour le KYC, le KYB et les vérifications d’API autonomes — ou sur votre liste de blocage. - Un tableau
warnings[]— événements de risque émis pendant la vérification (voir les avertissements liés à la Vérification du téléphone). - Un
node_idqui identifie quel nœud du graphe de workflow a généré le rapport (sessions V3 uniquement).
POST /v3/phone/send/ pour acheminer le code et POST /v3/phone/check/ pour valider la saisie de l’utilisateur. Un OTP en attente est valide pendant 5 minutes à compter du premier envoi (les nouvelles tentatives ne prolongent pas ce délai). Dans les sessions de workflow, les utilisateurs disposent par défaut de 2 tentatives d’envoi d’OTP (phone_max_retries) et de 2 tentatives de saisie de code (phone_max_check_attempts) — toutes deux configurables par nœud de workflow ; épuiser l’un ou l’autre de ces plafonds finalise l’étape avec le statut Declined et la raison VERIFICATION_CODE_ATTEMPTS_EXCEEDED. L’API téléphonique autonome autorise 3 tentatives de saisie de code par vérification.
Emplacement dans les réponses de l’API
L’endpoint de décision (GET /v3/session/{sessionId}/decision/) renvoie les rapports téléphoniques sous la clé de tableau plurielle phone_verifications. Le tableau contient une entrée par nœud de Vérification du téléphone dans le graphe de workflow — généralement une seule, mais les flux d’authentification renforcée (step-up) peuvent en générer plusieurs.
null signifie qu’aucune étape de Vérification du téléphone n’a encore été exécutée. Parcourez le tableau (plutôt que de lire phone_verifications[0]) lorsque votre workflow peut collecter plusieurs numéros de téléphone.
Schéma
Le schéma champ par champ de référence se trouve sur la page Modèles de données.Valeurs de statut
Types d’événements du cycle de vie
lifecycle[] est trié par ordre chronologique. Chaque événement comporte type, timestamp, details et, le cas échéant, un fee facturable :
Le payload
details dépend de la famille d’événements :
- Événements d’envoi (
PHONE_VERIFICATION_MESSAGE_SENT,PHONE_VERIFICATION_RETRY_MESSAGE_SENT,PHONE_VERIFICATION_BLOCKED) —{ status, reason, channel, actual_channel }.statusestSuccess,RetryouBlocked;reasonestnullsauf si l’envoi a été bloqué (invalid_phone_number,repeated_attempts,suspicious,spam,unknown) ;channelest le canal demandé etactual_channelle canal sur lequel le message a effectivement été livré (par exemple, un envoi WhatsApp qui a basculé sur SMS). - Événements de livraison (
PHONE_DELIVERY_DELIVERED,PHONE_DELIVERY_UNDELIVERABLE) —{ channel, status }avecstatusvalantdeliveredouundeliverable. - Événements de vérification (
VALID_CODE_ENTERED,INVALID_CODE_ENTERED) —{ code_tried, status }avecstatusvalantApproved,Declined,FailedouExpired or Not Found. - Événements de statut final —
null, sauf pourPHONE_VERIFICATION_DECLINED/PHONE_VERIFICATION_IN_REVIEW, qui contiennent{ "reason": "<risk code>" }(par exemplePHONE_NUMBER_IN_BLOCKLIST).
fee sur un événement d’envoi correspond au prix total de cet envoi : le prix de l’opérateur ou de WhatsApp plus les frais Didit de $0.02, ou uniquement les frais Didit de $0.02 pour un code WhatsApp envoyé depuis votre propre numéro WhatsApp Business. Il s’agit du prix estimé jusqu’à ce que la livraison soit confirmée, puis du montant réel facturé. Seuls les envois Blocked sont garantis gratuits : tout autre envoi est facturé lorsque la vérification est finalisée ou expire, même si la livraison n’a jamais été confirmée ou si le message n’a pas pu être livré. Les événements de livraison, de vérification et de statut comportent toujours fee: 0.
Correspondances inter-sessions
matches[] enregistre les autres sessions de la même application où le même numéro a été détecté — dans les vérifications KYC et KYB et les vérifications effectuées via l’API autonome, quel que soit leur statut — ainsi que les correspondances de liste de blocage configurées dans les listes de la management-api. Les sessions partageant le vendor_data de la session actuelle sont exclues (le même utilisateur final n’est pas mis en correspondance avec lui-même), et le tableau est limité à 5 entrées. Lorsque le numéro figure sur votre liste de blocage mais qu’aucune des sessions correspondantes n’est sur liste de blocage, une entrée synthétique avec source: "list_entry" (tous les champs de session étant à null) est ajoutée au début du tableau.
Exemples
Approuvé — OTP WhatsApp, opérateur mobile
Refusé — numéro VoIP sur liste de blocage
L’utilisateur a saisi un OTP valide, mais la finalisation a détecté le numéro sur la liste de blocage de l’application (refus automatique) et a signalé son type de ligne VoIP (voip_number_action laissé à NO_ACTION, ce qui est donc enregistré comme information). Comme aucune session correspondante n’est sur liste de blocage, la correspondance avec la liste de blocage apparaît sous la forme d’une correspondance synthétique list_entry.
Pages associées
- Aperçu de la vérification du téléphone — comportement de la fonctionnalité, tarifs, canaux pris en charge.
- Avertissements de la vérification du téléphone — l’ensemble des codes de risque, déclencheurs de refus et actions configurables.
- Modèles de données — vérification du téléphone — schéma champ par champ de référence.
- API téléphonique autonome — endpoints
POST /v3/phone/send/etPOST /v3/phone/check/. - Management API — Listes — gérer la liste de blocage des numéros de téléphone qui alimente
matches[]avecsource: list_entry.