Face Enrollment
Creates a new facial biometric template that can be used later for identity verification. This operation supports optional liveness and deepfake checks during enrollment.
Endpoint
POST https://cloud.ooto-ai.com/api/v1.0/add
Request Format
Method: POST
Content-Type: multipart/form-data
Query parameters: check_liveness, check_deepfake
Query Parameters
Name
Type
Required
Description
check_liveness
Boolean
No
Enable liveness check (default: false)
check_deepfake
Boolean
No
Enable deepfake check (default: false)
Form Data
Field
Type
Required
Description
photo
File
Yes
JPEG or PNG image containing exactly one face
templateId
String
No
Optional custom ID for the face template
Authentication Headers
APP-ID: Your application's unique identifier.
APP-KEY: Your application's authentication key.
Example Request (cURL)
curl -X POST --location 'https://cloud.ooto-ai.com/api/v1.0/add?check_liveness=true&check_deepfake=true' \
--header 'APP-ID: <put_app_id_here>' \
--header 'APP-KEY: <put_app_key_here>' \
--form 'photo=@"/path/to/photo"' \
--form 'templateId=<UUID>'
Replace «put_app_id_here», «put_app_key_here» with your actual credentials and the path to your selfie image.
Successful Response (HTTP 200)
{
"transactionId": "379875cf-9e21-47cf-95bb-4a3d7c373638",
"result": {
"enroll": {
"templateId": "16de28ea-dd15-4005-9a42-539e911db2d3"
},
"quality": {
"pitch": 5.798101723194122,
"yaw": -2.267319895327091,
"roll": -0.3308084886521101,
"uniformity": {
"value": 0.7976967765996249,
"fine": true
},
"exposure": {
"value": 0.6352452907096943,
"fine": true
},
"contrast": {
"value": 0.780912373462111,
"fine": true
},
"flare": {
"score": 0.026086460798978806,
"fine": true
},
"blur": {
"score": 0.000007942797310533933,
"fine": true
},
"macroblocks": {
"score": 8.378465921055067e-9,
"fine": true
},
"distortion": {
"score": 0.907139241695404,
"fine": false
},
"occlusion": {
"score": 0.0005318471812643111,
"fine": true
},
"emotion": {
"score": 0.020526384934782982,
"fine": true
},
"leftEyeClosed": {
"score": 0.004296362400054932,
"fine": true
},
"rightEyeClosed": {
"score": 0.000009238719940185547,
"fine": true
},
"crfiqa": {
"score": 0.5999192595481873,
"fine": true
}
},
"demography": {
"age": 59,
"gender": "male",
"race": "latino hispanic"
},
"box": {
"x": 655,
"y": 1083,
"w": 937,
"h": 1210
},
"landmarks": [
[
912,
1580
],
[
1344,
1583
],
[
1125,
1835
],
[
946,
1996
],
[
1297,
1999
]
]
}
}
Error response (HTTP 400)
{
"transactionId": "9191079a-4f80-4c8a-9a4b-528af2cfd3c4",
"result": {
"status": "error",
"code": 5,
"info": "can not detect face"
}
}
Engine Errors
Code
Info
1
photo should not be empty
2
wrong mime-type in input data
3
photo size is 0 bytes
4
can not decode image, check it is valid jpeg or png file
5
can not detect face
6
more than one face detected on photo
9
can not extract features from sample, probably it is too small
Best Practices
Use sharp, high-quality, frontal-face photos
Face size ≥ 200×200 pixels in image
Avoid masks, sunglasses, filters
Only one face must be present in the image
Last updated