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.
Dukungan KYC dan KYB
Endpoint 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 jika klien Anda masih mengharapkan204.
Data dalam laporan regulasi yang sudah final
Jika sesi menjadi bagian dari kasus dengan laporan regulasi yang sudah final, permintaan mengembalikan409 dan tidak ada yang dihapus. Respons menggunakan code: in_filed_report dan menyebutkan setiap laporan:
{
"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"
}
]
}
Data biometrik wajah: hapus atau pertahankan
Setiap sesi KYC dengan swafoto liveness menyimpan embedding wajah yang mendukung Pencarian Wajah 1:N 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 milik sesi tersebut.
| 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 |
- Kebijakan aplikasi di Business Console → App Settings → Data retention atau melalui
PATCH /v3/webhook/(face_retention_policy,face_retention_days). Lihat Data retention. - Override per panggilan dengan
retain_face_embeddingspada endpoint ini dan pada Batch Delete Sessions. - Kelas instruksi dengan
deletion_instruction. Instruksiprivacy_erasureselalu didahulukan: instruksi ini menghapus permanen setiap templat yang dipertahankan untuk Pengguna tersebut dan tidak pernah mempertahankan templat baru.
Isi permintaan
Semua 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
{
"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. |
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. |
instruction_id di log penghapusan Anda sendiri agar Anda dapat mencocokkan jejak audit nanti.
Durasi retensi dan kedaluwarsa
Setiap templat yang dipertahankan memilikiexpires_at dengan batas waktu yang pasti. Didit menetapkannya sebagai waktu paling awal dari:
face_retention_daysdari permintaan, atauface_retention_daysaplikasi jika permintaan tidak menyertakannya;- periode retensi data umum aplikasi, jika dikonfigurasi;
face_retention_deadlinedari permintaan, jika disediakan.
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 privasi
Kirimdeletion_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 juga membersihkan templat yang disimpan untuk Pengguna tersebut.
Yang tidak terpengaruh
Menghapus 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. 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 dengan token tersebut mengembalikan
400dengan{"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 atau Hapus Bisnis 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, dengan menghapus Pengguna, atau dengan mengulangi penghapusan sesi lain dari Pengguna yang sama dengan
deletion_instruction: "privacy_erasure".
Contoh
- Bawaan (kebijakan aplikasi)
- Simpan templat biometrik
- Paksa penghapusan pada aplikasi yang sudah memilih ikut
- Penghapusan privasi
- Sesi tanpa Pengguna
- Sesi Verifikasi Bisnis (KYB)
curl -X DELETE https://verification.didit.me/v3/session/4c5c7f3a-.../delete/ \
-H "x-api-key: YOUR_API_KEY"
{
"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
}
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"}'
{
"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
}
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}'
{
"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
}
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"}'
{
"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
}
vendor_data tidak memiliki Pengguna untuk dikaitkan dengan templat: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}'
{
"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
}
curl -X DELETE https://verification.didit.me/v3/session/bs-01HJX1.../delete/ \
-H "x-api-key: YOUR_API_KEY"
{
"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."} |
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.
Izin
Memerlukandelete:sessions. Izin yang sama berlaku untuk sesi Verifikasi Pengguna (KYC) dan Verifikasi Bisnis (KYB), serta penggantian retensi.
Penghapusan massal
Untuk operasi massal pada sesi KYC, gunakanPOST /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. Lihat Hapus Sesi secara Massal.
Migrasi dari respons 204
Sampai rilis ini, endpoint mengembalikan204 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
Otorisasi
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.
Parameter Path
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.
"11111111-2222-3333-4444-555555555555"
Body
Opsional. Abaikan payload sepenuhnya untuk mengikuti kebijakan retensi data aplikasi dengan penghapusan operasional.
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.
true
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.
1 <= x <= 3650365
Kedaluwarsa mutlak opsional untuk templat yang disimpan. Harus berada di masa mendatang.
"2027-08-28T00:00:00Z"
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).
operational_session_delete, privacy_erasure "operational_session_delete"
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.
255"dsar-2026-0142"
Respons
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.
Sesi yang dihapus.
Nomor sesi yang dihapus.
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.
retained_with_user, deleted, none, ineligible_no_vendor_user Id templat biometrik yang disimpan saat face_retention_outcome adalah retained_with_user; jika tidak, bernilai null. Kelola melalui /v3/biometric-templates/{template_uuid}/.
Waktu templat biometrik yang disimpan dihapus, saat face_retention_outcome adalah retained_with_user; null jika tidak ada templat yang disimpan.
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.