> ## 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 Didit: riferimento REST per la verifica dell'identità

> Riferimento API REST di Didit: endpoint KYC, KYB, AML, biometrici e monitoraggio transazioni. Spec OpenAPI, prezzi a consumo, $10 gratis al mese.



Prompt di integrazione per API standalone
        Copia il prompt negli appunti



      
      

\<pre>

\``Integrate Didit standalone verification APIs into my backend for server-to-server identity checks.

\## Available Standalone APIs

\### Identity & Documents
\- POST /v3/id-verification/ — multipart/form-data: front_image (required), back_image (optional). Returns: { request_id, id_verification: { status, first_name, last_name, document_type, document_number, date_of_birth, nationality, expiration_date, issuing_state, address, parsed_address, warnings[] } }
\- POST /v3/poa/ — multipart/form-data: document (PDF/image). Returns: { request_id, poa: { status, document_type, issuer, poa_address, poa_parsed_address, issue_date, warnings[] } }
\- POST /v3/database-validation/ — JSON: { issuing_state, validation_type, first_name, last_name, date_of_birth, personal_number, ... }. Returns: { request_id, database_validation: { status, validations } }

\### Document AI
\- POST /v3/document-ai/ — multipart/form-data: document (PDF/image), fields (one JSON-encoded array string of { key, name, instruction, type: "text"|"number"|"date", required, is_full_name }, 1-30 items), expected_first_name + expected_last_name OR expected_company_name (+ expected_company_country), document_ai_name_match_score_threshold (default 80), per-risk *_action params. Returns: { request_id, document_ai: { status, extracted_data: { <key>: value|null }, detected_codes[], fields[], name_match_score, name_on_document, warnings[] } }. $0.20 per document.

\### Biometrics & Face
\- POST /v3/passive-liveness/ — multipart/form-data: user_image. Returns: { request_id, passive_liveness: { status, score, method } }
\- POST /v3/face-match/ — multipart/form-data: user_image + ref_image. Returns: { request_id, face_match: { status, score } }
\- POST /v3/face-search/ — multipart/form-data: user_image. Returns: { request_id, face_search: { status, total_matches, matches[] } }
\- POST /v3/age-estimation/ — multipart/form-data: user_image. Returns: { request_id, age_estimation: { status, age_estimation, score } }

\### Compliance
\- POST /v3/aml/ — JSON: { full_name, entity_type, date_of_birth, nationality, document_number, include_adverse_media, include_ongoing_monitoring }. Returns: { request_id, aml: { status, total_hits, hits[], score, entity_type } }

