> ## Documentation Index > Fetch the complete documentation index at: https://docs.extend.ai/llms.txt > Use this file to discover all available pages before exploring further. > > ## API version > The current API version is `2026-02-09`, served at the site root (no version prefix in URLs). > If this page URL contains `/2025-04-21/` or `/2024-12-23/`, you are reading an older API version. > Prefer the current docs at https://docs.extend.ai/llms.txt unless the user explicitly needs that older version. > Do not treat older-version pages as the source of truth for new integrations. # Processor output types > Understanding different output types for document processors. Legacy extraction outputs follow a standardized format that you'll encounter when working with evaluation sets, webhooks, and API responses. ## Extraction output type (Fields Array) > **Note** > > This section is relevant for the Fields Array config type. If you are using > the JSON Schema config type, please see the [Extraction output type (JSON Schema)](#extraction-output-type-json-schema) documentation. If you aren't > sure which config type you are using, please see the [Migrating to JSON Schema](/2025-04-21/product/migrating-to-json-schema). For processors using the legacy Fields Array configuration, the extraction output is a flat dictionary where each key is the `fieldName` (or sometimes the `id` if names aren't unique) you defined in the configuration, and the value is an `ExtractionFieldResult` object containing the extracted data and associated details. ### Type definition Each `ExtractionFieldResult` object contains the core `id`, `type`, and extracted `value`. It can also include the following optional details: * `schema`: The schema definition for nested fields (like objects or array items). * `insights`: Reasoning or explanations from the model (if enabled). * `references`: Location information, including the page number and specific **Bounding Boxes** relevant to the legacy Fields Array configuration (see [Bounding Boxes Guide](/2025-04-21/product/legacy/bounding-boxes-legacy)). * `enum`: The available options if the field type is `enum`. ```typescript type ExtractionOutput = { [fieldName: string]: ExtractionFieldResult; }; type ExtractionFieldResult = { id: string; type: | "string" | "number" | "currency" | "boolean" | "date" | "enum" | "array" | "object" | "signature"; value: | string | number | Currency | boolean | Date | ExtractionValueArray | ExtractionValueObject | Signature | null; /* The following fields are included in outputs, but not required for creating an evaluation set item */ /* Includes the field schema of nested fields (e.g. array fields, object fields, signature fields etc) */ schema: ExtractionFieldSchemaValue[]; /* Insights the reasoning and other insights outputs of the model (when reasoning is enabled) */ insights: Insight[]; /* References for the extracted field, always includes the page number for all fields, and might include bounding boxes and citations when available. */ references: ExtractionFieldResultReference[]; /* The enum options for enum fields, only set when type=enum */ enum: EnumOption[]; }; type Currency = { amount: number; iso_4217_currency_code: string; }; type Signature = { printed_name: string; signature_date: string; is_signed: boolean; title_or_role: string; }; type EnumOption = { value: string; // The enum value (e.g. "ANNUAL", "MONTHLY", etc.) description: string; // The description of the enum value }; type ExtractionValueArray = Array; type ExtractionValueObject = Record; ``` #### References ```typescript type ExtractionFieldResultReference = { /* The field id. When nested for arrays, this is the index of the row number */ id: string; /* The field name */ fieldName: string; /* The page number (starting at 1) that this bounding box is from */ page: number; /** * Array of bounding box references for this field. * There can be multiple is the extraction result was drawn from multiple distinct sources on the page. */ boundingBoxes: BoundingBox[]; }; /* See the Bounding boxes guide for information on how to use/interpret this data */ type BoundingBox = { /* The left most position of the bounding box */ left: number; /* The top most position of the bounding box */ top: number; /* The right most position of the bounding box */ right: number; /* The bottom most position of the bounding box */ bottom: number; }; ``` ### Examples #### Basic Field Types ```json { "invoice_number": { "id": "field_123", "type": "string", "value": "INV-2024-001" }, "amount_due": { "id": "field_456", "type": "currency", "value": { "amount": 1250.5, "iso_4217_currency_code": "USD" } } } ``` #### Nested Structures with References and Insights ```json { "line_items": { "id": "field_789", "type": "array", "value": [ { "item": "Widget A", "quantity": 5, "price": { "amount": 10.0, "iso_4217_currency_code": "USD" } }, { "item": "Widget B", "quantity": 2, "price": { "amount": 15.0, "iso_4217_currency_code": "USD" } } ], "schema": [ // Schema definition for the items in the array { "id": "item", "name": "Item Name", "type": "string", "description": "..." }, { "id": "quantity", "name": "Quantity", "type": "number", "description": "..." }, { "id": "price", "name": "Price", "type": "currency", "description": "..." } ] }, "signature_block": { "id": "field_101", "type": "signature", "value": { "printed_name": "John Smith", "signature_date": "2024-03-15", "is_signed": true, "title_or_role": "Purchasing Manager" }, "schema": [ // Schema for the signature object fields { "id": "printed_name", "name": "Printed Name", "type": "string", "description": "..." }, { "id": "signature_date", "name": "Signature Date", "type": "date", "description": "..." }, { "id": "is_signed", "name": "Is Signed", "type": "boolean", "description": "..." }, { "id": "title_or_role", "name": "Title/Role", "type": "string", "description": "..." } ], "insights": [ { "type": "reasoning", "content": "Signature block found at the bottom of page 2. 'is_signed' is true based on visual confirmation." } ], "references": [ { "id": "signature_block", // Refers to the top-level field ID "fieldName": "Signature Block", "page": 2, "boundingBoxes": [ // Box around the whole signature area { "left": 100, "top": 700, "right": 400, "bottom": 780 } ] } ] } } ``` ## Shared Types Certain types are shared across different processor outputs. These provide additional context and information about the processor's decisions. ### Type Definition ```typescript type Insight = { type: "reasoning" | "issue" | "review_summary"; content: string; }; ``` ### Example ```json { "insights": [ { "type": "reasoning", "content": "This was classified as an invoice because it contains standard invoice elements including an invoice number, billing details, and itemized charges." } ] } ``` Insights can appear in both Extraction and Classification outputs to provide transparency into the model's decision-making process. They are particularly useful when debugging or validating processor results. > Ship your document processing with Extend. Get started with our APIs, SDKs, and guides.