> ## 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.

# API Risque téléphonique : opérateur et signaux de fraude

> Évaluez le risque d'un numéro sans envoyer de code OTP. Opérateur, type de ligne, portabilité, numéros jetables et signaux de fraude via Didit.

Utilisez `POST /v3/phone/risk/` lorsque vous avez besoin d'informations sur le téléphone avant, à la place de, ou en dehors d'un flux OTP.

Il n'envoie aucun code à l'utilisateur. Il crée une session API, enrichit le numéro, applique vos règles relatives au risque lié au téléphone, et renvoie dans une seule réponse synchrone le même bloc téléphone normalisé que celui utilisé par la Vérification du téléphone.

Lorsque la requête est enregistrée, Didit peut également utiliser le numéro de téléphone évalué comme preuve agrégée dans **Réseaux**. Les graphes de réseau peuvent afficher une intelligence téléphonique à haut risque, ainsi que le contexte de portabilité et de type de ligne sur les signaux téléphoniques partagés, mais ils ne révèlent pas le numéro brut aux autres organisations.

## Interpréter la réponse

* `status` est la décision finale pour cette session API. Elle vaut généralement `Approved` ; l'évaluation du risque peut produire `In Review` ou `Declined`.
* `phone.full_number` est le numéro normalisé au format E.164. `phone.phone_number_prefix` et `phone.phone_number` le décomposent en indicatif international et numéro national.
* `phone.is_disposable` et `phone.is_virtual` sont des signaux oui/non stables pour la logique applicative. La recherche d'opérateur ajoute `carrier.name` et `carrier.type` (`mobile`, `voip` et valeurs similaires).
* `phone.phone_intelligence.score` utilise une échelle de risque de 0 à 100, où une valeur plus élevée signifie un risque plus élevé. `phone_type_risk` (`Low`, `Medium`, `High`) et `phone_trust_index` (inverse du score) sont des vues dérivées.
* `phone.phone_intelligence` et `phone.enrichment` sont des alias de compatibilité qui renvoient au même objet normalisé. Les nouvelles intégrations peuvent lire `phone.enrichment`.
* `phone.matches` liste les autres sessions de votre application où le même numéro a été utilisé par un autre utilisateur. Utilisez-le pour détecter les comptes en double.
* `request_id` est l'identifiant de la session API. Stockez-le avec `vendor_data` si vous devez corréler le résultat avec les webhooks ultérieurs ou l'activité de la console.

> [!WARNING]
>
> `phone.phone_intelligence` et `phone.enrichment` sont des champs disponibles dans la mesure du possible. Une recherche terminée peut omettre les deux lorsqu'aucune donnée d'intelligence exploitable n'est renvoyée pour ce numéro, ce pays ou ce forfait. Construisez d'abord vos règles sur les champs normalisés stables, et traitez des données d'intelligence manquantes comme « inconnues », et non comme « sûres ».

## Module complémentaire d'empreinte sociale

Définissez `enable_social` sur `true` pour ajouter un bloc `phone_social` à la réponse, sous `phone` : les plateformes en ligne sur lesquelles ce numéro de téléphone est enregistré, regroupées par catégorie, avec les totaux récapitulatifs et les détails de profil éventuellement renvoyés par nos partenaires de données.

* `phone.phone_social.profiles_registered` et `phone.phone_social.profiles_checked` sont les chiffres clés : les plateformes où le numéro est confirmé comme enregistré, sur le total des plateformes évaluées.
* `phone.phone_social.registered_platforms` et `phone.phone_social.not_registered_platforms` listent chaque plateforme avec sa `category` et son `scope` (`global`, ou `local` pour les plateformes propres à une région).
* `phone.phone_social.categories` donne le nombre enregistré et le ratio par catégorie, et `phone.phone_social.profiles` contient les détails de profil par plateforme lorsqu'une plateforme les expose (nom, URL de la photo, texte de présentation, statut de confidentialité, indicateur de compte professionnel).
* Les indices de synthèse (`digital_footprint_diversity`, `digital_sophistication_index`, `engagement_depth_index`, `subscription_affordability_index`) sont des scores composites de 0 à 10. Chaque décompte peut être `null` lorsque la vérification n'a renvoyé aucune donnée correspondante.

