Extract Document
mindee.extract_document
ActionAI & modelsconnection required
Calls the Mindee API with the connection's credentials.
Run an extraction model over one invoice, receipt, passport or any other document and return its fields as plain values.
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
14 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 | — |
raw_text Also return the document's full text, page by page, in raw_text. | boolean | No | false | — | — |
polygon Also return the bounding-box polygon of every extracted field. | boolean | No | false | — | — |
confidence Also return a confidence level (Certain, High or Medium) per field. | boolean | No | false | — | — |
rag Use Retrieval-Augmented Generation against the documents indexed on this model to improve accuracy. | boolean | No | false | — | — |
text_context Extra context handed to the model for this one inference, for example a note about where the document came from. | string | No | — | — | — |
- 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.
{
"confidence": false,
"document_url": "https://files.example.com/invoice-2026-01.pdf",
"file_content": "JVBERi0xLjQK",
"model_id": "a1b2c3d4-0000-4000-8000-000000000000",
"poll_interval_seconds": 2,
"polygon": false,
"rag": false,
"raw_text": false,
"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 | — |
values Every extracted field reduced to a plain value, keyed by the field name in the model's data schema — object fields become nested objects and list fields become arrays. | object | — |
fields The same fields with Mindee's full envelope per field: value, confidence and locations. | object | — |
raw_text The document's full text with pages joined by newlines; empty unless raw_text was requested. | string | — |
{
"alias": "",
"completed": false,
"completed_at": "",
"created_at": "",
"error": {},
"fields": {},
"filename": "",
"inference": {},
"inference_id": "",
"job_id": "",
"mime_type": "",
"model_id": "",
"page_count": 0,
"polling_url": "",
"product": "",
"raw_text": "",
"result_url": "",
"status": "",
"values": {},
"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 Extract 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.