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

# Benutzerverifizierung: KYC-Flow & UX

> Didit optimiert die Verifizierungs-UX: Ausweiserfassung, Liveness-Erkennung, smarte Wiederholungsversuche und Echtzeit-Feedback.



Prompt zum Sitzungslebenszyklus
        Prompt in die Zwischenablage kopieren



      
      

\<pre>

\````# Goal — drive a user through a full verification session

The session is the unit you build against. One `POST /v3/session/` returns a hosted URL; your user opens it; Didit runs the workflow; you receive a webhook with the decision.

For the complete recipe (SDK pick per platform, HMAC signature pipeline, decision parsing, every status), copy the canonical prompt at:

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

\## Session lifecycle at a glance

\| Phase | Trigger | What happens |
\|---|---|---|
\| Create | `POST https://verification.didit.me/v3/session/` | Returns `session_id`, `url`, `session_token`. Status = `Not Started`. |
\| User opens `url` | SDK / iframe / redirect | Status flips to `In Progress`. The hosted flow handles country, ID capture, liveness, retries. |
\| Processing | Didit backend | OCR, liveness, face match, AML, etc. run; per-feature plural arrays populate on the decision. |
\| Decision | `status.updated` webhook | One of `Approved`, `Declined`, `In Review`, `Awaiting User` (KYB resub), `Resubmitted`, `Abandoned`, `Expired`, `Kyc Expired`. |