`profiles_registered: 0` est une réponse réelle, et non un échec : les plateformes ont été vérifiées et le numéro de téléphone n'a été trouvé sur aucune d'entre elles, ce qui constitue un signal courant d'identité synthétique. Cet endpoint n'agit pas sur ce point de lui-même : utilisez `phone_no_social_presence_action` dans un workflow pour le transformer en verdict Review ou Decline.

Le bloc est absent lorsque `enable_social` n'est pas défini, et aussi lorsque la vérification sociale n'a pas pu être terminée, auquel cas elle n'est pas facturée.

## Comportement en sandbox

Les clés sandbox valident la requête et renvoient des données approuvées déterministes. Elles n'envoient pas d'OTP, ne consomment pas de crédits, ne créent pas de session et ne contribuent pas à **Réseaux**. Avec `enable_social` défini, elles renvoient également un bloc `phone_social` déterministe.

## Facturation

Les appels à l'API Phone Risk coûtent \$0.04 au tarif public, soit moins que la Vérification du téléphone complète, car aucun OTP n'est envoyé. Une requête réelle est facturable dès que la recherche commence, même lorsque certains champs disponibles dans la mesure du possible sont indisponibles.

Le module complémentaire d'empreinte sociale est facturé séparément : une unité `phone_social` par requête, en plus du prix de l'API Phone Risk, dès que la vérification est terminée. La vérification des crédits effectuée avant la recherche couvre les deux.


## OpenAPI

