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

# Riwayat KYC Pengguna: Sesi & Verifikasi Ulang

> Ambil semua sesi verifikasi Didit yang terkait entitas User, periksa hasil per fitur, picu verifikasi ulang, dan ekspor laporan kepatuhan.



Prompt Riwayat KYC
        Salin prompt ke papan klip



      
      

\<pre>

\````# Goal — read a user's full KYC history and trigger re-verification

Every KYC session a user has ever run stays permanently linked to the User entity via `vendor_data`. The session list endpoint is the entry point; the decision endpoint is the detail view.

\## List every session for a user

\```bash
curl -G https://verification.didit.me/v3/sessions/ \
-H "x-api-key: $DIDIT_API_KEY" \
\--data-urlencode "vendor_data=user-42" \
\--data-urlencode "page_size=50"
\```

Response covers every status (approved, declined, in review, abandoned, expired). Paginate with the `next` cursor / `page` param until empty.

\## Inspect a single session decision

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

V3 returns plural arrays — always iterate them:

\- `id_verifications[]`
\- `liveness_checks[]`
\- `face_matches[]`
\- `aml_screenings[]`
\- `nfc_verifications[]`
\- `proof_of_address_checks[]`

Never assume V2 singular fields.

\## Trigger re-verification

Annual re-KYC, document expiry, trigger-based re-checks — same pattern: create a new session against the same `vendor_data`. The new session attaches to the existing User entity and updates the `features` map on completion.

\```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": "wf_reverification", "vendor_data": "user-42"}'
\```

\## Fast path — fully verified right now?

The User entity carries a `features` map summarising the **latest** state of each feature across all sessions:

\```bash
curl https://verification.didit.me/v3/users/user-42/ \
-H "x-api-key: $DIDIT_API_KEY"
\# data.features = { id_verification: "APPROVED", liveness: "APPROVED", aml: "IN_REVIEW", ... }
\```

Use `features` for "is the user verified right now?" without iterating every session.

\## Generate a PDF for any session

\```bash
curl https://verification.didit.me/v3/session/$SESSION_ID/generate-pdf/ \
-H "x-api-key: $DIDIT_API_KEY" \
-o session-report.pdf
\```

\## Generate the full user history PDF

One file with a cover page plus the report of every reportable session (`Approved`, `Declined`, `In Review`, `Kyc Expired`) of the user, capped at the 20 most recent. Same document as Console → User detail → Actions → Download PDF. Synchronous render: use a 120s read timeout.

\```bash
curl --fail https://verification.didit.me/v3/users/user-42/generate-pdf/ \
-H "x-api-key: $DIDIT_API_KEY" \
-o user-history.pdf
\```

404 = no such user in this application; 403 = user has no reportable session yet.

\## Resubmit vs new session

\| Scenario | Use |
\|---|---|
\| Declined for fixable reason (blurry ID, bad lighting) | Resubmit the existing session (re-deliver `url`); the workflow advances through resubmission |
\| Annual / trigger-based re-KYC | Create a brand new session via `POST /v3/session/` |
\| Transaction-rule triggered remediation | The transaction creates a remediation session automatically (`Awaiting User` status) |

\## Share a session with a partner (Reusable KYC)

\```bash
\# Issue a shareable token
curl -X POST https://verification.didit.me/v3/session/$SESSION_ID/share/ \
-H "x-api-key: $DIDIT_API_KEY"

\# Receiver imports the shared session
curl -X POST https://verification.didit.me/v3/session/import-shared/ \
-H "x-api-key: $RECEIVER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"share_token": "..."}'
\```

\## Failure modes

\- `404` on the user — wrong `vendor_data` casing or no sessions yet.
\- Empty `results[]` — no sessions for this `vendor_data` in this application.
\- Stale signed image URLs — re-fetch the decision.
\- Sharing rejected — receiving application must have Reusable KYC enabled.

\## Sources of truth

\- /sessions-api/retrieve-session — V3 decision schema
\- /management-api/users/generate-pdf — full user history PDF
\- /reference/data-models — per-feature plural-array contract
\- /core-technology/reusable-kyc/overview — share / import pattern
\- /entities/users/data-model — features map computation
\- /integration/integration-prompt — canonical end-to-end prompt````

\</pre>



      
      

Tempel ke

Setiap sesi Verifikasi Pengguna (KYC) yang pernah dijalankan pengguna tetap terhubung secara permanen dengan entitas User pengguna tersebut. Anda dapat mengambil riwayat lengkap, memeriksa hasil setiap sesi, memicu verifikasi ulang, dan mengekspor laporan kepatuhan.## Mencantumkan semua sesi untuk seorang penggunaFilter daftar Sesi menurut `vendor_data`:```bash theme={null}
curl -G https://verification.didit.me/v3/sessions/ \
  -H "x-api-key: YOUR_API_KEY" \
  --data-urlencode "vendor_data=user-42" \
  --data-urlencode "page_size=50"
