> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Vérification du téléphone : API OTP, SMS et WhatsApp

> Didit vérifie les numéros par OTP via SMS, WhatsApp, RCS et voix. $0.02 par appel + opérateur, détection d'opérateur et score de risque.

La vérification du téléphone de Didit offre une méthode fiable pour vérifier les numéros de téléphone des utilisateurs au moyen de codes à usage unique (OTP). Cette fonctionnalité ajoute une couche de sécurité essentielle à votre processus de vérification d'identité, garantissant la légitimité des coordonnées de vos utilisateurs.

Prompt d'intégration de la vérification du téléphone
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\````# Goal
Integrate Didit Phone Verification (OTP send + check + carrier/risk lookup) into your app. Pick ONE mode.

\# Mode A — Session-based
Use this when the user goes through a hosted Didit flow — the SDK collects the number and OTP for you.

1\. Add the PHONE feature to the workflow (Business Console or POST /v3/workflows/). Configure risk actions: duplicated_phone_number_action, disposable_number_action, voip_number_action.
2\. Create a session — POST /v3/session/ with { workflow_id, vendor_data, callback }. See /sessions-api/create-session.
3\. Open session.url for the user (or mount the Web/Mobile SDK).
4\. Fetch the decision — GET /v3/session/{sessionId}/decision/ or subscribe to session.status.updated.

Decision surface: `phone_verifications[]` array on the decision payload.

\# Mode B — Standalone API (server-to-server, OTP pair)
Two endpoints, paired by phone_number.

