Nodeflux Central
Face Search

API Reference — Face Search

Endpoint untuk mencari kandidat wajah, membandingkan dua wajah secara langsung, dan mengambil daftar keyspace yang tersedia.

Semua endpoint memerlukan otentikasi. Untuk integrasi, kirim header X-Api-Key: <key> di setiap request tanpa header Authorization. Bearer token (Authorization: Bearer <access_token>, berlaku 30 menit) hanya untuk aplikasi yang menampilkan login Lenz ke penggunanya sendiri dan wajib menyertakan X-Integration-Signature. Basis URL mengikuti variabel lingkungan VITE_API_URL yang dikonfigurasi pada instalasi Lenz. Lihat Otentikasi untuk memilih jalur yang tepat.

Header x-search-method bersifat opsional dan tidak mengubah hasil pencarian — sumber pencarian ditentukan oleh field keyspace di body. Namun sertakan header ini bila pencarian Anda perlu tercatat di Face Search Logs untuk keperluan audit; request tanpa header ini tidak dicatat.


Pencarian Kandidat Wajah

Endpoint utama untuk mencari wajah yang mirip dengan foto referensi — endpoint yang sama dipakai tab Tidak Terdaftar dan Semua Sumber di halaman Face Search. Mengembalikan daftar face_id kandidat beserta skor similarity (0.0–1.0) dari database Fremis N.

Alur integrasi:

  1. Konversi foto referensi ke JPEG, lalu encode ke base64 (tanpa prefix data:)
  2. Kirim ke POST /api/fremisn/v1/face/recognition:
    • kosongkan keyspace untuk mencari di wajah terdaftar, atau
    • isi keyspace: "anonymous" untuk mencari di wajah tidak terdaftar yang pernah terdeteksi kamera
  3. Untuk hasil wajah terdaftar, ambil data identitas lewat GET /api/enrolled-faces/get-by-face-ids?face_ids=<id1>,<id2>. Kandidat yang tidak punya data enrollment dapat diabaikan.
  4. Untuk melihat riwayat pergerakan kandidat, buka /face-search?id=<face_id> atau panggil endpoint Tracking.

UI Lenz meminta 8 kandidat (additional_params.candidateCount: 8). Untuk mencari di kedua sumber sekaligus seperti tab Semua Sumber, kirim dua request (tanpa keyspace dan dengan keyspace: "anonymous"), gabungkan hasilnya, lalu urutkan berdasarkan similarity.

Pencarian Kandidat Wajah

POST
/api/fremisn/v1/face/recognition

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Header Parameters

x-search-method?string

Opsional — label untuk audit log. Bila dikirim, pencarian dicatat di Face Searching Logs. Gunakan face-search-candidates untuk pencarian wajah terdaftar dan face-match-anonymous untuk wajah tidak terdaftar. Header ini tidak menentukan sumber pencarian; sumbernya ditentukan field keyspace.

Value in"face-search-candidates" | "face-match-anonymous"

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://lenz.example.com/api/fremisn/v1/face/recognition" \  -H "x-search-method: face-search-candidates" \  -H "Content-Type: application/json" \  -d '{    "image": "/9j/4AAQSkZJRgABAQAAAQABAAD...",    "additional_params": {      "candidateCount": 8    }  }'
{  "result": {    "face_recognition": {      "candidates": [        {          "face_id": "abc123def456",          "similarity": 0.92,          "variation": "9876543210"        },        {          "face_id": "xyz789uvw012",          "similarity": 0.78,          "variation": "1234567890"        }      ]    }  }}
{  "ok": false,  "message": "invalid image format"}
{  "ok": false,  "message": "unauthorized"}
{  "ok": false,  "message": "internal server error"}

Perbandingan Dua Wajah (Face Match)

Endpoint untuk membandingkan dua wajah secara langsung dan mendapatkan skor kemiripan. Endpoint ini hanya tersedia lewat API — halaman Face Search tidak memiliki tab perbandingan. Mendukung dua mode:

  • Gambar vs Gambar — bandingkan dua foto base64 tanpa referensi ke database (x-search-method: face-match-image)
  • Terdaftar vs Gambar — bandingkan face_id enrollment yang sudah ada dengan foto baru (x-search-method: face-match-faceid)

Perbandingan Dua Wajah (Face Match)

POST
/api/fremisn/v2/face/match

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Header Parameters

x-search-method?string

Opsional — label untuk audit log; bila dikirim, perbandingan dicatat di Face Searching Logs. face-match-image: dua foto base64. face-match-faceid: face_id enrollment vs foto. face-match-anonymous: mode anonim.

Value in"face-match-image" | "face-match-faceid" | "face-match-anonymous"

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://lenz.example.com/api/fremisn/v2/face/match" \  -H "x-search-method: face-match-image" \  -H "Content-Type: application/json" \  -d '{    "face_a": {      "image": "/9j/4AAQSkZJRgABAQAAAQABAAD...",      "keyspace": "default"    },    "face_b": {      "image": "/9j/4AAQSkZJRgABAQAAAQABAAD..."    }  }'
{  "similarity": 0.87}
{  "ok": false,  "message": "invalid image format"}
{  "ok": false,  "message": "unauthorized"}
{  "ok": false,  "message": "internal server error"}

Keyspace

Endpoint untuk mengambil daftar keyspace yang tersedia di mesin Fremis N. Keyspace anonymous adalah keyspace khusus berisi wajah tidak terdaftar yang pernah terdeteksi kamera.

Daftar Keyspace

GET
/api/fremisn/v1/get-all-keyspaces

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Response Body

application/json

application/json

application/json

curl -X GET "https://lenz.example.com/api/fremisn/v1/get-all-keyspaces"
{  "keyspaces": [    {      "name": "default"    },    {      "name": "vip"    },    {      "name": "anonymous"    }  ]}
{  "ok": false,  "message": "unauthorized"}
{  "ok": false,  "message": "internal server error"}

On this page