Langsung ke konten utama
Laporan Verifikasi Telepon mencatat seluruh hasil dari tantangan OTP telepon: kepada siapa kami mengirimkan kode, operator dan saluran mana yang menanganinya, berapa kali percobaan yang dilakukan, apakah nomor tersebut sekali pakai atau VoIP, serta setiap kecocokan lintas sesi terhadap daftar blokir Anda atau sesi pengguna lain. Halaman ini mendokumentasikan format JSON yang dikembalikan oleh endpoint keputusan sehingga Anda dapat mengurai hasil OTP, metadata operator, dan tanda risiko untuk setiap nomor yang diverifikasi.
Laporan verifikasi telepon Didit yang menunjukkan hasil OTP, metadata operator, dan tanda risiko

Ringkasan

Laporan telepon dibuat setiap kali node alur kerja menjalankan fitur Verifikasi Telepon. Setiap laporan mewakili satu tantangan OTP terhadap satu nomor telepon dan berisi:
  • Nomor telepon yang diuraikan menjadi awalan, nomor nasional, dan format E.164 lengkap, ditambah kode negara ISO dan nama negara.
  • Metadata operator (name, type) yang diidentifikasi dari jaringan tujuan.
  • Tanda risiko boolean (is_disposable, is_virtual) yang diperoleh dari analisis jenis saluran telepon.
  • Saluran pengiriman sebenarnya yang digunakan (verification_method) dan jumlah percobaan pengiriman OTP.
  • Log kronologis lifecycle[] dari setiap pengiriman, percobaan ulang, peristiwa pengiriman, dan percobaan pemeriksaan kode.
  • Array matches[] yang memunculkan nomor yang sama pada sesi lain — status apa pun, di seluruh KYC, KYB, dan verifikasi API mandiri — atau daftar blokir Anda.
  • Array warnings[] — event risiko yang dikeluarkan selama verifikasi (lihat Peringatan Verifikasi Telepon).
  • Sebuah node_id yang mengidentifikasi node graf alur kerja mana yang menghasilkan laporan tersebut (hanya sesi V3).
Dalam alur verifikasi yang di-hosting, Didit menjalankan pertukaran OTP untuk Anda. Untuk integrasi API langsung, alur yang sama terdiri dari dua panggilan — POST /v3/phone/send/ untuk mengirimkan kode dan POST /v3/phone/check/ untuk memvalidasi input pengguna. OTP yang masih tertunda tetap valid selama 5 menit dari pengiriman pertama (coba lagi tidak memperpanjang jendela waktu). Dalam sesi alur kerja, pengguna mendapatkan 2 percobaan pengiriman OTP (phone_max_retries) dan 2 percobaan input kode (phone_max_check_attempts) secara default — keduanya dapat disesuaikan per node alur kerja; setelah salah satu batas tersebut tercapai, langkah akan ditetapkan sebagai Declined dengan VERIFICATION_CODE_ATTEMPTS_EXCEEDED. API telepon mandiri mengizinkan 3 percobaan input kode per verifikasi.

Di mana laporan ini muncul dalam respons API

Endpoint keputusan (GET /v3/session/{sessionId}/decision/) mengembalikan laporan telepon dengan kunci array dalam bentuk jamak phone_verifications. Array ini berisi satu entri per node Verifikasi Telepon dalam graf alur kerja — biasanya satu, tetapi alur peningkatan verifikasi dapat menghasilkan beberapa entri.
Nilai null berarti belum ada langkah Verifikasi Telepon yang dijalankan. Lakukan iterasi pada array tersebut (alih-alih membaca phone_verifications[0]) ketika alur kerja Anda dapat mengumpulkan lebih dari satu nomor telepon.

Skema

Skema kanonikal kolom demi kolom tersedia di halaman Model data.

Nilai status

Jenis event siklus hidup

lifecycle[] diurutkan secara kronologis. Setiap event memiliki type, timestamp, details, dan fee yang dapat ditagih (jika berlaku): Payload details bergantung pada kelompok event:
  • Event pengiriman (PHONE_VERIFICATION_MESSAGE_SENT, PHONE_VERIFICATION_RETRY_MESSAGE_SENT, PHONE_VERIFICATION_BLOCKED) — { status, reason, channel, actual_channel }. status bernilai Success, Retry, atau Blocked; reason bernilai null kecuali pengiriman diblokir (invalid_phone_number, repeated_attempts, suspicious, spam, unknown); channel adalah saluran yang diminta dan actual_channel adalah saluran yang benar-benar digunakan untuk mengantarkan pesan (misalnya pengiriman WhatsApp yang dialihkan ke SMS).
  • Event pengiriman (delivery) (PHONE_DELIVERY_DELIVERED, PHONE_DELIVERY_UNDELIVERABLE) — { channel, status } dengan status delivered atau undeliverable.
  • Event pemeriksaan (VALID_CODE_ENTERED, INVALID_CODE_ENTERED) — { code_tried, status } dengan status Approved, Declined, Failed, atau Expired or Not Found.
  • Event status akhir — null, kecuali PHONE_VERIFICATION_DECLINED / PHONE_VERIFICATION_IN_REVIEW, yang memuat { "reason": "<risk code>" } (misalnya PHONE_NUMBER_IN_BLOCKLIST).
fee pada event pengiriman adalah total harga pengiriman tersebut: harga operator atau WhatsApp ditambah biaya Didit $0.02, atau hanya biaya Didit $0.02 untuk kode WhatsApp yang dikirim dari nomor WhatsApp Business Anda sendiri. Ini merupakan perkiraan harga sampai pengiriman dikonfirmasi, kemudian menjadi jumlah aktual yang ditagihkan. Hanya pengiriman Blocked yang dijamin gratis: pengiriman lainnya akan dikenakan biaya saat verifikasi selesai atau kedaluwarsa, bahkan jika pengiriman tidak pernah dikonfirmasi atau pesan tidak dapat dikirimkan. Event pengiriman (delivery), pemeriksaan, dan status selalu memuat fee: 0.

Kecocokan lintas-sesi

matches[] mencatat sesi lain dalam aplikasi yang sama tempat nomor yang sama terlihat — di seluruh verifikasi KYC, KYB, dan API mandiri, apa pun statusnya — ditambah kecocokan dari daftar blokir yang dikonfigurasi dalam daftar API Manajemen. Sesi yang memiliki vendor_data yang sama dengan sesi saat ini dikecualikan (pengguna akhir yang sama tidak cocok dengan dirinya sendiri), dan array dibatasi hingga 5 entri. Saat nomor tersebut ada di daftar blokir Anda tetapi tidak ada sesi yang cocok yang masuk daftar blokir, entri sintetis dengan source: "list_entry" (semua kolom sesi bernilai null) akan ditambahkan di awal array.

Contoh

Disetujui — WhatsApp OTP, operator seluler

Ditolak — nomor VoIP yang masuk daftar blokir

Pengguna memasukkan OTP yang valid, tetapi finalisasi menemukan nomor tersebut di daftar blokir aplikasi (penolakan otomatis) dan menandai tipe saluran VoIP-nya (voip_number_action dibiarkan pada NO_ACTION, sehingga dicatat sebagai information). Karena tidak ada sesi yang cocok yang masuk daftar blokir, kecocokan daftar blokir muncul sebagai kecocokan sintetis list_entry.

Terkait

Terakhir diubah pada 7 November 2026