The final stage requires a comparison between two images (One to One) to check that the person performing the process KYC It will be the document's holder. The image of the obtained (* bestFrame) will be compared during the life check step with the face image extracted from the document (* content.data.personal.face) during the data extraction step.

Just as in previous steps, images should be in Base64 Before they are sent to service. Thus, it's vital to conduct an image check to secure their proper transmission and processing.

URL

POST https://api.sandbox.jaak.ai/api/v2/oto/verify

Request

{
    "eventId": String,
    "image1": String,
    "image2": String
}
FieldTypeDescription
eventstring(optional) is the possibility of sending a unique identifier to track this call
image1stringImage 1 at Base64 for Comparison
image2stringImage 2 at Base64 for Comparison

Answer

{
    "eventId": String,
    "requestId": String,
    "score": Double,
    "distance": Double,
    "process_time": Integer,
    "metadata": {
        "image1": {
            "accessories": {
                "glass": Boolean,
                "sunGlass": Boolean,
                "hat": Boolean,
                "mask": Boolean
            },
            "image_quality": {
                "isCorrectBrightness": Boolean,
                "isCorrectBlur": Boolean,
                "isCorrectHeight": Boolean,
                "isCorrectWidth": Boolean,
                "isCorrectResolution": Boolean,
                "isCorrectVerticalRotation": Boolean,
                "isCorrectHorizontalRotation": Boolean,
                "isCorrectRotation": Boolean,
                "isCorrectSizeFace": Boolean,
                "isCorrectNumberFaces": Boolean
            }
        },
        "image2": {
            "accessories": {
                "glass": Boolean,
                "sunGlass": Boolean,
                "hat": Boolean,
                "mask": Boolean
            },
            "image_quality": {
                "isCorrectBrightness": Boolean,
                "isCorrectBlur": Boolean,
                "isCorrectHeight": Boolean,
                "isCorrectWidth": Boolean,
                "isCorrectResolution": Boolean,
                "isCorrectVerticalRotation": Boolean,
                "isCorrectHorizontalRotation": Boolean,
                "isCorrectRotation": Boolean,
                "isCorrectSizeFace": Boolean,
                "isCorrectNumberFaces": Boolean
            }
        }
    },
    "codes": null,
    "state": {
        "rejectedBadQuality": Boolean,
        "rejectedAccessories": Boolean,
        "isSamePerson": Boolean,
        "message": String
    }
}
FieldTypeDescription
eventstringID for traceability of event details.
requeststringID for demand traceability.
scoredoubleResult of the liveness detection.
distancedoubleThe result of a standardized liveness detection assessment.
process\ _ timeintegrateTest processing time for milliseconds.
methatateobjectAdditional information about the analysis of the liveness detection, such as the search for accessories and image quality within comparative images
codesobjectReg code list regarding image quality and accessories found within comparative images
statusobjectResults of different verifications about the liveness detection.

Object * state *

FieldTypeDescription
RejectedBadQualitybooleanFlag that determines if images do not meet minimum quality standards
challengesbooleanFlag determining if comparative images detect accessories
isSamePerubooleanFlag that determines if both people in images are the same
messagestringA message that provides additional information in case of discrepancy in comparison.

The property * state.isSamePerson * allows us to ensure that the person who's being identified at the life check is the same as that of the document provided.

To sum up, if the property * state.isSamePerson * is accepted, then we can consider that the document's status check has been successful.

It's important that you finish sessions KYCWe'll explain how to do this at the next step.