Langsung ke konten utama
PATCH
curl

Dukungan KYC dan KYB

Endpoint ini bekerja sama persis untuk sesi Verifikasi Pengguna (KYC) dan Verifikasi Bisnis (KYB). Didit mencocokkan session_id dengan kedua jenis sesi; validasi transisi status sama untuk keduanya (enum status yang sama berlaku untuk keduanya). Respons hanya berisi session_id. Baca session_kind dari Ambil Sesi jika logika di sisi hilir Anda perlu membedakan jenisnya.

Transisi yang diizinkan

Anda dapat memindahkan sesi ke Approved, Declined, atau Resubmitted. Nilai new_status lain, termasuk In Review, mengembalikan 400. Status sesi saat ini harus salah satu dari Approved, Declined, In Review, Kyc Expired, Abandoned, atau Resubmitted; jika tidak, API mengembalikan 400. Mengatur Approved atau Declined pada sesi yang sudah memiliki status tersebut tidak berpengaruh: API mengembalikan 200 dan tidak mengubah apa pun, tidak memicu webhook, dan tidak mengirim email. Mengatur Resubmitted pada sesi yang sudah berstatus Resubmitted mengembalikan 400 (The new status is the same as the current status.). Pengajuan ulang yang nodes_to_resubmit-nya hanya berisi fitur khusus backend (AML, DATABASE_VALIDATION, IP_ANALYSIS) dijalankan secara otomatis dan mengembalikan sesi ke status yang sudah diputuskan tanpa interaksi pengguna. Mengulangi pengajuan ulang seperti itu dalam 30 detik mengembalikan 429 Too Many Requests dengan header Retry-After, karena pengulangan segera tidak dapat menghasilkan hasil yang berbeda. Jangan lakukan auto-resubmit dari handler webhook setiap kali Anda menerima status In Review; tinjau temuannya atau ubah data yang mendasarinya terlebih dahulu.

Pratinjau email terlebih dahulu

Dengan send_email: true, Approved dan Declined mengirimkan email keputusan kepada orang tersebut, dan Resubmitted mengirimkan tautan baru beserta alasannya. Anda dapat melihat email tersebut sebelum mengubah apa pun:
  1. Panggil Pratinjau Email Keputusan untuk Approved atau Declined, atau Pratinjau Email Pengajuan Ulang untuk Resubmitted.
  2. Periksa subject dan html yang dirender, recipient, serta will_be_sent / not_sent_reason.
  3. Panggil endpoint ini dengan new_status yang sama (dan, untuk pengajuan ulang, nodes_to_resubmit yang sama), send_email: true, email_address diisi dengan recipient, email_language yang Anda pratinjau, dan email_preview_token diisi dengan preview_token.
Kedua pratinjau tidak mengubah sesi maupun mengirim apa pun. Pembaruan kemudian mengirim tepat email yang Anda pratinjau. Tanda terima kedaluwarsa setelah 15 menit. Jika penerima, bahasa, status sesi, pengirim, atau email berubah sejak pratinjau, pembaruan mengembalikan 409 sebelum ada yang berubah; lakukan pratinjau ulang dan konfirmasi dengan tanda terima yang baru. Mengirim email_preview_token tanpa send_email: true mengembalikan 400. Langkah pratinjau bersifat opsional: integrasi yang sudah ada dapat terus memanggil endpoint ini tanpa langkah tersebut.

Contoh

Izin

Memerlukan izin write:sessions. Izin yang sama berlaku untuk kedua jenis sesi.

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 sesi verifikasi yang akan diperbarui. Menerima ID sesi pengguna (KYC) dan bisnis (KYB) — layanan mencari ID tersebut di kedua jenis sesi.

Contoh:

"11111111-2222-3333-4444-555555555555"

Body

application/json
new_status
enum<string>
wajib

