flow_uuid. That identifier follows the request from initial setup through OCR extraction, cross-checks, and final result delivery — whether via callback or polling.
The flow lifecycle
Atlas processes documents asynchronously. After you upload files, Atlas queues them for OCR extraction, runs pairwise cross-checks across documents, and then delivers the completed results to yourcallback_url or makes them available via the /v3/verification/extracts endpoint.
Initialize the flow
Call
POST /v3/verification/flow/init with your application_id, product_type, auth_url, and callback_url. Atlas returns a flow_uuid that you use for all subsequent calls in this session.Upload documents
Call
POST /v3/verification/multiupload with the flow_uuid and an array of file_urls. Each entry pairs a pre-signed S3 URL with a document_id you supply for tracking. Atlas returns a file_uuid and batch_id for each uploaded file.Atlas processes documents
Atlas downloads each file, classifies the document type, runs OCR extraction to produce structured field output, and then executes cross-checks — pairwise comparisons of matching fields across documents (for example,
dealer_address on DELIVERY_ORDER vs. INVOICE).You do not need to specify document types at upload time. Atlas auto-classifies each file. If a document cannot be classified, the OCR entry returns an
error_code of UNRECOGNISED.Flow status fields
The status endpoint returns four independent status fields, each tracking a different stage of the pipeline.| Field | Possible values | Description |
|---|---|---|
upload_status | NOT_STARTED, IN_PROGRESS, SUCCESS, FAILED | Whether all files have been successfully downloaded from your S3 URLs |
processing_status | NOT_STARTED, IN_PROGRESS, SUCCESS, FAILED, PENDING | OCR extraction status across all documents in the flow |
crossheck_status | NOT_STARTED, PENDING, COMPLETED | Status of pairwise field comparison across documents |
master_status | NOT_STARTED, IN_PROGRESS, SUCCESS, FAILED | Rolled-up status representing the overall flow completion |
Poll
master_status to determine when results are ready. When it reaches SUCCESS, the full payload is available via /v3/verification/extracts.The flow_uuid
Theflow_uuid is the primary key for the entire session. You must include it in every subsequent request:
POST /v3/verification/multiupload—flow_uuidin the request bodyGET /v3/verification/status—flow_uuidas a query parameterGET /v3/verification/extracts—flow_uuidas a query parameter
flow_uuid immediately after calling /flow/init. There is no way to retrieve it later if it is lost.
Async processing and callbacks
Atlas delivers results asynchronously. When processing completes, Atlas sends aPOST request to your callback_url containing the full CallbackData object. Your endpoint must return a 2xx response to acknowledge receipt.
If you cannot use callbacks (for example, in a server-side polling workflow), use the status endpoint to poll until master_status is SUCCESS, then fetch results from /v3/verification/extracts.
Cross-checks
After OCR extraction completes, Atlas automatically runs cross-checks — pairwise field comparisons across documents in the same flow. Each cross-check compares a field from a source document against the corresponding field on a target document and returns asimilarity_score from 0 to 100.
Cross-checks are returned in both the callback payload and the /extracts response under the cross_checks array.
name field is a stable identifier for the check (for example, DEALER_ADDRESS, CUSTOMER_NAME) that you can use to consistently locate a specific comparison in your processing logic regardless of which documents are present.
See Confidence Scores and Extraction Quality for guidance on interpreting similarity_score values.