Step 1 — send the code:
\```bash
curl -X POST 'https://verification.didit.me/v3/phone/send/' \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155552671",
"options": {
  "code_size": 6,
  "preferred_channel": "whatsapp",
  "locale": "en-US"
},
"vendor_data": "user-1234"
}'
\```
Channels: `whatsapp` (default), `sms`, `telegram`, `voice` — delivery falls back to SMS if the preferred channel is unavailable. Codes are valid for **5 minutes**; one free retry per number within the window.
Branding: SMS codes carry your app's SMS sender name ("123456 is your verification code for Acme Bank") on every send, at no extra cost; set it in the Business Console. Pass `options.sms_sender_name` to sign one code with another name (1 to 30 characters). WhatsApp codes use a fixed message; connect your own WhatsApp Business number in the Business Console to send them under your business name.

Step 2 — check the code (user types it into your UI):
\```bash
curl -X POST 'https://verification.didit.me/v3/phone/check/' \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155552671",
"code": "123456",
"voip_number_action": "DECLINE"
}'
\```
Each session accepts **up to 3** code-entry attempts. The check response includes the full phone metadata (carrier, line_type, disposable, voip, ported).

\# Status enum (per phone_verifications[].status / phone.status)
"Not Started" | "In Progress" | "Approved" | "Declined" | "Failed" | "Expired or Not Found" | "Abandoned" | "Kyc Expired"

\# Warnings (LogWarningChoices.PHONE)
warnings[] risk codes include:
DUPLICATED_PHONE_NUMBER, DISPOSABLE_NUMBER, VOIP_NUMBER, INVALID_PHONE_NUMBER, OTP_DELIVERY_FAILED, OTP_MAX_ATTEMPTS_REACHED, OTP_EXPIRED, PHONE_NUMBER_BLOCKED.
Full catalogue: /core-technology/phone-verification/warnings-phone-verification.

\# Failure modes to handle
\- HTTP 400 — non-E.164 phone_number on /send/.
\- send response status="Blocked" with reason="spam" — anti-abuse block; no code sent, no charge.
\- check response status="Failed" — wrong code, attempts remaining; re-prompt.
\- check response status="Declined" — third failed attempt; restart with /v3/phone/send/.
\- check response status="Expired or Not Found" — outside the 5-minute window or no pending session for that number; restart.

\# See also
\- Canonical schema: /reference/data-models#phone-verification
\- Per-feature report: /core-technology/phone-verification/report-phone-verification
\- Risk catalogue: /core-technology/phone-verification/warnings-phone-verification
\- Full integration playbook: /integration/integration-prompt````

\</pre>



      
      

Coller dans

Dans la leçon de l'Academy consacrée à la lecture d'un résultat de vérification, le chapitre à 8:08 aborde la vérification du téléphone et la détection des doublons.[Phone verification and duplicates — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=488\&rel=0\&playsinline=1)![Diagramme du flux de vérification du téléphone](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/phone-verification-flow.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=6c12863ce97e5ad6a11757b598918932)## Comment ça fonctionneNotre solution de vérification du téléphone assure une validation complète des numéros de téléphone à travers un processus simple et intuitif. Le système associe la vérification par OTP à une évaluation avancée des risques pour proposer une vérification du téléphone fiable et à grande échelle.**1. Collecte du numéro de téléphone**Le système recueille en toute sécurité les informations suivantes :| Données collectées | Détails |
| - | - |
| **Numéro de téléphone** | S'il n'est pas fourni lors de la création de la session, l'utilisateur saisit son numéro de téléphone au format international. S'il est déjà renseigné, l'utilisateur doit vérifier le numéro prérempli. |
| **Indicatif pays** | Suggéré automatiquement en fonction de la localisation IP ou sélectionné par l'utilisateur. |
| **Type d'opérateur** | Détecte s'il s'agit d'un numéro mobile ou fixe. |**2. Génération et envoi de l'OTP**Notre système de vérification :- Génère un code à usage unique sécurisé et limité dans le temps
- Transmet le code par SMS au numéro fourni
- Assure une livraison optimisée grâce à des intégrations avec de multiples opérateurs
- Propose des solutions de repli en cas de difficultés d'acheminement**3. Validation du code**L'utilisateur effectue la vérification en procédant ainsi :- Saisie du code reçu dans l'interface de vérification
- Soumission dans le délai configuré (généralement 5 à 10 minutes)
- Demande d'un nouveau code si nécessaire (avec une limite de débit adaptée)**4. Évaluation des risques**Notre système réalise des contrôles avancés :| Contrôle | Description |
| - | - |
| **Format et opérateur** | Vérifie le format du numéro de téléphone et les informations relatives à l'opérateur. |
| **Numéros jetables** | Effectue des vérifications par rapport aux bases de données de numéros jetables ou virtuels connus. |
| **Détection d'échange de carte SIM** | Identifie les risques potentiels d'échange de carte SIM. |
| **Modèles d'activité** | Détecte les schémas d'activité suspects. |
| **Données historiques** | Recoupe les données avec l'historique des vérifications. |**5. Transmission des résultats**Accédez aux résultats de vérification par plusieurs canaux :| Canal | Description |
| - | - |
| **Tableau de bord** | Mises à jour en temps réel sur le tableau de bord. |
| **Webhooks** | Notifications instantanées par webhook. |
| **API** | Intégration via API RESTful. |
| **Rapports** | Rapports détaillés contenant l'ensemble des informations de vérification. |## Fonctionnalités de vérificationNotre service de Vérification du téléphone propose plusieurs fonctionnalités clés pour améliorer votre processus de vérification :#### Vérification par OTP- **Génération sécurisée de code** : codes à usage unique générés de manière aléatoire
- **Livraison par SMS** : livraison rapide et fiable sur les appareils mobiles
- **Délais configurables** : définissez les durées d'expiration selon vos exigences de sécurité
- **Options de nouvelle tentative** : permettez aux utilisateurs de demander de nouveaux codes avec une limite de débit appropriée
- **Codes personnalisés avec votre marque** : les codes par SMS affichent le nom de votre marque au lieu d'être envoyés avec un message générique, sans frais supplémentaires. Consultez [Messages de vérification personnalisés avec votre marque](#messages-de-vérification-personnalisés-avec-votre-marque).
- **Votre propre numéro WhatsApp** : les codes WhatsApp peuvent provenir de votre propre numéro WhatsApp Business. Consultez [Envoyer des codes WhatsApp depuis votre propre numéro](#envoyer-des-codes-whatsapp-depuis-votre-propre-numéro).#### Messages de vérification personnalisés avec votre marqueLes codes de vérification par SMS peuvent mentionner votre marque, afin que vos utilisateurs identifient le message comme venant de vous :> 123456 est votre code de vérification pour **Acme Bank**Seul le nom est personnalisable.
Le reste de la formulation est un texte standard enregistré auprès des opérateurs mobiles dans chaque pays, ce qui évite que les codes soient filtrés comme spam, et il est traduit dans la langue du destinataire.
L'ajout de votre marque est gratuit : un code personnalisé coûte le même prix qu'un code non personnalisé.**Définissez votre nom d'expéditeur SMS** dans la Business Console, dans **Vérification du téléphone → Paramètres** d'un workflow ou sous **Marque blanche → SMS**.
Il appartient à votre application et non à un workflow unique : il signe chaque code SMS envoyé par l'application, dans chaque workflow et via l'API autonome, avec ou sans personnalisation en marque blanche.**Nom utilisé pour un code**, la première correspondance s'applique :1) `options.sms_sender_name` sur [`POST /v3/phone/send/`](https://docs.didit.me/fr/standalone-apis/phone-send), pour ce code précis.
2) Le nom d'expéditeur SMS de votre application.
3) Pour les envois en marque blanche uniquement (un workflow avec personnalisation en marque blanche, ou `options.use_white_label_customization: true` sur l'API), votre nom public en marque blanche.
4) Sinon, le code est envoyé sans nom.Un nom d'expéditeur comporte de 1 à 30 caractères : lettres, chiffres, espaces et ' & - ! uniquement, pas uniquement des chiffres, avec des espaces simples entre les mots.
L'API rejette tout nom ne respectant pas ces règles avec une erreur `400` avant l'envoi du code.- **Canaux** : le nom est ajouté aux messages SMS, y compris à un SMS envoyé en repli depuis un autre canal. Les codes WhatsApp sont envoyés avec un message fixe et ne l'affichent pas ; pour y faire figurer le nom de votre entreprise, [envoyez-les depuis votre propre numéro](#envoyer-des-codes-whatsapp-depuis-votre-propre-numéro).
- **Modifications par jour** : chaque application peut commencer à utiliser jusqu'à deux nouveaux noms par jour (UTC), en comptant à la fois les nouveaux noms d'expéditeur et les nouvelles valeurs de `sms_sender_name`. Au-delà, les codes conservent le nom actuel de l'application jusqu'au lendemain, et un nouveau nom fourni par requête est envoyé avec le nom de l'application. Un nom déjà utilisé auparavant n'est pas recomptabilisé.
- **Priorité à la livraison** : un problème de marque ne bloque jamais un code. Si un nom ne peut pas être appliqué, le code est envoyé avec le nom de l'application, ou sans nom.#### Rédiger votre propre texte de SMS et identifiant d'expéditeurVous pouvez remplacer le texte de vos codes SMS ainsi que l'expéditeur vu par vos utilisateurs.
Configurez les deux dans la Business Console sous **Marque blanche → SMS**.
Ils appartiennent à votre application, tout comme le nom d'expéditeur SMS, et s'appliquent à chaque code SMS qu'elle envoie, dans chaque workflow et via l'API autonome.**Votre propre texte** est rédigé pour chaque langue.
Un code est envoyé avec votre texte lorsque vous en avez rédigé un pour la langue d'envoi du code ; toutes les autres langues conservent le texte traduit de Didit.
Utilisez `{code}` pour le code et, éventuellement, `{brand}` pour votre nom d'expéditeur SMS, par exemple `Acme: {code} is your login code for {brand}.`Un texte doit :- contenir `{code}` exactement une fois, et aucun autre espace réservé en dehors de `{code}` et `{brand}` ;
- ne contenir aucun lien : les opérateurs bloquent les codes de vérification qui en contiennent ;
- tenir dans un seul SMS avec un code à 8 chiffres et un nom de 30 caractères : jusqu'à 160 caractères, ou 70 lorsqu'il utilise des caractères hors de l'alphabet latin de base (par exemple cyrillique, arabe ou emoji).**Votre propre identifiant d'expéditeur** utilise de 3 à 11 lettres, chiffres et espaces, pas uniquement des chiffres, par exemple `AcmeBank`.
Il est utilisé dans les pays où Didit active les identifiants d'expéditeur personnalisés, c'est-à-dire les pays dont les opérateurs acceptent un nom d'expéditeur sans enregistrement préalable ; partout ailleurs, vos codes sont envoyés sous l'expéditeur de Didit.
Contactez le support pour demander l'activation d'un pays où l'enregistrement de l'identifiant d'expéditeur est nécessaire.- **Priorité à la livraison** : lorsqu'un code est renvoyé par un canal qui ne peut pas prendre en charge votre texte ou votre identifiant d'expéditeur, il est envoyé avec le texte de Didit, signé avec votre nom d'expéditeur SMS et l'expéditeur de Didit, afin que le code arrive toujours à destination.#### Envoyer des codes WhatsApp depuis votre propre numéroPar défaut, les codes WhatsApp proviennent du numéro WhatsApp Business de Didit.
Vous pouvez plutôt connecter votre propre numéro WhatsApp Business, afin que vos utilisateurs reçoivent leurs codes depuis le nom et le numéro de votre entreprise.**Connectez un numéro** dans la Business Console, dans **Vérification du téléphone → Paramètres → Numéro WhatsApp** d'un workflow, et sélectionnez **Connecter un numéro WhatsApp**.
Une fenêtre de connexion s'ouvre : connectez-vous au compte professionnel qui gère votre numéro WhatsApp Business, puis choisissez le compte WhatsApp Business et le numéro d'envoi.
Didit enregistre ensuite le numéro pour l'envoi et crée son message de vérification.
Sa modification nécessite l'autorisation de modifier la personnalisation, tout comme pour le nom d'expéditeur SMS.Le numéro appartient à votre application et non à un seul workflow : une fois connecté, il envoie chaque code WhatsApp émis par l'application, dans chaque workflow et via l'API autonome.- **Approbation** : le nouveau message de vérification doit être approuvé avant que le numéro ne puisse envoyer des codes, généralement en quelques minutes. Entre-temps, la carte indique que le numéro est en attente d'approbation, et les codes continuent d'être envoyés depuis le numéro de Didit.
- **Texte du message** : les messages de vérification sur WhatsApp utilisent un texte standard dans la langue de votre utilisateur : le code, une mention de sécurité et un bouton de copie. Le texte ne peut pas être modifié, mais l'expéditeur est votre entreprise.
- **Livraison** : si un code ne peut pas être livré sur WhatsApp, il est envoyé par SMS, signé avec votre nom d'expéditeur SMS.
- **Facturation** : les messages envoyés par votre numéro sont facturés sur votre compte WhatsApp Business ; Didit ne facture donc que ses frais de vérification (\$0.02) pour ces codes. Les codes envoyés par SMS sont facturés comme d'habitude.
- **Action requise** : si le numéro ne peut plus envoyer de messages (par exemple, si son accès a été révoqué depuis votre compte professionnel), les codes sont à nouveau envoyés depuis le numéro de Didit et la carte vous invite à reconnecter le numéro.
- **Déconnecter** à tout moment depuis la même carte. Les codes sont à nouveau envoyés depuis le numéro de Didit ; le numéro et son message de vérification restent dans votre compte WhatsApp Business.#### Analyse du numéro de téléphone- **Validation du format** : vérifiez que le numéro de téléphone respecte le format international approprié
- **Détection de l'opérateur** : identifiez le fournisseur de télécommunications associé au numéro
- **Type de numéro** : faites la distinction entre les numéros mobiles, fixes et VoIP
- **Validation du pays** : vérifiez que le numéro de téléphone correspond au format attendu pour le pays#### Évaluation des risques- **Détection de numéros jetables** : identifiez les numéros temporaires utilisés pour éviter la traçabilité
- **Identification des numéros virtuels** : signalez les numéros susceptibles d'être virtuels ou basés sur la VoIP
- **Surveillance de l'activité** : surveillez les schémas suspects sur l'ensemble des tentatives de vérification
- **Vérification de la liste de blocage** : effectuez une vérification par rapport aux listes internes de numéros ayant fait l'objet d'abus antérieurs## TarifsLa vérification du téléphone est facturée **par message envoyé**, avec une tarification transparente à l'usage :| Composant | Coût |
| - | - |
| **Frais Didit** | \$0.02 par vérification |
| **Frais de l'opérateur** | Variable selon le pays et le canal |
| **Total** | \$0.02 + frais de l'opérateur |La réduction de votre forfait s'applique uniquement aux frais Didit de \$0.02 ; les frais de l'opérateur sont refacturés au prix coûtant et ne font jamais l'objet d'une réduction. Consultez [Réductions](https://docs.didit.me/fr/getting-started/pricing.md#remises).Nous prenons en charge plusieurs canaux de livraison avec des tarifs différents (la disponibilité varie selon les pays) :| Canal | Description |
| - | - |
| **SMS** | Envoi traditionnel de messages texte |
| **WhatsApp** | Envoi via la messagerie WhatsApp |
| **Telegram** | Envoi via la messagerie Telegram |
| **RCS** | Messagerie Rich Communication Services |
| **Viber** | Envoi via la messagerie Viber |
| **Zalo** | Envoi via la messagerie Zalo (Vietnam) |> [!NOTE]
>
> Vous ne payez que lorsqu'un message est envoyé. Si l'utilisateur abandonne avant la livraison de l'OTP, vous n'êtes pas facturé.→ [Tarifs de la vérification du téléphone](https://docs.didit.me/fr/getting-started/phone-verification-pricing.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.