OCR Document
mindee.ocr_document
ActionAI & modelsconnection required
Calls the Mindee API with the connection's credentials.
Run an OCR model over a document and return the full text of every page, with each word's position.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- API key
- Providers
- Mindee
- Secret shape
- the V2 API key, or {"api_key": "…"}
- Config it needs
- base_url, model_id
- Resolved by
- config.connection_id, else node.connection_id
Configuration
9 fields, none required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
model_id UUID of the Mindee model to run. Defaults to the connection's model_id, which is how one credential can drive an invoice model from one node and a passport model from the next. | string | No | — | — | a1b2c3d4-0000-4000-8000-000000000000 |
document_url Public HTTPS URL Mindee downloads the file from. Give this or file_content, never both. | string | No | — | url format | https://files.example.com/invoice-2026-01.pdf |
file_content The file itself, base64-encoded — an upstream download node's file_content can be wired straight in. Give this or document_url, never both. | string | No | — | — | JVBERi0xLjQK |
filename Name recorded against the job and echoed back on the result. | string | No | — | — | — |
alias Your own reference for this file, such as an internal document id. Mindee returns it unchanged on both the job and the inference. | string | No | — | — | — |
webhook_ids Comma-separated UUIDs of the webhooks Mindee should call when processing finishes. Leave blank to poll instead. | string | No | — | — | — |
wait Poll the job through to its inference before finishing the step. Turn this off to return the job id immediately and fetch the result in a later step or from a webhook. | boolean | No | true | — | — |
timeout_seconds How long to keep polling before returning the job as still processing. Mindee times an inference out at 590 seconds. | number | No | 120 | 1–590 | — |
poll_interval_seconds Seconds to wait between polls of the job status. | number | No | 2 | 1–60 | — |
- At least one of document_url, file_content must be set.
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"document_url": "https://files.example.com/invoice-2026-01.pdf",
"file_content": "JVBERi0xLjQK",
"model_id": "a1b2c3d4-0000-4000-8000-000000000000",
"poll_interval_seconds": 2,
"timeout_seconds": 120,
"wait": true
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
job_id UUID of the processing job. | string | — |
status Mindee's job status, lower-cased: processing, processed or failed. | string | — |
completed True only when the inference was fetched; false while the job is still processing. | boolean | — |
model_id UUID of the model that ran. | string | — |
filename File name as Mindee recorded it. | string | — |
alias The alias sent with the file, echoed back. | string | — |
created_at When the job was created, ISO 8601. | string | — |
completed_at When the job finished, ISO 8601, once it has. | string | — |
polling_url URL that reports this job's status. | string | — |
result_url URL the inference is readable at once processed. | string | — |
webhooks Outcome of each webhook Mindee called; empty until processing finishes. | array | — |
error Mindee's RFC 9457 problem detail when the job failed, otherwise null. | object | — |
product Which product ran: extraction, ocr, classification, split or crop. | string | — |
inference_id UUID of the inference. | string | — |
page_count Number of pages Mindee found in the file. | number | — |
mime_type MIME type Mindee detected for the file. | string | — |
inference The whole inference object exactly as Mindee returned it. | object | — |
text The document's text, with pages joined by newlines. | string | — |
pages One entry per page, each with its content and word polygons. | array | — |
{
"alias": "",
"completed": false,
"completed_at": "",
"created_at": "",
"error": {},
"filename": "",
"inference": {},
"inference_id": "",
"job_id": "",
"mime_type": "",
"model_id": "",
"page_count": 0,
"pages": [],
"polling_url": "",
"product": "",
"result_url": "",
"status": "",
"text": "",
"webhooks": []
}Notes
- Mindee processes every file asynchronously; this node enqueues it and, with wait on, polls until the job is Processed.
- A job that is still Processing when timeout_seconds runs out returns status 'processing' with completed=false — use the job_id with mindee.get_job rather than sending the document again.
- An inference Mindee reports as Failed fails the step with Mindee's own problem detail, so error edges fire.
See OCR Document run in a workflow.
In a technical demo we add the Mindee connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.