Langsung ke konten utama
DELETE

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 mengharapkan 204.

Data dalam laporan regulasi yang sudah final

Jika 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:
Hapus setiap laporan dengan Hapus Laporan, lalu ulangi penghapusan. Menghapus laporan tidak menghapus sesi; sesi tetap ada sampai Anda memanggil endpoint ini lagi.

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.
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: 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.
  2. Override per panggilan dengan retain_face_embeddings pada endpoint ini dan pada Batch Delete Sessions.
  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 permintaan

Semua kolom bersifat opsional. Jangan sertakan isi permintaan untuk mengikuti kebijakan aplikasi.

Respons

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 kedaluwarsa

Setiap 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 privasi

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

Respons pada aplikasi yang belum memilih ikut:

Galat

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.

Izin

Memerlukan delete: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, 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. Lihat Hapus Sesi secara Massal.

Migrasi dari respons 204

Sampai 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

Otorisasi

x-api-key
string
header
wajib

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

sessionId
string<uuid>
wajib

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.

Contoh:

"11111111-2222-3333-4444-555555555555"

Body

application/json

Opsional. Abaikan payload sepenuhnya untuk mengikuti kebijakan retensi data aplikasi dengan penghapusan operasional.

retain_face_embeddings
boolean | null

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.

Contoh:

true

face_retention_days
integer

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.

Rentang yang diperlukan: 1 <= x <= 3650
Contoh:

365

face_retention_deadline
string<date-time>

Kedaluwarsa mutlak opsional untuk templat yang disimpan. Harus berada di masa mendatang.

Contoh:

"2027-08-28T00:00:00Z"

deletion_instruction
enum<string>
default:operational_session_delete

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

Opsi yang tersedia:
operational_session_delete,
privacy_erasure
Contoh:

"operational_session_delete"

instruction_id
string

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.

Maximum string length: 255
Contoh:

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

session_id
string<uuid>

Sesi yang dihapus.

session_number
integer | null

Nomor sesi yang dihapus.

face_retention_outcome
enum<string>

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.

Opsi yang tersedia:
retained_with_user,
deleted,
none,
ineligible_no_vendor_user
biometric_template_uuid
string<uuid> | null

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
string<date-time> | null

Waktu templat biometrik yang disimpan dihapus, saat face_retention_outcome adalah retained_with_user; null jika tidak ada templat yang disimpan.

deleted_child_verifications
integer

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.

Terakhir diubah pada 7 November 2026