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

# Verifikasi Identitas Cepat: Panduan Quick Start

> Buat alur KYC di Didit dalam hitungan menit: buat akun, atur alur kerja no-code, mulai sesi, terima webhook. Kredit gratis $10/bulan.

Panduan memulai cepat ini membawa Anda dari akun Didit baru hingga verifikasi identitas aktif: buat akun Anda, susun alur kerja verifikasi dari templat, konfigurasikan webhook dan salin kunci API Anda, mulai sesi verifikasi dengan satu panggilan API, dan terima keputusan secara waktu nyata.Halaman ini melengkapi pelajaran Academy di bawah ini: rekaman layar berdurasi 19 menit yang membangun alur kerja verifikasi di konsol yang sebenarnya, mulai dari templat hingga alur yang dipublikasikan, termasuk aturan, percabangan, harga, dan tautan yang dapat dibagikan.[Build Your First Verification Flow — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?rel=0\&playsinline=1)

Prompt Mulai Cepat
        Salin prompt ke papan klip



      
      

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



      
      

Tempel ke

**1. Buat akun Didit Anda**1) Buka [business.didit.me](https://business.didit.me)
2) Daftar menggunakan SSO atau email dan kata sandi
3) Buat **Organisasi** Anda — di sinilah tim Anda mengelola alur kerja, kunci API, dan aktivitas verifikasi**2. Susun alur kerja verifikasi**Buka **Alur kerja** di bilah sisi dan klik **Create New**. Pilih jenis alur kerja:| Jenis | Deskripsi |
| - | - |
| **Simple Workflow** | Langkah-langkah berjalan dalam urutan yang ditentukan — ideal untuk alur onboarding standar |
| **Node-Based Workflow** | Logika percabangan yang fleksibel — buat jalur bersyarat berdasarkan hasil verifikasi |Pilih templat untuk memulai:| Templat | Kasus penggunaan |
| - | - |
| **KYC** | Onboarding pengguna standar |
| **Verifikasi Usia Adaptif** | Pemeriksaan usia lewat swafoto dengan cadangan ID |
| **Autentikasi Biometrik** | Autentikasi ulang swafoto tanpa kata sandi |
| **Verifikasi Alamat** | Alur bukti alamat |Sesuaikan dengan mengaktifkan atau menonaktifkan blok: Deteksi Liveness, Pencocokan Wajah, AML, NFC, Telepon, Email, dan lainnya.Klip di bawah ini melanjutkan pelajaran Academy pada menit 2:50, tempat alur kerja baru dibuat dari templat dan dikonfigurasi node demi node.[Creating a new workflow from a template — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?start=170\&rel=0\&playsinline=1)**3. Konfigurasikan webhook dan salin kunci API**Buka **Pengembang** di bilah sisi, lalu **Kunci API** dan **Webhook**:1. Tambahkan **URL Webhook** Anda — Didit mengirimkan pembaruan status ke sini
2. Salin **Kunci API** Anda — simpan hanya di sisi server, jangan pernah mengeksposnya di kode frontend
3. Simpan **rahasia penandatanganan** tujuan sebagai `DIDIT_WEBHOOK_SECRET` di file `.env` Anda — ini diperlukan untuk memverifikasi HMAC `X-Signature-V2` pada webhook yang masuk> [!TIP]
>
> Anda dapat **menguji webhook secara langsung** dari halaman ini dengan data dan status yang berbeda — tidak perlu menjalankan verifikasi penuh. Ini memungkinkan Anda memvalidasi bahwa integrasi Anda berfungsi dengan benar sebelum mengaktifkannya di lingkungan produksi.**4. Mulai sesi verifikasi****Opsi A — Sesi yang di-hosting** (disarankan)Metode integrasi pilihan kami. Didit melakukan pengujian A/B pada alur yang di-hosting secara berkelanjutan, sehingga tingkat penyelesaian, kecepatan, dan ketahanan terhadap penipuan terus meningkat tanpa Anda perlu merilis UI apa pun.Di Konsol, klik **"+"** → pilih alur kerja → buat tautan atau kode QR. Atau buat sesi secara terprogram:```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]
>
> Temukan `workflow_id` Anda di bawah **Alur kerja** di bilah sisi.Dalam pelajaran integrasi Academy, ini ada pada menit 3:36: panggilan untuk membuat sesi dengan satu kolom wajibnya, lalu data vendor dan URL callback.[Create session: the one required field — Didit Academy](https://www.youtube.com/embed/fX03-WEu_EI?start=216\&rel=0\&playsinline=1)**Opsi B — API mandiri** (tingkat lanjut)Panggil endpoint secara langsung dari backend Anda — tidak memerlukan sesi. Paling cocok untuk alur server-to-server atau alur khusus:| Endpoint | Tujuan |
| - | - |
| `POST /v3/id-verification/` | Pemeriksaan dokumen |
| `POST /v3/face-match/` | Swafoto vs ID |
| `POST /v3/aml/` | Sanksi & PEP |
| `POST /v3/passive-liveness/` | Deteksi deepfake |Lihat daftar lengkapnya di [Referensi API](https://docs.didit.me/id/standalone-apis/id-verification.md).**5. Terima hasil secara waktu nyata**Didit mengirimkan event webhook ke endpoint Anda — tidak perlu polling.| Event | Pemicu |
| - | - |
| `status.updated` | Status sesi pengguna atau sesi bisnis berubah |
| `data.updated` | Data verifikasi sesi atau sesi bisnis berubah |
| `user.status.updated` | Status pengguna vendor berubah |
| `user.data.updated` | Profil pengguna vendor atau data agregat berubah |
| `business.status.updated` | Status bisnis vendor berubah |
| `business.data.updated` | Profil bisnis vendor atau data agregat berubah |
| `activity.created` | Event aktivitas dicatat |
| `transaction.created` | Transaksi dibuat |
| `transaction.status.updated` | Status transaksi berubah |Lihat [Webhook](https://docs.didit.me/id/integration/webhooks.md) untuk format payload dan verifikasi tanda tangan.**6. Kelola dan pantau**Gunakan Konsol untuk:- Melihat progres sesi secara waktu nyata
- Mengunduh laporan PDF/CSV untuk kepatuhan
- Memasukkan ID atau wajah yang mencurigakan ke daftar blokir
- Memperbarui atau menolak sesi secara manualPelajaran Academy tentang membaca hasil memandu pemeriksaan sesi nyata langkah demi langkah: peringatan, skor, log event, pengiriman webhook, dan ekspor PDF yang akan diminta oleh tim kepatuhan Anda.[How to Read a Verification Result — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?rel=0\&playsinline=1)## Butuh bantuan?> [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.