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

# Hapus Sesi API: Hak untuk Dilupakan GDPR

> Hapus sesi KYC/KYB dan seluruh datanya di Didit. Embedding wajah ikut terhapus secara default; opsi templat biometrik tanpa gambar tersedia.



Delete Session Prompt
        Salin prompt ke papan klip



      
      

\<pre>

\`Delete a single Didit verification session and all of its data, and control what happens to the face biometric data.

Endpoint:
DELETE https://verification.didit.me/v3/session/{session_id}/delete/

Authentication:
Use the x-api-key header with your Didit API key. Privilege: delete:sessions.

Path parameter:
\- session_id (UUID) — works for both User Verification (KYC) and Business Verification (KYB) sessions. Didit resolves the id against both session types.

Optional JSON body (send Content-Type: application/json; omit the body entirely for the default behavior):
\- retain_face_embeddings (boolean | null) — override the application's face_retention_policy for this deletion. true keeps an image-free biometric template anchored to the session's User; false deletes the face embedding with the session; omit or null to follow the application policy.
\- face_retention_days (integer 1-3650) — finite retention duration for the template. Required when retaining unless the application already sets face_retention_days.
\- face_retention_deadline (ISO 8601 datetime, future) — optional hard expiry. The template expires at the earliest of face_retention_days, the application's data-retention window, and this deadline.
\- deletion_instruction ("operational_session_delete" default | "privacy_erasure") — privacy_erasure purges every retained biometric template for the session's User and never retains a new one, regardless of the application policy. Combining privacy_erasure with retain_face_embeddings: true is rejected with 400.
\- instruction_id (string, max 255) — your own durable reference for this deletion instruction (for example your erasure-ticket id). Stored on the audit trail and on any retained template.

curl examples:
Default (follow the application policy; delete_with_session unless you opted in):
curl -X DELETE https://verification.didit.me/v3/session/<SESSION_ID>/delete/ \
-H "x-api-key: <API_KEY>"

Delete the session but keep an image-free biometric template for 365 days:
curl -X DELETE https://verification.didit.me/v3/session/<SESSION_ID>/delete/ \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"retain_face_embeddings": true, "face_retention_days": 365}'

Right-to-erasure request (delete the session AND purge every retained template for that person):
curl -X DELETE https://verification.didit.me/v3/session/<SESSION_ID>/delete/ \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"deletion_instruction": "privacy_erasure", "instruction_id": "dsar-2026-0142"}'

Response: 200 OK with a JSON body once the deletion has completed (this endpoint no longer returns 204):
\{
"session_id": "<uuid>",
"session_number": 1024,
"face_retention_outcome": "deleted" | "retained_with_user" | "none" | "ineligible_no_vendor_user",
"biometric_template_uuid": "<uuid>" | null,
"biometric_template_expires_at": "<ISO 8601 datetime>" | null,
"deleted_child_verifications": 0
}
\- deleted: the session and its face embedding are deleted (default behavior).
\- retained_with_user: the session is deleted; an image-free biometric template with the returned biometric_template_uuid stays anchored to the User until biometric_template_expires_at, User deletion, privacy erasure, or explicit purge. Manage it with GET/DELETE /v3/biometric-templates/{uuid}/.
\- none: the session had no face embedding (for example a KYB session or a document-only KYC session).
\- ineligible_no_vendor_user: retention was requested but the session has no linked User (no vendor_data), so nothing can anchor the template. The session and its embedding are deleted.
\- biometric_template_expires_at: when the retained template is deleted; null when no template is retained.
\- deleted_child_verifications: for a KYB session, how many verifications it created (its key people's KYC sessions and its corporate owners' KYB sessions, recursively) were deleted with it. Always 0 for a KYC session.

Behavior:
\- The session and every verification attempt it holds are deleted, including results a resubmission replaced: the decision, the extracted data, the associated feature records (ID verification, registry checks, documents, AML, IP, etc.), its reviews and activity log, and all stored files (document images, videos, portraits, selfies, POA documents, extra uploads, and E-signature documents, signed PDFs, evidence PDFs and signature images).
\- A KYB session is deleted together with the verifications it created for its key people and corporate owners. A verification it only links to (for example a reused, already approved KYC) is not deleted.
\- The session disappears immediately from /v3/sessions/ and /v3/session/{id}/decision/, and media URLs issued before the call stop resolving.
\- Webhook deliveries still queued for the session, and their retries, are dropped. Webhooks already delivered are not affected.
\- Ongoing AML monitoring and KYB registry monitoring started by the deleted verifications stop.
\- A retained biometric template never contains the face image, liveness video, document data, extracted identity fields, the decision, or the deleted session's id. It is biometric data, tenant-scoped, used only for your duplicate-face, multi-account, biometric-authentication, and list matching, and it is never used for model training or cross-customer fraud processing.
\- Share tokens issued for the session are NOT revoked, but there is nothing left for them to import: an import with one returns 400 {"share_token": ["Original session does not exist."]}.
\- Blocklist entries created from the session are NOT removed; manage those with the Lists endpoints.
\- Credits already consumed by the verification are NOT refunded.
\- The parent User or Business entity is NOT deleted; use POST /v3/users/delete/ or POST /v3/businesses/delete/ for those. Deleting the User also purges its retained biometric templates. If the User's profile portrait came from this session, the portrait is removed.
\- No webhook fires for the deletion itself.

Idempotency:
Idempotent in effect: the second call to the same session returns 404 because the session no longer exists. Deletion is permanent and cannot be undone.

Failure modes:
\- 400: {"retain_face_embeddings": ["Privacy erasure cannot retain biometric templates."]} or {"detail": "A finite biometric-template retention duration is required."} (retention requested without face_retention_days on the request or the application). Nothing is deleted.
\- 403: {"detail": "You do not have permission to perform this action."} when the key lacks delete:sessions.
\- 404: {"detail": "Not found."} when the session does not exist (or was already deleted).
\- 409: {"detail": "...", "code": "in_filed_report", "reports": [{"uuid": "...", "report_number": "SAR-0001", "report_type": "SAR", "case_uuid": "..."}]} when the session is part of a finalized regulatory report. Nothing is deleted. Delete the reports, then repeat the request.
\- 503: {"detail": "The session could not be deleted because a storage service or a monitoring provider is unavailable. The session is still in place; repeat the request to finish deleting it."} or {"detail": "The biometric-template operation could not finish because an external store is unavailable. The operation is retryable."} The session is still in place; repeat the same request until it returns 200. Some of its stored files or its face embedding may already be deleted. Retries converge on a single template.

Bulk delete:
For many KYC sessions at once, use POST /v3/sessions/delete/ with body {"session_numbers": ["1001", "1002"]} or {"delete_all": true}; it accepts the same retention and instruction fields. Up to 20 matching sessions return 200 with a per-session outcome; more return 202 with a job to poll at GET /v3/sessions/delete/{job_id}/.

Migration note:
Until this release the endpoint returned 204 No Content. It now returns 200 OK with the JSON body above. Update clients that assert on 204. The default deletion behavior is unchanged: existing applications stay on delete_with_session until you explicitly change the policy.

When to call:
\- Customer requests data erasure (GDPR Article 17): use deletion_instruction: "privacy_erasure".
\- Operational clean-up after approval while keeping duplicate detection: retain_face_embeddings: true with a finite face_retention_days.
\- Cleaning up test sessions from a staging application.
\- After exporting a decision PDF for long-term archival outside Didit.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Tempel ke

## Dukungan KYC dan KYBEndpoint ini berlaku untuk sesi **Verifikasi Pengguna (KYC)** maupun **Verifikasi Bisnis (KYB)**. `session_id` dicari pada kedua jenis sesi tersebut, dan perilaku penghapusannya sama untuk keduanya. Retensi templat biometrik hanya berlaku untuk sesi KYC, karena hanya sesi KYC yang memiliki embedding wajah.## Perilaku- Sesi dihapus beserta setiap percobaan verifikasi yang dimilikinya, termasuk hasil yang digantikan oleh pengajuan ulang: keputusannya, data yang diekstrak, catatan fitur terkait (verifikasi ID, pemeriksaan registri, dokumen, AML, analisis IP, dan seterusnya), catatan peninjauannya, log aktivitasnya, serta semua file yang tersimpan.
- Menghapus sesi **Verifikasi Bisnis (KYB)** juga menghapus verifikasi yang dibuat untuk pihak kunci (KYC) dan pemilik perusahaannya (KYB), secara rekursif. Respons melaporkan jumlahnya di `deleted_child_verifications`. Verifikasi yang hanya ditautkan, misalnya KYC yang sudah disetujui dan digunakan kembali, tidak dihapus.
- Data Tanda Tangan Elektronik ikut terhapus: dokumen yang akan ditandatangani beserta file Word aslinya, PDF yang sudah ditandatangani, PDF bukti, gambar tanda tangan, dan setiap nilai kolom. Jalur unduhnya mengembalikan `404`.
- Sesi langsung hilang dari respons daftar dan respons keputusan, dan URL media yang diterbitkan sebelum pemanggilan berhenti berfungsi.
- Pengiriman webhook yang masih antre untuk sesi tersebut, beserta percobaan ulangnya, dibatalkan.
- Pemantauan AML Berkelanjutan dan pemantauan registri KYB yang dimulai oleh verifikasi yang dihapus ikut berhenti.
- Penghapusan bersifat permanen dan tidak dapat dibatalkan. Tidak ada endpoint pemulihan, jadi ekspor apa pun yang Anda perlukan, misalnya PDF keputusan, sebelum memanggil endpoint ini.
- Respons berupa `200 OK`, dikirim setelah penghapusan selesai, dengan badan JSON yang melaporkan apa yang terjadi pada data biometrik wajah sesi tersebut. Lihat [Migrasi](#migrasi-dari-respons-204) jika klien Anda masih mengharapkan `204`.## Data dalam laporan regulasi yang sudah finalJika sesi menjadi bagian dari kasus dengan laporan regulasi yang sudah final, permintaan mengembalikan `409` dan tidak ada yang dihapus. Respons menggunakan `code: in_filed_report` dan menyebutkan setiap laporan:```json theme={null}
{
  "detail": "This session is part of a finalized regulatory report, so it cannot be deleted.",
  "code": "in_filed_report",
  "reports": [
    {
      "uuid": "5ec00000-0000-4000-8000-000000000007",
      "report_number": "SAR-0001",
      "report_type": "SAR",
      "case_uuid": "c1a5e000-0000-4000-8000-000000000001"
    }
  ]
}
```Hapus setiap laporan dengan [Hapus Laporan](https://docs.didit.me/id/management-api/regulatory-reports/delete.md), lalu ulangi penghapusan. Menghapus laporan tidak menghapus sesi; sesi tetap ada sampai Anda memanggil endpoint ini lagi.## Data biometrik wajah: hapus atau pertahankanSetiap sesi KYC dengan swafoto liveness menyimpan embedding wajah yang mendukung [Pencarian Wajah 1:N](https://docs.didit.me/id/core-technology/face-search/overview.md) dan deteksi duplikat. Secara default, embedding tersebut dihapus bersama sesi (`face_retention_policy: delete_with_session`), sehingga orang yang sesinya Anda hapus dapat melakukan verifikasi lagi tanpa ditandai sebagai duplikat.Aplikasi yang memerlukan deteksi duplikat tetap berfungsi setelah sesi dihapus dapat memilih **retensi templat biometrik**. Didit kemudian menghapus sesi beserta seluruh datanya seperti biasa, lalu mempertahankan satu templat biometrik wajah yang bebas gambar dan dikelola secara terpisah, yang terikat pada [Pengguna](https://docs.didit.me/id/entities/users/overview.md) milik sesi tersebut.> [!WARNING]
>
> Templat biometrik yang dipertahankan adalah data biometrik. Data ini tidak anonim, tidak bersifat sementara, dan tidak ikut dihapus bersama sesi. Data ini tetap disimpan hingga tanggal kedaluwarsa yang dijadwalkan, batas waktu sesuai hukum yang berlaku jika lebih awal, penghapusan Pengguna, permintaan penghapusan privasi, atau penghapusan permanen yang eksplisit. Aktifkan retensi hanya jika instruksi pengendali data dan pemberitahuan privasi Anda mencakupnya.Isi dan batasan templat yang dipertahankan:| Dipertahankan | Tidak pernah dipertahankan |
| - | - |
| Templat wajah numerik yang digunakan untuk pencocokan | Gambar wajah, video liveness, gambar dokumen, potongan potret, dan media lainnya |
| ID templat baru yang acak dan `provenance_reference` yang opak | ID sesi yang dihapus, nomornya, keputusannya, kolom identitas yang diekstrak, atau payload fitur |
| Pengguna pemilik (`vendor_user_uuid`, `vendor_data` terkini) | Status daftar blokir, kecocokan sebelumnya, label penipuan, atau klaim identitas lintas organisasi |
| Metadata retensi: `retained_at`, `expires_at`, kebijakan, override, kelas instruksi, `instruction_id`, dan ID pelaku yang bertindak | Alamat email pelaku |Retensi dikonfigurasi di tiga tempat, dari yang paling luas hingga yang paling spesifik:1) **Kebijakan aplikasi** di **Business Console → App Settings → Data retention** atau melalui `PATCH /v3/webhook/` (`face_retention_policy`, `face_retention_days`). Lihat [Data retention](https://docs.didit.me/id/console/data-retention.md#retensi-templat-biometrik).
2) **Override per panggilan** dengan `retain_face_embeddings` pada endpoint ini dan pada [Batch Delete Sessions](https://docs.didit.me/id/management-api/sessions/batch-delete.md).
3) **Kelas instruksi** dengan `deletion_instruction`. Instruksi `privacy_erasure` selalu didahulukan: instruksi ini menghapus permanen setiap templat yang dipertahankan untuk Pengguna tersebut dan tidak pernah mempertahankan templat baru.### Isi permintaanSemua kolom bersifat opsional. Jangan sertakan isi permintaan untuk mengikuti kebijakan aplikasi.| Kolom | Tipe | Deskripsi |
| - | - | - |
| `retain_face_embeddings` | boolean atau null | Mengesampingkan kebijakan aplikasi untuk penghapusan ini. `true` mempertahankan templat, `false` menghapus embedding bersama sesi, `null` atau dihilangkan mengikuti kebijakan. |
| `face_retention_days` | integer (1-3650) | Durasi retensi terbatas untuk templat. Wajib diisi saat templat dipertahankan, kecuali aplikasi sudah menetapkan `face_retention_days`. |
| `face_retention_deadline` | datetime (ISO 8601) | Batas kedaluwarsa yang tegas dan opsional. Harus berada di masa depan. |
| `deletion_instruction` | `operational_session_delete` (default) atau `privacy_erasure` | Kelas instruksi yang Anda berikan. `privacy_erasure` menghapus permanen setiap templat yang dipertahankan untuk Pengguna sesi sebelum menghapus sesi, dan tidak dapat dikombinasikan dengan `retain_face_embeddings: true`. |
| `instruction_id` | string (maks. 255) | Referensi tetap Anda untuk instruksi ini, misalnya ID tiket penghapusan Anda. Dicatat di jejak audit dan pada templat yang dipertahankan. Jika Anda menghilangkannya, Didit membuat ID sendiri yang dapat dilihat pada detail templat. |### Respons```json theme={null}
{
  "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
  "session_number": 1024,
  "face_retention_outcome": "retained_with_user",
  "biometric_template_uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
  "biometric_template_expires_at": "2027-10-09T10:15:00Z",
  "deleted_child_verifications": 0
}
```| Kolom | Deskripsi |
| - | - |
| `session_id` | Sesi yang dihapus. |
| `session_number` | Nomor sesi yang dihapus. |
| `face_retention_outcome` | Hasil untuk data biometrik wajah sesi. Lihat tabel di bawah. |
| `biometric_template_uuid` | ID templat biometrik yang dipertahankan jika `face_retention_outcome` bernilai `retained_with_user`; `null` jika tidak. |
| `biometric_template_expires_at` | Waktu ketika templat biometrik yang dipertahankan dihapus; `null` jika tidak ada templat yang dipertahankan. |
| `deleted_child_verifications` | Untuk sesi KYB, jumlah verifikasi yang dibuatnya (sesi KYC pihak kunci dan sesi KYB pemilik perusahaannya, secara rekursif) yang ikut dihapus. Selalu `0` untuk sesi KYC. || `face_retention_outcome` | Arti |
| - | - |
| `deleted` | Sesi dan embedding wajahnya dihapus. Perilaku default. |
| `retained_with_user` | Sesi dihapus. Satu templat biometrik bebas gambar tetap terikat pada Pengguna; ID-nya adalah `biometric_template_uuid`. Kelola melalui [Biometric Templates API](https://docs.didit.me/id/management-api/biometric-templates/overview.md). |
| `none` | Sesi tidak memiliki embedding wajah untuk dihapus atau dipertahankan (misalnya sesi KYB, atau sesi KYC tanpa swafoto liveness). |
| `ineligible_no_vendor_user` | Retensi diminta, tetapi sesi tidak terhubung ke Pengguna (dibuat tanpa `vendor_data`), sehingga tidak ada yang dapat mengikat templat. Sesi dan embedding-nya dihapus. Hasil tidak memenuhi syarat ini dicatat di jejak audit. |Respons ini mengonfirmasi bahwa Didit menerima dan menerapkan instruksi penghapusan Anda. Respons ini bukan sertifikat penghapusan: simpan `instruction_id` di log penghapusan Anda sendiri agar Anda dapat mencocokkan jejak audit nanti.### Durasi retensi dan kedaluwarsaSetiap templat yang dipertahankan memiliki `expires_at` dengan batas waktu yang pasti. Didit menetapkannya sebagai waktu paling awal dari:1) `face_retention_days` dari permintaan, atau `face_retention_days` aplikasi jika permintaan tidak menyertakannya;
2) periode retensi data umum aplikasi, jika dikonfigurasi;
3) `face_retention_deadline` dari permintaan, jika disediakan.Permintaan yang akan mempertahankan templat tanpa durasi terbatas ditolak dengan `400` dan tidak ada yang dihapus. Templat yang dipertahankan tidak boleh melampaui instruksi pelanggan yang berlaku paling awal, berakhirnya tujuan, masa kedaluwarsa yang dikonfigurasi, instruksi penghapusan subjek data, atau batas waktu biometrik menurut undang-undang. Anda bertanggung jawab memilih durasi yang memenuhi undang-undang yang berlaku bagi pengguna Anda; pilih durasi yang lebih pendek kapan pun aturan yang berlaku mewajibkannya.### Penghapusan privasiKirim `deletion_instruction: "privacy_erasure"` ketika Anda bertindak atas permintaan subjek data. Didit membersihkan setiap templat biometrik yang disimpan dan terkait dengan Pengguna dari sesi tersebut, lalu menghapus sesi beserta embedding wajahnya. Kebijakan retensi aplikasi tidak dapat mengesampingkan instruksi penghapusan privasi, dan `retain_face_embeddings: true` ditolak dengan `400`.Menghapus Pengguna dengan [Hapus Pengguna secara Massal](https://docs.didit.me/id/management-api/users/delete.md) juga membersihkan templat yang disimpan untuk Pengguna tersebut.## Yang tidak terpengaruhMenghapus sesi tidak membersihkan hal-hal berikut secara otomatis. Jika Anda menangani permintaan hak penghapusan, tangani secara terpisah.- **Entri daftar blokir** yang dibuat dari sesi (wajah atau dokumen) tetap ada. Hapus dari [daftar blokir](https://docs.didit.me/id/entities/users/blocklist.md). Entri daftar blokir wajah tetap memiliki entri biometriknya sendiri, terlepas dari templat yang disimpan mana pun.
- **Token berbagi** yang sudah diterbitkan untuk sesi tidak dicabut, tetapi tidak ada yang tersisa untuk diimpor: [impor](https://docs.didit.me/id/sessions-api/share-session/import.md) dengan token tersebut mengembalikan `400` dengan `{"share_token": ["Original session does not exist."]}`.
- **Webhook yang sudah terkirim** untuk sesi tidak terpengaruh. Pengiriman yang masih antre, beserta percobaan ulangnya, dibatalkan. Tidak ada webhook yang dikirim untuk penghapusan itu sendiri.
- **Kredit yang sudah terpakai** oleh verifikasi tidak dikembalikan.
- **Salinan bertanda tangan yang sudah dikirim melalui email** kepada penandatangan pada langkah Tanda Tangan Elektronik tetap berada di kotak surat penandatangan dan tidak terpengaruh.
- Entitas induk **Pengguna** atau **Bisnis** tidak dihapus. Gunakan [Hapus Pengguna](https://docs.didit.me/id/management-api/users/delete.md) atau [Hapus Bisnis](https://docs.didit.me/id/management-api/businesses/delete.md) untuk itu. Jika potret profil Pengguna berasal dari sesi yang dihapus, potret tersebut akan dihapus.
- **Templat biometrik yang disimpan** (hanya jika Anda memilih untuk ikut serta) tetap ada sampai kedaluwarsa atau Anda menghapusnya. Hapus dengan [API Templat Biometrik](https://docs.didit.me/id/management-api/biometric-templates/purge.md), dengan menghapus Pengguna, atau dengan mengulangi penghapusan sesi lain dari Pengguna yang sama dengan `deletion_instruction: "privacy_erasure"`.## Contoh> [tab] Bawaan (kebijakan aplikasi)
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/4c5c7f3a-.../delete/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```
>
> Respons pada aplikasi yang belum memilih ikut:
>
> ```json theme={null}
> {
>   "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
>   "session_number": 1024,
>   "face_retention_outcome": "deleted",
>   "biometric_template_uuid": null,
>   "biometric_template_expires_at": null,
>   "deleted_child_verifications": 0
> }
> ```> [tab] Simpan templat biometrik
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/4c5c7f3a-.../delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"retain_face_embeddings": true, "face_retention_days": 365, "instruction_id": "cleanup-2026-08-0142"}'
> ```
>
> ```json theme={null}
> {
>   "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
>   "session_number": 1024,
>   "face_retention_outcome": "retained_with_user",
>   "biometric_template_uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
>   "biometric_template_expires_at": "2027-10-09T10:15:00Z",
>   "deleted_child_verifications": 0
> }
> ```> [tab] Paksa penghapusan pada aplikasi yang sudah memilih ikut
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/4c5c7f3a-.../delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"retain_face_embeddings": false}'
> ```
>
> ```json theme={null}
> {
>   "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
>   "session_number": 1024,
>   "face_retention_outcome": "deleted",
>   "biometric_template_uuid": null,
>   "biometric_template_expires_at": null,
>   "deleted_child_verifications": 0
> }
> ```> [tab] Penghapusan privasi
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/4c5c7f3a-.../delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"deletion_instruction": "privacy_erasure", "instruction_id": "dsar-2026-0142"}'
> ```
>
> Semua templat yang disimpan untuk Pengguna dari sesi tersebut dihapus terlebih dahulu, lalu sesinya dihapus:
>
> ```json theme={null}
> {
>   "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
>   "session_number": 1024,
>   "face_retention_outcome": "deleted",
>   "biometric_template_uuid": null,
>   "biometric_template_expires_at": null,
>   "deleted_child_verifications": 0
> }
> ```> [tab] Sesi tanpa Pengguna
>
> Sesi yang dibuat tanpa `vendor_data` tidak memiliki Pengguna untuk dikaitkan dengan templat:
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/7a1e9c2d-.../delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"retain_face_embeddings": true, "face_retention_days": 365}'
> ```
>
> ```json theme={null}
> {
>   "session_id": "7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c",
>   "session_number": 1031,
>   "face_retention_outcome": "ineligible_no_vendor_user",
>   "biometric_template_uuid": null,
>   "biometric_template_expires_at": null,
>   "deleted_child_verifications": 0
> }
> ```> [tab] Sesi Verifikasi Bisnis (KYB)
>
> ```bash theme={null}
> curl -X DELETE https://verification.didit.me/v3/session/bs-01HJX1.../delete/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```
>
> Verifikasi bisnis dihapus bersama tiga verifikasi yang dibuatnya untuk pihak kuncinya:
>
> ```json theme={null}
> {
>   "session_id": "0f3c9b7e-2d1a-4e5f-8c6b-7a9d8e1f2c3b",
>   "session_number": 88,
>   "face_retention_outcome": "none",
>   "biometric_template_uuid": null,
>   "biometric_template_expires_at": null,
>   "deleted_child_verifications": 3
> }
> ```## Galat| Status | Kapan | Isi |
| - | - | - |
| `400` | `privacy_erasure` digabungkan dengan `retain_face_embeddings: true` | `{"retain_face_embeddings": ["Privacy erasure cannot retain biometric templates."]}` |
| `400` | Retensi diminta tanpa durasi terbatas pada permintaan atau aplikasi | `{"detail": "A finite biometric-template retention duration is required."}` |
| `403` | Kredensial tidak memiliki `delete:sessions` atau tidak memiliki sesi tersebut | `{"detail": "You do not have permission to perform this action."}` |
| `404` | Sesi tidak dikenal atau sudah dihapus | `{"detail": "Not found."}` |
| `503` | Layanan penyimpanan atau penyedia pemantauan tidak tersedia saat menghapus sesi. | `{"detail": "The session could not be deleted because a storage service or a monitoring provider is unavailable. The session is still in place; repeat the request to finish deleting it."}` |
| `503` | Penyimpanan biometrik tidak tersedia saat menyimpan atau membersihkan templat. Percobaan ulang akan tetap menghasilkan satu templat yang sama. | `{"detail": "The biometric-template operation could not finish because an external store is unavailable. The operation is retryable."}` |Pada `400` tidak ada yang dihapus. Pada `503` sesi masih ada: ulangi permintaan yang sama sampai mengembalikan `200`. Sebagian file tersimpan atau embedding wajahnya mungkin sudah dihapus, jadi jangan mengandalkannya setelah `503`.## IzinMemerlukan `delete:sessions`. Izin yang sama berlaku untuk sesi Verifikasi Pengguna (KYC) dan Verifikasi Bisnis (KYB), serta penggantian retensi.## Penghapusan massalUntuk operasi massal pada sesi KYC, gunakan `POST /v3/sessions/delete/`. Endpoint ini menerima kolom retensi dan instruksi yang sama. Hingga 20 sesi yang cocok dihapus dalam satu permintaan dengan hasil per sesi; sesi lainnya dijalankan sebagai [pekerjaan penghapusan](https://docs.didit.me/id/management-api/sessions/get-deletion-job.md). Lihat [Hapus Sesi secara Massal](https://docs.didit.me/id/management-api/sessions/batch-delete.md).## Migrasi dari respons 204Sampai rilis ini, endpoint mengembalikan `204 No Content`. Sekarang endpoint mengembalikan `200 OK` dengan body JSON yang didokumentasikan di atas, sehingga setiap penghapusan melaporkan `face_retention_outcome`-nya. Perbarui klien yang memeriksa `204`.Perilaku default tidak berubah: aplikasi yang ada tetap menggunakan `delete_with_session`, dan tidak ada migrasi yang mengaktifkan retensi atas nama Anda. Aktifkan secara eksplisit di Console atau melalui `PATCH /v3/webhook/`.## Terkait- [Templat biometrik](https://docs.didit.me/id/management-api/biometric-templates/overview.md)
- [Retensi data](https://docs.didit.me/id/console/data-retention.md)
- [Ikhtisar sesi](https://docs.didit.me/id/sessions-api/overview.md)


## OpenAPI

````yaml id/openapi-25.json DELETE /v3/session/{sessionId}/delete/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/delete/:
    delete:
      tags:
        - Sessions
      summary: Hapus sesi verifikasi (KYC atau KYB)
      description: >-
        Hapus satu sesi verifikasi, Verifikasi Pengguna (KYC) atau Verifikasi
        Bisnis (KYB), berdasarkan `session_id`-nya. ID tersebut dicari terlebih
        dahulu di antara sesi KYC, kemudian sesi KYB, sehingga kedua jenis sesi
        dihapus melalui satu URL ini.


        **Apa yang dihapus:**

        - Sesi dan setiap upaya verifikasi yang dimilikinya, termasuk hasil yang
        digantikan oleh pengiriman ulang: keputusan, data yang diekstrak, semua
        catatan fitur terkait (verifikasi identitas, wajah, liveness, pencocokan
        wajah, AML, pemeriksaan registri, analisis IP, dan sebagainya),
        peninjauan, serta log aktivitasnya.

        - Semua file tersimpan yang dimiliki oleh sesi: foto depan/belakang
        dokumen (varian penuh, terpotong, dan diburamkan untuk privasi), video
        pengambilan dokumen, potongan potret, potret chip NFC dan gambar tanda
        tangan, gambar referensi wajah, video liveness, gambar sumber/target
        pencocokan wajah, dokumen Bukti Alamat, dan file unggahan tambahan apa
        pun (KYC); dokumen perusahaan yang diunggah dan file tambahan (KYB).
        Dokumen Tanda Tangan Elektronik, PDF bertanda tangan, PDF bukti, dan
        gambar tanda tangan (KYC dan KYB): jalur unduhannya berhenti berfungsi.
        URL media yang diterbitkan sebelumnya (`https://<media-host>/...`) tidak
        lagi dapat di-resolve.

        - Data wajah sesi. Embedding wajahnya juga dihapus, kecuali jika Anda
        memilih untuk menyimpan templat tanpa gambar (lihat **Data biometrik
        wajah**).

        - Pengiriman webhook yang masih mengantre untuk sesi ini, serta
        percobaan ulangnya. Webhook yang sudah terkirim tidak terpengaruh.

        - Untuk sesi Verifikasi Bisnis (KYB): verifikasi yang dibuat untuk pihak
        kuncinya (KYC) dan pemilik perusahaannya (KYB), secara rekursif,
        dilaporkan sebagai `deleted_child_verifications`. Verifikasi yang hanya
        ditautkan, seperti KYC disetujui yang sudah ada dan digunakan kembali,
        tidak dihapus.


        Sesi langsung menghilang dari setiap endpoint baca: `GET
        /v3/session/{sessionId}/decision/` mengembalikan `404` dan `GET
        /v3/sessions/` berhenti mencantumkannya. Pemantauan AML berkelanjutan
        dan pemantauan registri KYB yang dimulai oleh verifikasi yang dihapus
        akan berhenti.


        **Apa yang tidak terpengaruh:** entri daftar blokir yang dibuat dari
        sesi ini (wajah atau dokumen) **tidak** dihapus; kelola entri tersebut
        dengan endpoint daftar blokir. Token berbagi yang diterbitkan untuk sesi
        ini tidak dicabut, tetapi tidak ada lagi yang tersisa untuk diimpor:
        impor menggunakan token tersebut mengembalikan `400` dengan
        `{"share_token": ["Original session does not exist."]}`. Kredit yang
        sudah digunakan **tidak** dikembalikan. Entitas Pengguna atau Bisnis
        induk **tidak** dihapus; gunakan `POST /v3/users/delete/` atau `POST
        /v3/businesses/delete/` untuk entitas tersebut. Jika potret profil
        Pengguna berasal dari sesi ini, potret tersebut akan dihapus bersamanya.


        **Data biometrik wajah:** secara default, embedding wajah sesi dihapus
        bersama sesi (`face_retention_outcome: deleted`). Aplikasi yang
        mengaktifkan retensi templat biometrik (`face_retention_policy:
        retain_until_user_deleted` pada `PATCH /v3/webhook/`), atau permintaan
        dengan `retain_face_embeddings: true`, menyimpan satu templat biometrik
        wajah tanpa gambar yang dikelola terpisah dan ditautkan ke Pengguna sesi
        (`retained_with_user`) agar deteksi duplikat, Pencarian Wajah, dan
        autentikasi biometrik tetap berfungsi. Templat ini tidak pernah berisi
        gambar wajah, media, kolom identitas, keputusan, atau ID sesi yang
        dihapus; ini adalah data biometrik yang dihapus pada
        `biometric_template_expires_at`, atau lebih awal saat penghapusan
        Pengguna, penghapusan privasi, atau pembersihan eksplisit melalui
        `/v3/biometric-templates/`. Sesi tanpa Pengguna yang ditautkan tidak
        dapat mempertahankan templat (`ineligible_no_vendor_user`). Kirim
        `deletion_instruction: privacy_erasure` untuk permintaan subjek data:
        ini menghapus setiap templat yang dipertahankan untuk Pengguna tersebut
        dan tidak pernah mempertahankan templat baru.


        **Tidak dapat dibatalkan:** penghapusan bersifat permanen dan tidak ada
        endpoint pemulihan. Ekspor apa pun yang Anda perlukan (misalnya PDF
        keputusan) sebelum Anda memanggilnya.


        **Efek samping:** tidak ada webhook yang dikirim untuk penghapusan.


        **Respons:** `200 OK` setelah penghapusan selesai, dengan isi JSON yang
        melaporkan `face_retention_outcome`, waktu kedaluwarsa templat yang
        dipertahankan, dan, untuk sesi KYB, `deleted_child_verifications`. Versi
        endpoint sebelumnya mengembalikan `204 No Content`; perbarui klien yang
        memeriksa `204`. Simpan `instruction_id` Anda di log penghapusan Anda
        sendiri.


        **Idempotensi:** tidak idempoten pada tingkat HTTP: panggilan pertama
        mengembalikan `200`; mengulanginya mengembalikan `404` karena sesi tidak
        lagi dapat ditemukan. Setelah `503`, sesi masih tetap ada; ulangi
        permintaan yang sama untuk menyelesaikan penghapusannya.


        **Autentikasi:** kirim kunci API aplikasi Anda di header `x-api-key`;
        sesi harus menjadi milik aplikasi tersebut. Token akses pengguna Konsol
        (`Authorization: Bearer ...`) juga dapat memanggil endpoint ini jika
        memiliki izin `delete:sessions`. Kegagalan autentikasi dan izin keduanya
        mengembalikan `403`; API ini tidak pernah mengembalikan `401`.


        **Batas laju:** kuota tulis bersama sebesar 300 permintaan/menit per
        kunci API di semua endpoint POST/PATCH/DELETE; melebihi batas ini akan
        mengembalikan `429`.


        Untuk menghapus sesi KYC secara massal berdasarkan `session_number`
        numeriknya, gunakan `POST /v3/sessions/delete/` sebagai gantinya.


        **Laporan regulasi yang diajukan:** jika data yang dipilih berada dalam
        laporan regulasi yang telah difinalisasi, seluruh permintaan ditolak
        dengan `409` dan tidak ada yang dihapus. Isinya menggunakan `code:
        in_filed_report` dan menyebutkan setiap laporan dengan `uuid`,
        `report_number`, `report_type`, dan `case_uuid`. Hapus laporan tersebut,
        lalu ulangi permintaan.
      operationId: delete_v3_session_by_id
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            UUID (`session_id`) dari sesi Verifikasi Pengguna (KYC) atau
            Verifikasi Bisnis (KYB) yang akan dihapus, seperti yang dikembalikan
            saat sesi dibuat. Harus berupa UUID bertanda hubung kanonikal —
            nilai non-UUID tidak cocok dengan rute dan mengembalikan `404`.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
      requestBody:
        required: false
        description: >-
          Opsional. Abaikan payload sepenuhnya untuk mengikuti kebijakan retensi
          data aplikasi dengan penghapusan operasional.
        content:
          application/json:
            schema:
              type: object
              properties:
                retain_face_embeddings:
                  type: boolean
                  nullable: true
                  description: >-
                    Timpa `face_retention_policy` aplikasi untuk penghapusan
                    ini. `true` mempertahankan satu templat biometrik wajah
                    bebas gambar yang ditautkan ke Pengguna sesi setelah sesi
                    dihapus; `false` menghapus embedding wajah bersama sesi;
                    abaikan atau gunakan `null` untuk mengikuti kebijakan
                    aplikasi. Diabaikan untuk sesi KYB dan untuk sesi tanpa
                    embedding wajah.
                  example: true
                face_retention_days:
                  type: integer
                  minimum: 1
                  maximum: 3650
                  description: >-
                    Durasi retensi terbatas, dalam hari, untuk templat yang
                    disimpan. Wajib diisi saat templat disimpan kecuali aplikasi
                    sudah menyetel `face_retention_days`. `expires_at` templat
                    adalah yang paling awal di antara durasi ini, jendela
                    retensi data umum aplikasi, dan `face_retention_deadline`.
                  example: 365
                face_retention_deadline:
                  type: string
                  format: date-time
                  description: >-
                    Kedaluwarsa mutlak opsional untuk templat yang disimpan.
                    Harus berada di masa mendatang.
                  example: '2027-08-28T00:00:00Z'
                deletion_instruction:
                  type: string
                  enum:
                    - operational_session_delete
                    - privacy_erasure
                  default: operational_session_delete
                  description: >-
                    Kelas instruksi yang Anda berikan.
                    `operational_session_delete` menghapus sesi dan
                    mempertahankan templat hanya jika kebijakan atau
                    `retain_face_embeddings` menentukannya. `privacy_erasure`
                    menghapus permanen setiap templat biometrik tersimpan yang
                    terkait dengan Pengguna sesi tersebut sebelum menghapus
                    sesi, tidak dapat ditimpa oleh kebijakan aplikasi, dan tidak
                    dapat digabungkan dengan `retain_face_embeddings: true`
                    (`400`).
                  example: operational_session_delete
                instruction_id:
                  type: string
                  maxLength: 255
                  description: >-
                    Referensi permanen Anda untuk instruksi penghapusan ini
                    (misalnya id tiket penghapusan). Dicatat pada jejak audit
                    dan pada setiap templat yang dipertahankan. Dihasilkan oleh
                    Didit jika ditiadakan.
                  example: dsar-2026-0142
            examples:
              Retain a biometric template:
                summary: Hapus sesi, simpan templat tanpa gambar selama 365 hari
                value:
                  retain_face_embeddings: true
                  face_retention_days: 365
                  instruction_id: post-approval-cleanup-2026-08
              Force deletion on an opted-in application:
                summary: Hapus embedding wajah terlepas dari kebijakan aplikasi
                value:
                  retain_face_embeddings: false
              Privacy erasure:
                summary: >-
                  Permintaan subjek data: hapus sesi dan bersihkan setiap
                  templat yang disimpan untuk orang tersebut
                value:
                  deletion_instruction: privacy_erasure
                  instruction_id: dsar-2026-0142
      responses:
        '200':
          description: >-
            Sesi dihapus. Isi respons melaporkan apa yang terjadi pada data
            biometrik wajah sesi tersebut dan, untuk sesi KYB, berapa banyak
            verifikasi yang dibuatnya yang ikut dihapus bersamanya.
          content:
            application/json:
              schema:
                type: object
                properties:
                  session_id:
                    type: string
                    format: uuid
                    description: Sesi yang dihapus.
                  session_number:
                    type: integer
                    nullable: true
                    description: Nomor sesi yang dihapus.
                  face_retention_outcome:
                    type: string
                    enum:
                      - retained_with_user
                      - deleted
                      - none
                      - ineligible_no_vendor_user
                    description: >-
                      Hal yang terjadi pada data biometrik wajah sesi.
                      `deleted`: embedding wajah dihapus bersama sesi (default).
                      `retained_with_user`: sesi dihapus dan satu templat
                      biometrik tanpa gambar tetap terhubung ke Pengguna; lihat
                      `biometric_template_uuid`. `none`: sesi tidak memiliki
                      embedding wajah (misalnya sesi KYB, atau sesi KYC tanpa
                      swafoto dengan Deteksi Liveness).
                      `ineligible_no_vendor_user`: retensi diminta tetapi sesi
                      tidak memiliki Pengguna yang ditautkan, sehingga embedding
                      dihapus bersama sesi. Kegagalan penyimpanan biometrik
                      tidak pernah dilaporkan melalui kolom ini pada endpoint
                      ini: endpoint akan mengembalikan `503` dan sesi tidak
                      dihapus.
                  biometric_template_uuid:
                    type: string
                    format: uuid
                    nullable: true
                    description: >-
                      Id templat biometrik yang disimpan saat
                      `face_retention_outcome` adalah `retained_with_user`; jika
                      tidak, bernilai `null`. Kelola melalui
                      `/v3/biometric-templates/{template_uuid}/`.
                  biometric_template_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Waktu templat biometrik yang disimpan dihapus, saat
                      `face_retention_outcome` adalah `retained_with_user`;
                      `null` jika tidak ada templat yang disimpan.
                  deleted_child_verifications:
                    type: integer
                    description: >-
                      Untuk sesi Verifikasi Bisnis (KYB): berapa banyak
                      verifikasi yang dibuatnya (sesi KYC pihak kuncinya dan
                      sesi KYB pemilik korporatnya, secara rekursif) yang
                      dihapus bersamanya. Selalu `0` untuk sesi KYC.
              examples:
                Deleted (default):
                  value:
                    session_id: 4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02
                    session_number: 1024
                    face_retention_outcome: deleted
                    biometric_template_uuid: null
                    biometric_template_expires_at: null
                    deleted_child_verifications: 0
                Retained with User:
                  value:
                    session_id: 4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02
                    session_number: 1024
                    face_retention_outcome: retained_with_user
                    biometric_template_uuid: 9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b
                    biometric_template_expires_at: '2027-10-09T10:15:00Z'
                    deleted_child_verifications: 0
                'Ineligible: no User':
                  summary: Retensi diminta pada sesi yang dibuat tanpa vendor_data
                  value:
                    session_id: 7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c
                    session_number: 1031
                    face_retention_outcome: ineligible_no_vendor_user
                    biometric_template_uuid: null
                    biometric_template_expires_at: null
                    deleted_child_verifications: 0
                KYB session:
                  value:
                    session_id: 0f3c9b7e-2d1a-4e5f-8c6b-7a9d8e1f2c3b
                    session_number: 88
                    face_retention_outcome: none
                    biometric_template_uuid: null
                    biometric_template_expires_at: null
                    deleted_child_verifications: 3
                  summary: >-
                    Verifikasi bisnis yang dihapus bersama tiga verifikasi yang
                    dibuat untuk pihak kuncinya
        '400':
          description: Kesalahan validasi — tidak ada yang dihapus.
          content:
            application/json:
              examples:
                Privacy erasure cannot retain:
                  value:
                    retain_face_embeddings:
                      - Privacy erasure cannot retain biometric templates.
                No finite retention duration:
                  summary: >-
                    Retensi diminta tanpa face_retention_days pada permintaan
                    atau aplikasi
                  value:
                    detail: >-
                      A finite biometric-template retention duration is
                      required.
        '403':
          description: >-
            Kegagalan autentikasi atau izin. Kunci yang hilang juga
            mengembalikan `403`; kunci yang salah, dicabut, atau kedaluwarsa
            mengembalikan `401`. Pengecualian: ketika `sessionId` tidak
            terhubung ke sesi aktif, pencarian pemilik pra-autentikasi akan
            mengembalikan `404` terlebih dahulu, bahkan jika kredensial tidak
            ada atau tidak valid.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid API key:
                  summary: Tidak ada header x-api-key, atau kunci tidak valid
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Insufficient permission:
                  summary: >-
                    Token pengguna tanpa delete:sessions, atau kredensial untuk
                    aplikasi yang tidak memiliki sesi tersebut
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Tidak ada sesi KYC atau KYB di lingkungan produksi dengan
            `session_id` ini — ID tidak diketahui atau sesi sudah dihapus
            (mengulangi penghapusan yang berhasil akan mengarah ke sini).
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not Found:
                  summary: Sesi tidak dikenal atau sudah dihapus
                  value:
                    detail: Not found.
        '409':
          description: >-
            Sesi merupakan bagian dari laporan regulasi yang telah diselesaikan.
            Tidak ada yang dihapus.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InFiledReportError'
        '429':
          description: >-
            Batas laju penulisan bersama terlampaui (300 permintaan
            POST/PATCH/DELETE per menit per kunci API). Periksa header respons
            `Retry-After` dan `X-RateLimit-*` sebelum mencoba lagi.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Rate limited:
                  summary: Anggaran penulisan habis
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
        '503':
          description: >-
            Penghapusan tidak dapat diselesaikan karena layanan penyimpanan,
            penyimpanan biometrik, atau penyedia pemantauan tidak tersedia. Sesi
            masih tetap ada; ulangi permintaan yang sama hingga mengembalikan
            `200`. Beberapa file yang disimpan atau embedding wajahnya mungkin
            sudah dihapus, jadi jangan mengandalkannya setelah `503`. Percobaan
            ulang menghasilkan satu templat yang sama.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Session deletion unavailable:
                  summary: Layanan penyimpanan atau penyedia pemantauan tidak tersedia
                  value:
                    detail: >-
                      The session could not be deleted because a storage service
                      or a monitoring provider is unavailable. The session is
                      still in place; repeat the request to finish deleting it.
                Biometric store unavailable:
                  summary: >-
                    Penyimpanan biometrik tidak tersedia saat mempertahankan
                    atau menghapus total templat
                  value:
                    detail: >-
                      The biometric-template operation could not finish because
                      an external store is unavailable. The operation is
                      retryable.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl (default policy)
          source: |-
            curl -X DELETE \
              https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/delete/ \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: curl
          label: curl (retain template)
          source: |-
            curl -X DELETE \
              https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/delete/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"retain_face_embeddings": true, "face_retention_days": 365}'
        - lang: curl
          label: curl (privacy erasure)
          source: |-
            curl -X DELETE \
              https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/delete/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"deletion_instruction": "privacy_erasure", "instruction_id": "dsar-2026-0142"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.delete(
                "11111111-2222-3333-4444-555555555555",
                retain_face_embeddings=True,
                face_retention_days=365,
                instruction_id="post-approval-cleanup-2026-08",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const result = await
            didit.sessions.delete("11111111-2222-3333-4444-555555555555", {
              retain_face_embeddings: true,
              face_retention_days: 365,
              instruction_id: "post-approval-cleanup-2026-08",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Delete(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsDeleteParams{\n\tRetainFaceEmbeddings: didit.Bool(true),\n\tFaceRetentionDays:    didit.Int(365),\n\tInstructionID:        didit.String(\"post-approval-cleanup-2026-08\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.SessionsDeleteParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().delete("11111111-2222-3333-4444-555555555555",
            SessionsDeleteParams.builder()
                    .retainFaceEmbeddings(true)
                    .faceRetentionDays(365L)
                    .instructionId("post-approval-cleanup-2026-08")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $result =
            $didit->sessions->delete('11111111-2222-3333-4444-555555555555', [
                'retain_face_embeddings' => true,
                'face_retention_days' => 365,
                'instruction_id' => 'post-approval-cleanup-2026-08',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.sessions.delete(
              "11111111-2222-3333-4444-555555555555",
              retain_face_embeddings: true,
              face_retention_days: 365,
              instruction_id: "post-approval-cleanup-2026-08"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await
            client.Sessions.DeleteAsync("11111111-2222-3333-4444-555555555555",
            new SessionsDeleteParams

            {
                RetainFaceEmbeddings = true,
                FaceRetentionDays = 365,
                InstructionId = "post-approval-cleanup-2026-08",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    InFiledReportError:
      type: object
      description: >-
        Penghapusan ditolak karena data yang dipilih berada dalam laporan
        regulasi yang telah diselesaikan. Tidak ada yang dihapus. Hapus laporan
        tersebut, lalu ulangi permintaan.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - in_filed_report
          description: >-
            Kode kesalahan stabil untuk penghapusan yang diblokir oleh laporan
            regulasi yang telah difinalisasi.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: >-
            Laporan yang memblokir penghapusan orang, perusahaan, kasus, atau
            sesi.
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/FiledReportTransaction'
          description: >-
            Transaksi yang memblokir penghapusan transaksi, masing-masing
            beserta laporan yang mencantumkannya.
    FiledRegulatoryReport:
      type: object
      description: Laporan regulasi yang sudah final mencegah penghapusan yang diminta.
      required:
        - uuid
        - report_number
        - report_type
        - case_uuid
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID laporan.
        report_number:
          type: string
          description: Nomor laporan yang ditampilkan di Console (misalnya, SAR-0001).
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
          description: Jenis laporan regulasi.
        case_uuid:
          type: string
          format: uuid
          description: Kasus tempat laporan ini bernaung.
    FiledReportTransaction:
      type: object
      description: >-
        Transaksi yang tidak dapat dihapus karena tercantum dalam laporan
        regulasi yang telah difinalisasi.
      required:
        - uuid
        - transaction_id
        - reports
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID transaksi Didit.
        transaction_id:
          type: string
          description: Pengidentifikasi transaksi yang diberikan saat transaksi dibuat.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: Laporan yang telah difinalisasi dan mencantumkan transaksi ini.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

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