Skip to main content
Version: v3

Interpret the response

Pass or fail a document​

The main field in the response is verification.verdict, which tells you if the document is genuine or fraudulent.

{
"verification": {
"verdict": "Accept"
}
}

The value of this field can also be Reject, which happens when the processed document is fraudulent.

It can also be one of the following:

  • Unverifiable, where Verify can't make an assessment based on the image.
  • Retry, where a different image of the same document could resolve an issue.
  • Review, where the result is borderline, and a human should take a look.

See which checks failed​

The verification.failedChecks array lists all the checks that were performed, and that failed, so that you can quickly find the root cause of a verification failure.

The entries are "flattened", like so:

{
"verification": {
"failedChecks": [
"checks.extractedDataCheck.matchCheck.dateOfBirthCheck"
]
}
}

See what was checked on the document​

The verification.checks object provides a structured breakdown of each individual verification check.

{
"verification": {
"checks": {
"extractedDataCheck": {},
"documentLivenessCheck": {},
"visualCheck": {},
"documentValidityCheck": {}
}
}
}

Each of these is composed of sub-checks (for the full response schema, see the API reference), and each check resolves to Pass, Fail, or NotPerformed.

{
"verification": {
"checks": {
"extractedDataCheck": {
"result": "Fail"
}
}
}
}

For more details about checks, see Checks.

Assess the image​

imageAssessment reports what the images themselves looked like, separately from the fraud verdict. It holds three checks: imageQualityCheck, croppedDocumentCheck, and handPresenceCheck.

{
"imageAssessment": {
"imageQualityCheck": { "result": "Pass" },
"croppedDocumentCheck": {
"result": "Pass",
"firstSide": { "result": "Pass" },
"secondSide": { "result": "Pass" }
},
"handPresenceCheck": { "result": "Pass" }
}
}

croppedDocumentCheck and handPresenceCheck also break their result down per side. This is the object to look at when a verdict is Retry: it usually explains why a new image would help.

Get extracted data​

To obtain the extracted data, look in extraction.result.

Text fields are keyed by script, so a Latin-script first name is at extraction.result.firstName.latin. Only the scripts actually detected on the document are present.

{
"extraction": {
"processingStatus": "Success",
"result": {
"firstName": { "latin": "JOHN" },
"dateOfBirth": { "day": 1, "month": 2, "year": 1990 },
"documentClassInfo": { "countryName": "Croatia" }
}
}
}

extraction.processingStatus tells you how extraction itself went, independently of the verdict. Success means everything expected was read; other values name what went wrong, such as MandatoryFieldMissing or MrzDetectionFailed.

For per-side and per-module detail, read extraction.result.subResults.{side}.{viz,mrz,barcode}.

For the full schema of possible extraction fields, see the API reference.

Get the images​

Any images you enabled in the configuration come back in the top-level images object, keyed by name, each a base64-encoded JPG:

{
"images": {
"face": "/9j/4AAQSkZJRg...",
"firstSideCropped": "/9j/4AAQSkZJRg..."
}
}

The available keys are face, signature, firstSideCropped, secondSideCropped, and barcode.

Confirm what configuration ran​

configurationUsed echoes the configuration the request actually ran with, resolved from what you sent plus the defaults for everything you left out. It mirrors the request structure, so a setting's effective value sits at the same path you would use to set it.

Because the schema doesn't declare defaults, this is the reliable way to find out what a default resolves to: send no configuration and read what comes back.