Read this first — FaceAuth comes in two forms.This API is the form where you implement the camera UI yourself and send the captured image. It does not support Active Liveness, so it cannot block spoofing attempts such as replaying a phone screen or holding up a still photo. If you need real-capture (liveness) verification, use the Face Auth URL method.→ Comparison of both methods and the URL guide: FaceAuth Overview · FACE AUTH Guide
rejected, the request itself was processed normally, so the response is 201 Created.
1. Base URL
POST/Face-auth
2. Authentication
Include the FaceAuth project API key in thex-api-key header.
x-api-key
3. Request Example
The request usesmultipart/form-data.
POST/Face-auth
4. Request Body
string
required
The ID of the approved KYC submission used as the comparison reference. It must belong to the same FaceAuth project.
file
required
The face image file to compare. It must be a non-empty image file. When PPE options (head cover, face cover) are in use, all safety equipment must be clearly visible in the image for accurate detection.
base64 strings are not supported. Send the image as a file.string
Your own user identifier.
string
The value of custom field 1.
string
The value of custom field 2.
string
The value of custom field 3.
- Undefined fields, duplicate copies of the same field, and a missing
faceImageorsubmissionIdare not allowed. userId,cf1,cf2, andcf3are stored with the submission but are not included in lookup responses. Check them in the dashboard or via the FaceAuth webhook.
5. Response
5-1. Success
A successful creation returns201 Created with a FaceAuthSubmission object. Use its authId as the path parameter of subsequent single lookup, image download, and delete requests.
result.json
submitTypeis alwaysapi.deleteTimeis alwaysnull.signalsis alwaysnull. Those values are collected only on the Face Auth URL screen.result.activeLivenessScoreis alwaysnull. Active Liveness does not run in the API method.
The POST response and a later single lookup of the same
authId are the same object. If you need Active Liveness, use the Face Auth URL flow.5-2. Rejection
result.json
5-3. Rejection codes (failCode)
Face_Occluded_fail and Face_cover_fail look alike but have opposite causes. The first means the submission was rejected because the face was covered; the second means it was rejected because protective equipment was not worn. Turning both policies on can put them in conflict, so use only the one that fits your case.Getting Face_cover_fail or Head_cover_fail for a bare face is expected behaviour: it means a policy requiring protective equipment is turned on. If you do not need that policy, turn it off in the project settings.6. Error Responses
Errors returned by the ARGOS application use the{ code, message } format. 401 and some 403 responses are blocked at the authentication layer and do not follow that format — see FaceAuth Common Reference — Authentication layer errors.
The table above covers the codes returned by the POST /v3/face-auth API method. For the error codes of the Face Auth URL method (
PV-40015, SE-50010–SE-50014, and others) and the wording users actually see, refer to Face Auth URL Validation and Error Handling.