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

# Verifica dell'identità: guida introduttiva rapida

> Crea il tuo flusso KYC in pochi minuti con Didit: workflow no-code, avvio sessione e webhook. Include $10 di credito gratuito al mese.

Questa guida rapida ti accompagna dalla creazione di un nuovo account Didit fino a una verifica dell'identità in produzione: crea il tuo account, crea un workflow di verifica a partire da un modello, configura un webhook e copia la tua chiave API, avvia una sessione di verifica con una singola chiamata API e ricevi la decisione in tempo reale.Questa pagina si affianca alla lezione della Academy riportata sotto: una registrazione dello schermo di 19 minuti che mostra come costruire un workflow di verifica nella console reale, dal modello al flusso pubblicato, inclusi regole, diramazioni, prezzi e il link condivisibile.[Crea il tuo primo flusso di verifica — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?rel=0\&playsinline=1)

Prompt di avvio rapido
        Copia il prompt negli appunti



      
      

\<pre>

\````# Goal — ship your first Didit verification end-to-end

You are integrating Didit (https://docs.didit.me) into my project. Take me from zero to a working KYC / KYB flow: account, workflow, session, hosted UI, webhook, decision.

For the full canonical recipe (5K-token version covering SDK pick, webhook HMAC verification, every status, decision parsing), use:

https://docs.didit.me/integration/integration-prompt

That page has a "Copy Prompt" button — copy its prompt and follow it. The summary below is enough to bootstrap if you can't fetch the full prompt.

\## My application context

\<my_stack>
Stack: [framework + language, e.g. Next.js 15 + TypeScript]
Surface: [web | iOS | Android | React Native | Flutter | backend-only]
Use case: [KYC at signup | KYB at business onboarding | age gate | re-auth]
Database: [Postgres | MySQL | Mongo]
\</my_stack>

\## Steps

1\. **Register programmatically (2 calls)** — `POST https://apx.didit.me/auth/v2/programmatic/register/` then `POST https://apx.didit.me/auth/v2/programmatic/verify-email/` with the 6-char code. Save `response.application.api_key` as `DIDIT_API_KEY`.

2\. **Create a workflow** —
\```bash
curl -X POST https://verification.didit.me/v3/workflows/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workflow_label": "Standard KYC",
"workflow_type": "kyc",
"features": [
  \{"feature": "OCR"},
  \{"feature": "LIVENESS", "config": {"face_liveness_method": "PASSIVE"}},
  \{"feature": "FACE_MATCH"},
  \{"feature": "AML"}
]
}'
\```
Persist `workflow.id`.

3\. **Create a session** —
\```bash
curl -X POST https://verification.didit.me/v3/session/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"workflow_id": "$WORKFLOW_ID", "vendor_data": "user-42", "callback": "https://myapp.com/kyc/return"}'
\```
Response contains `session_id`, `url`, `session_token`. Redirect the user to `url` (or open in the SDK / an iframe).

4\. **Register a webhook destination** — `POST https://verification.didit.me/v3/webhook/destinations/` with `{"label": "Production", "url": "...", "subscribed_events": ["status.updated","data.updated","user.status.updated","user.data.updated"], "webhook_version": "v3"}` (`label` and `url` are required). Save the returned `secret_shared_key` as `DIDIT_WEBHOOK_SECRET` (`GET /v3/webhook/destinations/{destination_uuid}/` returns it again).

5\. **Receive webhooks** — verify the `X-Signature-V2` header (HMAC-SHA256 of canonical JSON; see /integration/webhooks). De-dupe on `event_id`. Respond within 5 seconds. Apply decision to your DB based on `status`.

6\. **Retrieve the decision (fallback)** — `GET https://verification.didit.me/v3/session/{session_id}/decision/`. V3 returns plural arrays (`id_verifications[]`, `liveness_checks[]`, `face_matches[]`, `aml_screenings[]`, ...). Never assume singular V2 fields.

\## Failure modes
\- Missing API key → `403 {"detail": "You do not have permission to perform this action."}` on verification.didit.me. Wrong, revoked or expired key → `401`. JWT problems on apx.didit.me → `403`.
\- Invalid `workflow_id` → `400`.
\- Webhook handler slower than 5s, or answering 5xx or 404 → Didit retries twice, after about 1 and 4 minutes, then drops the delivery. Resend it from the destination's delivery log.

\## Sources of truth (cross-check before shipping)
\- /openapi-25.json — verification API
\- /openapi-auth.json — programmatic auth
\- /reference/data-models — V3 decision shape
\- /integration/integration-prompt — canonical end-to-end prompt````

\</pre>



      
      

Incolla in

**1. Crea il tuo account Didit**1) Vai su [business.didit.me](https://business.didit.me)
2) Registrati con SSO o con email e password
3) Crea la tua **Organizzazione** — qui il tuo team gestisce workflow, chiavi API e attività di verifica**2. Crea un workflow di verifica**Vai su **Workflow** nella barra laterale e fai clic su **Crea nuovo**. Scegli un tipo di workflow:| Tipo | Descrizione |
| - | - |
| **Simple Workflow** | I passaggi vengono eseguiti in un ordine definito — ideale per i flussi di onboarding standard |
| **Node-Based Workflow** | Logica di diramazione flessibile — crea percorsi condizionali basati sui risultati della verifica |Scegli un modello per iniziare:| Modello | Caso d'uso |
| - | - |
| **KYC** | Onboarding standard degli utenti |
| **Verifica Età Adattiva** | Controllo dell'età tramite selfie con ricorso al documento come alternativa |
| **Autenticazione Biometrica** | Riautenticazione tramite selfie senza password |
| **Verifica Indirizzo** | Flusso di prova di residenza |Personalizza attivando o disattivando i blocchi: rilevamento della vitalità, confronto facciale, AML, NFC, telefono, email e altri ancora.Il filmato qui sotto riprende la lezione della Academy al minuto 2:50, dove viene creato un nuovo workflow a partire da un modello e configurato nodo per nodo.[Creare un nuovo workflow da un modello — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?start=170\&rel=0\&playsinline=1)**3. Configura il webhook e copia la chiave API**Vai su **Sviluppatori** nella barra laterale, quindi su **Chiavi API** e **Webhook**:1. Aggiungi il tuo **Webhook URL** — Didit invia qui gli aggiornamenti di stato
2. Copia la tua **chiave API** — conservala solo lato server, non esporla mai nel codice frontend
3. Salva il **segreto di firma** della destinazione come `DIDIT_WEBHOOK_SECRET` nel tuo `.env` — è necessario per verificare l'HMAC `X-Signature-V2` sui webhook in arrivo> [!TIP]
>
> Puoi **testare i webhook direttamente** da questa pagina con dati e stati diversi, senza dover eseguire una verifica completa. Questo ti consente di verificare che la tua integrazione funzioni correttamente prima del passaggio in produzione.**4. Avvia una sessione di verifica****Opzione A — Sessioni ospitate** (consigliata)Il nostro metodo di integrazione preferito. Didit esegue continui test A/B sul flusso ospitato, migliorando costantemente tasso di completamento, velocità e resistenza alle frodi senza che tu debba rilasciare alcuna interfaccia utente.Nella Console, fai clic su **"+"** → seleziona un workflow → genera un link o un codice QR. Oppure crea le sessioni a livello di codice:```bash theme={null}
curl -X POST https://verification.didit.me/v3/session/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_id": "your-workflow-id"}'
```> [!NOTE]
>
> Trovi il tuo `workflow_id` sotto **Workflow** nella barra laterale.Nella lezione della Academy sull'integrazione, questo corrisponde al minuto 3:36: la chiamata di creazione della sessione con il suo unico campo obbligatorio, seguito dai dati del fornitore e dall'URL di callback.[Creare una sessione: l'unico campo obbligatorio — Didit Academy](https://www.youtube.com/embed/fX03-WEu_EI?start=216\&rel=0\&playsinline=1)**Opzione B — API indipendenti** (avanzata)Chiama direttamente gli endpoint dal tuo backend — non è necessaria alcuna sessione. Ideale per flussi server-to-server o personalizzati:| Endpoint | Scopo |
| - | - |
| `POST /v3/id-verification/` | Controllo del documento |
| `POST /v3/face-match/` | Selfie vs documento |
| `POST /v3/aml/` | Sanzioni e PEP |
| `POST /v3/passive-liveness/` | Rilevamento di deepfake |Consulta l'elenco completo nei [Riferimenti API](https://docs.didit.me/it/standalone-apis/id-verification.md).**5. Ricevi i risultati in tempo reale**Didit invia eventi webhook al tuo endpoint — nessun polling necessario.| Evento | Trigger |
| - | - |
| `status.updated` | Lo stato della sessione utente o della sessione aziendale cambia |
| `data.updated` | I dati di verifica della sessione o della sessione aziendale cambiano |
| `user.status.updated` | Lo stato dell'utente del fornitore cambia |
| `user.data.updated` | Il profilo o i dati aggregati dell'utente del fornitore cambiano |
| `business.status.updated` | Lo stato dell'azienda del fornitore cambia |
| `business.data.updated` | Il profilo o i dati aggregati dell'azienda del fornitore cambiano |
| `activity.created` | Registrazione di un evento di attività |
| `transaction.created` | Transazione creata |
| `transaction.status.updated` | Lo stato della transazione cambia |Consulta [Webhook](https://docs.didit.me/it/integration/webhooks.md) per il formato del payload e la verifica della firma.**6. Gestisci e monitora**Usa la Console per:- Visualizzare l'avanzamento della sessione in tempo reale
- Scaricare report in formato PDF/CSV per la compliance
- Inserire in blocklist ID o volti sospetti
- Aggiornare o rifiutare manualmente le sessioniLa lezione della Academy sulla lettura dei risultati esamina una sessione reale controllo per controllo: avvisi, punteggi, registro eventi, consegne dei webhook e l'esportazione in PDF che il tuo team di compliance richiederà.[Come leggere il risultato di una verifica — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?rel=0\&playsinline=1)## Hai bisogno di aiuto> [card] [Email](mailto:hello@didit.me)
>
> [hello@didit.me](mailto:hello@didit.me)


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