Docs / Face Recognition And Liveness SDK / Authentication And API Keys
Authentication And API Keys
How your systems call the Face SDK API with API keys, which permissions (scopes) a key can have, and how errors and rate limits are returned.
Send A Key
Every API call needs an API key, in either header, except a few read-only service calls (GET /healthz, GET /v2/info, GET /v2/licence, GET /v2/models, GET /v2/openapi.json) and the first-run setup:
curl http://localhost:8080/v2/identities -H "x-api-key: $API_KEY"
curl http://localhost:8080/v2/identities -H "Authorization: Bearer $API_KEY"
The first key is printed once at the first start. Make more in the dashboard under API keys (admins), each shown once: the server keeps only a hash.
Scopes
Give each system its own key with only the permissions it needs.
| Scope | Allows |
|---|---|
enrol |
Add, list and delete people |
verify |
Compare two photos, check a photo against a person, detect faces |
identify |
Search a face among enrolled people |
liveness |
Liveness checks |
streams |
Cameras, the event stream and webcam streams |
admin |
Settings, keys, audit and request logs |
A call without the scope answers 403 FORBIDDEN, naming the missing scope.
Requests And Answers
- Send photos as multipart form data (
-F image=@photo.jpg) or as base64 in JSON. JPEG, PNG, WebP and BMP, up to 10 MB. - Answers are JSON. Every match decision carries the similarity and the threshold that decided it.
Errors
Errors are application/problem+json documents with a stable code:
{
"type": "https://errors.arsa.technology/face-sdk/pose_yaw",
"title": "POSE_YAW",
"status": 422,
"code": "POSE_YAW",
"detail": "the face is turned too far"
}
| Status | Codes |
|---|---|
| 400 | BAD_REQUEST, UNSUPPORTED_IMAGE, IMAGE_DIMENSIONS |
| 401 | UNAUTHORIZED, LICENSE_INVALID |
| 403 | FORBIDDEN, FEATURE_DISABLED |
| 404 | NOT_FOUND |
| 409 | CONFLICT, POSSIBLE_DUPLICATE, NEEDS_REENROLMENT |
| 413 | PAYLOAD_TOO_LARGE |
| 422 | Photo problems: NO_FACE, MULTIPLE_FACES, FACE_TOO_SMALL, FACE_CROPPED, POSE_YAW, POSE_PITCH, POSE_ROLL, BLURRY, TOO_DARK, TOO_BRIGHT, UNEVEN_LIGHT, EYES_CLOSED, EXPRESSION, LOW_QUALITY, INCONSISTENT_ENROLMENT_IMAGES |
| 429 | RATE_LIMITED, LICENSE_LIMIT |
| 503 | QUEUE_FULL (retry shortly) |
The v1 API
Clients written for Face SDK v1 keep working: the v1 API is served at /api/v1 with the same paths, headers and fields. Use a v2 key as x-key-secret. See Changes From v1.
API v2. Updated 2026-11-12