Passive Liveness
Additional Validations Added
Both the passive image and passive video liveness have validations in place to reduce the number of false negatives and false positives.
For example, always make sure that the image or video has a minimum resolution of 800 x 800 and a maximum resolution of 2000 x 2000 so that the model is able to accurately detech the liveness of the face. Images and videos not in this range will be rejected.
Similarly, if the image or video is not taken from a mobile camera, and camera data is missing from the meta-data of the file, it is highly likely that the file will be rejected to prevent an image downloaded from the internet passing the liveness test.
EXIF Metadata Checks
This API only allows images which have the existence of the following EXIF Metadata tags:
FileSourceMakeDateTimeDuring development, you can skip these metadata checks by using the optional boolean key
skip_metadata_validationin the request body.
Best Practices and Sample UI:
- Minimum resolution: 800px x 800px and Maximum resolution: 2000px x 2000px
- The face should be close to the camera: Between the two eyes, there should be atleast 400px.
- Glasses/spectacles increase the false negativity rate
- Hats/caps/masks increase the false negativity rate.
- The face should be well lit.
Sample UI Copy that can be used in cadence with the following APIs to ensure your end-users follow best practices:
Alternatively, you can add the above checks before the image is fed to the Passive Liveness API, and avoid showing these advisories to the end user.
Note: Some liveness test flows do not allow the upload of images from the device's local storage.
Passive Video Liveness
Liveness Verification is the ability to detect the presence of a live user, rather than a representation such as a photo, a fake video, or a mask.
- Various extensions supported for Liveness Verification API are -
- .mp4
- .webm
- The maximum file size limit (both on upload and URL) is 20 MB.
- The maximum duration of the video (both on upload and URL) is 10 sec.
curl --location --request POST 'https://in.staging.decentro.tech/v2/kyc/forensics/video_liveness' \
--header 'client_id: <your_client_id>' \
--header 'client_secret: <your_client_secret>' \
--header 'module_secret: <your_module_secret>' \
--form 'reference_id="02a05f79-4d10-47d6-89a9-6e5b54160e3e"' \
--form 'consent="true"' \
--form 'consent_purpose="for bank account purpose only"' \
--form 'video=@"/path/to/file"' \
--form 'video_url=""'
{
"decentroTxnId": "DECXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"status": "SUCCESS",
"responseCode": "S00000",
"message": "Liveliness check performed successfully",
"data": {
"status": "SUCCESS",
"confidence": "1.0"
},
"responseKey": "success_liveness_check"
}
Passive Image Liveness
We know it's hard to do a Liveness check with a video of the customer. It results in the following -
- High response time
- Limited file type support
- And hard to convince customers to record a video for a liveness check
To solve the above issues, we have brought Passive Liveness for our customers -
- Liveness check with just an image/selfie
- Super fast response time
- Multiple file support - JPG, JPEG, and PNG
- Simple request body parameters
- An easy and clear response message with a liveness score
- Easy for the customer to click or upload an image
Use Cases
- Identity Fraud Prevention
- Digital Onboarding
- Full KYC using Passive Liveness
Sample Request & Response
Available in both
multipart/formandapplication/jsonrequest contracts
curl --location 'https://in.staging.decentro.tech/v2/kyc/forensics/liveness/passive' \
--header 'client_id: <your_client_id>' \
--header 'client_secret: <your_client_secret>' \
--header 'module_secret: <your_module_secret>' \
--form 'reference_id="ManishGupta"' \
--form 'consent="true"' \
--form 'purpose="for bank verification only"' \
--form 'image=@"/path/to/file"'
curl --location 'https://in.staging.decentro.tech/v3/kyc/farsight/liveness/passive' \
--header 'client_id: XXXXX' \
--header 'client_secret: XXXXXX' \
--header 'module_secret: XXXXXXXX' \
--header 'Content-Type: application/json' \
--data '{
"reference_id": "XXXXXXXX",
"consent": true,
"purpose": "XXXXXXX",
"image": "<BASE64>"
}'
{
"decentroTxnId": "DXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"status": "SUCCESS",
"responseCode": "S00000",
"message": "Passive liveness check performed successfully",
"data": {
"status": "SUCCESS",
"live": "yes",
"livenessScore": "85",
"needToReview": "no"
},
"responseKey": "success_liveness_check"
}
Response Codes and Messages
| Response Key | Message / Description | Status |
|---|---|---|
success_liveness_check | The image liveliness check successful. | SUCCESS |
error_invalid_image_source | This image might have been downloaded from another source. | FAILURE |
error_empty_image | This image field is empty, so pass an image. | FAILURE |
error_consent_false | The user consent required for this check. | FAILURE |
Updated about 16 hours ago
