The first-level fields
Inside front and back
The back’s validations
The other 200 that approves nothing
A photo with no readable document returns200 with message: "Cant get document fields", id: "unknown", an empty viz — and an unsolicited events block with the pipeline trace:
crossMatchConfidence
Consistency between data sources, as 0–100 percentages per field:
88.9 on one field usually means one doubtful OCR character. On the front alone, crossMatchConfidence is typically {} — there is only one source to compare; that is normal, not a failure.
The service imposes no threshold. The acceptance policy over
crossMatchConfidence is yours: a strict onboarding may demand 100 on the document number and tolerate less on names.Document antispoofing is informational
WithantiSpoofingDocument / antiSpoofingFaceInDocument, the response adds security.* blocks (screen recapture, photocopy, tampering scores — e.g. 94.69, 99) and face.isSpoofing.
Deserializer particularities
mrz.expectedis tri-state:true/false/ absent.- The values inside
mrz.extrasare strings, even when they look numeric. barcode.resultis a 1-element array, not an object.isNativePersonDocumentis tri-state as well.vizis template-driven: never hard-code the field set; readGET /{templateId}/details.- Responses weigh ~1 MB (embedded base64 images): size buffers accordingly and never log raw bodies.
Next: Errors
Status codes, the 422 that echoes your whole request — image included — and which errors are safe to retry.