```Respons menyertakan setiap sesi (apa pun statusnya): disetujui, ditolak, dalam peninjauan, ditinggalkan, atau kedaluwarsa.## Memahami agregat fiturPeta `features` pada entitas User mencerminkan status **terbaru** dari setiap fitur di seluruh sesi:```json theme={null}
"features": {
  "id_verification": "APPROVED",
  "liveness": "APPROVED",
  "face_match": "APPROVED",
  "aml": "IN_REVIEW"
}
```Gunakan ini sebagai jalur cepat untuk menjawab pertanyaan "apakah pengguna sudah terverifikasi saat ini?". Untuk catatan historis, yaitu semua sesi, semua fitur, dan semua hasil, tampilkan daftar sesi lalu periksa setiap keputusan.## Memeriksa satu sesi```bash theme={null}
curl https://verification.didit.me/v3/session/{session_id}/decision/ \
  -H "x-api-key: YOUR_API_KEY"
```Keputusan tersebut mencakup:- Hasil per fitur (ID, liveness, pencocokan wajah, AML, POA, NFC, dll.)
- Data dan gambar dokumen yang diekstrak (URL bertanda tangan)
- Temuan AML beserta skor kecocokan dan skor risiko
- Analisis Perangkat & IP dan konteks perangkat
- Catatan peninjau dan tindakan manualLihat [ambil sesi](https://docs.didit.me/id/sessions-api/retrieve-session.md) untuk skema lengkapnya.## Memicu verifikasi ulangJika Anda perlu meminta pengguna untuk memverifikasi ulang (misalnya KYC ulang tahunan, dokumen yang kedaluwarsa, atau pemeriksaan ulang berbasis pemicu):```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": "wf_reverification",
    "vendor_data": "user-42"
  }'
```Sesi baru akan terhubung dengan entitas User yang sama. Setelah selesai, peta `features` pada entitas akan diperbarui dengan hasil yang baru.## Kirim ulang atau sesi baru| Skenario | Gunakan |
| - | - |
| Sesi pengguna ditolak karena masalah yang dapat diperbaiki (ID buram, pencahayaan buruk) | [Kirim ulang](https://docs.didit.me/id/console/manual-review.md): sesi yang sama, unggahan baru |
| Verifikasi ulang penuh atau KYC ulang berkala | Buat sesi baru |
| Remediasi yang dipicu oleh aturan transaksi | Transaksi otomatis membuat sesi remediasi (status `AWAITING_USER`) |## Mengekspor laporan kepatuhanUntuk audit, SAR, atau permintaan regulator, buat PDF untuk sesi mana pun:```bash theme={null}
curl https://verification.didit.me/v3/session/{session_id}/generate-pdf/ \
  -H "x-api-key: YOUR_API_KEY" \
  -o session-report.pdf
```Untuk mencakup seluruh riwayat pengguna dalam satu berkas, unduh [PDF riwayat pengguna](https://docs.didit.me/id/management-api/users/generate-pdf.md): halaman sampul (ringkasan profil, status fitur, indeks sesi) diikuti laporan lengkap untuk setiap sesi yang dapat dilaporkan, dimulai dari sesi yang paling lama, dengan batas 20 sesi terbaru.```bash theme={null}
curl --fail https://verification.didit.me/v3/users/user-42/generate-pdf/ \
  -H "x-api-key: YOUR_API_KEY" \
  -o user-history.pdf
```Dokumen ini sama dengan yang dihasilkan konsol dari *Users → \[user] → Actions → Download PDF*. Untuk ekspor CSV massal dari banyak pengguna, gunakan ekspor tingkat aplikasi di *Review & Operations → Export PDF/CSV*.## Membagikan sesi kepada pihak ketigaJika Anda perlu membagikan verifikasi pengguna kepada aplikasi mitra (misalnya skenario KYC yang dapat digunakan kembali), gunakan:- `POST /v3/session/{session_id}/share/`: membuat token yang dapat dibagikan.
- `POST /v3/session/import-shared/`: mengimpor sesi yang dibagikan di sisi penerima.Lihat [KYC yang dapat digunakan kembali](https://docs.didit.me/id/core-technology/reusable-kyc/overview.md) untuk pola lengkapnya.## Alur kerja berbasis riwayatGunakan riwayat sesi untuk mendukung keputusan kepatuhan yang lebih cerdas:- **Lewati langkah** jika pengguna sudah memiliki liveness yang disetujui dalam N hari terakhir.
- **Wajibkan pemeriksaan tambahan** jika sesi terbaru pengguna ditolak.
- **Tandai** ketika jumlah sesi pengguna meningkat secara tidak terduga.
- **Pantau** pemindaian ulang AML berkelanjutan melalui fitur [pemantauan berkelanjutan](https://docs.didit.me/id/core-technology/aml-screening/continuous-monitoring-aml-screening.md).## Langkah selanjutnya> [card] [Model data](https://docs.didit.me/id/entities/users/data-model.md)
>
> Cara penghitungan peta fitur dan penghitung.> [card] [Ambil sesi](https://docs.didit.me/id/sessions-api/retrieve-session.md)
>
> Skema keputusan sesi lengkap.> [card] [KYC yang dapat digunakan kembali](https://docs.didit.me/id/core-technology/reusable-kyc/overview.md)
>
> Gunakan kembali data terverifikasi di berbagai aplikasi.


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