\### Business Verification (KYB)
\- POST /v3/kyb/search/ — JSON: { country_code (required), name, registration_number, tier: "basic" (default) | "shareholders" | "ubo", search_type: "contains", webhook_url, vendor_data, metadata }. `tier` picks the provider chain the search runs on; retrieve the candidate from select (Lite), shareholders or ubo. Up to $0.50 per successful request, separately from profile retrieval; empty results and failures are not charged. Returns: { request_id, kyb_registry: { companies[] ({ kyb_response_id, name, registration_number, status, type, fetch_status }), pagination, search_status, search_resolved } }. `kyb_response_id` is an opaque handle — pass it straight to select/shareholders/ubo, never parse it.
\- POST /v3/kyb/select/ — JSON: { kyb_response_id (from search), save_api_request, vendor_data, metadata }. **Lite** tier, priced per country ([per-country prices](https://docs.didit.me/getting-started/kyb-registry-pricing.md)). Returns: { request_id, kyb_registry: { status, company_name, registration_number, country_code, company_type, incorporation_date, registered_address, officers[], beneficial_owners[], fetch_status, data_resolved, ... } }
\- POST /v3/kyb/shareholders/ and POST /v3/kyb/ubo/ — same JSON shape as select. **Shareholders** and **UBOs** tiers, priced per country; delivered and billed as the highest tier the country's registries can serve. v3 only.

\### Contact Verification
\- POST /v3/email/send/ — JSON: { email }. Sends OTP code.
\- POST /v3/email/check/ — JSON: { email, code }. Verifies OTP.
\- POST /v3/phone/send/ — JSON: { phone, channel }. Sends OTP via SMS/WhatsApp/Telegram.
\- POST /v3/phone/check/ — JSON: { phone, code }. Verifies OTP.

\### Bank Verification
\- POST /v3/bank/account-check/ - JSON: { country (ISO 3166-1 alpha-3), account: { iban } or { account_number, sort_code | routing_number | ifsc | bsb | transit_institution | bank_code } or { clabe } or { cbu_cvu }, holder: { full_name } or { business_name }, vendor_data }. Checks that a bank account belongs to the name, with no session. Returns: { request_id, result: match | close_match | no_match | cannot_verify, holder_name (close_match only), account (masked), vendor_data, created_at }. Billed once per check the bank answers; errors are never billed.

\## Authentication
All requests require: Headers: { "x-api-key": DIDIT_API_KEY }
For file uploads: multipart/form-data. For JSON: Content-Type: application/json.

\## Common Parameters
\- save_api_request (bool, default true): if true, appears in Console > Manual Checks
\- vendor_data (string): your internal ID for tracking

\## Example: ID Verification (Node.js)
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('front_image', fs.createReadStream('./id_front.jpg'));
form.append('back_image', fs.createReadStream('./id_back.jpg'));

const response = await fetch('https://verification.didit.me/v3/id-verification/', {
method: 'POST',
headers: { 'x-api-key': process.env.DIDIT_API_KEY, ...form.getHeaders() },
body: form
});
const result = await response.json();
// result.id_verification.status: "Approved" or "Declined"
// result.id_verification.first_name, .last_name, .document_number, etc.

\## Example: AML Screening
const response = await fetch('https://verification.didit.me/v3/aml/', {
method: 'POST',
headers: { 'x-api-key': process.env.DIDIT_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
full_name: 'John Doe',
entity_type: 'person',
date_of_birth: '1990-01-15',
nationality: 'US'
})
});
const result = await response.json();
// result.aml.status, result.aml.total_hits, result.aml.hits

\## When to Use Standalone APIs vs Sessions
\- Standalone: you have images/data, server-to-server, batch processing, custom UX
\- Sessions: user-facing flows where Didit handles camera, UX, multi-step, 54 languages

\## Rate Limits
\- Free: 10/min. Paid: 600/min. Exceeded: HTTP 429.

\## Environment Variables
\- DIDIT_API_KEY — from Didit Console > API & Webhooks

\## Docs
\- API Reference: https://docs.didit.me/api-reference/overview
\- Sessions vs APIs: https://docs.didit.me/api-reference/overview
\- Webhooks: https://docs.didit.me/integration/webhooks``

\</pre>



      
      

Incolla in

Didit offre **due approcci complementari** alla verifica dell'identità. Capire la differenza è essenziale per scegliere l'integrazione più adatta al tuo caso d'uso.### [Sessioni ospitate](https://docs.didit.me/it/sessions-api/create-session.md)Flussi di verifica completi con un'interfaccia predefinita e ottimizzata. Gli utenti interagiscono con l'interfaccia ospitata da Didit tramite reindirizzamento, iframe o SDK nativo.### [API standalone](https://docs.didit.me/it/standalone-apis/id-verification.md)Chiamate API dirette da server a server. Invii i dati (immagini, documenti, nomi) e ricevi risultati di verifica strutturati, senza alcuna interfaccia utente per l'utente finale.***## Sessioni ospitate (consigliate per i flussi rivolti agli utenti)Le sessioni ospitate sono l'**approccio consigliato** per la maggior parte delle integrazioni. Quando crei una sessione, Didit genera un `verification_url` che presenti al tuo utente. L'utente completa l'intero flusso di verifica nell'interfaccia ottimizzata di Didit, e tu ricevi i risultati tramite webhook o API.### Come funziona**1. Crea sessione**Il tuo server chiama `POST /v3/session/` con un ID del workflow. Didit restituisce un `verification_url` e un `session_token`.**2. Presenta all'utente**Reindirizza l'utente, integra la sessione tramite iframe o inizializza un SDK nativo usando il token di sessione.**3. L'utente completa la verifica**L'utente segue il flusso guidato nell'interfaccia ottimizzata di Didit: acquisizione del documento, rilevamento della vitalità e gli eventuali passaggi aggiuntivi.**4. Ricevi i risultati**Didit invia un webhook al tuo server con la decisione di verifica, oppure puoi interrogare il servizio tramite l'API di recupero.### Perché le sessioni sono consigliate| Vantaggio | Dettagli |
| - | - |
| **UX ottimizzata** | L'interfaccia di verifica è sottoposta a test A/B continui a livello globale per ottenere i tassi di completamento più alti |
| **Gestione della fotocamera** | Selezione intelligente della fotocamera, acquisizione automatica, controlli di qualità e compatibilità con i dispositivi integrati |
| **Flusso guidato** | Istruzioni passo dopo passo, feedback in tempo reale e gestione degli errori per l'utente |
| **Workflow con più funzionalità** | Concatena più funzionalità (ID + Rilevamento della vitalità + AML + Verifica telefonica + Verifica email) in un unico flusso |
| **Sicurezza** | Anti-spoofing, rilevamento attivo della vitalità e impronta digitale del dispositivo integrati nel flusso |
| **Conformità** | Tracce di audit a livello di sessione, acquisizione del consenso e politiche di conservazione dei dati gestite automaticamente |
| **Localizzazione** | 54 lingue con rilevamento automatico del browser |
| **Nativo per mobile** | SDK nativi per iOS, Android, React Native e Flutter |
| **Nessuna manutenzione** | Didit gestisce tutti gli aggiornamenti dell'interfaccia, i bug di browser e dispositivi e i casi limite della fotocamera |### Quando usare le sessioni- **Onboarding utenti / KYC**: i nuovi utenti si registrano e devono verificare la propria identità
- **Verifica dell'età**: confermi che gli utenti rispettino i requisiti minimi di età
- **Nuova verifica**: verifichi periodicamente gli utenti esistenti
- **Autenticazione biometrica**: gli utenti si autenticano con il volto per le azioni sensibili
- **Conformità a più passaggi**: flussi che richiedono ID, rilevamento della vitalità, AML e telefono in un'unica volta
- **Qualsiasi scenario in cui l'utente finale è presente e interagisce direttamente**### Endpoint delle sessioni| Endpoint | Scopo |
| - | - |
| [Crea sessione](https://docs.didit.me/it/sessions-api/create-session.md) | Genera un URL di verifica per un utente |
| [Recupera sessione](https://docs.didit.me/it/sessions-api/retrieve-session.md) | Ottieni i risultati completi e la decisione per una sessione |
| [Elenca sessioni](https://docs.didit.me/it/sessions-api/list-sessions.md) | Interroga e filtra tutte le sessioni |
| [Elimina sessione](https://docs.didit.me/it/sessions-api/delete-session.md) | Rimuovi una sessione e tutti i dati associati |
| [Genera PDF](https://docs.didit.me/it/sessions-api/generate-pdf.md) | Esporta un report di verifica in PDF |
| [Condividi sessione](https://docs.didit.me/it/sessions-api/share-session/share.md) | Genera un token di condivisione per il KYC riutilizzabile con un partner |
| [Importa sessione condivisa](https://docs.didit.me/it/sessions-api/share-session/import.md) | Importa una sessione condivisa da un partner (KYC riutilizzabile) |***## API standalone (per l'elaborazione server-to-server)Le API standalone ti permettono di chiamare le singole funzionalità di verifica **direttamente dal tuo server**, senza alcuna interfaccia utente. Invii i dati (immagini, documenti, nomi) e ricevi risultati strutturati.### Come funziona**1. Invia i dati**Il tuo server chiama un endpoint standalone (ad esempio `POST /v3/id-verification/`) con i dati richiesti: immagini, documenti o campi JSON.**2. Ricevi i risultati**Didit elabora la richiesta in modo sincrono e restituisce nella risposta i risultati di verifica strutturati.### Quando usare le API standalone| Caso d'uso | Esempio |
| - | - |
| **Elaborazione backend** | Hai già le immagini dei documenti dalla tua interfaccia di acquisizione e devi verificarle |
| **Verifica in batch** | Elaborazione di documenti d'identità in blocco caricati da un team operativo |
| **UX personalizzata** | Hai costruito un tuo flusso di acquisizione e vuoi usare Didit solo per l'analisi |
| **Controlli server-to-server** | Screening AML di un elenco di clienti, senza alcuna interazione con l'utente |
| **Pipeline automatizzate** | Ricontrolli di compliance basati su CI/CD o cron (ad esempio il monitoraggio AML giornaliero) |
| **Integrazione con sistemi esistenti** | Collegamento della verifica di Didit al tuo sistema di gestione documentale esistente |
| **Chiamate di singola funzionalità** | Ti serve una sola funzionalità (ad esempio solo lo screening AML o solo il confronto facciale) |### API standalone disponibili**Identità e documenti**| API | Cosa fa |
| - | - |
| [Verifica dell'identità](https://docs.didit.me/it/standalone-apis/id-verification.md) | Estrae e valida i dati dai documenti d'identità (immagini fronte e retro) |
| [Prova di residenza](https://docs.didit.me/it/standalone-apis/proof-of-address.md) | Verifica i documenti di indirizzo (bollette, estratti conto bancari, documenti governativi) |
| [Validazione dell'indirizzo](https://docs.didit.me/it/standalone-apis/address-validation.md) | Conferma che un indirizzo esiste e lo restituisce normalizzato, con coordinate |
| [Validazione su database](https://docs.didit.me/it/core-technology/database-validation/overview.md) | Confronta i dati dell'utente con le banche dati governative |**Document AI**| API | Cosa fa |
| - | - |
| [Document AI](https://docs.didit.me/it/standalone-apis/document-ai.md) | Estrae i campi che definisci da qualsiasi documento (PDF o immagine), con controlli di corrispondenza dei nomi e di manomissione |**Biometria e volto**| API | Cosa fa |
| - | - |
| [Rilevamento passivo della vitalità](https://docs.didit.me/it/standalone-apis/passive-liveness.md) | Verifica che una persona reale sia presente (anti-spoofing) a partire da una singola immagine |
| [Confronto facciale](https://docs.didit.me/it/standalone-apis/face-match.md) | Confronta due volti per stabilire se appartengono alla stessa persona |
| [Ricerca facciale](https://docs.didit.me/it/standalone-apis/face-search.md) | Cerca un volto in tutte le sessioni verificate in precedenza (1:N) |
| [Stima dell'età](https://docs.didit.me/it/standalone-apis/age-estimation.md) | Stima l'età di una persona a partire da un'immagine del volto |**Compliance e rischio**| API | Cosa fa |
| - | - |
| [Screening AML](https://docs.didit.me/it/standalone-apis/aml-screening.md) | Verifica persone o aziende rispetto a sanzioni, PEP e watchlist |**Verifica bancaria**| API | Cosa fa |
| - | - |
| [Verifica del conto](https://docs.didit.me/it/standalone-apis/bank-account-check.md) | Verifica che un conto bancario appartenga alla persona o all'azienda che indichi, prima che tu invii denaro a tale conto |**Verifica aziendale (KYB)**| API | Cosa fa |
| - | - |
| [Ricerca nel registro KYB](https://docs.didit.me/it/standalone-apis/kyb-registry-search.md) | Cerca nei registri delle imprese per nome, numero di registrazione e paese; fino a \$0.50 per richiesta riuscita |
| [Selezione nel registro KYB](https://docs.didit.me/it/standalone-apis/kyb-registry-select.md) | Recupera il profilo completo dell'azienda nel registro (esponenti, titolari effettivi, indirizzi) per un'azienda selezionata |***## Confronto affiancato| | Sessioni ospitate | API standalone |
| - | - | - |
| **Impegno di integrazione** | Basso: reindirizzamento, iframe o SDK | Medio: gestisci tu l'acquisizione e l'invio dei dati |
| **Interazione con l'utente** | Sì: l'utente completa il flusso nell'interfaccia di Didit | No: solo server-to-server |
| **Fotocamera e acquisizione** | Gestite da Didit (ottimizzate) | Fornisci tu le immagini o i dati |
| **Flussi con più funzionalità** | Sì: concatena le funzionalità in un workflow | Una funzionalità per chiamata API |
| **Ottimizzazione della UX** | Testata continuamente con A/B test | La UX è controllata da te |
| **Localizzazione** | 54 lingue, rilevate automaticamente | N/D (nessuna interfaccia) |
| **Webhook** | Notifiche automatiche sullo stato | N/D (risposta sincrona) |
| **Tempo di risposta** | Asincrono (l'utente completa al proprio ritmo) | Sincrono (secondi) |
| **Ideale per** | Onboarding e verifica degli utenti con interfaccia | Elaborazione backend e automazione |
| **Visibilità nella console** | Ciclo di vita completo della sessione nella dashboard | Compare nella sezione Manual Checks |***## Posso usarle entrambe?**Sì.** Molti team combinano i due approcci:1) **Sessioni per l'onboarding**: i nuovi utenti completano il flusso di verifica ospitato durante la registrazione
2) **AML standalone per il monitoraggio continuo**: un cron job ricontrolla ogni notte tutti gli utenti approvati rispetto alle watchlist aggiornate
3) **Ricerca facciale standalone per il rilevamento dei duplicati**: quando una nuova sessione viene approvata, il tuo server chiama la Ricerca facciale per verificare la presenza di duplicati
4) **Verifica dell'identità standalone per le operazioni**: il tuo team di compliance carica manualmente i documenti per le revisioni dei casi limite### Esempio: architettura combinata| La tua applicazione | API di Didit | Tipo |
| - | - | - |
| **Flusso di registrazione utente** | API Sessions (interfaccia ospitata) | Con l'utente |
| **Ricontrollo AML notturno** | API AML standalone | Server-to-server |
| **Revisione documenti del team operativo** | API Verifica dell'identità standalone | Server-to-server |
| **Rilevamento di volti duplicati** | API Ricerca facciale standalone | Server-to-server |***## Per iniziare### [Avvio rapido con le sessioni](https://docs.didit.me/it/integration/api-full-flow.md)Crea la tua prima sessione di verifica ospitata in 5 minuti.### [Autenticazione API](https://docs.didit.me/it/getting-started/api-authentication.md)Ottieni la tua chiave API e inizia a effettuare richieste autenticate.### [Configura i webhook](https://docs.didit.me/it/integration/webhooks.md)Ricevi notifiche in tempo reale quando cambia lo stato della verifica.### [Crea un workflow](https://docs.didit.me/it/console/workflows.md)Crea flussi di verifica personalizzati nella Business Console.***


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