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

# 사용자 인증 여정: KYC 흐름 및 UX

> Didit의 엔드투엔드 인증 UX는 신분증 촬영, 생체 라이브니스 감지, 스마트 재시도, 실시간 피드백을 제공하여 업계 최고의 완료율을 실현합니다.



세션 라이프사이클 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<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>



      
      

붙여넣을 곳

이 가이드는 일반적인 최종 사용자가 **신분증 확인 + 라이브니스 테스트** 세션 동안 경험하는 내용을 설명하고, 높은 완료율을 이끄는 UX 최적화 요소를 소개합니다.이 Didit Academy 강의에서는 사용자가 보는 그대로의 호스팅 플로우를 따라갑니다: 첫 화면, 문서 촬영, 라이브니스 셀피, 그리고 승인됨부터 거부됨까지의 모든 결과 화면을 살펴봅니다.[사용자가 실제로 보게 되는 화면 — Didit Academy](https://www.youtube.com/embed/LzGe-dMWjUw?rel=0\&playsinline=1)## 플로우 개요![시작 화면부터 신분증 및 셀피 촬영을 거쳐 결과에 이르는 Didit 신원 인증 사용자 여정](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. 시작 화면**사용자는 안내 문구(예: "신분증과 본인 얼굴이 필요합니다")가 명확히 표시된 브랜드 맞춤형 시작 화면에 도달합니다. 이를 통해 불확실성을 없애고 이탈을 줄입니다.**2. 국가 및 문서 선택**사용자가 국가 및 문서 유형(여권, 신분증 등)을 선택합니다.> [!NOTE]
>
> 워크플로가 **단일 문서 유형**으로 구성되어 있는 경우, 이 화면은 **자동으로 건너뛰며** 사용자를 바로 촬영 단계로 안내합니다.**3. 스마트 재시도를 지원하는 신분증 촬영**사용자가 신분증 앞면을 촬영합니다.
**온디바이스 품질 검사** — 제출하기 전에 SDK가 빛 번짐, 흐림, 가장자리 잘림 등을 검사합니다. 문제가 감지되면 사용자에게 재촬영을 안내합니다.**안내형 재시도를 통한 백엔드 검증** — 제출이 완료되면:- **통과** → 라이브니스 단계로 진행
- **실패** → 일반적인 오류 대신 구체적인 안내(예: "문서 만료됨", "MRZ 판독 불가 — 더 밝은 조명에서 재촬영하십시오")가 사용자에게 표시됩니다이러한 셀프서비스 재시도 루프는 통과율을 크게 높여줍니다. 유효성 검사 결과의 전체 목록은 [신분증 인증 경고](https://docs.didit.me/ko/core-technology/id-verification/warnings-id-verification.md)에서 확인하세요.**4. 라이브니스 + 얼굴 대조**셀피 라이브니스 검사를 통해 사용자가 실제로 존재하는지 확인하고 재생 공격 및 딥페이크 공격을 방지합니다. 사용자가 제시간에 응답하지 않으면 즉시 실패 처리하는 대신 **1회 자동으로 재시도**합니다.**5. 최종 결과**모든 검사가 완료되면 사용자는 다음 세 가지 결과 중 하나를 보게 됩니다:| 결과 | 설명 |
| - | - |
| **승인됨** | 모든 검사를 통과했습니다. 데이터가 추출되어 API/webhook을 통해 제공됩니다. |
| **거부됨** | 시스템에서 해당 인증을 승인할 수 없다고 판단했습니다. |
| **검토 중** | 자동화된 검사 결과가 불확실하여 수동 검토가 필요합니다. |설정한 순서에 따라 사용자가 보게 될 추가 단계는 워크플로에서 결정됩니다.
예시:- [전화번호 인증](https://docs.didit.me/ko/core-technology/phone-verification/overview.md) 및 [이메일 인증](https://docs.didit.me/ko/core-technology/email-verification/overview.md)
- [설문지](https://docs.didit.me/ko/core-technology/questionnaires/overview.md)
- [주소 증명](https://docs.didit.me/ko/core-technology/proof-of-address/overview.md)
- [생체 인식 동의](https://docs.didit.me/ko/getting-started/biometric-consent.md)
- [문서 서명](https://docs.didit.me/ko/core-technology/electronic-signature/overview.md)스마트한 UX, 점진적 검증, 실행 가능한 피드백, 유연한 재시도 메커니즘을 결합하여, Didit 인증 여정은 수동 개입 없이도 정당한 사용자의 온보딩은 원활하게 돕고 악의적인 사용자는 확실하게 차단합니다.


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