Skip to main content
POST
/
face-search
curl -X POST \
  "https://verilock.io/api/v1/face-search" \
  -H "Authorization: Bearer qi_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "session_id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "threshold": 90
  }'
import requests

response = requests.post(
    "https://verilock.io/api/v1/face-search",
    headers={
        "Authorization": "Bearer qi_live_your_api_key_here",
        "Content-Type": "application/json",
    },
    json={
        "session_id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "threshold": 90,
    },
)
const res = await fetch('https://verilock.io/api/v1/face-search', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer qi_live_your_api_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    session_id: 'ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890',
    threshold: 90,
  }),
});
{
  "id": "fs_d4e5f6a1-b2c3-7890-fedc-ba0987654321",
  "duplicate_found": true,
  "highest_similarity": 97.82,
  "matches": [
    {
      "face_id": "aws-face-id-xxx",
      "similarity": 97.82,
      "session_id": "ses_previous-session-uuid",
      "external_image_id": "session-ses_previous-session-uuid"
    }
  ],
  "threshold_used": 90.00
}
{
  "id": "fs_d4e5f6a1-...",
  "duplicate_found": false,
  "highest_similarity": null,
  "matches": [],
  "threshold_used": 90.00
}
Search a selfie against all previously verified faces in your organization’s collection. Detects duplicate identities — where the same person verified under different names or credentials.

Search for Duplicates

session_id
string
required
The session whose selfie will be used as the search query.
threshold
number
Minimum similarity score to consider a match (50–100). Default: 90.
curl -X POST \
  "https://verilock.io/api/v1/face-search" \
  -H "Authorization: Bearer qi_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "session_id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "threshold": 90
  }'
import requests

response = requests.post(
    "https://verilock.io/api/v1/face-search",
    headers={
        "Authorization": "Bearer qi_live_your_api_key_here",
        "Content-Type": "application/json",
    },
    json={
        "session_id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "threshold": 90,
    },
)
const res = await fetch('https://verilock.io/api/v1/face-search', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer qi_live_your_api_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    session_id: 'ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890',
    threshold: 90,
  }),
});
{
  "id": "fs_d4e5f6a1-b2c3-7890-fedc-ba0987654321",
  "duplicate_found": true,
  "highest_similarity": 97.82,
  "matches": [
    {
      "face_id": "aws-face-id-xxx",
      "similarity": 97.82,
      "session_id": "ses_previous-session-uuid",
      "external_image_id": "session-ses_previous-session-uuid"
    }
  ],
  "threshold_used": 90.00
}
{
  "id": "fs_d4e5f6a1-...",
  "duplicate_found": false,
  "highest_similarity": null,
  "matches": [],
  "threshold_used": 90.00
}

Get Search Result

GET /v1/face-search/{id}
Retrieve a previous face search result by ID.

How It Works

1

Face indexing

When a session is approved, the selfie is automatically indexed into your organization’s face collection.
2

Search query

When you call POST /face-search, the session’s selfie is compared against all indexed faces in your collection.
3

Duplicate detection

If a match exceeds the threshold (self-matches excluded), it’s flagged as a duplicate. A face.duplicate_found webhook is dispatched.
Face collections are per-organization. Cross-organization searches are not supported.