````yaml fr/openapi-25.json POST /v3/phone/risk/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/phone/risk/:
    post:
      tags:
        - Standalone APIs
      summary: Calculer le score de risque d'un numéro de téléphone
      description: >-
        Résolvez un numéro de téléphone et obtenez l'opérateur, le type de
        ligne, la portabilité, le caractère jetable du numéro, la correspondance
        entre sessions et des signaux normalisés de renseignements sur les
        risques sans envoyer d'OTP. L'endpoint crée une session d'API et renvoie
        son identifiant sous le nom `request_id`.


        **Décision.** Le champ de premier niveau `status` reflète
        `phone.status`. Il est normalement défini sur `Approved` ; l'évaluation
        des risques peut produire `In Review` ou `Declined`.


        **Alias de compatibilité.** Les réponses en production exposent l'objet
        de renseignements normalisé à la fois sous `phone.phone_intelligence` et
        `phone.enrichment`. Les valeurs sont identiques. Les nouvelles
        intégrations peuvent lire `phone.enrichment`. Les deux clés sont
        absentes lorsqu'aucune donnée de renseignement exploitable n'a été
        renvoyée.


        **Facturation.** Les appels en production appliquent les tarifs de l'API
        Phone Risk. La requête est facturable dès que la recherche commence,
        même si certains champs fournis au mieux sont indisponibles.


        **Sandbox.** Les clés sandbox valident la requête et renvoient des
        données approuvées déterministes sans envoyer d'OTP, consommer de
        crédits, créer de session ni alimenter Networks.


        **Authentification.** Envoyez la clé API de votre application dans
        `x-api-key`. Des identifiants manquants ou non valides renvoient `403` -
        cette API ne renvoie jamais `401`.


        **Limite de débit.** Budget d'écriture partagé de 300 requêtes par
        minute par clé API sur les endpoints POST/PATCH/DELETE (la création de
        transactions et l'ingestion d'événements disposent d'un budget distinct
        de 600).


        **Empreinte sociale.** Définissez `enable_social` sur `true` pour
        ajouter un bloc `phone_social` : les plateformes en ligne sur lesquelles
        ce numéro est enregistré, avec les décomptes par catégorie et tous les
        détails de profil disponibles. `profiles_registered: 0` signifie que les
        plateformes ont été vérifiées et que le numéro n'a été trouvé sur aucune
        d'entre elles - une réponse valide et facturable. Le bloc est absent
        lorsque l'option n'a pas été demandée ou que la vérification n'a pas pu
        aboutir, et il n'est pas facturé dans ce cas. La facturation ajoute une
        unité `phone_social` par requête en plus du prix propre à cet endpoint.
      operationId: post_v3phone_risk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhoneRiskRequest'
            examples:
              Minimal:
                summary: Évaluer un numéro avec les paramètres par défaut
                value:
                  phone_number: '+14155552671'
              Full context:
                summary: >-
                  Évaluer avec des signaux, une indication de pays et des
                  identifiants de corrélation
                value:
                  phone_number: '+14155552671'
                  country_code: US
                  signals:
                    ip: 192.0.2.1
                    device_id: 8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2
                    device_platform: ios
                    device_model: iPhone17,2
                    os_version: 18.0.1
                    app_version: 1.2.34
                    user_agent: >-
                      Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X)
                      AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0
                      Mobile/15E148 Safari/604.1
                  vendor_data: lead-123
                  metadata:
                    source: signup_prescreen
      responses:
        '200':
          description: "L'évaluation du risque est terminée. Inspectez `status` pour connaître la décision\_; le code HTTP est toujours `200` pour les recherches terminées."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhoneRiskResponse'
              examples:
                Clean mobile number:
                  summary: Numéro de mobile propre avec couverture des renseignements
                  value:
                    request_id: 4fd09d2e-9bc9-4c4e-9c46-7f625ac0ab62
                    status: Approved
                    phone:
                      status: Approved
                      phone_number_prefix: '+1'
                      phone_number: '4155552671'
                      full_number: '+14155552671'
                      country_code: US
                      country_name: United States
                      carrier:
                        name: Example Mobile
                        type: mobile
                      is_disposable: false
                      is_virtual: false
                      verification_method: null
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      phone_intelligence:
                        score: 3
                        phone_type_risk: Low
                        phone_trust_index: 97
                        network_stability_index: 95
                        is_disposable: false
                        is_ported: false
                        is_recently_ported: false
                        carrier_type: mobile
                        reason_codes: []
                      enrichment:
                        score: 3
                        phone_type_risk: Low
                        phone_trust_index: 97
                        network_stability_index: 95
                        is_disposable: false
                        is_ported: false
                        is_recently_ported: false
                        carrier_type: mobile
                        reason_codes: []
                    vendor_data: lead-123
                    metadata:
                      source: signup_prescreen
                    created_at: '2026-09-01T10:30:00.123456+00:00'
                Number in review:
                  summary: Numéro jetable ou virtuel signalé pour examen
                  value:
                    request_id: 8c22e1f0-4b3d-4a3a-9d1e-2f6b7c8d9e0f
                    status: In Review
                    phone:
                      status: In Review
                      phone_number_prefix: '+44'
                      phone_number: '7700900123'
                      full_number: '+447700900123'
                      country_code: GB
                      country_name: United Kingdom
                      carrier:
                        name: Example VoIP
                        type: voip
                      is_disposable: true
                      is_virtual: true
                      verification_method: null
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      phone_intelligence:
                        score: 72
                        phone_type_risk: High
                        phone_trust_index: 28
                        network_stability_index: 40
                        is_disposable: true
                        is_ported: true
                        is_recently_ported: true
                        carrier_type: voip
                        reason_codes:
                          - code: IR-5AC67A32
                            direction: risk
                            message: Phone type identified as non-mobile
                            impact_level: medium
                      enrichment:
                        score: 72
                        phone_type_risk: High
                        phone_trust_index: 28
                        network_stability_index: 40
                        is_disposable: true
                        is_ported: true
                        is_recently_ported: true
                        carrier_type: voip
                        reason_codes:
                          - code: IR-5AC67A32
                            direction: risk
                            message: Phone type identified as non-mobile
                            impact_level: medium
                    vendor_data: lead-124
                    metadata: null
                    created_at: '2026-09-01T10:30:00.123456+00:00'
        '400':
          $ref: '#/components/responses/PhoneRiskValidationError'
        '403':
          $ref: '#/components/responses/RiskPermissionDenied'
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/phone/risk/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "phone_number": "+14155552671",
                "country_code": "US",
                "vendor_data": "lead-123",
                "metadata": {"source": "signup_prescreen"}
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.phone.assess_risk(
                phone_number="+14155552671",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.phone.assessRisk({
              phone_number: "+14155552671",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Phone.AssessRisk(ctx, didit.PhoneRiskRequest{\n\tPhoneNumber: \"+14155552671\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;
            import me.didit.types.PhoneRiskRequest;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.phone().assessRisk(PhoneRiskRequest.builder()
                    .phoneNumber("+14155552671")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->phone->assessRisk([
                'phone_number' => '+14155552671',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.phone.assess_risk(phone_number: "+14155552671")
            puts result.to_h
        - lang: csharp
          label: .NET
          source: |-
            using System;
            using System.Text.Json;
            using Didit;

            // Reads DIDIT_API_KEY.
            using var client = new DiditClient();

            var result = await client.Phone.AssessRiskAsync(new PhoneRiskRequest
            {
                PhoneNumber = "+14155552671",
            });
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    PhoneRiskRequest:
      type: object
      required:
        - phone_number
      properties:
        phone_number:
          type: string
          maxLength: 20
          description: >-
            Numéro de téléphone à évaluer. Il est validé et normalisé au format
            E.164.
          example: '+14155552671'
        country_code:
          type: string
          maxLength: 3
          description: >-
            Indication de pays ISO 3166-1 alpha-2 ou alpha-3 optionnelle pour la
            couverture du renseignement.
          example: US
        signals:
          $ref: '#/components/schemas/RiskSignals'
        vendor_data:
          type: string
          description: >-
            Votre référence stable pour cette requête. Enregistrée sur la
            session API et renvoyée dans la réponse.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Vos métadonnées JSON non sensibles. Enregistrées sur la session
            d'API et renvoyées dans la réponse.
        enable_social:
          type: boolean
          default: false
          description: >-
            Si true, recherche également l'empreinte sociale du numéro : les
            plateformes de messagerie, sociales, d'e-commerce et
            professionnelles sur lesquelles il est enregistré. Facturé comme une
            unité `phone_social` par requête en plus du prix propre de cet
            endpoint.
          example: true
    PhoneRiskResponse:
      type: object
      required:
        - request_id
        - status
        - created_at
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            Identifiant de la session d'API créée pour cette requête.
            Enregistrez-le avec `vendor_data` si vous devez faire correspondre
            le résultat avec des webhooks ultérieurs ou l'activité de la
            console.
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Décision finale pour cette session d'API. Habituellement `Approved`
            ; l'évaluation des risques peut donner `In Review` ou `Declined`.
        vendor_data:
          type: string
          nullable: true
          description: >-
            Écho des `vendor_data` que vous avez envoyées, `null` si vous n'en
            avez pas envoyé.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Écho des `metadata` que vous avez envoyées, `null` si vous n'en avez
            pas envoyé.
        created_at:
          type: string
          format: date-time
          description: Horodatage de cette réponse.
        phone:
          type: object
          description: >-
            Rapport de téléphone normalisé, le même bloc que celui utilisé par
            les réponses de Vérification du téléphone.
          required:
            - status
          properties:
            status:
              type: string
              enum:
                - Approved
                - In Review
                - Declined
              description: >-
                Décision pour ce numéro de téléphone. Reflète le `status` de
                premier niveau.
            phone_number_prefix:
              type: string
              description: >-
                Indicatif téléphonique du pays avec un `+` au début (par ex.,
                `+1`).
              example: '+1'
            phone_number:
              type: string
              description: Numéro national sans l'indicatif téléphonique du pays.
              example: '4155552671'
            full_number:
              type: string
              description: Numéro complet au format E.164.
              example: '+14155552671'
            country_code:
              type: string
              nullable: true
              description: Pays ISO 3166-1 alpha-2 du numéro.
              example: US
            country_name:
              type: string
              description: Nom complet du pays dérivé de `country_code`.
              example: United States
            carrier:
              type: object
              nullable: true
              description: >-
                Réseau actuel desservant le numéro. `null` lorsque la recherche
                n'a pas pu identifier d'opérateur.
              properties:
                name:
                  type: string
                  description: >-
                    Nom de l'opérateur. Chaîne vide lorsque la recherche n'a pas
                    pu l'identifier.
                type:
                  type: string
                  description: >-
                    Type de ligne signalé par la recherche : `mobile`,
                    `fixed_line`, `voip`, `isp`, `vpn`, `toll_free`,
                    `premium_rate` ou similaire.
            is_disposable:
              type: boolean
              description: >-
                `true` lorsque le numéro appartient à un service de numéros
                temporaires ou jetables.
            is_virtual:
              type: boolean
              description: >-
                `true` lorsque le type de ligne est virtuel (`voip`, `isp` ou
                `vpn`).
            verification_method:
              type: string
              nullable: true
              description: >-
                Canal OTP de la vérification sous-jacente. `null` pour les
                recherches de risque, qui n'envoient jamais de code.
            verification_attempts:
              type: integer
              description: Envois d'OTP pour ce numéro. `0` pour les recherches de risque.
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Moment où le numéro a été vérifié pour la dernière fois par un
                OTP. `null` pour les recherches de risque.
            warnings:
              type: array
              description: >-
                Avertissements de risque enregistrés pour cette requête. Tableau
                vide lorsqu'il n'y en a aucun.
              items:
                $ref: '#/components/schemas/RiskWarning'
            lifecycle:
              type: array
              description: >-
                Piste d'audit chronologique de la requête. Tableau vide pour les
                recherches de risque sans événements d'envoi.
              items:
                $ref: '#/components/schemas/RiskLifecycleEvent'
            matches:
              type: array
              description: >-
                Autres sessions de votre application où le même numéro de
                téléphone a été utilisé par un utilisateur différent
                (`vendor_data` différent). Jusqu'à 5 entrées. Tableau vide
                lorsqu'il n'y a aucune correspondance.
              items:
                $ref: '#/components/schemas/PhoneMatchItem'
            phone_intelligence:
              $ref: '#/components/schemas/PhoneIntelligence'
            enrichment:
              $ref: '#/components/schemas/PhoneIntelligence'
            phone_social:
              $ref: '#/components/schemas/PhoneSocialFootprint'
    RiskSignals:
      type: object
      description: >-
        Contexte d'appareil et de réseau optionnel observé par votre
        application. Tous les champs sont optionnels. Les renseigner alimente la
        détection de correspondance inter-sessions dans Networks.
      properties:
        ip:
          type: string
          format: ip
          description: Adresse IPv4 ou IPv6 observée pour l'utilisateur final.
          example: 192.0.2.1
        device_id:
          type: string
          maxLength: 255
          description: >-
            Identifiant stable de l'appareil collecté par votre application
            (Android `ANDROID_ID`, iOS `identifierForVendor`).
        device_platform:
          type: string
          enum:
            - android
            - ios
            - ipados
            - tvos
            - web
          description: Plateforme de l'appareil de l'utilisateur final.
        device_model:
          type: string
          maxLength: 255
          description: Modèle d'appareil signalé par votre application.
        os_version:
          type: string
          maxLength: 64
          description: Version du système d'exploitation.
        app_version:
          type: string
          maxLength: 64
          description: Version de votre application.
        user_agent:
          type: string
          maxLength: 512
          description: Agent utilisateur du navigateur ou de l'application.
    RiskWarning:
      type: object
      required:
        - feature
        - risk
        - log_type
        - short_description
        - long_description
      properties:
        feature:
          type: string
          description: Fonctionnalité ayant généré l'avertissement.
        risk:
          type: string
          description: >-
            Code de risque lisible par machine. De nouvelles valeurs peuvent
            être ajoutées au fil du temps.
        additional_data:
          type: object
          nullable: true
          additionalProperties: true
          description: Contexte spécifique au risque, ou `null`.
        log_type:
          type: string
          enum:
            - error
            - warning
            - information
          description: Gravité utilisée par les règles de décision.
        short_description:
          type: string
          description: Résumé en une ligne lisible par l'utilisateur.
        long_description:
          type: string
          description: Explication lisible par l'humain.
    RiskLifecycleEvent:
      type: object
      required:
        - type
        - timestamp
        - details
        - fee
      properties:
        type:
          type: string
          description: >-
            Type d'événement lisible par machine. De nouvelles valeurs peuvent
            être ajoutées au fil du temps.
        timestamp:
          type: string
          format: date-time
          description: Date et heure de l'événement.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: Payload spécifique à l'événement, ou `null`.
        fee:
          type: number
          description: Montant en USD facturé pour cet événement.
    PhoneMatchItem:
      type: object
      description: >-
        Une autre session de votre application qui a utilisé le même numéro de
        téléphone avec un `vendor_data` différent.
      properties:
        session_id:
          type: string
          format: uuid
          description: >-
            ID de session de l'autre vérification ayant utilisé ce numéro de
            téléphone.
        session_number:
          type: integer
          description: Numéro séquentiel lisible par l'humain de cette session.
        vendor_data:
          type: string
          nullable: true
          description: '`vendor_data` de cette session.'
        verification_date:
          type: string
          description: Date et heure de création de cette session (`YYYY-MM-DDTHH:MM:SSZ`).
        phone_number:
          type: string
          description: Le numéro de téléphone correspondant.
        status:
          type: string
          description: >-
            Statut de cette session (par exemple, `Approved`, `Declined`, `In
            Progress`).
        is_blocklisted:
          type: boolean
          description: >-
            Indique si le numéro de téléphone figure sur la liste de blocage de
            votre application.
        api_service:
          type: string
          nullable: true
          description: >-
            Pour les sessions de type API, l'API autonome qui l'a créée ; `null`
            pour les sessions de vérification régulières.
        source:
          type: string
          description: >-
            Emplacement où la correspondance a été trouvée. Généralement
            `session` ; une correspondance avec une liste de blocage via une
            entrée de liste d'organisation utilise `list_entry`.
    PhoneIntelligence:
      type: object
      description: >-
        Bloc de renseignements téléphoniques normalisé. Présent uniquement
        lorsque le module complémentaire d'intelligence a été exécuté pour cette
        recherche ; lorsqu'il est présent, il est également exposé sous l'alias
        `enrichment` avec des valeurs identiques.
      properties:
        score:
          type: number
          nullable: true
          description: >-
            Score de risque normalisé de 0 à 100. Plus la valeur est élevée,
            plus le risque est grand.
        phone_type_risk:
          type: string
          nullable: true
          description: '`Low`, `Medium` ou `High`, dérivé du score.'
        phone_trust_index:
          type: number
          nullable: true
          description: >-
            Inverse du score, pour les tableaux de bord qui préfèrent qu'une
            valeur plus élevée soit meilleure.
        network_stability_index:
          type: number
          nullable: true
          description: Stabilité du réseau de la ligne.
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` lorsque le numéro semble jetable ou virtuel.'
        is_ported:
          type: boolean
          nullable: true
          description: '`true` lorsque le numéro a changé d''opérateur.'
        is_recently_ported:
          type: boolean
          nullable: true
          description: '`true` lorsque la portabilité a eu lieu récemment.'
        carrier_type:
          type: string
          nullable: true
          description: >-
            Classification de la ligne signalée par la recherche (par exemple,
            `mobile`).
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: "Identifiant Didit stable du signal, par exemple `IR-5AC67A32`. Opaque\_: utilisez-le pour regrouper et filtrer, ne l'interprétez pas."
              value:
                nullable: true
                description: >-
                  Pour un indicateur de risque (par exemple `voip`, `leaked`,
                  `disposable`, `spam_trap`), sa valeur : un booléen, un niveau
                  ou une date. Null pour un code de motif noté.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: >-
                  Indique si le signal a augmenté le risque ou renforcé la
                  confiance.
              message:
                type: string
                description: Explication lisible par l'humain du signal, en anglais.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Mesure dans laquelle le signal a influencé le score, par
                  exemple `low`, `medium` ou `high`.
          description: >-
            Signaux expliquant le score, chacun accompagné d'un code Didit
            stable, d'un sens, d'un message et d'un niveau d'impact. De nouveaux
            codes pouvant apparaître au fil du temps, ne rejetez pas les codes
            inconnus.
    PhoneSocialFootprint:
      type: object
      nullable: true
      description: >-
        Empreinte sociale du numéro de téléphone : les plateformes en ligne sur
        lesquelles il est enregistré. Présent uniquement lorsque `enable_social`
        a été défini et que la vérification s'est terminée. Chaque décompte peut
        être nul lorsqu'aucune donnée n'a été renvoyée pour celui-ci.
        `profiles_registered: 0` signifie que les plateformes ont été vérifiées
        et que le numéro de téléphone n'a été trouvé sur aucune d'entre elles,
        une réponse valide et facturable, ainsi qu'un signal fréquent d'identité
        synthétique.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: >-
            Plateformes pour lesquelles l'inscription du numéro de téléphone est
            confirmée.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Plateformes évaluées pour l'inscription.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Plateformes ayant renvoyé un nom associé.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Plateformes ayant renvoyé une photo de profil.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: >-
            Plateformes de communication sur lesquelles une présence a été
            détectée.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Catégories de plateformes distinctes avec une présence détectée.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indicateur composite de maturité numérique, de 0 à 10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indicateur de richesse du profil, de 0 à 10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Mix de plateformes gratuites vs payantes, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Inscriptions sur des plateformes gratuites.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Inscriptions sur des plateformes payantes.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Inscriptions sur des plateformes freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: "Niveau de complétion du profil WhatsApp. Téléphone uniquement\_; null pour l'e-mail."
          example: Partial
        registered_platforms:
          type: array
          description: Plateformes pour lesquelles l'inscription est confirmée.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Plateformes vérifiées avec un résultat négatif.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Nombre d'inscrits et ratio par catégorie de plateforme.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Détails du profil par plateforme, indexés par plateforme, lorsque
            celle-ci les expose.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Identifiant de plateforme.
          example: whatsapp
        category:
          type: string
          description: >-
            Catégorie de plateforme, par ex. MESSAGING, SOCIAL_MEDIA, ECOMMERCE,
            PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` pour les plateformes mondiales, `local` pour celles
            spécifiques à une région.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: >-
            Plateformes de cette catégorie pour lesquelles l'inscription est
            confirmée.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Part des plateformes vérifiées de la catégorie comportant une
            inscription, de 0.0 à 1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Nom du profil, lorsque la plateforme en fournit un.
        photo:
          type: string
          nullable: true
          description: URL de la photo de profil, lorsque la plateforme en fournit une.
        about:
          type: string
          nullable: true
          description: >-
            Texte de présentation/biographie du profil, lorsque la plateforme en
            fournit un.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Visibilité du profil, lorsque la plateforme la fournit.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Indique si le profil est un compte professionnel, lorsque la
            plateforme l'expose.
  responses:
    PhoneRiskValidationError:
      description: Échec de la validation de la requête.
      content:
        application/json:
          examples:
            Missing phone number:
              summary: Numéro de téléphone manquant
              value:
                phone_number:
                  - This field is required.
            Invalid phone number:
              summary: Numéro de téléphone non valide
              value:
                phone_number:
                  - Invalid phone number provided.
            Invalid signal IP:
              summary: IP de signal non valide
              value:
                signals:
                  ip:
                    - Enter a valid IPv4 or IPv6 address.
    RiskPermissionDenied:
      description: >-
        La clé API est manquante ou invalide, ou l'organisation ne peut pas
        couvrir la recherche en direct. Cette API ne renvoie jamais `401`.
      content:
        application/json:
          examples:
            Missing or invalid API key:
              summary: Aucun en-tête `x-api-key`, ou la clé est non valide ou révoquée
              value:
                detail: You do not have permission to perform this action.
            Not enough credits:
              summary: >-
                Le solde de l'organisation ne peut pas couvrir le prix de la
                recherche
              value:
                error: You don't have enough credits to perform this request.
    RateLimitedWrite:
      description: >-
        La limite d'écriture partagée de 300 requêtes par minute et par clé API
        a été dépassée. Respectez l'en-tête `Retry-After` avant de réessayer.
      content:
        application/json:
          schema:
            type: object
            required:
              - detail
            properties:
              detail:
                type: string
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clé API de votre application, issue de Développeurs -> Clés API dans
        la Business Console. La clé principale dispose d'un accès complet. Une
        clé nommée peut être restreinte : aucun, lecture ou écriture par
        ressource, limitée à certains workflows ou aux sessions approuvées, à
        une liste d'adresses IP et à une date d'expiration. 401 signifie que la
        clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a
        été envoyée, que la clé n'a pas accès à cette ressource ou action, ou
        que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur
        une route de session signifie que la session est hors des workflows ou
        des statuts de la clé. Une clé sans accès aux médias reçoit les URL
        d'images, de vidéos et de PDF à null, et une clé sans accès en écriture
        aux sessions reçoit les liens et tokens de session à null. Voir
        https://docs.didit.me/console/api-keys.

````

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