Langsung ke konten utama

Overview

Face Search adalah pencarian biometrik 1:N: Didit mengambil wajah terbesar yang terdeteksi di user_image Anda dan mencarinya di indeks Face Search aplikasi Anda — wajah yang didaftarkan dari sesi verifikasi, panggilan API mandiri yang disimpan, unggahan wajah langsung ke profil pengguna, serta daftar blokir/izinkan Anda. Ini berbeda dari Face Match, yang bersifat 1:1 — Face Match membandingkan swafoto dengan potret pada dokumen tertentu, sementara Face Search menanyakan “apakah kita pernah melihat orang ini di suatu tempat sebelumnya?”. Dua perilaku penting untuk dipahami sebelum Anda menguraikan laporan:
  • Hanya kecocokan daftar blokir yang ditolak. face_search.status bernilai Declined hanya ketika peringatan FACE_IN_BLOCKLIST atau POSSIBLE_FACE_IN_BLOCKLIST dipicu. Kecocokan duplikat saja mengembalikan Approved — periksa matches dan warnings, bukan hanya status.
  • Persistensi dan pendaftaran opsional. Saat save_api_request=true (default), panggilan tersebut disimpan sebagai sesi bertipe API dan wajah yang dicari didaftarkan ke dalam indeks Face Search Anda. Wajah yang didaftarkan oleh panggilan Face Search dikecualikan dari hasil Face Search mendatang, sehingga pencarian berulang tidak akan pernah cocok satu sama lain. Teruskan save_api_request=false untuk kueri satu kali: tidak ada yang disimpan dan wajah tidak didaftarkan.

Tempat hasil ditampilkan

Face Search adalah API mandiri. Hasil pencarian dikembalikan secara sinkron, hanya dalam respons POST /v3/face-search/, sebagai objek tunggal face_search di tingkat atas:
Tidak ada array face_searches[] di mana pun — konvensi array jamak yang digunakan oleh id_verifications[], aml_screenings[], dan liveness_checks[] pada endpoint keputusan sesi tidak berlaku di sini. Saat save_api_request=true (default), panggilan tersebut juga disimpan sebagai sesi bertipe API:
  • Konsol Bisnis — sesi tersebut muncul di daftar sesi Anda beserta gambar pencarian, kecocokan, dan peringatan.
  • GET /v3/session/{sessionId}/decision/ — dapat diambil menggunakan request_id yang dikembalikan sebagai ID sesi. Data yang disimpan muncul sebagai entri FACE_SEARCH di features[] dan sebagai item liveness_checks[] yang memuat matches yang tersimpan (dengan nilai match_image_url yang baru ditandatangani) serta warnings — bukan sebagai objek face_search.
Saat save_api_request=false, request_id adalah UUID korelasi sementara: sesi tidak pernah disimpan, sehingga tidak dapat diambil dari Konsol atau endpoint keputusan.

Skema

Lihat Face Search di referensi Model Data untuk tabel kolom kanonis. Bentuk di bawah ini mencerminkan apa yang sebenarnya dikembalikan oleh endpoint saat runtime.
Catatan kolom:
  • matches[] dibatasi maksimal 5 entri di atas ambang kemiripan, diurutkan berdasarkan kemiripan secara menurun (search_type=blocklisted_or_approved memberi peringkat entri daftar blokir terlebih dahulu, kemudian daftar izin, lalu kesamaan).
  • source memberi tahu Anda dari mana wajah yang cocok didaftarkan: session — sesi verifikasi atau panggilan API mandiri yang disimpan; imported — wajah yang diunggah langsung ke profil pengguna; list_entry — wajah yang dilampirkan ke salah satu daftar Anda; retained_template — templat biometrik tanpa gambar yang disimpan aplikasi setelah menghapus sesi sumber. session_id, session_number, status, dan api_service bernilai null untuk kecocokan imported, list_entry, dan retained_template.
  • Kecocokan retained_template membawa vendor_user_id, vendor_data, dan biometric_template_id, serta selalu null untuk match_image_url, user_details, dan semua hal yang terkait dengan sesi: sesi yang menghasilkan wajah tersebut sudah tidak ada lagi dan templat tersebut tidak menyimpan data gambar atau identitas. is_blocklisted selalu false untuk templat yang disimpan; wajah yang masuk daftar blokir dilaporkan secara terpisah sebagai kecocokan list_entry. Hapus templat dengan DELETE /v3/biometric-templates/{biometric_template_id}/.
  • api_service adalah tipe API mandiri dari sesi yang cocok (huruf besar, misalnya PASSIVE_LIVENESS) dan null jika wajah yang cocok berasal dari sesi verifikasi alur kerja reguler.
  • user_details berasal dari verifikasi dokumen sesi yang cocok. Untuk kecocokan source: imported, nilai ini diisi dari profil pengguna (full_name diisi, document_type/document_number null); nilai ini null saat tidak ada data identitas (misalnya sesi khusus liveness).
  • Peringatan menggunakan bentuk yang lebih sederhana dibandingkan dengan peringatan alur kerja: tidak ada node_id. Kontrak respons yang terdokumentasi (FaceSearchResponseSerializer) mendeklarasikan lima kolom risk, additional_data, log_type, short_description, long_description; payload runtime juga membawa feature, yang di sini selalu bernilai "LIVENESS". Lihat Peringatan Face Search.
  • Kecocokan pengguna yang sama tidak dikecualikan — tidak seperti deteksi duplikat alur kerja, endpoint mandiri tidak memfilter sesi sebelumnya dengan vendor_data yang sama, sehingga pengguna sah yang kembali akan cocok dengan sesi mereka sebelumnya.

Nilai status

face_search.status tingkat atas diturunkan dari warnings[]. status tingkat kecocokan mencerminkan hasil verifikasi sesi yang cocok dan bersifat independen. Catatan: jika gambar pencarian tidak berisi wajah yang dapat dideteksi, API mengembalikan HTTP 400 dengan {"error": "No face detected in the image"} sebelum objek face_search dibuat — tidak ada status Declined untuk kasus tersebut. Kredit yang tidak mencukupi mengembalikan HTTP 403 sebelum pemrosesan gambar apa pun.

Contoh

Disetujui — kecocokan duplikat, tidak ada daftar blokir

Ditolak — kecocokan daftar blokir

Terkait

Ketika save_api_request=true, nilai match_image_url adalah URL berumur pendek yang ditandatangani — panggil kembali endpoint keputusan sesi dengan request_id yang dikembalikan untuk mendapatkan URL baru. Ketika save_api_request=false, nilai tersebut merupakan jalur penyimpanan internal dan tidak dapat diunduh secara langsung. Simpan hanya id sesi yang cocok, status, dan similarity_percentage di sisi Anda — jangan menyimpan gambar biometrik yang mendasarinya.
Terakhir diubah pada 7 November 2026