Overview
Document AI accepts up to 3 documents per step (PDF or image — PDF, JPG, JPEG, PNG, TIFF, WebP). Each document is classified by its configureddocument_key, read by a vision-language model using a schema built from your field definitions, and run through PDF/EXIF forensics. For every document it stores:
- The extracted fields — a map keyed by your configured field
key, with values typed as you declared them (text→ string,number→ number,date→YYYY-MM-DD). Fields that could not be read arenull. - The document status —
Approved,In Review,Declined, orNot Finished. - Document metadata — file forensics including any overlay/manipulation evidence.
- Cross-check results — the outcome of name matching against the verified identity and of any custom field cross-references.
Uploading documents
Documents are uploaded one at a time to the Document AI endpoint. In a hosted session or SDK flow this is handled for you; the contract is:| Field | Required | Description |
|---|---|---|
document_key | yes | The configured document this file fulfills |
document | yes | The file to upload |
locale | no | Locale used to resolve the on-screen title/description |
next_step moves past DOCUMENT_AI) once every entry in required_document_keys appears in uploaded_document_keys and no document is left unfinished.
Where it appears in API responses
Document AI is listed in the decisionfeatures[] array in GET /v3/session/{sessionId}/decision/, one entry per Document AI node:
Extracted fields example
For a Proof of Funds document configured withaccount_holder (text), balance (number), currency (text), and statement_date (date), a successful extraction stores:
document_ai.<field_key>, you can drive branching and custom status rules directly from these values — including cross-references against other steps such as kyc.full_name or questionnaire answers.