> ## 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 플로우 구축하기

> Didit으로 몇 분 만에 첫 KYC 플로우를 구축하세요. 계정을 만들고 노코드 워크플로를 구성해 세션을 시작하고 webhook을 수신할 수 있습니다. 매월 $10 무료 크레딧 제공.

이 퀵 스타트 가이드는 Didit 계정 생성부터 프로덕션 환경에서 신원 인증을 실행하기까지의 과정을 안내합니다. 계정을 생성하고, 템플릿으로 인증 워크플로를 구축하며, webhook을 설정하고 API 키를 복사한 뒤, 단 한 번의 API 호출로 인증 세션을 시작하여 실시간으로 결정을 받아볼 수 있습니다.이 페이지는 아래의 Academy 강의와 함께 제공됩니다. 실제 콘솔에서 템플릿 선택부터 규칙, 분기, 요금, 공유 가능한 링크를 포함하여 플로우를 게시하기까지의 과정을 다룬 19분 분량의 화면 녹화 영상입니다.[첫 번째 인증 플로우 구축하기 — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?rel=0\&playsinline=1)

퀵 스타트 프롬프트
        프롬프트를 클립보드에 복사



      
      

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



      
      

붙여넣을 곳

**1. Didit 계정 생성하기**1) [business.didit.me](https://business.didit.me)로 이동합니다.
2) SSO 또는 이메일과 비밀번호로 가입합니다.
3) **조직**을 생성합니다. 이곳에서 팀의 워크플로, API 키 및 인증 활동을 관리합니다.**2. 인증 워크플로 구축하기**사이드바에서 **워크플로**로 이동한 후 **Create New**를 클릭합니다. 워크플로 유형을 선택합니다.| 유형 | 설명 |
| - | - |
| **Simple Workflow** | 단계가 정해진 순서대로 실행됩니다. 표준 온보딩 플로우에 적합합니다. |
| **Node-Based Workflow** | 유연한 분기 로직을 제공합니다. 인증 결과에 따라 조건부 경로를 구성할 수 있습니다. |시작할 템플릿을 선택합니다.| 템플릿 | 사용 사례 |
| - | - |
| **KYC** | 표준 사용자 온보딩 |
| **적응형 연령 확인** | 신분증 대체 옵션이 포함된 셀피 연령 확인 |
| **생체 인증** | 비밀번호가 필요 없는 셀피 재인증 |
| **주소 확인** | 주소 증명 플로우 |라이브니스 감지, 얼굴 대조, AML 스크리닝, NFC 인증, 전화번호 인증, 이메일 인증 등의 블록을 토글하여 맞춤 설정할 수 있습니다.아래 영상은 템플릿에서 새 워크플로를 생성하고 노드별로 구성하는 과정을 다룬 Academy 강의의 2:50 지점부터 시작됩니다.[템플릿으로 새 워크플로 생성하기 — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?start=170\&rel=0\&playsinline=1)**3. webhook 설정 및 API 키 복사**사이드바에서 **개발자**로 이동한 후 **API 키** 및 **webhook**을 선택합니다.1. **webhook URL**을 추가합니다. Didit이 이곳으로 상태 업데이트를 전송합니다.
2. **API 키**를 복사합니다. 서버 측에만 보관하고 프론트엔드 코드에 절대 노출하지 마세요.
3. 대상의 **서명 비밀**을 `.env`에 `DIDIT_WEBHOOK_SECRET`으로 저장합니다. 수신되는 webhook의 `X-Signature-V2` HMAC을 검증하는 데 필요합니다.> [!TIP]
>
> 전체 인증을 실행할 필요 없이 이 페이지에서 다양한 데이터와 상태로 **webhook을 직접 테스트**할 수 있습니다. 이를 통해 프로덕션 환경에 적용하기 전에 연동이 올바르게 작동하는지 확인할 수 있습니다.**4. 인증 세션 시작하기****옵션 A — 호스팅 세션**(권장)Didit이 권장하는 연동 방식입니다. Didit은 호스팅 플로우에 대해 지속적인 A/B 테스트를 수행하므로, 별도의 UI 작업 없이도 완료율, 속도 및 사기 방지 성능이 지속적으로 향상됩니다.콘솔에서 \*\*"+"\*\*를 클릭하고 워크플로를 선택한 뒤 링크 또는 QR 코드를 생성합니다. 또는 프로그래밍 방식으로 세션을 생성할 수도 있습니다.```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]
>
> 사이드바의 **워크플로**에서 `workflow_id`를 확인할 수 있습니다.연동 Academy 강의의 3:36 지점에서는 세션 생성 호출 시 필요한 유일한 필수 필드와 공급업체 데이터, 콜백 URL을 다룹니다.[세션 생성: 유일한 필수 필드 — Didit Academy](https://www.youtube.com/embed/fX03-WEu_EI?start=216\&rel=0\&playsinline=1)**옵션 B — 독립형 API**(고급)세션 없이 백엔드에서 endpoint를 직접 호출합니다. 서버 간 연동이나 커스텀 플로우에 가장 적합합니다.| Endpoint | 목적 |
| - | - |
| `POST /v3/id-verification/` | 문서 확인 |
| `POST /v3/face-match/` | 셀피 및 신분증 대조 |
| `POST /v3/aml/` | 제재 및 PEP |
| `POST /v3/passive-liveness/` | 딥페이크 감지 |전체 목록은 [API 레퍼런스](https://docs.didit.me/ko/standalone-apis/id-verification.md)를 참조하세요.**5. 실시간 결과 수신**Didit은 폴링 없이 endpoint로 webhook 이벤트를 전송합니다.| 이벤트 | 트리거 |
| - | - |
| `status.updated` | 사용자 세션 또는 기업 세션 상태 변경 |
| `data.updated` | 세션 또는 기업 세션 인증 데이터 변경 |
| `user.status.updated` | 공급업체 사용자 상태 변경 |
| `user.data.updated` | 공급업체 사용자 프로필 또는 집계 데이터 변경 |
| `business.status.updated` | 공급업체 기업 상태 변경 |
| `business.data.updated` | 공급업체 기업 프로필 또는 집계 데이터 변경 |
| `activity.created` | 활동 이벤트 기록됨 |
| `transaction.created` | 거래 생성됨 |
| `transaction.status.updated` | 거래 상태 변경 |payload 형식 및 서명 검증에 대한 자세한 내용은 [webhook](https://docs.didit.me/ko/integration/webhooks.md)을 참조하세요.**6. 관리 및 모니터링**콘솔을 사용하여 다음 작업을 수행할 수 있습니다.- 세션 진행 상황을 실시간으로 확인
- 컴플라이언스를 위한 PDF/CSV 보고서 다운로드
- 의심스러운 신분증 또는 얼굴을 차단 목록에 등록
- 세션을 수동으로 업데이트하거나 거부결과 확인에 대한 Academy 강의에서는 경고, 점수, 이벤트 로그, webhook 전송, 컴플라이언스 팀에서 요청할 PDF 내보내기 등 실제 세션을 항목별로 살펴봅니다.[인증 결과 확인 방법 — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?rel=0\&playsinline=1)## 도움이 필요하신가요?> [card] [이메일](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.