\## 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"
}'
\```

Always pass `vendor_data` — it is the linking key that binds the session to the persistent [User entity](/entities/users/overview). Without it the session is orphaned.

\## Receive the decision

Webhook (recommended) — register a destination with `webhook_version: "v3"` subscribed to `status.updated` and `data.updated`. Verify the `X-Signature-V2` header (HMAC-SHA256 of canonical JSON).

Polling fallback —
\```bash
curl https://verification.didit.me/v3/session/$SESSION_ID/decision/ \
-H "x-api-key: $DIDIT_API_KEY"
\```

The V3 decision returns plural arrays for every feature: `id_verifications[]`, `liveness_checks[]`, `face_matches[]`, `aml_screenings[]`, `nfc_verifications[]`, `proof_of_address_checks[]`, etc. Never assume V2 singular fields.

\## Failure modes

\- Missing API key → `403 {"detail": "You do not have permission to perform this action."}`. Wrong, revoked or expired key → `401`.
\- Invalid `workflow_id` → `400`.
\- User abandons the flow → status becomes `Abandoned`.
\- Workflow asks for resubmit → status `Resubmitted`, payload includes `resubmit_info`; re-deliver the same `url`.

\## Sources of truth

\- /sessions-api/create-session — request body schema
\- /sessions-api/retrieve-session — V3 decision schema
\- /integration/verification-statuses — literal status strings
\- /integration/webhooks — signature verification, retries
\- /reference/data-models — per-feature decision shape
\- /integration/integration-prompt — canonical end-to-end prompt````

\</pre>



      
      

Einfügen in

Dieser Leitfaden erklärt, was ein typischer Endbenutzer während einer Sitzung zur **Ausweisprüfung + Liveness-Erkennung** erlebt, und hebt die UX-Optimierungen hervor, die für hohe Abschlussraten sorgen.Diese Lektion der Didit Academy begleitet den gehosteten Ablauf genau so, wie ein Benutzer ihn sieht: der erste Bildschirm, die Dokumentenerfassung, das Liveness-Selfie und jeder Ergebnisbildschirm von genehmigt bis abgelehnt.[Was Ihre Benutzer tatsächlich sehen — Didit Academy](https://www.youtube.com/embed/LzGe-dMWjUw?rel=0\&playsinline=1)## Ablaufübersicht![Didit-Benutzerreise zur Identitätsverifizierung vom Startbildschirm über die Ausweis- und Selfie-Erfassung bis zum Ergebnis](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/user-verification-flow.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=cc77846e25a476c7e91281295f079e80)**1. Startbildschirm**Der Benutzer gelangt auf einen übersichtlichen, mit Ihrem Branding versehenen Bildschirm, der Erwartungen weckt (z. B. „Sie benötigen Ihren Ausweis und Ihr Gesicht“). Dies verringert Abbrüche, indem Unsicherheiten beseitigt werden.**2. Länder- und Dokumentauswahl**Der Benutzer wählt sein Land und die Dokumentenart (Reisepass, Personalausweis usw.) aus.> [!NOTE]
>
> Wenn Ihr Workflow für eine **einzelne Dokumentenart** konfiguriert ist, wird dieser Bildschirm **automatisch übersprungen** – und der Benutzer gelangt direkt zur Erfassung.**3. Ausweiserfassung mit intelligenten Wiederholungsversuchen**Der Benutzer fotografiert die Vorderseite seines Dokuments.
**Qualitätsprüfung auf dem Gerät** – Vor dem Absenden prüft das SDK auf Blendeffekte, Unschärfe und abgeschnittene Ränder. Wird ein Problem erkannt, wird der Benutzer aufgefordert, die Aufnahme zu wiederholen.**Backend-Validierung mit angeleitetem Wiederholungsversuch** – Nach dem Absenden:- **Bestanden** → Weiterleitung zur Liveness-Erkennung
- **Fehlgeschlagen** → Der Benutzer sieht konkrete Anweisungen (z. B. „Dokument abgelaufen“, „MRZ nicht lesbar – Aufnahme bei besserem Licht wiederholen“) anstelle eines generischen FehlersDiese Self-Service-Wiederholungsschleife erhöht die Durchlaufquote erheblich. Die vollständige Liste der Validierungsergebnisse finden Sie unter [Warnungen zur Ausweisverifizierung](https://docs.didit.me/de/core-technology/id-verification/warnings-id-verification.md).**4. Liveness + Gesichtsabgleich**Eine Selfie-Liveness-Prüfung stellt sicher, dass der Benutzer physisch anwesend ist, und verhindert Replay-/Deepfake-Angriffe. Wenn der Benutzer nicht rechtzeitig reagiert, unternimmt das System **automatisch genau einen Wiederholungsversuch**, anstatt sofort fehlzuschlagen.**5. Endergebnis**Nachdem alle Prüfungen abgeschlossen sind, sieht der Benutzer eines von drei Ergebnissen:| Ergebnis | Beschreibung |
| - | - |
| **Genehmigt** | Alle Prüfungen bestanden. Daten wurden extrahiert und sind per API/Webhook verfügbar. |
| **Abgelehnt** | Das System hat festgestellt, dass die Verifizierung nicht genehmigt werden kann. |
| **In Prüfung** | Automatische Prüfungen waren nicht eindeutig – erfordert eine manuelle Prüfung. |Ihr Workflow bestimmt, welche weiteren Schritte der Benutzer sieht – und in welcher Reihenfolge.
Zum Beispiel:- [Telefonverifizierung](https://docs.didit.me/de/core-technology/phone-verification/overview.md) und [E-Mail-Verifizierung](https://docs.didit.me/de/core-technology/email-verification/overview.md)
- [Fragebögen](https://docs.didit.me/de/core-technology/questionnaires/overview.md)
- [Adressnachweis](https://docs.didit.me/de/core-technology/proof-of-address/overview.md)
- [Biometrische Einwilligung](https://docs.didit.me/de/getting-started/biometric-consent.md)
- [Dokumentensignatur](https://docs.didit.me/de/core-technology/electronic-signature/overview.md)Durch die Kombination aus intelligenter UX, schrittweiser Validierung, handlungsrelevantem Feedback und reibungslosen Wiederholungsversuchen bringt die Didit-Verifizierungsreise legitime Benutzer voran und schließt betrügerische Akteure aus – ganz ohne manuelles Eingreifen.


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