> ## 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 rischio telefonico: operatore e segnali di frode

> Didit valuta il rischio di un numero senza OTP: operatore, tipo di linea, portabilità e segnali di frode in una sola chiamata server-to-server.

Usa `POST /v3/phone/risk/` quando ti serve l'intelligence sul numero di telefono prima, al posto o al di fuori di un flusso OTP.

Non invia alcun codice all'utente. Crea una sessione API, arricchisce il numero, applica le tue regole di rischio sul telefono e restituisce, in un'unica risposta sincrona, lo stesso blocco normalizzato del numero di telefono usato da Phone Verification.

Quando la richiesta viene salvata, Didit può anche usare il numero di telefono valutato come evidenza aggregata in **Reti**. I grafi delle reti possono mostrare intelligence sul telefono ad alto rischio e informazioni su portabilità e tipo di linea relative a segnali di telefono condivisi, ma non rivelano il numero di telefono grezzo ad altre organizzazioni.

## Interpreta la risposta

* `status` è la decisione finale per questa sessione API. Di norma è `Approved`; la valutazione del rischio può produrre `In Review` o `Declined`.
* `phone.full_number` è il numero normalizzato in formato E.164. `phone.phone_number_prefix` e `phone.phone_number` lo suddividono nel prefisso internazionale e nel numero nazionale.
* `phone.is_disposable` e `phone.is_virtual` sono segnali stabili di sì/no per la logica della tua applicazione. La ricerca dell'operatore aggiunge `carrier.name` e `carrier.type` (`mobile`, `voip` e simili).
* `phone.phone_intelligence.score` usa una scala di rischio da 0 a 100, dove un numero più alto indica un rischio più alto. `phone_type_risk` (`Low`, `Medium`, `High`) e `phone_trust_index` (l'inverso del punteggio) sono viste derivate.
* `phone.phone_intelligence` e `phone.enrichment` sono alias di compatibilità con lo stesso oggetto normalizzato. Le nuove integrazioni possono leggere `phone.enrichment`.
* `phone.matches` elenca le altre sessioni della tua applicazione in cui lo stesso numero è stato usato da un utente diverso. Usalo per il rilevamento di account duplicati.
* `request_id` è l'ID della sessione API. Memorizzalo insieme a `vendor_data` se ti serve collegare il risultato ai webhook successivi o all'attività in console.

> [!WARNING]
>
> `phone.phone_intelligence` e `phone.enrichment` sono campi non garantiti. Una ricerca completata può ometterli entrambi quando non viene restituito alcun dato di intelligence utilizzabile per quel numero, quel paese o quel piano. Costruisci le regole prima di tutto sui campi normalizzati stabili e considera l'assenza di dati di intelligence come "sconosciuta", non come "sicura".

## Add-on sull'impronta social

Imposta `enable_social` su `true` per aggiungere alla risposta, sotto `phone`, un blocco `phone_social`: le piattaforme online su cui questo numero di telefono è registrato, raggruppate per categoria, con i conteggi di sintesi e gli eventuali dettagli del profilo restituiti dai nostri partner di dati.

* `phone.phone_social.profiles_registered` e `phone.phone_social.profiles_checked` sono i numeri principali: le piattaforme in cui il numero di telefono risulta registrato, rispetto a quelle valutate.
* `phone.phone_social.registered_platforms` e `phone.phone_social.not_registered_platforms` elencano ogni piattaforma con la sua `category` e il suo `scope` (`global`, oppure `local` per le piattaforme specifiche di una regione).
* `phone.phone_social.categories` riporta, per ogni categoria, il conteggio e il rapporto delle registrazioni, mentre `phone.phone_social.profiles` contiene i dettagli del profilo per piattaforma quando una piattaforma li espone (nome, URL della foto, testo descrittivo, stato della privacy, indicatore di account aziendale).
* Gli indici di sintesi (`digital_footprint_diversity`, `digital_sophistication_index`, `engagement_depth_index`, `subscription_affordability_index`) sono indici compositi su una scala da 0 a 10. Ogni conteggio può essere `null` quando il controllo non ha restituito dati per quel conteggio.

`profiles_registered: 0` è una risposta reale, non un errore: le piattaforme sono state controllate e il numero di telefono non è stato trovato su nessuna di esse, il che è un segnale comune di identità sintetica. Questo endpoint non agisce da solo su questo dato: usa `phone_no_social_presence_action` in un workflow per trasformarlo in un esito Review o Decline.

Il blocco è assente quando `enable_social` non è impostato, e anche quando il controllo social non può essere completato: in tal caso non viene fatturato.

## Comportamento in sandbox

Le chiavi sandbox convalidano la richiesta e restituiscono dati deterministici con esito approvato. Non inviano un OTP, non consumano crediti, non creano una sessione e non contribuiscono a Reti. Con `enable_social` impostato, restituiscono anche un blocco `phone_social` deterministico.

## Fatturazione

Le chiamate all'API Phone Risk costano \$0.04 al prezzo di listino, meno di una Phone Verification completa perché non viene inviato alcun OTP. Una richiesta in ambiente di produzione è fatturabile dal momento in cui inizia la ricerca, anche quando alcuni campi non garantiti non sono disponibili.

L'add-on sull'impronta social viene fatturato separatamente: un'unità `phone_social` per richiesta, in aggiunta al prezzo dell'API Phone Risk, ogni volta che il controllo viene completato. Il controllo del credito effettuato prima della ricerca copre entrambi.


## OpenAPI

````yaml it/openapi-25.json POST /v3/phone/risk/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API di verifica dell'identità. Autenticati con l'intestazione x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/phone/risk/:
    post:
      tags:
        - Standalone APIs
      summary: Calcola il punteggio di rischio di un numero di telefono
      description: >-
        Risolvi un numero di telefono e ottieni operatore, tipo di linea,
        portabilità, numeri usa e getta, corrispondenza tra sessioni e segnali
        normalizzati di intelligence sul rischio senza inviare un OTP.
        L'endpoint crea una sessione API e restituisce il suo id come
        `request_id`.


        **Decisione.** Il campo di primo livello `status` riflette
        `phone.status`. Di norma è `Approved`; la valutazione del rischio può
        produrre `In Review` o `Declined`.


        **Alias di compatibilità.** Le risposte in produzione espongono
        l'oggetto intelligence normalizzato sia come `phone.phone_intelligence`
        sia come `phone.enrichment`. I valori sono identici. Le nuove
        integrazioni possono leggere `phone.enrichment`. Entrambe le chiavi sono
        assenti se non sono stati restituiti dati di intelligence utilizzabili.


        **Fatturazione.** Le chiamate in produzione utilizzano i prezzi della
        Phone Risk API. La richiesta è fatturabile non appena inizia la ricerca,
        anche se alcuni campi disponibili nei limiti del possibile non sono
        disponibili.


        **Sandbox.** Le chiavi sandbox convalidano la richiesta e restituiscono
        dati approvati deterministici senza inviare un OTP, consumare crediti,
        creare una sessione o contribuire a Networks.


        **Autenticazione.** Invia la chiave API della tua applicazione in
        `x-api-key`. Credenziali mancanti o non valide restituiscono `403` -
        questa API non restituisce mai `401`.


        **Limite di frequenza.** Budget di scrittura condiviso di 300 richieste
        al minuto per chiave API su tutti gli endpoint POST/PATCH/DELETE (la
        creazione di transazioni e l'ingestione di eventi hanno un budget
        separato di 600).


        **Impronta social.** Imposta `enable_social` su `true` per aggiungere un
        blocco `phone_social`: le piattaforme online su cui questo numero è
        registrato, con conteggi per categoria ed eventuali dettagli del profilo
        disponibili. `profiles_registered: 0` significa che le piattaforme sono
        state controllate e il numero non è stato trovato su nessuna di esse:
        una risposta valida e fatturabile. Il blocco è assente quando il
        componente aggiuntivo non è stato richiesto o il controllo non ha potuto
        essere completato, e in tal caso non viene fatturato. La fatturazione
        aggiunge un'unità `phone_social` per richiesta oltre al prezzo di questo
        stesso endpoint.
      operationId: post_v3phone_risk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhoneRiskRequest'
            examples:
              Minimal:
                summary: Calcola il punteggio di un numero con i valori predefiniti
                value:
                  phone_number: '+14155552671'
              Full context:
                summary: >-
                  Calcola il punteggio con segnali, indicazione del paese e ID
                  di correlazione
                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: >-
            La valutazione del rischio è completata. Ispeziona `status` per la
            decisione; il codice HTTP è sempre `200` per le ricerche completate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhoneRiskResponse'
              examples:
                Clean mobile number:
                  summary: Numero di cellulare pulito con copertura di intelligence
                  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: >-
                    Numero usa e getta o virtuale contrassegnato per la
                    revisione
                  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: >-
            Numero di telefono da valutare. Viene validato e normalizzato in
            formato E.164.
          example: '+14155552671'
        country_code:
          type: string
          maxLength: 3
          description: >-
            Suggerimento facoltativo sul paese ISO 3166-1 alpha-2 o alpha-3 per
            la copertura dell'intelligence.
          example: US
        signals:
          $ref: '#/components/schemas/RiskSignals'
        vendor_data:
          type: string
          description: >-
            Il tuo riferimento stabile per questa richiesta. Memorizzato nella
            sessione API e restituito nella risposta.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            I tuoi metadati JSON non sensibili. Memorizzati nella sessione API e
            restituiti nella risposta.
        enable_social:
          type: boolean
          default: false
          description: >-
            Se true, cerca anche l'impronta social del numero: le piattaforme di
            messaggistica, social, e-commerce e professionali su cui è
            registrato. Fatturato come un'unità `phone_social` per richiesta in
            aggiunta al prezzo di questo endpoint.
          example: true
    PhoneRiskResponse:
      type: object
      required:
        - request_id
        - status
        - created_at
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            ID della sessione API creata per questa richiesta. Memorizzalo con
            `vendor_data` se hai bisogno di correlare il risultato con i webhook
            successivi o con l'attività nella console.
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Decisione finale per questa sessione API. Di norma `Approved`; la
            valutazione del rischio può produrre `In Review` o `Declined`.
        vendor_data:
          type: string
          nullable: true
          description: Eco del `vendor_data` inviato, `null` se non ne hai inviato alcuno.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: Eco del `metadata` inviato, `null` se non ne hai inviato alcuno.
        created_at:
          type: string
          format: date-time
          description: Timestamp di questa risposta.
        phone:
          type: object
          description: >-
            Report normalizzato del telefono, lo stesso blocco utilizzato dalle
            risposte di Verifica telefonica.
          required:
            - status
          properties:
            status:
              type: string
              enum:
                - Approved
                - In Review
                - Declined
              description: >-
                Decisione per questo numero di telefono. Rispecchia lo `status`
                di primo livello.
            phone_number_prefix:
              type: string
              description: >-
                Prefisso telefonico internazionale del paese con `+` iniziale
                (es. `+1`).
              example: '+1'
            phone_number:
              type: string
              description: Numero nazionale senza prefisso telefonico internazionale.
              example: '4155552671'
            full_number:
              type: string
              description: Numero completo in formato E.164.
              example: '+14155552671'
            country_code:
              type: string
              nullable: true
              description: Paese ISO 3166-1 alpha-2 del numero.
              example: US
            country_name:
              type: string
              description: Nome completo del paese ricavato da `country_code`.
              example: United States
            carrier:
              type: object
              nullable: true
              description: >-
                Rete attuale che serve il numero. `null` quando la ricerca non è
                riuscita a identificare un operatore.
              properties:
                name:
                  type: string
                  description: >-
                    Nome dell'operatore telefonico. Stringa vuota quando la
                    ricerca non è riuscita a identificarlo.
                type:
                  type: string
                  description: >-
                    Tipo di linea restituito dalla ricerca: `mobile`,
                    `fixed_line`, `voip`, `isp`, `vpn`, `toll_free`,
                    `premium_rate` o simile.
            is_disposable:
              type: boolean
              description: >-
                `true` quando il numero appartiene a un servizio di numeri
                temporanei o usa e getta.
            is_virtual:
              type: boolean
              description: >-
                `true` quando il tipo di linea è virtuale (`voip`, `isp` o
                `vpn`).
            verification_method:
              type: string
              nullable: true
              description: >-
                Canale OTP della verifica sottostante. `null` per le ricerche
                sul rischio, che non inviano mai un codice.
            verification_attempts:
              type: integer
              description: Invii di OTP per questo numero. `0` per le ricerche del rischio.
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Quando il numero è stato verificato l'ultima volta tramite OTP.
                `null` per le ricerche di rischio.
            warnings:
              type: array
              description: >-
                Avvisi di rischio registrati per questa richiesta. Array vuoto
                se non ne è presente alcuno.
              items:
                $ref: '#/components/schemas/RiskWarning'
            lifecycle:
              type: array
              description: >-
                Traccia di audit cronologica della richiesta. Array vuoto per le
                consultazioni del rischio senza eventi di invio.
              items:
                $ref: '#/components/schemas/RiskLifecycleEvent'
            matches:
              type: array
              description: >-
                Altre sessioni della tua applicazione in cui lo stesso numero di
                telefono è stato utilizzato da un utente diverso (`vendor_data`
                differente). Fino a 5 voci. Array vuoto quando non ci sono
                corrispondenze.
              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: >-
        Contesto facoltativo di dispositivo e rete rilevato dalla tua
        applicazione. Tutti i campi sono facoltativi. Fornirli alimenta il
        rilevamento delle corrispondenze tra sessioni in Reti.
      properties:
        ip:
          type: string
          format: ip
          description: Indirizzo IPv4 o IPv6 rilevato per l'utente finale.
          example: 192.0.2.1
        device_id:
          type: string
          maxLength: 255
          description: >-
            Identificatore stabile del dispositivo raccolto dalla tua
            applicazione (`ANDROID_ID` per Android, `identifierForVendor` per
            iOS).
        device_platform:
          type: string
          enum:
            - android
            - ios
            - ipados
            - tvos
            - web
          description: Piattaforma del dispositivo dell'utente finale.
        device_model:
          type: string
          maxLength: 255
          description: Modello del dispositivo segnalato dalla tua applicazione.
        os_version:
          type: string
          maxLength: 64
          description: Versione del sistema operativo.
        app_version:
          type: string
          maxLength: 64
          description: Versione della tua applicazione.
        user_agent:
          type: string
          maxLength: 512
          description: User agent del browser o dell'app.
    RiskWarning:
      type: object
      required:
        - feature
        - risk
        - log_type
        - short_description
        - long_description
      properties:
        feature:
          type: string
          description: Funzionalità che ha generato l'avviso.
        risk:
          type: string
          description: >-
            Codice di rischio leggibile dalla macchina. Nuovi valori possono
            essere aggiunti nel tempo.
        additional_data:
          type: object
          nullable: true
          additionalProperties: true
          description: Contesto specifico del rischio, oppure `null`.
        log_type:
          type: string
          enum:
            - error
            - warning
            - information
          description: Gravità utilizzata dalle regole di decisione.
        short_description:
          type: string
          description: Riepilogo su una riga leggibile dall'utente.
        long_description:
          type: string
          description: Spiegazione di facile lettura.
    RiskLifecycleEvent:
      type: object
      required:
        - type
        - timestamp
        - details
        - fee
      properties:
        type:
          type: string
          description: >-
            Tipo di evento leggibile dalla macchina. Nuovi valori possono essere
            aggiunti nel tempo.
        timestamp:
          type: string
          format: date-time
          description: Data e ora in cui si è verificato l'evento.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: Payload specifico dell'evento, o `null`.
        fee:
          type: number
          description: Importo in USD fatturato per questo evento.
    PhoneMatchItem:
      type: object
      description: >-
        Un'altra sessione della tua applicazione che ha utilizzato lo stesso
        numero di telefono con un `vendor_data` diverso.
      properties:
        session_id:
          type: string
          format: uuid
          description: >-
            ID sessione dell'altra verifica che ha utilizzato questo numero di
            telefono.
        session_number:
          type: integer
          description: Numero progressivo di facile lettura di tale sessione.
        vendor_data:
          type: string
          nullable: true
          description: '`vendor_data` di quella sessione.'
        verification_date:
          type: string
          description: Data e ora di creazione di quella sessione (`YYYY-MM-DDTHH:MM:SSZ`).
        phone_number:
          type: string
          description: Il numero di telefono corrispondente.
        status:
          type: string
          description: >-
            Stato di quella sessione (ad es., `Approved`, `Declined`, `In
            Progress`).
        is_blocklisted:
          type: boolean
          description: >-
            Indica se il numero di telefono è presente nella blocklist della tua
            applicazione.
        api_service:
          type: string
          nullable: true
          description: >-
            Per le sessioni di tipo API, l'API standalone che l'ha creata;
            `null` per le normali sessioni di verifica.
        source:
          type: string
          description: >-
            Dove è stata trovata la corrispondenza. Di solito `session`; un
            riscontro nella blocklist tramite una voce dell'elenco
            dell'organizzazione utilizza `list_entry`.
    PhoneIntelligence:
      type: object
      description: >-
        Blocco normalizzato di phone intelligence. Presente solo quando l'add-on
        di intelligence è stato eseguito per questa ricerca; se presente, è
        esposto anche sotto l'alias `enrichment` con valori identici.
      properties:
        score:
          type: number
          nullable: true
          description: >-
            Punteggio di rischio normalizzato da 0 a 100. Più alto è il
            punteggio, maggiore è il rischio.
        phone_type_risk:
          type: string
          nullable: true
          description: '`Low`, `Medium` o `High`, derivato dal punteggio.'
        phone_trust_index:
          type: number
          nullable: true
          description: >-
            Inverso del punteggio, per le dashboard che preferiscono un valore
            più alto come migliore.
        network_stability_index:
          type: number
          nullable: true
          description: Stabilità della rete della linea.
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` quando il numero sembra essere usa e getta o virtuale.'
        is_ported:
          type: boolean
          nullable: true
          description: '`true` quando il numero ha cambiato operatore.'
        is_recently_ported:
          type: boolean
          nullable: true
          description: '`true` quando la portabilità è avvenuta di recente.'
        carrier_type:
          type: string
          nullable: true
          description: Classificazione della linea rilevata dalla ricerca (es. `mobile`).
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Identificatore Didit stabile del segnale, ad esempio
                  `IR-5AC67A32`. Opaco: usalo per raggruppare e filtrare, non
                  analizzarlo.
              value:
                nullable: true
                description: >-
                  Per un flag di rischio (ad esempio `voip`, `leaked`,
                  `disposable`, `spam_trap`), il suo valore: un booleano, un
                  livello o una data. Null per un codice motivo con punteggio.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: >-
                  Indica se il segnale ha aumentato il rischio o ha aggiunto
                  affidabilità.
              message:
                type: string
                description: Spiegazione di facile lettura del segnale, in inglese.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Con quale intensità il segnale ha modificato il punteggio, ad
                  esempio `low`, `medium` o `high`.
          description: >-
            Segnali che spiegano il punteggio, ciascuno con un codice Didit
            stabile, una direzione, un messaggio e un livello di impatto. Nel
            tempo possono comparire nuovi codici, pertanto non rifiutare i
            codici sconosciuti.
    PhoneSocialFootprint:
      type: object
      nullable: true
      description: >-
        Impronta social del numero di telefono: le piattaforme online su cui
        risulta registrato. Presente solo quando è stato impostato
        `enable_social` e il controllo è stato completato. Ciascun conteggio può
        essere null se non sono stati restituiti dati al riguardo.
        `profiles_registered: 0` indica che le piattaforme sono state
        controllate e il numero di telefono non è stato trovato su nessuna di
        esse: una risposta valida e fatturabile, nonché un tipico segnale di
        identità sintetica.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: Piattaforme in cui il numero di telefono risulta registrato.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Piattaforme valutate per la registrazione.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Piattaforme che hanno restituito un nome associato.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Piattaforme che hanno restituito una foto del profilo.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Piattaforme di comunicazione con presenza rilevata.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Categorie di piattaforma distinte con presenza rilevata.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indicatore composito di maturità digitale, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indicatore della ricchezza del profilo, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Mix di piattaforme gratuite rispetto a quelle a pagamento, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme gratuite.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme a pagamento completo.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Registrazioni su piattaforme freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: Completezza del profilo WhatsApp. Solo telefono; null per email.
          example: Partial
        registered_platforms:
          type: array
          description: Piattaforme in cui la registrazione è confermata.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Piattaforme verificate con esito negativo.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Numero di registrazioni e percentuale per categoria di piattaforma.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Dettagli del profilo per piattaforma, indicizzati per piattaforma,
            quando la piattaforma li rende disponibili.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Identificatore della piattaforma.
          example: whatsapp
        category:
          type: string
          description: >-
            Categoria della piattaforma, ad es. MESSAGING, SOCIAL_MEDIA,
            ECOMMERCE, PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` per piattaforme globali, `local` per quelle specifiche di
            una regione.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: >-
            Piattaforme in questa categoria in cui la registrazione è
            confermata.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Quota delle piattaforme verificate della categoria con una
            registrazione, 0.0-1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Nome del profilo, se esposto dalla piattaforma.
        photo:
          type: string
          nullable: true
          description: URL della foto del profilo, se esposto dalla piattaforma.
        about:
          type: string
          nullable: true
          description: >-
            Testo della bio/sezione informazioni del profilo, se esposto dalla
            piattaforma.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Visibilità del profilo, se esposta dalla piattaforma.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Indica se il profilo è un account aziendale, quando la piattaforma
            lo rende disponibile.
  responses:
    PhoneRiskValidationError:
      description: Validazione della richiesta non riuscita.
      content:
        application/json:
          examples:
            Missing phone number:
              summary: Numero di telefono mancante
              value:
                phone_number:
                  - This field is required.
            Invalid phone number:
              summary: Numero di telefono non valido
              value:
                phone_number:
                  - Invalid phone number provided.
            Invalid signal IP:
              summary: IP di segnale non valido
              value:
                signals:
                  ip:
                    - Enter a valid IPv4 or IPv6 address.
    RiskPermissionDenied:
      description: >-
        La chiave API è mancante o non valida, oppure l'organizzazione non può
        coprire la ricerca in tempo reale. Questa API non restituisce mai `401`.
      content:
        application/json:
          examples:
            Missing or invalid API key:
              summary: >-
                Nessuna intestazione `x-api-key`, oppure la chiave non è valida
                o è stata revocata
              value:
                detail: You do not have permission to perform this action.
            Not enough credits:
              summary: >-
                Il saldo dell'organizzazione non è sufficiente per coprire il
                prezzo della ricerca
              value:
                error: You don't have enough credits to perform this request.
    RateLimitedWrite:
      description: >-
        Il limite di scrittura condiviso di 300 richieste al minuto per chiave
        API è stato superato. Rispetta `Retry-After` prima di riprovare.
      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 chiave API della tua applicazione, da Developers -> API keys nella
        Business Console. La chiave primaria ha accesso completo. Una chiave con
        nome può avere un ambito definito: nessuno, lettura o scrittura per
        risorsa, limitata ad alcuni workflow o a sessioni approvate, a un elenco
        di indirizzi IP e a una data di scadenza. 401 indica che la chiave è
        errata, revocata o scaduta; 403 indica che non è stata inviata alcuna
        chiave, che la chiave non ha accesso a questa risorsa o azione, oppure
        che la richiesta proviene da un indirizzo non incluso nel suo elenco IP;
        404 su una route di sessione indica che la sessione non rientra nei
        workflow o negli stati previsti dalla chiave. Una chiave senza accesso
        ai media riceve gli URL di immagini, video e PDF come null, e una chiave
        senza permessi di scrittura sulle sessioni riceve link e token di
        sessione come null. Consulta https://docs.didit.me/console/api-keys.

````

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