Skip to main content
Extract reads what Parse produced and fills in a schema: the fields you name, typed, with a confidence score and the source text for each. It is the node most workflows exist for. It lives in the Intelligence section of the Studio palette. The one thing an Extract node needs is its schema: the list of fields to pull out. Everything else is optional. The tier (mode) sets how much work to spend per page.

The node

Each field has a name, a description the model reads, and a type. The types (string, float, date, enum, object and the rest) are on Field types. How to write a schema that extracts well is on Schemas. The same node on the agentic tier, with a Smart lookup field that resolves the supplier name against a reference CSV:
The SDKs read each path in lookup_files from disk and send it as lookup_file_uploads. The API call sends the file content inline, base64-encoded.
The Python SDK’s extract() does not take mode, use_images or lookup_reasoning_effort yet. Set them in the API JSON, in Studio, or from the TypeScript SDK.
A workflow can hold several Extract nodes. After a Classify or Split node, each Extract sits on one branch and gets its own schema. See those pages for the branch argument.

In Studio

Click the Extract node on the canvas to open its panel. The Schema tab holds the fields. The Config tab holds the tier cards, the Use Images switch, and the Lookup files, Lookup suggestion and Lookup matching effort controls. Configuring the Extract node in Studio The Config tab holds the tier, Use Images, the lookup files and matcher settings, and the per-field Lookup toggles. Smart lookup settings on the Extract node

Tiers

Start on Standard. Move down to Fast where it holds up, and up to Agentic only where Standard misses rows or mixes up columns.

Options

extraction_schema is required. Every other field is optional. Omit a field and the default applies. A field’s source decides where its value comes from: extraction (the document, the default), smart_lookup (the reference file, always) or lookup_if_missing (the document first, the reference file when extraction left it blank). The schema the API accepts is generated from the same source: Extract node schema.

What it returns

Extract fills the extractions section of the run results. A workflow with one Extract and no Split returns one entry, with split_name and partition set to null:
fields is keyed by field name. Each value carries value (a string on the wire, whatever the field’s data_type; null when nothing was found), value_override (a human correction from review, or null), verification_status, confidence on a 0 to 100 scale, and evidence: the source snippets and the page each came from. Value types on the wire. Every value is a string or null, so parse it by the field’s data_type on your side:
  • A boolean field returns the string "True" or "False".
  • A multi_select field returns one comma-separated string, for example "a, b, c", not a list.
  • A field the model could not find returns { "value": null, "value_override": null, "verification_status": "not_verified", "confidence": null, "evidence": [] }.
  • An object field returns a list of rows. Each row is a dict from nested field name to the same { value, value_override, verification_status, confidence, evidence } shape.
After a Split node, extractions holds one entry per split and partition. See Split.

Connects to

An Extract node has one outgoing edge at most. Add a Validate node to check its values, or an If/Else node to branch on them.

Billing

Billed per page at the tier’s rate (table above). A node with at least one lookup field adds 75 credits per page for Smart Lookup. Schema size and field count do not change the price. Full price list: How credits work.

Examples