Status target. Approved dan Declined mencatat keputusan manual akhir (masing-masing juga dapat membatalkan yang lain). Resubmitted menghapus langkah-langkah yang dipilih dan mengirimkan sesi kembali ke pengguna. Nilai lainnya mengembalikan 400.

Opsi yang tersedia:
Approved,
Declined,
Resubmitted
Contoh:

"Approved"

comment
string

Alasan teks bebas untuk perubahan tersebut, disimpan pada jejak peninjauan sesi dan dikembalikan dalam array reviews pada Dapatkan Keputusan. Misalnya Duplicated user.

Contoh:

"All checks passed manual review"

nodes_to_resubmit
object[]

Langkah alur kerja yang harus diulang oleh pengguna. Hanya ditindaklanjuti ketika new_status bernilai Resubmitted. Untuk Approved/Declined, entri tetap divalidasi skemanya (nilai feature yang tidak valid mengembalikan 400), tetapi entri yang valid secara skema diabaikan secara semantik. Jika dihilangkan, server secara otomatis memilih percobaan OCR, Liveness, Pencocokan Wajah, POA, Phone, Email, AML, Validasi Database, dan Kuesioner yang ada yang statusnya Declined, In Review, Not Finished, atau Expired (percobaan NFC, analisis IP, estimasi usia, pencarian wajah, dan dokumen KYB tidak pernah dipilih secara otomatis; percobaan wajah non-face-match dipilih sebagai LIVENESS) — fitur yang tidak pernah dicoba oleh pengguna (tidak ada rekaman percobaan) TIDAK dipilih, sehingga sesi dengan nol percobaan mengembalikan 400 ("No features found that need resubmission") meskipun tidak ada yang disetujui; teruskan nodes_to_resubmit secara eksplisit dalam kasus tersebut. Langkah-langkah dieksekusi dalam urutan graf alur kerja terlepas dari urutan pengirimannya. KYB_REGISTRY, KYB_KEY_PEOPLE, dan alias KYB ditolak dengan 400 — pemeriksaan induk tersebut dihitung ulang dari sesi KYC anak mereka.

send_email
boolean
default:false

Menentukan apakah akan mengirim email kepada pengguna mengenai perubahan tersebut. Memerlukan email_address. Untuk Approved/Declined, pengguna menerima pemberitahuan status; untuk Resubmitted, email menyertakan tautan verifikasi dan alasan pengiriman ulang per langkah.

Contoh:

false

email_address
string<email>

Penerima untuk email notifikasi. Wajib diisi jika send_email bernilai true — mengabaikannya akan mengembalikan 400.

Contoh:

"user@example.com"

email_language
string
default:en

Bahasa untuk email notifikasi. Menerima string apa pun pada tingkat skema; kode yang tidak didukung akan beralih ke bahasa Inggris (en) secara senyap.

Contoh:

"en"

email_preview_token
string
write-only

Tanda terima opsional dari Preview Decision Email (untuk Approved dan Declined) atau Preview Resubmission Email (untuk Resubmitted): berupa preview_token-nya. Hanya valid dengan send_email: true; tanpanya, permintaan menghasilkan respons 400. Penerima, bahasa, status sesi, pengirim, dan email (serta, untuk pengiriman ulang, langkah-langkah yang dipilih) harus tetap cocok dengan pratinjau, dan tanda terima kedaluwarsa setelah 15 menit. Jika tidak, permintaan menghasilkan respons 409 sebelum sesi berubah atau email dikirim. Integrasi yang sudah ada dapat mengabaikan kolom ini.

Required string length: 1 - 512

Respons

Status diperbarui. Respons hanya berisi session_id; ambil sesi yang diperbarui melalui Get Decision. Webhook status.updated akan terpicu setelah perubahan diterapkan. Mengulangi Approved atau Declined mengembalikan isi respons yang sama dan tidak mengubah apa pun.

session_id
string<uuid>

UUID sesi yang diperbarui.

Terakhir diubah pada 7 November 2026