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:
The response advances the flow:
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
GET /v3/session/{sessionId}/decision/ surfaces Document AI in two places:
-
features[]— a summary entry per Document AI node, used to enumerate which features ran: -
document_ai_documents[]— the full result, one group per Document AI node. Each group carries the node’s combinedstatus, the list of uploadeditems, and anywarnings. Every uploaded document is an item with the fields you configured (underextracted_data), its ownstatus, the field definitions, forensicdocument_metadata, andcross_check_result.
Decision example
For a Proof of Funds document configured withaccount_holder (text), balance (number), currency (text), and statement_date (date):
document_ai.<field_key>, you can drive branching and custom status rules directly from the extracted_data values — including cross-references against other steps such as kyc.full_name or questionnaire answers.