Active Liveness Verification✓

Our engine verifies the authenticity of a user through real-time, interactive actions to ensure they are physically present and not using static or spoofed images.

Overview

Active liveness check evaluates a face in an image to determine if it appears active, dynamic, or engaged. (An active face have a facial expression that conveys emotion or a sense of being present and involved in the moment, and might appear to be in motion or positioned in a way that suggests dynamism and energy.) This involves looking at features such as the facial expression, eye contact, movement, and lighting in the image to assess the level of energy or vitality conveyed by the face. It returns a response with details of the active features extracted from the image and the general confidence level determining whether the image is active of not.

🚧

Important!

Before you proceed, ensure you review the prerequisites for integrating to our APIs for a more detailed guide.

API Endpoint

https://api.verified.africa/sfx-verify/v3/id-service/

Headers

Our service accepts headers for authentication. See below the headers to pass to the API

HeaderTypeDescription
user IDStringThis is your user id retrieved from the portal. Check the getting started article to understand how to retrieve your user ID
ApiKeyStringThis is your api key retrieved from the portal. Check the getting started article to understand how to retrieve your apiKey

Request Parameters

ParameterRequiredDescriptionTest Data
verificationTypeyesThis field is used to identify the service being called. Ensure to use the value provided exactly as providedACTIVE-LIVELINESS-VERIFICATION
selfieyesThe selfie imageBase64 image
{
    "verificationType" : "ACTIVE-LIVELINESS-VERIFICATION",
    "selfie": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/"
}

Response Parameters

ParemeterTypeDescription
responseCodeStringPlease reference Response Codes page for details on all possible responses
descriptionStringThis is a description of the response received.
verificationTypeStringThe same verificationType passed in request will be returned here
verificationStatusStringThis field lets you know if the identity verification was successful. Options are:

VERIFIED: This means that the image passed the active liveness check.
NOT VERIFIED This means that the image did not pass active liveness check.
PENDING This status means that the verification could not be completed. Refer to the responseCode for the specific failure reason
transactionStatusStringThis indicates the wallet debit status. The options are successful or failed.
transactionReferenceStringIf you supplied a transactionReference, the same will be returned here. Else, we would generate a reference and return that to you in this field.
transactionDateStringDate the transaction was done
responseJsonboundingBox, ageRange, smile, eyeglasses, sunglasses, gender, beard, mustache, eyesOpen, mouthOpen, emotions, quality and confidence is retrieved from the service provider. A high confidence score shows the image is active and vice versa
{
    "responseCode": "00",
    "description": "Success",
    "verificationType": "ACTIVE-LIVELINESS-VERIFICATION",
    "verificationStatus": "VERIFIED",
    "transactionStatus": "SUCCESSFUL",
    "transactionReference": "1628016393774-LFWBRJUS",
    "transactionDate": "1680253863429",
    "searchParameter": null,
    "callBackUrl": null,
    "livenessScore": 0.0,
    "paymentRef": null,
    "response": [
        {
            "boundingBox": {
                "width": 0.2223877,
                "height": 0.48005238,
                "left": 0.3851756,
                "top": 0.17001979
            },
            "ageRange": {
                "low": 24,
                "high": 34
            },
            "smile": {
                "value": false,
                "confidence": 93.75143
            },
            "eyeglasses": {
                "value": false,
                "confidence": 92.556175
            },
            "sunglasses": {
                "value": false,
                "confidence": 99.99632
            },
            "gender": {
                "value": "Male",
                "confidence": 99.59345
            },
            "beard": {
                "value": true,
                "confidence": 98.15955
            },
            "mustache": {
                "value": false,
                "confidence": 57.567097
            },
            "eyesOpen": {
                "value": true,
                "confidence": 98.63709
            },
            "mouthOpen": {
                "value": false,
                "confidence": 80.23638
            },
            "emotions": [
                {
                    "type": "CALM",
                    "confidence": 98.7182
                },
                {
                    "type": "SURPRISED",
                    "confidence": 6.3975477
                },
                {
                    "type": "FEAR",
                    "confidence": 5.909405
                },
                {
                    "type": "SAD",
                    "confidence": 2.1899593
                },
                {
                    "type": "ANGRY",
                    "confidence": 0.25669572
                },
                {
                    "type": "DISGUSTED",
                    "confidence": 0.23751277
                },
                {
                    "type": "HAPPY",
                    "confidence": 0.1899018
                },
                {
                    "type": "CONFUSED",
                    "confidence": 0.0765294
                }
            ],
            "quality": {
                "brightness": 65.237076,
                "sharpness": 92.22801
            },
            "confidence": 99.999535
        }
    ],
    "faceMatch": null
}

Error Responses

Status CodeDescription
400Bad Request - Invalid input parameters
401Unauthorized - Invalid API Key
500Internal Server Error - Something went wrong on the server side