The flow in four steps
1
Verify connectivity
GET /version with your Api-Key (it doesn’t require it, but this way you test the full header). It must return 200. Check the status code, not the body: its format is not part of the contract. If it fails, the problem is URL, network or proxy — there is nothing to debug on the API side yet.2
Prepare the images
JPEG or PNG, base64 without the
data: prefix and without line breaks. One face per image, frontal, well lit.3
Declare the operations
operations is a list of lists aligned with images: operations[i] applies to images[i]. If you omit it, every image runs biometric by default.4
Decide with the rule in the positive
status === 200 && biometric["0"]["1"] >= 70 confirms; anything else does not. The threshold details are in the introduction.Image requirements
To convert an image to base64:
The request body
The three ways to compare
If you store vectors to compare later, also store which methodology generated them and always compare with the same one. A
vu_v4 vector compared with euclidean_l2 yields scores on another scale and your threshold stops being valid.A batch does not tolerate partial failures
If you send 4 images and the third has no face, you do not get 3 results and one error: you get a single400 with imageNumber: 2 (0-based) and no results at all. There are no partial results. If your flow tolerates per-image failures, send one request per image.
Timeouts and retries
Before going to production
GET /versionreturns200from your production connectivity.- Your verification condition requires
200and a score ≥ 70 onbiometric["0"]["1"], and an unexpected response does not approve by exclusion. - If you changed
distanceMethodology, you calibrated your own threshold and did not reuse 70. - Your deserializer indexes results by string (
"0","1") and toleratesinferenceConfidencewith or withoutcode/confidence. - Your HTTP client tolerates error bodies that are not JSON (the plain-text 500s).
operationshas exactly one entry per image.- Images are at least 360 × 360 and JPEG quality is ≥ 90.
- You never retry a no-match or a
spoofing: truewith the same image. - The api-key lives in your backend, never in the mobile app or front-end.
- You send your own
infoper operation and log theidof every response. eventsstays disabled in production: the trace is for diagnostics.
Next: Responses
The biometric matrix field by field, the quality verdict that changes shape, and the nested antispoofing.