Langkah 1: Dapatkan Kredensial Anda
Ada dua cara untuk memperolehapi_key:
Opsi A: Pendaftaran secara programatik (tanpa browser)
Cocok untuk CI/CD dan agen AI. Dua panggilan API, yaituPOST /programmatic/register/ lalu POST /programmatic/verify-email/, akan mengembalikan api_key secara langsung.
→ Lihat Pendaftaran Programmatic untuk alur lengkap, aturan kata sandi, masa berlaku JWT, dan kebijakan penguncian.
Opsi B: Dari Didit Console
- Buka Didit Console.
- Buat atau pilih organisasi Anda.
- Buka Pengaturan → API & Webhook.
- Salin:
- Kunci API: digunakan sebagai header
x-api-keypada setiap panggilan verifikasi. - Kunci Rahasia Webhook: digunakan untuk memverifikasi tanda tangan HMAC webhook.
- Kunci API: digunakan sebagai header
Variabel lingkungan
Langkah 2: Buat Alur Kerja
Sebelum membuat sesi, Anda memerlukan alur kerja verifikasi. Alur kerja menentukan langkah verifikasi apa saja yang dilalui pengguna.Buat di Console
- Buka Didit Console → Alur kerja
- Klik Buat Alur Kerja
- Pilih templat dasar:
- Tambahkan fitur opsional:
- Salin ID Alur Kerja Anda.
Lihat Dokumentasi Alur Kerja untuk opsi konfigurasi yang lebih rinci.
Langkah 3: Buat Sesi Verifikasi
Panggil API untuk membuat sesi bagi pengguna Anda.Permintaan
Parameter Permintaan
Contoh Lengkap dengan Semua Opsi
expected_details.expected_document_types membatasi langkah verifikasi identitas
hanya pada jenis dokumen tertentu. Layar pemilihan dokumen hanya menampilkan
jenis yang diminta. Nilai yang diizinkan: P (paspor), ID (kartu identitas
nasional), DL (surat izin mengemudi), RP (izin tinggal), HIC (kartu
asuransi kesehatan), TC (kartu pajak), SSC (kartu jaminan sosial). Nilai
tidak peka huruf besar-kecil dan duplikat dihapus; nilai yang tidak dikenali
akan mengembalikan 400. Lihat Referensi Pembuatan Sesi untuk skema lengkap.Respons
201 Created:
Kolom Respons Utama
Idempotensi. Jika
vendor_data disertakan dan sudah ada sesi yang belum selesai
(Not Started, In Progress, Resubmitted, atau Awaiting User) dengan
vendor_data yang sama pada versi alur kerja terbaru yang dipublikasikan, sesi
yang ada tersebut akan dikembalikan (tetap 201) alih-alih membuat duplikat. Nilai
callback dan metadata sesi tersebut diperbarui ke nilai baru, dan status
mencerminkan sesi yang ada.Jika
x-api-key tidak ada, akan dikembalikan 403
dengan {"detail": "You do not have permission to perform this action."}, sama
dengan respons untuk kunci yang valid tetapi tidak memiliki izin. Kunci yang salah,
dicabut, atau kedaluwarsa akan mengembalikan 401. Kredit yang tidak cukup
mengembalikan 400. Lihat Referensi API Pembuatan Sesi untuk
dokumentasi lengkap.Langkah 4: Tampilkan Verifikasi kepada Pengguna
Pilih cara menampilkan alur verifikasi kepada pengguna Anda:Opsi A: SDK Native (direkomendasikan untuk mobile)
Gunakansession_token dengan SDK native untuk integrasi kamera, NFC, dan biometrik.
→ SDK iOS · SDK Android · React Native · Flutter
Opsi B: iframe InContext (direkomendasikan untuk web)
Sematkan verifikasi di halaman Anda menggunakanurl yang dikembalikan pada Langkah 3.
Opsi C: Pengalihan
Alihkan pengguna ke URL verifikasi.Opsi D: WebView Mobile
Untuk aplikasi mobile tanpa SDK native.Langkah 5: Menerima Hasil
Melalui Webhook (Direkomendasikan)
Webhook memberi tahu server Anda secara waktu nyata saat status verifikasi berubah. Pengaturan:- Buat tujuan webhook di Console (API & Webhook) atau melalui
POST /v3/webhook/destinations/denganwebhook_version: "v3"dan arraysubscribed_events(misalnya["status.updated"]) - Simpan
secret_shared_keyyang dikembalikan saat pembuatan: kunci ini adalah rahasia HMAC untuk semua varian tanda tangan - Terapkan endpoint webhook di server Anda
decision, setiap hasil per fitur dikirim sebagai array jamak (id_verifications[], nfc_verifications[], liveness_checks[], face_matches[], …), satu entri untuk setiap node dalam alur kerja. Ini adalah kontrak V3 dan bersifat tetap: jangan pernah menulis kode yang bergantung pada kunci tunggal nfc / id_verification / liveness.
decision hanya ada saat status bernilai Approved, Declined, In Review, atau Abandoned (event Resubmitted membawa resubmit_info sebagai gantinya). Didit menggunakan event_id yang sama di seluruh percobaan ulang dan tujuan distribusi, jadi gunakan itu sebagai kunci idempotensi Anda. Lihat Model data untuk setiap array jamak dan kolom.
Verifikasi tanda tangan (X-Signature-V2, direkomendasikan):
X-Signature-V2 adalah HMAC-SHA256 atas penyandian ulang kanonis dari badan JSON: float dengan nilai utuh diubah menjadi integer, kunci diurutkan secara rekursif, pemisah ringkas, dan Unicode dipertahankan.
X-Signature berbasis byte mentah, X-Signature-Simple yang sudah usang dan hanya memeriksa envelope pembungkus, serta cara memilih di antara keduanya. Didit mencoba ulang pengiriman yang gagal (5xx, 404, timeout) hingga 2 kali (sekitar 1 menit, lalu sekitar 4 menit) dan menghentikan pengiriman setelah 5 detik. Pastikan server Anda segera mengembalikan 2xx.
Melalui API (opsional)
Ambil payload keputusan yang sama kapan saja:decision di dalam payload webhook, dan endpoint ini dapat dipanggil pada titik mana pun dalam siklus hidup sesi. Gunakan webhook untuk pembaruan real-time dan sisakan panggilan API untuk pengisian data susulan, audit, dan pembangunan ulang. Endpoint /decision/ dibatasi 600 permintaan GET per menit per kunci API (lihat Batas laju). Untuk semantik error: session_id yang tidak dikenal mengembalikan 404 dengan {"detail": "Not found."}, kegagalan autentikasi muncul sebagai 403, dan endpoint ini tidak pernah mengembalikan 401. URL media dalam respons adalah tautan yang ditandatangani sebelumnya dan berumur pendek, jadi ambil segera dan jangan menyimpannya.
→ Referensi API untuk mengambil sesi
Contoh Kode Lengkap
Node.js / Express
Python / FastAPI
Status sesi
Ini adalah 10 nilai yang mungkin untukstatus, berupa string yang tepat dan peka huruf besar-kecil (perhatikan bahwa Kyc Expired menggunakan huruf K kapital tunggal):
Lihat Status verifikasi untuk siklus hidup lengkap, transisi, dan diagram Mermaid.
Langkah selanjutnya
- Pilih metode integrasi Anda:
- Aplikasi mobile → SDK Native
- Aplikasi web → SDK Web
- Konfigurasikan webhook: Webhook
- Rencanakan kapasitas: Batas laju
- Tangani setiap status: Status verifikasi
- Sesuaikan alur kerja Anda: Alur kerja
- Pastikan API dapat dijangkau: Healthcheck
Butuh bantuan?
- Dukungan: support@didit.me
- Onboarding terprogram: Pendaftaran terprogram