> This page is for version v2026-02-09 (default).
> For other versions, use one of these documentation indexes:
> - v2026-02-09 (default): https://docs.extend.ai/2026-02-09/llms.txt
> - v2025-04-21: https://docs.extend.ai/2025-04-21/llms.txt
> - v2024-12-23: https://docs.extend.ai/2024-12-23/llms.txt

> ## 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.

# Workflow Run Failed

POST 

Reference: https://docs.extend.ai/api-reference/webhook-events/workflow/workflow-run-failed-webhook

## Request

### Payload

- `eventId` (string, required) — Unique identifier for the event
- `payload` (WorkflowRun, required) — Workflow run object.

## Types

### WorkflowRun

Workflow run object.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_run"`.
  - Allowed values: `workflow_run`
- `id` (string, required) — The ID of the workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflow` (WorkflowSummary, required) — A summary representation of a workflow.
- `workflowVersion` (WorkflowVersionSummary, required) — A summary representation of a workflow version (without steps).
- `dashboardUrl` (string, required) — A URL to view this workflow run in the Extend dashboard. Example: `"https://dashboard.extend.ai/workflows/workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `status` (enum, required) — The status of a workflow run: * `"PENDING"` - The workflow run is waiting to be processed * `"PROCESSING"` - The workflow run is currently processing * `"NEEDS_REVIEW"` - The workflow run requires manual review * `"REJECTED"` - The workflow run was rejected during review * `"PROCESSED"` - The workflow run completed successfully * `"FAILED"` - The workflow run encountered an error * `"CANCELLED"` - The workflow run was cancelled * `"CANCELLING"` - The workflow run is being cancelled
  - Allowed values: `PENDING`, `PROCESSING`, `NEEDS_REVIEW`, `REJECTED`, `PROCESSED`, `FAILED`, `CANCELLED`, `CANCELLING`
- `metadata` (map from string to any, required) — The metadata that was passed in when running the Workflow.
- `batchId` (string, required, nullable) — The batch ID of the WorkflowRun. If this WorkflowRun was created as part of a batch of files, all runs in that batch will have the same batch ID. Example: `"batch_7Ws31-F5"`
- `files` (list of FileSummary, required)
- `failureReason` (string, required, nullable) — The reason why the workflow run failed. Will only be included if the workflow run status is "FAILED".
- `failureMessage` (string, required, nullable) — A more detailed message about the failure. Will only be included if the workflow run status is "FAILED".
- `initialRunAt` (string, required, nullable) — The time (in UTC) at which the workflow run was created. Will follow the RFC 3339 format. Will be null if the run hasn't started yet. Example: `"2025-04-28T17:01:39.285Z"`
- `reviewedByUser` (string, required, nullable) — The email address of the person who reviewed the workflow run. Will be null if the workflow run has not been reviewed. Example: `"jane.doe@example.com"`
- `reviewed` (boolean, required) — Whether the workflow run has been reviewed.
- `rejectionNote` (string, required, nullable) — A note that is added if a workflow run is rejected. Example: `"Invalid invoice format"`
- `reviewedAt` (string, required, nullable) — The time (in UTC) at which the workflow run was reviewed. Will follow the RFC 3339 format. Will be null if the workflow run has not been reviewed. Example: `"2024-03-21T16:45:00Z"`
- `startTime` (string, required, nullable) — The time (in UTC) at which the workflow run started executing. This will always be after the `initialRunAt` time. Will follow the RFC 3339 format. Will be null if the workflow run has not started executing. Example: `"2024-03-21T15:30:00Z"`
- `endTime` (string, required, nullable) — The time (in UTC) that the workflow finished executing. Will follow the RFC 3339 format. Will be null if the workflow run has not finished executing. Example: `"2024-03-21T15:35:00Z"`
- `stepRuns` (list of StepRun, required) — An array of WorkflowStepRun objects. Each WorkflowStepRun represents a single run of a WorkflowStep and contains details about the step's execution and result.
- `usage` (RunUsage, required, nullable) — Usage credits consumed by this workflow run, including a breakdown of every contributing child run. **Availability:** Will not be returned for runs created before October 7, 2025 or for customers on legacy billing systems.

### WorkflowSummary

A summary representation of a workflow.

- `object` (enum, required) — The type of object. Always `"workflow"`.
  - Allowed values: `workflow`
- `id` (string, required) — The ID of the workflow.
- `name` (string, required) — The name of the workflow.
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `updatedAt` (string, required) — The time (in UTC) at which the object was last updated. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `createdBy` (CreatedBy, required) — The actor that created this resource. * `user` — the resource was created via the studio by a logged-in user. The user's `email` is exposed. * `api_key` — the resource was created via the API using an API key. The key's `name` is exposed. May be `null` for resources created before attribution.

### WorkflowVersionSummary

A summary representation of a workflow version (without steps).

- `object` (enum, required) — The type of object. Always `"workflow_version"`.
  - Allowed values: `workflow_version`
- `id` (string, required) — The ID of the workflow version.
- `version` (string, required) — The version number as a string, or `"draft"` for the draft version.
- `name` (string, required, nullable) — The name of the workflow version.
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `createdBy` (CreatedBy, required) — The actor that created this resource. * `user` — the resource was created via the studio by a logged-in user. The user's `email` is exposed. * `api_key` — the resource was created via the API using an API key. The key's `name` is exposed. May be `null` for resources created before attribution.

### FileSummary

- `object` (enum, required) — The type of object. Will always be `"file"`.
  - Allowed values: `file`
- `id` (string, required) — ID for the file. Example: `"file_xK9mLPqRtN3vS8wF5hB2cQ"`
- `name` (string, required) — The name of the file Example: `"Invoices.pdf"`
- `type` (enum, required, nullable) — The type of the file. **Availability:** Present when the file type could be determined.
  - Allowed values: `PDF`, `CSV`, `IMG`, `TXT`, `DOCX`, `EXCEL`, `XML`, `HTML`
- `parentFileId` (string, required, nullable) — ID of the parent file. **Availability:** Present for files created via a Splitter in a workflow.
- `metadata` (FileMetadata, required)
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `updatedAt` (string, required) — The time (in UTC) at which the object was last updated. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`

### StepRun

A workflow step run. The shape of the `result` field depends on the `stepType`.

### RunUsage

Usage credits consumed by a run. **Availability:** This field will not be returned for: * Runs created before October 7, 2025 * Customers on legacy billing systems For more details on how credits work, see our [Credits Guide](https://docs.extend.ai/general/how-credits-work).

- `credits` (double, required) — The credits consumed by this run. For most run types this is the line item for the run's own work; for `workflow_run` this is the aggregate across all child runs.
- `totalCredits` (double, optional) — The total credits accounted for under this run, including any other runs it was responsible for creating. For example, an extract run on a fresh upload triggers a parse run, so `totalCredits` includes both line items. For runs that didn't trigger any other work — like `parse_run`, `edit_run` and `workflow_run` — `totalCredits` equals `credits`. **Availability:** Present on runs persisted on or after May 14, 2026. Runs persisted before that date will omit this field.
- `breakdown` (list of RunUsageBreakdownEntry, optional) — The chargeable resources that make up `totalCredits`, including this run itself when it has its own line item. For `workflow_run`, lists every contributing child run sorted by creation time (the workflow itself isn't chargeable and has no line item). **Availability:** Present on runs persisted on or after May 14, 2026. Runs persisted before that date will omit this field.

### CreatedBy

The actor that created this resource. * `user` — the resource was created via the studio by a logged-in user. The user's `email` is exposed. * `api_key` — the resource was created via the API using an API key. The key's `name` is exposed. May be `null` for resources created before attribution.

- `type`: `user` (user)
  - `email` (string, required) — The email address of the user who created the resource.
- `type`: `api_key` (api_key)
  - `name` (string, required) — The name of the API key that created the resource.

### FileMetadata

- `pageCount` (double, optional) — The number of pages in the file. This is only set for PDF/DOCX files.
- `parentSplit` (ParentSplit, optional) — The split metadata details for a derivative file. **Availability:** Only included if this file is a derivative of another file, for instance if it was created via a Splitter in a workflow.

### ParseStepRun

Base properties shared by all step run types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step_run"`.
  - Allowed values: `workflow_step_run`
- `id` (string, required) — The ID of the workflow step run. Example: `"workflow_step_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflowRunId` (string, required) — The ID of the parent workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `stepType` (enum, required) — The type discriminator for this workflow step run, mirrors `step.type`.
  - Allowed values: `PARSE`
- `status` (enum, required) — The status of the workflow step run: * `"PENDING"` - The step run is waiting to be executed * `"WAITING"` - The step run is waiting for a dependency to complete * `"PROCESSING"` - The step run is currently executing * `"PROCESSED"` - The step run completed successfully * `"FAILED"` - The step run encountered an error * `"INVALIDATED"` - The step run was invalidated * `"CANCELLED"` - The step run was cancelled
  - Allowed values: `PENDING`, `WAITING`, `PROCESSING`, `PROCESSED`, `FAILED`, `INVALIDATED`, `CANCELLED`
- `files` (list of FileSummary, required) — The files associated with this step run.
- `step` (ParseStepRunStep, required) — Base properties shared by all workflow step types.
- `result` (ParseResult, required, nullable) — The result of this parse step. Currently, `result` is always present for returned step runs. It is nullable to allow for future support of returning step runs with non-successful statuses.

### ExtractStepRun

Base properties shared by all step run types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step_run"`.
  - Allowed values: `workflow_step_run`
- `id` (string, required) — The ID of the workflow step run. Example: `"workflow_step_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflowRunId` (string, required) — The ID of the parent workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `stepType` (enum, required) — The type discriminator for this workflow step run, mirrors `step.type`.
  - Allowed values: `EXTRACT`
- `status` (enum, required) — The status of the workflow step run: * `"PENDING"` - The step run is waiting to be executed * `"WAITING"` - The step run is waiting for a dependency to complete * `"PROCESSING"` - The step run is currently executing * `"PROCESSED"` - The step run completed successfully * `"FAILED"` - The step run encountered an error * `"INVALIDATED"` - The step run was invalidated * `"CANCELLED"` - The step run was cancelled
  - Allowed values: `PENDING`, `WAITING`, `PROCESSING`, `PROCESSED`, `FAILED`, `INVALIDATED`, `CANCELLED`
- `files` (list of FileSummary, required) — The files associated with this step run.
- `step` (ExtractStepRunStep, required) — Base properties shared by all workflow step types.
- `result` (ExtractResult, required, nullable) — The result of this extract step. Currently, `result` is always present for returned step runs. It is nullable to allow for future support of returning step runs with non-successful statuses.

### ClassifyStepRun

Base properties shared by all step run types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step_run"`.
  - Allowed values: `workflow_step_run`
- `id` (string, required) — The ID of the workflow step run. Example: `"workflow_step_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflowRunId` (string, required) — The ID of the parent workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `stepType` (enum, required) — The type discriminator for this workflow step run, mirrors `step.type`.
  - Allowed values: `CLASSIFY`
- `status` (enum, required) — The status of the workflow step run: * `"PENDING"` - The step run is waiting to be executed * `"WAITING"` - The step run is waiting for a dependency to complete * `"PROCESSING"` - The step run is currently executing * `"PROCESSED"` - The step run completed successfully * `"FAILED"` - The step run encountered an error * `"INVALIDATED"` - The step run was invalidated * `"CANCELLED"` - The step run was cancelled
  - Allowed values: `PENDING`, `WAITING`, `PROCESSING`, `PROCESSED`, `FAILED`, `INVALIDATED`, `CANCELLED`
- `files` (list of FileSummary, required) — The files associated with this step run.
- `step` (ClassifyStepRunStep, required) — Base properties shared by all workflow step types.
- `result` (ClassifyResult, required, nullable) — The result of this classify step. Currently, `result` is always present for returned step runs. It is nullable to allow for future support of returning step runs with non-successful statuses.

### SplitStepRun

Base properties shared by all step run types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step_run"`.
  - Allowed values: `workflow_step_run`
- `id` (string, required) — The ID of the workflow step run. Example: `"workflow_step_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflowRunId` (string, required) — The ID of the parent workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `stepType` (enum, required) — The type discriminator for this workflow step run, mirrors `step.type`.
  - Allowed values: `SPLIT`
- `status` (enum, required) — The status of the workflow step run: * `"PENDING"` - The step run is waiting to be executed * `"WAITING"` - The step run is waiting for a dependency to complete * `"PROCESSING"` - The step run is currently executing * `"PROCESSED"` - The step run completed successfully * `"FAILED"` - The step run encountered an error * `"INVALIDATED"` - The step run was invalidated * `"CANCELLED"` - The step run was cancelled
  - Allowed values: `PENDING`, `WAITING`, `PROCESSING`, `PROCESSED`, `FAILED`, `INVALIDATED`, `CANCELLED`
- `files` (list of FileSummary, required) — The files associated with this step run.
- `step` (SplitStepRunStep, required) — Base properties shared by all workflow step types.
- `result` (SplitResult, required, nullable) — The result of this split step. Currently, `result` is always present for returned step runs. It is nullable to allow for future support of returning step runs with non-successful statuses.

### MergeExtractStepRun

Base properties shared by all step run types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step_run"`.
  - Allowed values: `workflow_step_run`
- `id` (string, required) — The ID of the workflow step run. Example: `"workflow_step_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflowRunId` (string, required) — The ID of the parent workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `stepType` (enum, required) — The type discriminator for this workflow step run, mirrors `step.type`.
  - Allowed values: `MERGE_EXTRACT`
- `status` (enum, required) — The status of the workflow step run: * `"PENDING"` - The step run is waiting to be executed * `"WAITING"` - The step run is waiting for a dependency to complete * `"PROCESSING"` - The step run is currently executing * `"PROCESSED"` - The step run completed successfully * `"FAILED"` - The step run encountered an error * `"INVALIDATED"` - The step run was invalidated * `"CANCELLED"` - The step run was cancelled
  - Allowed values: `PENDING`, `WAITING`, `PROCESSING`, `PROCESSED`, `FAILED`, `INVALIDATED`, `CANCELLED`
- `files` (list of FileSummary, required) — The files associated with this step run.
- `step` (MergeExtractStepRunStep, required) — Base properties shared by all workflow step types.
- `result` (MergeExtractResult, required, nullable) — The result of this merge extract step. Currently, `result` is always present for returned step runs. It is nullable to allow for future support of returning step runs with non-successful statuses.

### ConditionalExtractStepRun

Base properties shared by all step run types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step_run"`.
  - Allowed values: `workflow_step_run`
- `id` (string, required) — The ID of the workflow step run. Example: `"workflow_step_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflowRunId` (string, required) — The ID of the parent workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `stepType` (enum, required) — The type discriminator for this workflow step run, mirrors `step.type`.
  - Allowed values: `CONDITIONAL_EXTRACT`
- `status` (enum, required) — The status of the workflow step run: * `"PENDING"` - The step run is waiting to be executed * `"WAITING"` - The step run is waiting for a dependency to complete * `"PROCESSING"` - The step run is currently executing * `"PROCESSED"` - The step run completed successfully * `"FAILED"` - The step run encountered an error * `"INVALIDATED"` - The step run was invalidated * `"CANCELLED"` - The step run was cancelled
  - Allowed values: `PENDING`, `WAITING`, `PROCESSING`, `PROCESSED`, `FAILED`, `INVALIDATED`, `CANCELLED`
- `files` (list of FileSummary, required) — The files associated with this step run.
- `step` (ConditionalExtractStepRunStep, required) — Base properties shared by all workflow step types.
- `result` (ConditionalExtractResult, required, nullable) — The result of this conditional extract step. Currently, `result` is always present for returned step runs. It is nullable to allow for future support of returning step runs with non-successful statuses.

### RuleValidationStepRun

Base properties shared by all step run types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step_run"`.
  - Allowed values: `workflow_step_run`
- `id` (string, required) — The ID of the workflow step run. Example: `"workflow_step_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflowRunId` (string, required) — The ID of the parent workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `stepType` (enum, required) — The type discriminator for this workflow step run, mirrors `step.type`.
  - Allowed values: `RULE_VALIDATION`
- `status` (enum, required) — The status of the workflow step run: * `"PENDING"` - The step run is waiting to be executed * `"WAITING"` - The step run is waiting for a dependency to complete * `"PROCESSING"` - The step run is currently executing * `"PROCESSED"` - The step run completed successfully * `"FAILED"` - The step run encountered an error * `"INVALIDATED"` - The step run was invalidated * `"CANCELLED"` - The step run was cancelled
  - Allowed values: `PENDING`, `WAITING`, `PROCESSING`, `PROCESSED`, `FAILED`, `INVALIDATED`, `CANCELLED`
- `files` (list of FileSummary, required) — The files associated with this step run.
- `step` (RuleValidationStepRunStep, required) — Base properties shared by all workflow step types.
- `result` (RuleValidationResult, required, nullable) — The result of this rule validation step. Currently, `result` is always present for returned step runs. It is nullable to allow for future support of returning step runs with non-successful statuses.

### ExternalDataValidationStepRun

Base properties shared by all step run types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step_run"`.
  - Allowed values: `workflow_step_run`
- `id` (string, required) — The ID of the workflow step run. Example: `"workflow_step_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflowRunId` (string, required) — The ID of the parent workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `stepType` (enum, required) — The type discriminator for this workflow step run, mirrors `step.type`.
  - Allowed values: `EXTERNAL_DATA_VALIDATION`
- `status` (enum, required) — The status of the workflow step run: * `"PENDING"` - The step run is waiting to be executed * `"WAITING"` - The step run is waiting for a dependency to complete * `"PROCESSING"` - The step run is currently executing * `"PROCESSED"` - The step run completed successfully * `"FAILED"` - The step run encountered an error * `"INVALIDATED"` - The step run was invalidated * `"CANCELLED"` - The step run was cancelled
  - Allowed values: `PENDING`, `WAITING`, `PROCESSING`, `PROCESSED`, `FAILED`, `INVALIDATED`, `CANCELLED`
- `files` (list of FileSummary, required) — The files associated with this step run.
- `step` (ExternalDataValidationStepRunStep, required) — Base properties shared by all workflow step types.
- `result` (ExternalDataValidationResult, required, nullable) — The result of this external data validation step. Currently, `result` is always present for returned step runs. It is nullable to allow for future support of returning step runs with non-successful statuses.

### ValidationStepRun

Base properties shared by all step run types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step_run"`.
  - Allowed values: `workflow_step_run`
- `id` (string, required) — The ID of the workflow step run. Example: `"workflow_step_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflowRunId` (string, required) — The ID of the parent workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `stepType` (enum, required) — The type discriminator. Will always be `"VALIDATION"` for this step run type.
  - Allowed values: `VALIDATION`
- `status` (enum, required) — The status of the workflow step run: * `"PENDING"` - The step run is waiting to be executed * `"WAITING"` - The step run is waiting for a dependency to complete * `"PROCESSING"` - The step run is currently executing * `"PROCESSED"` - The step run completed successfully * `"FAILED"` - The step run encountered an error * `"INVALIDATED"` - The step run was invalidated * `"CANCELLED"` - The step run was cancelled
  - Allowed values: `PENDING`, `WAITING`, `PROCESSING`, `PROCESSED`, `FAILED`, `INVALIDATED`, `CANCELLED`
- `files` (list of FileSummary, required) — The files associated with this step run.
- `step` (ValidationStepRunStep, required) — Base properties shared by all workflow step types.
- `result` (ValidationResult, required, nullable) — The result of this validation step. Nullable for step runs without a result.

### RouterStepRun

Base properties shared by all step run types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step_run"`.
  - Allowed values: `workflow_step_run`
- `id` (string, required) — The ID of the workflow step run. Example: `"workflow_step_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `workflowRunId` (string, required) — The ID of the parent workflow run. Example: `"workflow_run_xKm9pNv3qWsY_jL2tR5Dh"`
- `stepType` (enum, required) — The type discriminator. Will always be `"ROUTER"` for this step run type.
  - Allowed values: `ROUTER`
- `status` (enum, required) — The status of the workflow step run: * `"PENDING"` - The step run is waiting to be executed * `"WAITING"` - The step run is waiting for a dependency to complete * `"PROCESSING"` - The step run is currently executing * `"PROCESSED"` - The step run completed successfully * `"FAILED"` - The step run encountered an error * `"INVALIDATED"` - The step run was invalidated * `"CANCELLED"` - The step run was cancelled
  - Allowed values: `PENDING`, `WAITING`, `PROCESSING`, `PROCESSED`, `FAILED`, `INVALIDATED`, `CANCELLED`
- `files` (list of FileSummary, required) — The files associated with this step run.
- `step` (RouterStepRunStep, required) — Base properties shared by all workflow step types.
- `result` (RouterResult, required, nullable) — The result of this router step. Nullable for step runs without a result.

### RunUsageBreakdownEntry

One line item in a run's `usage.breakdown`. Each entry corresponds to a concrete chargeable resource that contributed credits to the parent operation. When `charges` is present, it itemizes the cost drivers behind this entry's `credits`.

- `object` (enum, required) — The public object type of the contributing resource. Mirrors the top-level `object` field on the corresponding endpoint so callers can fetch the underlying resource by id if they want more detail.
  - Allowed values: `extract_run`, `classify_run`, `split_run`, `parse_run`, `edit_run`, `form_detection_run`
- `id` (string, required) — The id of the contributing resource (e.g. `pr_3UZSj69pYZDKHFuuX57ic`).
- `credits` (double, required) — Credits charged to the contributing resource.
- `charges` (list of RunUsageBreakdownCharge, optional) — Itemized cost drivers that make up this entry's `credits`. When present, `sum(charges[].credits) === credits`. **Availability:** Present on runs persisted on or after June 10, 2026. Runs persisted before that date will omit this field.

### ParentSplit

The split metadata details for a derivative file. **Availability:** Only included if this file is a derivative of another file, for instance if it was created via a Splitter in a workflow.

- `id` (string, required) — The ID of the split.
- `type` (string, required) — The type of the split.
- `identifier` (string, required) — The identifier of the split.
- `startPage` (integer, required) — The start page of the split.
- `endPage` (integer, required) — The end page of the split.

### ParseStepRunStep

Base properties shared by all workflow step types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step"`.
  - Allowed values: `workflow_step`
- `name` (string, required) — The name of the workflow step. Example: `"Validate Invoice Total"`
- `type` (enum, required) — The type of workflow step. Will always be `"PARSE"` for this step run type.
  - Allowed values: `PARSE`
- `id` (string, required, deprecated) — **Deprecated:** This ID is not consistent across workflow versions. This field will be removed in a future API version. The ID of the workflow step. Example: `"step_xKm9pNv3qWsY_jL2tR5Dh"`

### ParseResult

The result of a parse step.

- `parseRun` (ParseRun, required) — The parse run that was executed.

### ExtractStepRunStep

Base properties shared by all workflow step types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step"`.
  - Allowed values: `workflow_step`
- `name` (string, required) — The name of the workflow step. Example: `"Validate Invoice Total"`
- `type` (enum, required) — The type of workflow step. Will always be `"EXTRACT"` for this step run type.
  - Allowed values: `EXTRACT`
- `id` (string, required, deprecated) — **Deprecated:** This ID is not consistent across workflow versions. This field will be removed in a future API version. The ID of the workflow step. Example: `"step_xKm9pNv3qWsY_jL2tR5Dh"`

### ExtractResult

The result of an extract step.

- `extractRun` (ExtractRun, required) — The extract run that was executed.

### ClassifyStepRunStep

Base properties shared by all workflow step types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step"`.
  - Allowed values: `workflow_step`
- `name` (string, required) — The name of the workflow step. Example: `"Validate Invoice Total"`
- `type` (enum, required) — The type of workflow step. Will always be `"CLASSIFY"` for this step run type.
  - Allowed values: `CLASSIFY`
- `id` (string, required, deprecated) — **Deprecated:** This ID is not consistent across workflow versions. This field will be removed in a future API version. The ID of the workflow step. Example: `"step_xKm9pNv3qWsY_jL2tR5Dh"`

### ClassifyResult

The result of a classify step.

- `classifyRun` (ClassifyRun, required) — The classify run that was executed.

### SplitStepRunStep

Base properties shared by all workflow step types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step"`.
  - Allowed values: `workflow_step`
- `name` (string, required) — The name of the workflow step. Example: `"Validate Invoice Total"`
- `type` (enum, required) — The type of workflow step. Will always be `"SPLIT"` for this step run type.
  - Allowed values: `SPLIT`
- `id` (string, required, deprecated) — **Deprecated:** This ID is not consistent across workflow versions. This field will be removed in a future API version. The ID of the workflow step. Example: `"step_xKm9pNv3qWsY_jL2tR5Dh"`

### SplitResult

The result of a split step.

- `splitRun` (SplitRun, required) — The split run that was executed.

### MergeExtractStepRunStep

Base properties shared by all workflow step types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step"`.
  - Allowed values: `workflow_step`
- `name` (string, required) — The name of the workflow step. Example: `"Validate Invoice Total"`
- `type` (enum, required) — The type of workflow step. Will always be `"MERGE_EXTRACT"` for this step run type.
  - Allowed values: `MERGE_EXTRACT`
- `id` (string, required, deprecated) — **Deprecated:** This ID is not consistent across workflow versions. This field will be removed in a future API version. The ID of the workflow step. Example: `"step_xKm9pNv3qWsY_jL2tR5Dh"`

### MergeExtractResult

The result of a merge extract step, which combines outputs from multiple extraction runs into a single output.

- `mergedExtractors` (list of MergeExtractResultMergedExtractorsItems, required) — The extractors that were merged to produce the output.
- `extractRun` (ExtractRun, required) — The resulting extract run containing the merged output.

### ConditionalExtractStepRunStep

Base properties shared by all workflow step types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step"`.
  - Allowed values: `workflow_step`
- `name` (string, required) — The name of the workflow step. Example: `"Validate Invoice Total"`
- `type` (enum, required) — The type of workflow step. Will always be `"CONDITIONAL_EXTRACT"` for this step run type.
  - Allowed values: `CONDITIONAL_EXTRACT`
- `id` (string, required, deprecated) — **Deprecated:** This ID is not consistent across workflow versions. This field will be removed in a future API version. The ID of the workflow step. Example: `"step_xKm9pNv3qWsY_jL2tR5Dh"`

### ConditionalExtractResult

The result of a conditional extract step, which routes to different extractors based on rules.

- `extractRun` (ExtractRun, required) — The extract run that was executed based on the matched rule.

### RuleValidationStepRunStep

Base properties shared by all workflow step types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step"`.
  - Allowed values: `workflow_step`
- `name` (string, required) — The name of the workflow step. Example: `"Validate Invoice Total"`
- `type` (enum, required) — The type of workflow step. Will always be `"RULE_VALIDATION"` for this step run type.
  - Allowed values: `RULE_VALIDATION`
- `id` (string, required, deprecated) — **Deprecated:** This ID is not consistent across workflow versions. This field will be removed in a future API version. The ID of the workflow step. Example: `"step_xKm9pNv3qWsY_jL2tR5Dh"`

### RuleValidationResult

The result of a rule validation step.

- `rules` (list of RuleValidationResultRulesItems, required) — The list of validation rules and their results.
- `allPassed` (boolean, required) — Indicates whether all validation rules passed.

### ExternalDataValidationStepRunStep

Base properties shared by all workflow step types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step"`.
  - Allowed values: `workflow_step`
- `name` (string, required) — The name of the workflow step. Example: `"Validate Invoice Total"`
- `type` (enum, required) — The type of workflow step. Will always be `"EXTERNAL_DATA_VALIDATION"` for this step run type.
  - Allowed values: `EXTERNAL_DATA_VALIDATION`
- `id` (string, required, deprecated) — **Deprecated:** This ID is not consistent across workflow versions. This field will be removed in a future API version. The ID of the workflow step. Example: `"step_xKm9pNv3qWsY_jL2tR5Dh"`

### ExternalDataValidationResult

The result of an external data validation step.

- `response` (ExternalDataValidationResultResponse, required) — The response from the external validation endpoint.

### ValidationStepRunStep

Base properties shared by all workflow step types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step"`.
  - Allowed values: `workflow_step`
- `name` (string, required) — The name of the workflow step. Example: `"Validate Invoice Total"`
- `type` (enum, required) — The type of workflow step. Will always be `"VALIDATION"` for this step run type.
  - Allowed values: `VALIDATION`
- `id` (string, required, deprecated) — **Deprecated:** This ID is not consistent across workflow versions. This field will be removed in a future API version. The ID of the workflow step. Example: `"step_xKm9pNv3qWsY_jL2tR5Dh"`

### ValidationResult

The result of a validation step.

- `valid` (boolean, required) — Whether all validation blocks passed.
- `blocks` (list of ValidationBlockResult, required) — The validation blocks and their results.

### RouterStepRunStep

Base properties shared by all workflow step types.

- `object` (enum, required) — The type of object. In this case, it will always be `"workflow_step"`.
  - Allowed values: `workflow_step`
- `name` (string, required) — The name of the workflow step. Example: `"Validate Invoice Total"`
- `type` (enum, required) — The type of workflow step. Will always be `"ROUTER"` for this step run type.
  - Allowed values: `ROUTER`
- `id` (string, required, deprecated) — **Deprecated:** This ID is not consistent across workflow versions. This field will be removed in a future API version. The ID of the workflow step. Example: `"step_xKm9pNv3qWsY_jL2tR5Dh"`

### RouterResult

The result of a router step.

- `matchedBranch` (RouterResultMatchedBranch, required, nullable) — The first matching branch, or `null` when no branch matched and the `"otherwise"` route was taken.
- `branches` (list of RouterBranchResult, required) — Evaluated branch predicates, in evaluation order. Evaluation stops after the first matching branch.

### RunUsageBreakdownCharge

A single cost driver within a breakdown entry's credit total. The per-unit rate is `credits / quantity`. Certain charges, such as `agent_usage`, have a unit of `usd`

- `product` (string, required) — Identifier for the billable cost driver. Base charges use the processor and tier (e.g. `extraction_performance`, `extraction_light`, `parse_light`); add-ons use the feature code (e.g. `review_agent`, `large_array_max_context`, `extraction_schema_groups`, `priority_parsing`, `agentic_text_correction`, `advanced_excel_parsing`); `agent_usage` is an Operator overage for unusually high effort relative to document size.
- `unit` (enum, required) — The unit `quantity` is measured in. `page` for per-page charges, `cell` for advanced Excel parsing, `usd` for additional amounts billed such as Operator overages (`agent_usage`).
  - Allowed values: `page`, `cell`, `usd`
- `quantity` (double, required) — How many units this charge was billed for.
- `credits` (double, required) — Credits consumed by this charge.
- `pages` (list of integer, optional) — 1-indexed page numbers that incurred this charge. Present on usage-based add-ons that are only billed for the pages where they actually applied (e.g. `agentic_text_correction`, `agentic_table_correction`).

### ParseRun

Parse run object.

- `object` (enum, required) — The type of object. Will always be `"parse_run"`.
  - Allowed values: `parse_run`
- `id` (string, required) — A unique identifier for the parse run. Example: `"pr_xK9mLPqRtN3vS8wF5hB2cQ"`
- `file` (FileSummary, required, nullable) — The file that was parsed. This file can be used as a parameter for other Extend endpoints, such as `POST /workflow_runs`. May be `null` for batch parse runs where file ingestion failed.
- `status` (enum, required) — The status of the parse run: * `"PENDING"` - The run has been created and is waiting to be processed. Only applies to runs created via `POST /parse_runs/batch`. * `"PROCESSING"` - The file is still being processed * `"PROCESSED"` - The file was successfully processed * `"FAILED"` - The processing failed (see `failureReason` for details)
  - Allowed values: `PENDING`, `PROCESSING`, `PROCESSED`, `FAILED`
- `failureReason` (string, required, nullable) — The reason for failure. **Availability:** Present when `status` is `"FAILED"`. Possible values include: * `UNABLE_TO_DOWNLOAD_FILE` - The file could not be downloaded from the provided URL * `FILE_TYPE_NOT_SUPPORTED` - The file type is not supported for parsing * `FILE_SIZE_TOO_LARGE` - The file exceeds the maximum allowed size * `CORRUPT_FILE` - The file appears to be corrupted or malformed * `OCR_ERROR` - An error occurred during optical character recognition * `PASSWORD_PROTECTED_FILE` - The file is password protected and cannot be processed * `FAILED_TO_CONVERT_TO_PDF` - The file could not be converted to PDF for processing * `FAILED_TO_CONVERT_TO_JPEG` - The file could not be converted to JPEG for processing * `FAILED_TO_GENERATE_TARGET_FORMAT` - The output could not be generated in the requested format * `CHUNKING_ERROR` - An error occurred while chunking the document * `INTERNAL_ERROR` - An unexpected internal error occurred * `INVALID_CONFIG_OPTIONS` - The provided configuration options are invalid * `OUT_OF_CREDITS` - Insufficient credits to process the file **Note:** Additional failure reasons may be added in the future. Your integration should handle unknown values gracefully.
- `failureMessage` (string, required, nullable) — A human-readable description of the failure. **Availability:** Present when `status` is `"FAILED"`.
- `metadata` (map from string to any, required, nullable) — Any metadata that was provided when creating the parse run. **Availability:** Present when metadata was provided during creation.
- `output` (ParseRunOutput, required, nullable) — The parse run output. **Availability:** Present when `status` is `"PROCESSED"` and the request was made without the `responseType=url` query parameter. Contains the parsed chunks.
- `outputUrl` (string, required, nullable) — A presigned URL to download the parse run output as a JSON file. The object shape is the same as the `output` field. Expires after 15 minutes. **Availability:** Present when `status` is `"PROCESSED"` and the request was made with `responseType=url` query parameter.
- `metrics` (ParseRunMetrics, required, nullable) — Metrics about the parsing process. **Availability:** Present when `status` is `"PROCESSED"`.
- `config` (ParseConfig, required) — The configuration used for the parsing process, including any default values that were applied.
- `usage` (RunUsage, required, nullable) — Usage credits consumed by this parse run. **Availability:** Present when `status` is `"PROCESSED"`, the run was created after October 7, 2025, and the customer is on the current billing system.
- `batchId` (string, optional, nullable) — The ID of the batch this run belongs to, if created via `POST /parse_runs/batch`. **Availability:** Present when the run was submitted as part of a batch. Example: `"bpar_Xj8mK2pL9nR4vT7qY5wZ"`

### ExtractRun

Extract run object.

- `object` (enum, required) — The type of object. Will always be `"extract_run"`.
  - Allowed values: `extract_run`
- `id` (string, required) — The unique identifier for this extract run. Example: `"exr_Xj8mK2pL9nR4vT7qY5wZ"`
- `status` (enum, required) — The status of a processor run (extract, classify, or split): * `"PENDING"` - The run has been created and is waiting to be processed * `"PROCESSING"` - The run is in progress * `"PROCESSED"` - The run completed successfully * `"FAILED"` - The run failed * `"CANCELLED"` - The run was cancelled
  - Allowed values: `PENDING`, `PROCESSING`, `PROCESSED`, `FAILED`, `CANCELLED`
- `output` (ExtractOutput, required, nullable) — The final output, either reviewed or initial. This is a union of two possible shapes: - **[JSON Schema output](https://docs.extend.ai/2026-02-09/extraction/response-format):** The current output format, returned for runs created with a JSON Schema config. - **[Legacy output](https://docs.extend.ai/2025-04-21/product/legacy/output-type-legacy):** A legacy output format from a previous API version. This shape is only returned for runs that were originally created with a legacy config. **Availability:** Present when `status` is `"PROCESSED"`.
- `initialOutput` (ExtractOutput, required, nullable) — The initial output from the extract run, before any review edits. **Availability:** Present when `reviewed` is `true`.
- `reviewedOutput` (ExtractOutput, required, nullable) — The output after human review. **Availability:** Present when `reviewed` is `true`.
- `failureReason` (string, required, nullable) — The reason for failure. **Availability:** Present when `status` is `"FAILED"`. Possible values include: * `ABORTED` - The run was aborted by the user * `INTERNAL_ERROR` - An unexpected internal error occurred * `FAILED_TO_PROCESS_FILE` - Failed to process the file (e.g., OCR failure, file access issues) * `INVALID_PROCESSOR` - The processor configuration is invalid * `INVALID_CONFIGURATION` - The provided configuration is incompatible with the selected model * `PARSING_ERROR` - Failed to parse the extraction output * `PRE_PROCESSING_FAILURE` - An error occurred during preprocessing (e.g., chunking) * `POST_PROCESSING_FAILURE` - An error occurred during postprocessing * `OUT_OF_CREDITS` - Insufficient credits to run the extraction * `SCHEMA_GENERATION_FAILED` - Automatic schema inference failed (only applies when `schema` is omitted). The file could not be parsed or a schema could not be generated from it. **Note:** Additional failure reasons may be added in the future. Your integration should handle unknown values gracefully.
- `failureMessage` (string, required, nullable) — A detailed message about the failure. **Availability:** Present when `status` is `"FAILED"`.
- `metadata` (map from string to any, required, nullable) — Any metadata that was provided when creating the extract run. **Availability:** Present when metadata was provided during creation.
- `reviewed` (boolean, required) — Indicates whether the run has been reviewed by a human.
- `edited` (boolean, required) — Indicates whether the run results have been edited during review.
- `edits` (map from string to ExtractOutputEdits, required, nullable) — Details of edits made during review. **Availability:** Present when `edited` is `true`.
- `config` (ExtractConfig, required) — The configuration used for this extract run. This is a union of two possible shapes: - **[JSON Schema config](https://docs.extend.ai/2026-02-09/extraction/schema):** The current config format. All runs created through this API version use this shape. - **[Legacy config](https://docs.extend.ai/2025-04-21/product/legacy/legacy-schema):** A fields-array config from a previous API version. This shape is only returned when retrieving runs that were originally created with the legacy format. This API version does not support creating runs with legacy configs.
- `extractor` (ExtractorSummary, required, nullable) — The extractor that was used for this run. **Availability:** Present when an extractor reference was provided. Not present when using inline `config`.
- `extractorVersion` (ExtractorVersionSummary, required, nullable) — The version of the extractor that was used for this run. **Availability:** Present when an extractor reference was provided. Not present when using inline `config`.
- `file` (FileSummary, required, nullable) — The file that was processed. `null` for multifile runs (use `files` instead), and `null` when the file could not be accessed or processed (for example, a run that failed during file ingestion).
- `files` (list of FileSummary, required, nullable) — The files that were processed, in the order they were submitted. Only populated for multifile runs (created with `package`). For single-file runs, this is `null` — use `file` instead.
- `parseRunId` (string, required, nullable) — The ID of the parse run that was used for this extract run. **Availability:** Present when a parse run was created.
- `dashboardUrl` (string, required) — The URL to view the extract run in the Extend dashboard.
- `usage` (RunUsage, required, nullable) — Usage credits consumed by this extract run. **Availability:** Present when `status` is `"PROCESSED"`. Will not be returned for runs created before October 7, 2025 or for customers on legacy billing systems.
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `updatedAt` (string, required) — The time (in UTC) at which the object was last updated. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`

### ClassifyRun

Classify run object.

- `object` (enum, required) — The type of object. Will always be `"classify_run"`.
  - Allowed values: `classify_run`
- `id` (string, required) — The unique identifier for this classify run. Example: `"clr_Xj8mK2pL9nR4vT7qY5wZ"`
- `status` (enum, required) — The status of a processor run (extract, classify, or split): * `"PENDING"` - The run has been created and is waiting to be processed * `"PROCESSING"` - The run is in progress * `"PROCESSED"` - The run completed successfully * `"FAILED"` - The run failed * `"CANCELLED"` - The run was cancelled
  - Allowed values: `PENDING`, `PROCESSING`, `PROCESSED`, `FAILED`, `CANCELLED`
- `output` (ClassifyOutput, required, nullable) — The final output, either reviewed or initial. **Availability:** Present when `status` is `"PROCESSED"`.
- `classifier` (ClassifierSummary, required, nullable) — The classifier that was used for this run. **Availability:** Present when a classifier reference was provided. Not present when using inline `config`.
- `classifierVersion` (ClassifierVersionSummary, required, nullable) — The version of the classifier that was used for this run. **Availability:** Present when a classifier reference was provided. Not present when using inline `config`.
- `initialOutput` (ClassifyOutput, required, nullable) — The initial output from the classify run, before any review edits. **Availability:** Present when `reviewed` is `true`.
- `reviewedOutput` (ClassifyOutput, required, nullable) — The output after human review. **Availability:** Present when `reviewed` is `true`.
- `failureReason` (string, required, nullable) — The reason for failure. **Availability:** Present when `status` is `"FAILED"`. Possible values include: * `ABORTED` - The run was aborted by the user * `INTERNAL_ERROR` - An unexpected internal error occurred * `FAILED_TO_PROCESS_FILE` - Failed to process the file (e.g., OCR failure, file access issues) * `INVALID_PROCESSOR` - The processor configuration is invalid * `INVALID_CONFIGURATION` - The provided configuration is incompatible with the selected model * `PARSING_ERROR` - Failed to parse the classification output * `PRE_PROCESSING_FAILURE` - An error occurred during preprocessing * `POST_PROCESSING_FAILURE` - An error occurred during postprocessing * `OUT_OF_CREDITS` - Insufficient credits to run the classification **Note:** Additional failure reasons may be added in the future. Your integration should handle unknown values gracefully.
- `failureMessage` (string, required, nullable) — A detailed message about the failure. **Availability:** Present when `status` is `"FAILED"`.
- `metadata` (map from string to any, required, nullable) — Any metadata that was provided when creating the classify run. **Availability:** Present when metadata was provided during creation.
- `reviewed` (boolean, required) — Indicates whether the run has been reviewed by a human.
- `edited` (boolean, required) — Indicates whether the run results have been edited during review.
- `config` (ClassifyConfig, required) — The configuration used for this classify run.
- `file` (FileSummary, required, nullable) — The file that was processed. `null` when the file could not be accessed or processed (for example a run that failed during file ingestion, or a multi-file batch run).
- `parseRunId` (string, required, nullable) — The ID of the parse run that was used for this classify run. **Availability:** Present when a parse run was created.
- `dashboardUrl` (string, required) — The URL to view the classify run in the Extend dashboard.
- `usage` (RunUsage, required, nullable) — Usage credits consumed by this classify run. **Availability:** Present when `status` is `"PROCESSED"`. Will not be returned for runs created before October 7, 2025 or for customers on legacy billing systems.
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `updatedAt` (string, required) — The time (in UTC) at which the object was last updated. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`

### SplitRun

Split run object.

- `object` (enum, required) — The type of object. Will always be `"split_run"`.
  - Allowed values: `split_run`
- `id` (string, required) — The unique identifier for this split run. Example: `"splr_Xj8mK2pL9nR4vT7qY5wZ"`
- `status` (enum, required) — The status of a processor run (extract, classify, or split): * `"PENDING"` - The run has been created and is waiting to be processed * `"PROCESSING"` - The run is in progress * `"PROCESSED"` - The run completed successfully * `"FAILED"` - The run failed * `"CANCELLED"` - The run was cancelled
  - Allowed values: `PENDING`, `PROCESSING`, `PROCESSED`, `FAILED`, `CANCELLED`
- `output` (SplitOutput, required, nullable) — The final output, either reviewed or initial. **Availability:** Present when `status` is `"PROCESSED"`.
- `splitter` (SplitterSummary, required, nullable) — The splitter that was used for this run. **Availability:** Present when a splitter reference was provided. Not present when using inline `config`.
- `splitterVersion` (SplitterVersionSummary, required, nullable) — The version of the splitter that was used for this run. **Availability:** Present when a splitter reference was provided. Not present when using inline `config`.
- `initialOutput` (SplitOutput, required, nullable) — The initial output from the split run, before any review edits. **Availability:** Present when `reviewed` is `true`.
- `reviewedOutput` (SplitOutput, required, nullable) — The output after human review. **Availability:** Present when `reviewed` is `true`.
- `failureReason` (string, required, nullable) — The reason for failure. **Availability:** Present when `status` is `"FAILED"`. Possible values include: * `ABORTED` - The run was aborted by the user * `INTERNAL_ERROR` - An unexpected internal error occurred * `FAILED_TO_PROCESS_FILE` - Failed to process the file (e.g., OCR failure, file access issues) * `INVALID_PROCESSOR` - The processor configuration is invalid * `INVALID_CONFIGURATION` - The provided configuration is incompatible with the selected model * `PARSING_ERROR` - Failed to parse the splitting output * `PRE_PROCESSING_FAILURE` - An error occurred during preprocessing * `POST_PROCESSING_FAILURE` - An error occurred during postprocessing * `OUT_OF_CREDITS` - Insufficient credits to run the splitter **Note:** Additional failure reasons may be added in the future. Your integration should handle unknown values gracefully.
- `failureMessage` (string, required, nullable) — A detailed message about the failure. **Availability:** Present when `status` is `"FAILED"`.
- `metadata` (map from string to any, required, nullable) — Any metadata that was provided when creating the split run. **Availability:** Present when metadata was provided during creation.
- `reviewed` (boolean, required) — Indicates whether the run has been reviewed by a human.
- `edited` (boolean, required) — Indicates whether the run results have been edited during review.
- `config` (SplitConfig, required) — The configuration used for this split run.
- `file` (FileSummary, required, nullable) — The file that was processed. `null` when the file could not be accessed or processed (for example a run that failed during file ingestion, or a multi-file batch run).
- `parseRunId` (string, required, nullable) — The ID of the parse run that was used for this split run. **Availability:** Present when a parse run was created.
- `dashboardUrl` (string, required) — The URL to view the split run in the Extend dashboard.
- `usage` (RunUsage, required, nullable) — Usage credits consumed by this split run. **Availability:** Present when `status` is `"PROCESSED"`. Will not be returned for runs created before October 7, 2025 or for customers on legacy billing systems.
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `updatedAt` (string, required) — The time (in UTC) at which the object was last updated. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`

### MergeExtractResultMergedExtractorsItems

- `id` (string, required) — The ID of the extractor that was merged.
- `versionId` (string, required) — The ID of the extractor version that was merged.
- `name` (string, required) — The name of the extractor that was merged.

### RuleValidationResultRulesItems

- `name` (string, required) — The name of the validation rule.
- `valid` (boolean, required) — Indicates whether this validation rule passed or not. This field will be `true` only if the formula evaluates to `true`. If the rule's formula is array valued, then this field will only be `true` if the formula evaluates to `true` for every item in the array.
- `validArray` (list of boolean, optional) — Present if the validation rule's formula is array valued. This field contains the formula's evaluated result for every item in the array.
- `failureReason` (enum, optional) — If the validation rule is not valid, then this describes why the rule failed. * `"RULE_FAILED"` - The formula evaluated to `false` or `null` * `"PARSE_ERROR"` - The formula could not be parsed * `"VALUE_ERROR"` - An error occurred while evaluating the formula
  - Allowed values: `RULE_FAILED`, `PARSE_ERROR`, `VALUE_ERROR`
- `error` (string, optional) — If the `failureReason` is `PARSE_ERROR` or `VALUE_ERROR`, then this field contains the error's details.

### ExternalDataValidationResultResponse

The response from the external validation endpoint.

- `status` (integer, required) — The HTTP status code returned by the external endpoint.
- `data` (map from string to any, required) — The JSON response body returned by the external endpoint.

### ValidationBlockResult

The result of evaluating one validation block.

- `id` (string, required) — The validation block ID.
- `name` (string, required) — The validation block name.
- `valid` (boolean, required) — Whether the validation block passed.
- `error` (string, optional) — Error details when the block could not be evaluated.
- `reasoning` (string, optional) — Reasoning returned by the validation block, when available.

### RouterResultMatchedBranch

The first matching branch, or `null` when no branch matched and the `"otherwise"` route was taken.

- `id` (string, required) — The matched branch ID.
- `name` (string, required) — The matched branch name.

### RouterBranchResult

The result of evaluating one router branch predicate.

- `id` (string, required) — The branch ID.
- `name` (string, required) — The branch name.
- `matched` (boolean, required) — Whether the branch predicate matched.
- `reasoning` (string, optional) — Reasoning returned by the branch predicate, when available.
- `error` (string, optional) — Error details when the branch predicate could not be evaluated.

### ParseRunOutput

The parse run output. **Availability:** Present when `status` is `"PROCESSED"` and the request was made without the `responseType=url` query parameter. Contains the parsed chunks.

- `chunks` (list of Chunk, required) — An array of chunks that were parsed from the file.
- `ocr` (ParseRunOutputOcr, optional) — Raw OCR data from the parsing process. Only included when `returnOcr` is configured in the parse config's advanced options.
- `metadata` (ParseRunOutputMetadata, optional, nullable) — Rotation, dimension, and file-type metadata about the parse output. `null` for parse runs that completed before this field was introduced.

### ParseRunMetrics

Metrics about the parsing process. **Availability:** Present when `status` is `"PROCESSED"`.

- `processingTimeMs` (double, required) — The time taken to process the document in milliseconds.
- `pageCount` (double, required) — The number of pages from the document that were parsed. For PDF and image files, this is the actual page count. For spreadsheet files (Excel, CSV), this is an estimated page count based on content volume (~1000 tokens per page).

### ParseConfig

Configuration options for the parsing process. Defaults depend on the selected parser engine and version.

- `target` (enum, optional, default: markdown) — The target format for the parsed content. Supported values: * `markdown`: True markdown with logical reading order (headings, lists, tables, checkboxes). Best default for LLMs/RAG and enables section-based chunking. * `spatial`: Layout/position-preserving text that uses markdown elements for block types but is not strictly markdown due to whitespace/tabs used to maintain placement. Only page-based chunking is supported. Guidance: * Prefer `markdown` for most documents, multi-column reading order, and retrieval use cases * Prefer `spatial` for messy/scanned/handwritten or skewed documents, when you need near 1:1 layout fidelity, or for BOL-like logistics docs See “Markdown vs Spatial” in the [Parse guide](https://docs.extend.ai/2026-02-09/parsing/configuration#target-format) for details.
  - Allowed values: `markdown`, `spatial`
- `chunkingStrategy` (ParseConfigChunkingStrategy, optional) — Strategy for dividing the document into chunks.
- `engine` (enum, optional, default: parse_performance) — The parsing engine to use. Supported values: * `parse_performance`: Full-featured parsing engine with highest accuracy (default) * `parse_light`: Lightweight parsing engine optimized for high-volume, cost-sensitive ingestion. Uses the new layout model with full layout support and the markdown target at lower cost and latency, but performs worse than `parse_performance` on lower-quality scans, harder handwriting, larger tables, non-Latin-based languages, and dense checkbox regions. * `parse_auto`: Adaptive parsing that classifies difficulty and routes work per page — simple pages are parsed with the parse_light model pipeline while complex pages get performance-level model treatment. Billed per page by complexity.
  - Allowed values: `parse_performance`, `parse_light`, `parse_auto`
- `engineVersion` (string, optional, default: latest) — Pin a specific parser engine version for reproducibility. When set to `latest`, the most recent stable version of the selected engine is used.
- `blockOptions` (ParseConfigBlockOptions, optional) — Options for controlling how different block types are processed.
- `advancedOptions` (ParseConfigAdvancedOptions, optional)

### ExtractOutput

### ExtractOutputEdits

A record of edits made to the processor output.

- `originalValue` (any, optional) — The original value before editing.
- `editedValue` (any, optional) — The value after editing.
- `notes` (string, optional) — Any notes added during editing.
- `page` (double, optional) — The page number where the edit was made.
- `fieldType` (string, optional) — The type of the edited field.

### ExtractConfig

### ExtractorSummary

- `object` (enum, required) — The type of object. Will always be `"extractor"`.
  - Allowed values: `extractor`
- `id` (string, required) — The ID of the extractor. Example: `"ex_Xj8mK2pL9nR4vT7qY5wZ"`
- `name` (string, required) — The name of the extractor. Example: `"Invoice Extractor"`
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `updatedAt` (string, required) — The time (in UTC) at which the object was last updated. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`

### ExtractorVersionSummary

- `object` (enum, required) — The type of object. Will always be `"extractor_version"`.
  - Allowed values: `extractor_version`
- `id` (string, required) — The unique identifier for this version of the extractor. Example: `"exv_xK9mLPqRtN3vS8wF5hB2cQ"`
- `description` (string, required, nullable) — A description of this version of the extractor. Example: `"Updated extraction fields for new invoice format"`
- `version` (string, required) — The version number or identifier for this specific version of the extractor. The draft version will have version="draft". Examples: `"1.0"`, `"2.1"`, `"draft"`
- `extractorId` (string, required) — The ID of the extractor that this version belongs to. Example: `"ex_Xj8mK2pL9nR4vT7qY5wZ"`
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `createdBy` (CreatedBy, required) — The actor that created this resource. * `user` — the resource was created via the studio by a logged-in user. The user's `email` is exposed. * `api_key` — the resource was created via the API using an API key. The key's `name` is exposed. May be `null` for resources created before attribution.

### ClassifyOutput

- `id` (string, required) — The unique identifier for this classification
- `type` (string, required) — The type of classification
- `confidence` (double, required) — A value between 0 and 1 indicating the model's confidence in the classification, where 1 represents maximum confidence
- `insights` (list of Insight, required) — Additional insights about the classification decision

### ClassifierSummary

- `object` (enum, required) — The type of object. Will always be `"classifier"`.
  - Allowed values: `classifier`
- `id` (string, required) — The ID of the classifier. Example: `"cl_Xj8mK2pL9nR4vT7qY5wZ"`
- `name` (string, required) — The name of the classifier. Example: `"Document Type Classifier"`
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `updatedAt` (string, required) — The time (in UTC) at which the object was last updated. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`

### ClassifierVersionSummary

- `object` (enum, required) — The type of object. Will always be `"classifier_version"`.
  - Allowed values: `classifier_version`
- `id` (string, required) — The unique identifier for this version of the classifier. Example: `"clv_xK9mLPqRtN3vS8wF5hB2cQ"`
- `description` (string, required, nullable) — A description of this version of the classifier. Example: `"Added new document types for Q4 processing"`
- `version` (string, required) — The version number or identifier for this specific version of the classifier. The draft version will have version="draft". Examples: `"1.0"`, `"2.1"`, `"draft"`
- `classifierId` (string, required) — The ID of the classifier that this version belongs to. Example: `"cl_Xj8mK2pL9nR4vT7qY5wZ"`
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `createdBy` (CreatedBy, required) — The actor that created this resource. * `user` — the resource was created via the studio by a logged-in user. The user's `email` is exposed. * `api_key` — the resource was created via the API using an API key. The key's `name` is exposed. May be `null` for resources created before attribution.

### ClassifyConfig

- `classifications` (list of Classification, required) — Array of possible classifications. Must provide at least one classification. At least one classification must have the type `"other"`. Each classification item must have a unique id.
- `baseProcessor` (enum, optional, default: classification_performance) — The base processor to use. For classifiers, this can be either `"classification_performance"` or `"classification_light"`. Defaults to `"classification_performance"` if not provided. See [Classification Changelog](https://docs.extend.ai/2026-02-09/model-versioning/classification/classification-performance) for more details.
  - Allowed values: `classification_performance`, `classification_light`
- `baseVersion` (string, optional) — The version of the `"classification_performance"` or `"classification_light"` processor to use. If not provided, the latest stable version for the selected `baseProcessor` will be used automatically. See [Classification Changelog](https://docs.extend.ai/2026-02-09/model-versioning/classification/classification-performance) for more details.
- `classificationRules` (string, optional) — Custom rules to guide the classification process in natural language.
- `advancedOptions` (ClassifyAdvancedOptions, optional) — Advanced configuration options.
- `parseConfig` (ParseConfig, optional) — Configuration options for the parsing process.

### SplitOutput

- `splits` (list of SplitOutputSplitsItems, required)
- `isExternal` (boolean, optional)

### SplitterSummary

- `object` (enum, required) — The type of object. Will always be `"splitter"`.
  - Allowed values: `splitter`
- `id` (string, required) — The ID of the splitter. Example: `"spl_Xj8mK2pL9nR4vT7qY5wZ"`
- `name` (string, required) — The name of the splitter. Example: `"Invoice Packet Splitter"`
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `updatedAt` (string, required) — The time (in UTC) at which the object was last updated. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`

### SplitterVersionSummary

- `object` (enum, required) — The type of object. Will always be `"splitter_version"`.
  - Allowed values: `splitter_version`
- `id` (string, required) — The unique identifier for this version of the splitter. Example: `"splv_xK9mLPqRtN3vS8wF5hB2cQ"`
- `description` (string, required, nullable) — A description of this version of the splitter. Example: `"Updated split rules for multi-invoice packets"`
- `version` (string, required) — The version number or identifier for this specific version of the splitter. The draft version will have version="draft". Examples: `"1.0"`, `"2.1"`, `"draft"`
- `splitterId` (string, required) — The ID of the splitter that this version belongs to. Example: `"spl_Xj8mK2pL9nR4vT7qY5wZ"`
- `createdAt` (string, required) — The time (in UTC) at which the object was created. Will follow the RFC 3339 format. Example: `"2024-03-21T16:45:00Z"`
- `createdBy` (CreatedBy, required) — The actor that created this resource. * `user` — the resource was created via the studio by a logged-in user. The user's `email` is exposed. * `api_key` — the resource was created via the API using an API key. The key's `name` is exposed. May be `null` for resources created before attribution.

### SplitConfig

- `splitClassifications` (list of SplitClassification, required) — Array of split classifications that define the possible types of document sections. Must provide at least one classification. At least one classification must have the type `"other"`. Each classification item must have a unique id.
- `baseProcessor` (enum, optional, default: splitting_performance) — The base processor to use. For splitters, this can be either `"splitting_performance"` or `"splitting_light"`. Defaults to `"splitting_performance"` if not provided. See [Splitting Changelog](https://docs.extend.ai/2026-02-09/model-versioning/splitting/splitting-performance) for more details.
  - Allowed values: `splitting_performance`, `splitting_light`
- `baseVersion` (string, optional) — The version of the `"splitting_performance"` or `"splitting_light"` processor to use. If not provided, the latest stable version for the selected `baseProcessor` will be used automatically. See [Splitting Changelog](https://docs.extend.ai/2026-02-09/model-versioning/splitting/splitting-performance) for more details.
- `splitRules` (string, optional) — Custom rules to guide the document splitting process in natural language.
- `advancedOptions` (SplitAdvancedOptions, optional) — Advanced configuration options.
- `parseConfig` (ParseConfig, optional) — Configuration options for the parsing process.

### Chunk

- `object` (enum, required) — The type of object. In this case, it will always be `"chunk"`.
  - Allowed values: `chunk`
- `type` (enum, required) — The type of chunk.
  - Allowed values: `page`, `document`, `section`
- `content` (string, required) — The parsed content of the chunk.
- `metadata` (ChunkMetadata, required) — Metadata about the chunk.
- `blocks` (list of Block, required) — An array of block objects that make up the chunk. A Block represents a distinct content element within a document, such as a paragraph of text, a heading, a table, or a figure. Blocks are the fundamental units that make up chunks in parsed documents.

### ParseRunOutputOcr

Raw OCR data from the parsing process. Only included when `returnOcr` is configured in the parse config's advanced options.

- `words` (list of ParseRunOutputOcrWordsItems, optional) — An array of individual words detected by OCR.

### ParseRunOutputMetadata

Rotation, dimension, and file-type metadata about the parse output. `null` for parse runs that completed before this field was introduced.

- `originalMimeType` (string, optional, nullable) — The file's media type before any format conversion.
- `finalMimeType` (string, optional, nullable) — The file's media type after any format conversion.
- `pages` (list of ParseRunOutputMetadataPagesItems, optional, nullable) — Per-page rotation and original-dimension info. Set when file is a PDF or was converted to PDF.

### ParseConfigChunkingStrategy

Strategy for dividing the document into chunks.

- `type` (enum, optional, default: page) — The type of chunking strategy. Supported values: * `page`: Chunk document by pages. * `document`: Entire document is a single chunk. Essentially no chunking. * `section`: Split by logical sections. Not supported for target=spatial.
  - Allowed values: `page`, `document`, `section`
- `options` (ParseConfigChunkingStrategyOptions, optional) — Additional options for the chunking strategy.

### ParseConfigBlockOptions

Options for controlling how different block types are processed.

- `figures` (ParseConfigBlockOptionsFigures, optional) — Options for figure blocks.
- `tables` (ParseConfigBlockOptionsTables, optional) — Options for table blocks.
- `text` (ParseConfigBlockOptionsText, optional) — Options for text blocks.
- `keyValue` (ParseConfigBlockOptionsKeyValue, optional) — Options for key-value pair blocks.
- `barcodes` (ParseConfigBlockOptionsBarcodes, optional) — Options for barcode blocks.
- `formulas` (ParseConfigBlockOptionsFormulas, optional) — Options for formula blocks.

### ParseConfigAdvancedOptions

- `pageRotationEnabled` (boolean, optional, default: true) — Whether to automatically detect and correct page rotation.
- `pageRanges` (list of PageRangesItems, optional) — Limit processing to the specified page ranges. See [Page Ranges](https://docs.extend.ai/2026-02-09/page-ranges).
- `excelParsingMode` (enum, optional) — Controls how Excel files are parsed. * `basic`: Fast, deterministic parsing. * `advanced`: Enable layout block detection for complex spreadsheets. This mode incurs additional credits when enabled. For `.xls` files, `basic` mode is always used.
  - Allowed values: `basic`, `advanced`
- `excelSkipHiddenContent` (boolean, optional, default: false) — Whether to exclude hidden rows, columns, and sheets when parsing Excel files.
- `excelUseRawCellValues` (boolean, optional, default: false) — Whether to return raw calculated cell values instead of locale-formatted values when parsing Excel files. Useful when downstream processing needs the underlying numeric or unformatted data.
- `excelSkipCalculation` (boolean, optional, default: true) — Whether to skip formula recalculation when opening Excel workbooks. Significantly improves parsing speed for formula-heavy spreadsheets. Disable if cell values depend on volatile functions like NOW() or TODAY().
- `excelIncludeCellMetadata` (boolean, optional, default: false) — Whether to include spreadsheet cell provenance when parsing Excel files in advanced mode. When enabled, table cell block details include source cell references and formulas, text or heading block details can include source ranges, and HTML table output includes `data-cell` and `data-formula` attributes.
- `excelIncludeCellFormatting` (boolean, optional, default: false) — Whether to include spreadsheet cell formatting when parsing Excel files in advanced mode. When enabled, table cell block details include structured formatting such as bold, italic, font color, and background color, and HTML table output preserves inline cell styles.
- `verticalGroupingThreshold` (double, optional, default: 1) — Multiplier for the Y-axis threshold used to determine if text blocks should be placed on the same line or not (0.1-5.0, default 1.0). Higher values group elements that are further apart vertically. Only applies when the spatial target is set.
- `returnOcr` (ParseConfigAdvancedOptionsReturnOcr, optional) — Options for returning raw OCR data in the response.
- `alwaysConvertToPdf` (boolean, optional, default: false) — Whether to convert supported file types (images, Word documents, PowerPoint, Excel, HTML) to PDF before parsing. This can improve parsing quality for some file types and ensures spatial output with bounding boxes.
- `enrichmentFormat` (enum, optional, default: xml) — The format used for enrichment annotations in the output. * `xml`: Use XML-style tags for enrichment annotations, e.g. 1 or 1234567890 * `bracket`: Use bracket-style notation for enrichment annotations, e.g. \[page\_number: 1] or \[barcode: 1234567890]
  - Allowed values: `xml`, `bracket`
- `imageConversionQuality` (enum, optional, default: medium) — Controls the quality level when converting images or documents to PDF for parsing. * `high`: Maximum quality, can add some latency for large/dense documents * `medium`: Balanced quality and speed * `low`: Lower quality, smaller file sizes, faster processing
  - Allowed values: `high`, `medium`, `low`
- `formattingDetection` (list of ParseConfigAdvancedOptionsFormattingDetectionItems, optional) — Enable detection of formatting-based annotations in the document. Currently supports change tracking detection. When enabled, detected changes are represented inline within the `content` field of applicable blocks using standard HTML change-tracking elements: [`<ins>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins) for insertions and [`<del>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del) for deletions, grouped inside a `<change>` wrapper. Affected block types: `text`, `heading`, `section_heading`, `header`, `footer`. **Note:** Requires `engine: "parse_performance"` with `engineVersion >= "2.0.0"`.

### ExtractOutputJson

- `value` (map from string to any, required) — The extracted values conforming to the schema defined in the processor config
- `metadata` (ExtractOutputMetadata, required)

### ExtractConfigJson

- `baseProcessor` (enum, optional, default: extraction_performance) — The base processor to use. For extractors, this can be `"extraction_performance"`, `"extraction_light"`, or `"extraction_operator"`. Defaults to `"extraction_performance"` if not provided. See [Extraction Changelog](https://docs.extend.ai/2026-02-09/model-versioning/extraction/extraction-performance) for more details. `"extraction_operator"` selects [Operator](https://docs.extend.ai/2026-02-09/extraction/operator).
  - Allowed values: `extraction_performance`, `extraction_light`, `extraction_operator`
- `baseVersion` (string, optional) — The version of the `"extraction_performance"`, `"extraction_light"`, or `"extraction_operator"` processor to use. If not provided, the latest stable version will be used. See [Extraction Changelog](https://docs.extend.ai/2026-02-09/model-versioning/extraction/extraction-performance) for more details.
- `extractionRules` (string, optional) — Custom rules to guide the extraction process in natural language. When `schema` is omitted, `extractionRules` also serves as schema generation instructions — for example, `"Invoice with vendor name, line items, and total due"`. Providing focused instructions produces a more targeted inferred schema.
- `schema` (map from string to any, optional) — JSON Schema definition of the data to extract. **Optional** — if omitted, Extend automatically infers a schema from the document before running extraction. No extractor is required. See the [JSON Schema guide](https://docs.extend.ai/2026-02-09/extraction/schema) for details and examples of schema configuration.
- `advancedOptions` (ExtractAdvancedOptions, optional) — Advanced configuration options.
- `parseConfig` (ParseConfig, optional) — Configuration options for the parsing process.

### ExtractConfigLegacy

- `fields` (list of ExtractionField, required) — Array of fields to extract from the document. This is the legacy format. We recommend using JSON Schema (`schema` property) for new implementations.
- `baseProcessor` (enum, optional, default: extraction_performance) — The base processor to use. For extractors, this can be `"extraction_performance"` or `"extraction_light"`. Defaults to `"extraction_performance"` if not provided. See [Extraction Changelog](https://docs.extend.ai/2026-02-09/model-versioning/extraction/extraction-performance) for more details. `"extraction_operator"` is not supported on legacy `fields` configs.
  - Allowed values: `extraction_performance`, `extraction_light`
- `baseVersion` (string, optional) — The version of the `"extraction_performance"` or `"extraction_light"` processor to use. If not provided, the latest stable version will be used. See [Extraction Changelog](https://docs.extend.ai/2026-02-09/model-versioning/extraction/extraction-performance) for more details.
- `extractionRules` (string, optional) — Custom rules to guide the extraction process in natural language.
- `advancedOptions` (ExtractAdvancedOptions, optional) — Advanced configuration options.
- `parseConfig` (ParseConfig, optional) — Configuration options for the parsing process.

### Insight

- `type` (enum, required) — The type of insight. Will always be `"reasoning"` for now.
  - Allowed values: `reasoning`
- `content` (string, required) — The content of the reasoning insight.

### Classification

- `id` (string, required) — Unique identifier for the classification. We recommend lowercase, underscore-separated format.
- `type` (string, required) — Type identifier for the classification.
- `description` (string, required) — A detailed description of the classification.

### ClassifyAdvancedOptions

- `context` (enum, optional, default: default) — The context to use for classification.
  - Allowed values: `default`, `max`
- `advancedMultimodalEnabled` (boolean, optional, default: true) — Enable advanced multimodal processing for better handling of visual elements during classification.
- `memoryEnabled` (boolean, optional, default: false) — Enable memory for enhanced processing by learning from past successful classifications.
- `pageRanges` (list of PageRangesItems, optional) — Limit processing to the specified page ranges. See [Page Ranges](https://docs.extend.ai/2026-02-09/page-ranges).

### SplitOutputSplitsItems

- `type` (string, required) — The type of the split document (set in the processor config), corresponds to the classificationId
- `observation` (string, required) — Explanation of the results
- `identifier` (string, required) — Identifier for the split document (e.g. invoice number)
- `startPage` (integer, required) — The start page of the split document
- `endPage` (integer, required) — The end page of the split document
- `classificationId` (string, required) — ID of the classification type (set in the processor config)
- `id` (string, required) — Unique ID for this split
- `fileId` (string, required) — File ID associated with this split
- `name` (string, optional) — Optional name for the split

### SplitClassification

A classification for document splitting. Extends the base Classification with an optional `identifierKey` field for per-type identifier extraction rules.

- `id` (string, required) — Unique identifier for the classification. We recommend lowercase, underscore-separated format.
- `type` (string, required) — Type identifier for the classification.
- `description` (string, required) — A detailed description of the classification.
- `identifierKey` (string, optional) — A natural-language rule describing how to extract a unique identifier for subdocuments of this type. For example, `"Extract the invoice number from the document header"`. When provided, the splitter will extract the specified identifier for each subdocument of this type and include it in the output as the `identifier` field. This enables merging of related subdocuments that share the same extracted identifier. **Availability:** Supported on `splitting_light` >= 1.3.0 and `splitting_performance` >= 1.5.0. If provided on older versions, this field is accepted but ignored.

### SplitAdvancedOptions

- `splitExcelDocumentsBySheetEnabled` (boolean, optional, default: false) — For Excel documents, split by worksheet.
- `pageRanges` (list of PageRangesItems, optional) — Limit processing to the specified page ranges. See [Page Ranges](https://docs.extend.ai/2026-02-09/page-ranges).
- `pageOverlapEnabled` (boolean, optional, default: false) — When enabled, the splitter will allow for page overlap when splitting a document such that a page can occur in multiple adjacent splits when context from the previous split is on the page and context from the next split is on the page. **Availability:** Supported on `splitting_light` >= 1.1.0 and `splitting_performance` >= 1.2.0. If provided on older versions, this field is accepted but ignored.
- `strictIdentifierModeEnabled` (boolean, optional) — When enabled, adjacent candidate sub-documents that share the same type and the same extracted identifier are merged into a single split before the splitter finalizes its boundaries. Use it when one logical document repeats its identifier across its pages — for example a multi-page invoice whose invoice number appears on every page. Identifiers come from the `identifierKey` rule on the matching classification in `splitClassifications` when one is defined. The splitter will always define a short descriptive identifier for each sub-document — make sure to define `identifierKey` on any classification you intend to merge by, so the identifier is a stable document-level value. **Default:** When omitted, this setting is enabled on `splitting_performance` >= 1.6.2 and `splitting_light` >= 1.4.1, and disabled on earlier versions. **Availability:** all `splitting_performance` versions and `splitting_light` >= 1.3.0
- `splitIdentifierRules` (string, optional, deprecated) — Custom rules for identifying split points. **Deprecated:** For `splitting_light` >= 1.3.0 and `splitting_performance` >= 1.5.0, use the `identifierKey` field on each classification in `splitClassifications` instead. This provides per-type identifier extraction rules rather than a single global rule. On those versions, this field is accepted but ignored if provided.
- `splitMethod` (enum, optional, default: high_precision, deprecated) — The method to use for splitting documents. `high_precision` is more accurate but slower, while `basic_precision` is faster but less precise. **Deprecated:** For `splitting_light` >= 1.3.0 and `splitting_performance` >= 1.5.0, this field has no impact and is ignored if provided. It is still accepted for compatibility with older integrations.
  - Allowed values: `high_precision`, `basic_precision`

### ChunkMetadata

Metadata about the chunk.

- `pageRange` (ChunkMetadataPageRange, required) — The page range this chunk covers. Often will just be a partial page, in which cases `start` and `end` will be the same.
- `minOcrConfidence` (double, optional, nullable) — Lowest per-word OCR confidence across words in this chunk, or `null` when word-level confidence is unavailable.
- `avgOcrConfidence` (double, optional, nullable) — Average per-word OCR confidence across words in this chunk, or `null` when word-level confidence is unavailable.

### Block

- `object` (enum, required) — The type of object. In this case, it will always be `"block"`.
  - Allowed values: `block`
- `id` (string, required) — A unique identifier for the block, deterministically generated as a hash of the block content.
- `type` (enum, required) — The type of block: * `"text"` - Regular text content * `"heading"` - Section or document headings * `"section_heading"` - Subsection headings * `"table"` - Tabular data with rows and columns * `"figure"` - Images, charts, diagrams, or logos * `"table_head"` - Table header cells * `"table_cell"` - Table body cells * `"key_value"` - Key-value pairs (e.g., form regions, key-val groups, etc) * `"page_number"` - Page number indicators * `"barcode"` - Barcodes and QR codes * `"formula"` - Mathematical formulas and equations * `"header"` - Page headers * `"footer"` - Page footers
  - Allowed values: `text`, `heading`, `section_heading`, `table`, `figure`, `table_head`, `table_cell`, `key_value`, `page_number`, `barcode`, `formula`, `header`, `footer`
- `content` (string, required) — The textual content of the block formatted based on the target format.
- `details` (BlockDetails, required) — Additional details specific to the block type. The schema depends on the block type.
- `metadata` (BlockMetadata, required) — Metadata about the block.
- `polygon` (list of BlockPolygonItems, required) — An array of points defining the polygon that bounds the block.
- `boundingBox` (BoundingBox, required) — A simplified bounding box for the block.
- `parentBlockId` (string, optional) — The ID of the parent block. For example, for a table cell block, this would be the ID of the parent table block. Only set if this is a child block.
- `children` (list of Block, optional) — An array of child blocks. For example, a table block may contain table cell blocks as children when `cellBlocksEnabled` is set to true.

### ParseRunOutputOcrWordsItems

- `content` (string, required) — The text content of the word.
- `boundingBox` (BoundingBox, required) — The bounding box coordinates of the word.
- `confidence` (double, required) — The confidence score of the OCR detection for this word, between 0 and 1.
- `pageNumber` (double, required) — The page number where the word was detected.
- `blockId` (string, optional) — The `id` of the block (see the `Block` schema) this word was assigned to, based on bounding-box overlap. Omitted when the word doesn't fall within any block's bounding box.
- `rotation` (double, optional, nullable) — Clockwise degrees the word is rotated from upright, as a whole number in `[0, 360)`. `null` when the orientation could not be calculated for the word. **Availability:** Present on parse runs created on or after October 6, 2026.

### ParseRunOutputMetadataPagesItems

- `number` (integer, required) — The page number this entry describes.
- `rotationApplied` (integer, required, nullable) — Degrees Extend rotated the page clockwise to make it upright. `0` if rotation detection ran and the page was already upright; `null` if rotation detection was disabled for this run.
- `originalPageWidth` (double, required) — The file's true page width, independent of rendering resolution.
- `originalPageHeight` (double, required) — The file's true page height, independent of rendering resolution.
- `dpi` (double, required) — The DPI that `boundingBox`/`polygon` coordinates on this page are scaled to. Multiply `originalPageWidth`/`originalPageHeight` by `dpi / 72` to convert them into that same coordinate space.

### ParseConfigChunkingStrategyOptions

Additional options for the chunking strategy.

- `minCharacters` (integer, optional, default: 500) — Specify a minimum number of characters per chunk.
- `maxCharacters` (integer, optional, default: 10000) — Specify a maximum number of characters per chunk.

### ParseConfigBlockOptionsFigures

Options for figure blocks.

- `enabled` (boolean, optional, default: true) — Whether to include figures in the output.
- `figureImageClippingEnabled` (boolean, optional, default: true) — Whether to clip and extract images from figures.
- `advancedChartExtractionEnabled` (boolean, optional, default: false) — Whether to enable advanced chart extraction using vision models for improved data extraction from charts.
- `customInstructions` (string, optional) — Custom instructions injected into the vision model prompt used to analyze and summarize figures. Use to steer figure descriptions toward your use case (e.g. domain terminology, details to always capture). Requires `enabled: true`. Available on `parse_performance` >= `2.0.0` and `parse_light` >= `1.0.0`.

### ParseConfigBlockOptionsTables

Options for table blocks.

- `targetFormat` (enum, optional, default: html) — The target format for the table blocks. Supported values: * `markdown`: Convert table to Markdown format * `html`: Convert table to HTML format
  - Allowed values: `markdown`, `html`
- `tableHeaderContinuationEnabled` (boolean, optional, default: false) — Whether to automatically copy table headers to headerless tables on subsequent pages when they have matching column counts. Useful for multi-page tables.
- `cellBlocksEnabled` (boolean, optional, default: false) — Whether to include individual table cell blocks in the output. When enabled, each cell in a table will be represented as a separate block with its own bounding box and content and will be `children` of the table block. Only supported on `parse_performance` engineVersion `1.0.1`.
- `agentic` (ParseConfigBlockOptionsTablesAgentic, optional) — Options for agentic table processing using VLM-based review and correction. Enabling this incurs additional credits on pages where agentic table correction is triggered.
- `enabled` (boolean, optional, default: true, deprecated) — This option is deprecated and will have no effect. It will be removed in the next API version.

### ParseConfigBlockOptionsText

Options for text blocks.

- `signatureDetectionEnabled` (boolean, optional, default: false) — Whether an additional vision model will be utilized for advanced signature detection. Recommended for most use cases, but should be disabled if signature detection is not necessary and latency is a concern.
- `agentic` (ParseConfigBlockOptionsTextAgentic, optional) — Options for agentic text processing using VLM-based review and correction. Enabling this incurs additional credits on pages where agentic text correction is triggered.

### ParseConfigBlockOptionsKeyValue

Options for key-value pair blocks.

- `blankFieldFormattingEnabled` (boolean, optional, default: false) — Whether to preserve blank field formatting for key-value pairs with empty values.

### ParseConfigBlockOptionsBarcodes

Options for barcode blocks.

- `imageClippingEnabled` (boolean, optional, default: false) — Whether to clip and extract images of barcodes. When enabled, barcode images will be available in the `imageUrl` field of BarcodeDetails.
- `readingEnabled` (boolean, optional, default: false) — Whether to decode and read barcode values. When enabled, decoded values will be available in the `decodedValue` field of BarcodeDetails.

### ParseConfigBlockOptionsFormulas

Options for formula blocks.

- `enabled` (boolean, optional, default: false) — Whether to enable formula detection and parsing. When enabled, mathematical formulas and equations are detected and their LaTeX representations are included in the output. When disabled, formulas will be detected as text blocks and may not be accurately parsed.

### PageRangesItems

- `start` (integer, required) — The start page of the range.
- `end` (integer, required, default: 750) — The end page of the range.

### ParseConfigAdvancedOptionsReturnOcr

Options for returning raw OCR data in the response.

- `words` (boolean, optional, default: false) — Whether to include word-level OCR data in the response, including word bounding boxes and confidence scores. This meaningfully impacts the response size, consider using the signed url return format.

### ParseConfigAdvancedOptionsFormattingDetectionItems

- `type` (enum, required) — The type of formatting detection to enable. * `"change_tracking"` — Detect tracked changes (insertions, deletions, substitutions) indicated by strikethroughs, colored text, or underlines in the source document.
  - Allowed values: `change_tracking`

### ExtractOutputMetadata

- `ocrConfidence` (double, optional, nullable) — Confidence score from OCR processing, if applicable
- `logprobsConfidence` (double, optional, nullable) — Confidence score based on model logprobs
- `reviewAgentScore` (integer, optional, nullable) — A 1-5 score indicating the review agent's confidence in the extracted value. - 5: High confidence, no issues detected - 4: Good confidence, minor observations - 3: Moderate confidence, some uncertainty - 2: Low confidence, likely issues - 1: Very low confidence, significant problems detected These scores will be present when the `reviewAgent.enabled` flag is set to `true` in the processor config. If the review agent is enabled but a score is not returned for a field, this value will be `null`. To learn more, view the [Review Agent Documentation](https://docs.extend.ai/2026-02-09/extraction/review-agent)
- `citations` (list of Citation, optional)
- `insights` (list of Insight, optional)

### ExtractAdvancedOptions

- `modelReasoningInsightsEnabled` (boolean, optional) — Whether to enable model reasoning insights.
- `advancedMultimodalEnabled` (boolean, optional) — Whether to enable advanced multimodal features.
- `citationsEnabled` (boolean, optional) — Whether to enable citations in the output.
- `citationMode` (enum, optional, default: line) — Controls the granularity of citations returned alongside extracted values. Requires `citationsEnabled=true` and a base processor version that supports bounding box citations. - `line`: Use OCR lines for citations. This can return one or more relevant OCR lines for each citation. This is the default mode. - `word`: Narrow each matched citation down to the relevant OCR word span when possible. Note: this might still return line citations in cases where the citation model is unable to reliably narrow down to a word-level citation. Typically, this only makes sense when you are doing array extraction and want precise word citations from a given cell in a table to match an array property, e.g. `line_items.total`. - `block`: Use parser blocks (e.g. full paragraphs, key-val regions, tables, lists, etc.) and return block-level polygons for each citation. Will have highest recall in terms of overlap with the extracted value source, but least granularity.
  - Allowed values: `line`, `word`, `block`
- `arrayCitationStrategy` (enum, optional) — Granularity for array citations. Requires turning on citations: `citationsEnabled=true`. - `item`: Creates item-level citations for array fields. This will return a single bbox citation for each "item" in the array e.g. line_items[0], line_items[1], etc. - `property`: Creates property-level citations (cell-level citations) for array fields. This will return a citation for each property/cell for every item/row in the array, e.g. line_items[0].description, line_items[1].price, etc.
  - Allowed values: `item`, `property`
- `arrayStrategy` (ArrayStrategy, optional) — Strategy for handling large arrays in documents.
- `chunkingOptions` (ExtractChunkingOptions, optional) — Options controlling how documents are chunked before extraction.
- `excelSheetRanges` (list of ExcelSheetRange, optional) — Ranges of sheet indices to extract from Excel documents.
- `excelSheetSelectionStrategy` (enum, optional) — Strategy for selecting sheets from Excel documents.
  - Allowed values: `intelligent`, `all`, `first`, `last`
- `pageRanges` (list of PageRangesItems, optional) — Limit processing to the specified page ranges. See [Page Ranges](https://docs.extend.ai/2026-02-09/page-ranges).
- `reviewAgent` (ExtractAdvancedOptionsReviewAgent, optional) — Configuration for the review agent that analyzes extraction results. When enabled, each field in the output metadata will include a `reviewAgentScore` (1-5) and may include additional `insights` of type `issue` or `review_summary` to help identify fields that may need manual review. Enabling the review agent incurs additional credits. To learn more, view the [Review Agent Documentation](https://docs.extend.ai/2026-02-09/extraction/review-agent)
- `currentDateEnabled` (boolean, optional) — Whether to include the current date as context for the model during extraction. Defaults to `false`.

### ExtractionField

- `id` (string, required) — Unique identifier for the field.
- `name` (string, required) — Human-readable name for the field.
- `type` (enum, required) — The type of the field.
  - Allowed values: `string`, `number`, `currency`, `boolean`, `date`, `array`, `enum`, `object`, `signature`
- `description` (string, required) — Detailed description of the field, including expected content and format.
- `schema` (list of ExtractionField, optional) — Required when type is "array" or "object". Contains nested field definitions.
- `enum` (list of Enum, optional) — Required when type is "enum". List of allowed values.

### ChunkMetadataPageRange

The page range this chunk covers. Often will just be a partial page, in which cases `start` and `end` will be the same.

- `start` (integer, required) — The starting page number (inclusive).
- `end` (integer, required) — The ending page number (inclusive).

### BlockDetails

Additional details specific to the block type. The schema depends on the block type.

### BlockMetadata

Metadata about the block.

- `page` (BlockMetadataPage, optional) — Information about the page this block appears on.
- `sheet` (BlockMetadataSheet, optional) — Spreadsheet sheet metadata. Present for blocks parsed from spreadsheet files, such as Excel workbooks.
- `minOcrConfidence` (double, optional, nullable) — Lowest per-word OCR confidence across words in this block, or `null` when word-level confidence is unavailable.
- `avgOcrConfidence` (double, optional, nullable) — Average per-word OCR confidence across words in this block, or `null` when word-level confidence is unavailable.

### BlockPolygonItems

- `x` (double, required)
- `y` (double, required)

### BoundingBox

A bounding box defined by its edges.

- `left` (double, required, nullable) — The left coordinate of the bounding box.
- `top` (double, required, nullable) — The top coordinate of the bounding box.
- `right` (double, required, nullable) — The right coordinate of the bounding box.
- `bottom` (double, required, nullable) — The bottom coordinate of the bounding box.

### ParseConfigBlockOptionsTablesAgentic

Options for agentic table processing using VLM-based review and correction. Enabling this incurs additional credits on pages where agentic table correction is triggered.

- `enabled` (boolean, optional, default: false) — Whether to enable agentic table processing.
- `customInstructions` (string, optional) — Custom instructions to guide the agentic table processing.

### ParseConfigBlockOptionsTextAgentic

Options for agentic text processing using VLM-based review and correction. Enabling this incurs additional credits on pages where agentic text correction is triggered.

- `enabled` (boolean, optional, default: false) — Whether to enable agentic text processing for OCR corrections.
- `customInstructions` (string, optional) — Custom instructions to guide the agentic text processing.

### Citation

- `fileId` (string, optional) — ID of the file the cited content was found in. On multifile runs, join this against the run's `files` array to determine which input file the citation refers to; on single-file runs it equals the run's `file.id`.
- `page` (CitationPage, optional)
- `referenceText` (string, optional, nullable) — The text that was referenced
- `polygon` (list of Polygon, optional) — Array of points defining the polygon around the referenced text

### ArrayStrategy

- `type` (enum, required) — The strategy type for handling large array use cases. For most use cases this should be left null, or should be set to `large_array_heuristics`. If you're unsure of what your use case needs, reach out to the Extend team for help. - `large_array_heuristics`: Optimized for documents with very large arrays, but where latency matters. This strategy uses specialized heuristics around chunking, tables, and merging to handle large arrays efficiently over large documents. - `large_array_max_context`: Optimizes for accuracy over latency in documents with very large arrays. This strategy will do multiple passes through the entire document to ensure there is no context loss across any chunks/pages, maximizing accuracy for complex array extraction, but adding material latency. This strategy incurs additional extraction credits when enabled. - `large_array_overlap_context`: Balances accuracy and latency in documents with very large arrays. This strategy will always maintain surrounding/overlapping page context for every chunk/page that is extracted, eliminating array failure modes from context loss across page boundaries.
  - Allowed values: `large_array_heuristics`, `large_array_max_context`, `large_array_overlap_context`

### ExtractChunkingOptions

Options controlling how documents are chunked before extraction.

- `chunkingStrategy` (enum, optional) — The strategy to use for chunking the document.
  - Allowed values: `standard`, `semantic`, `contextual`
- `pageChunkSize` (integer, optional) — The size of page chunks.
- `chunkSelectionStrategy` (enum, optional) — The strategy to use for selecting chunks.
  - Allowed values: `intelligent`, `confidence`, `take_first`, `take_last`
- `customSemanticChunkingRules` (string, optional) — Custom rules for semantic chunking.

### ExcelSheetRange

- `start` (integer, required) — The starting sheet index (0-based).
- `end` (integer, required) — The ending sheet index (0-based). Must be greater than or equal to start.

### ExtractAdvancedOptionsReviewAgent

Configuration for the review agent that analyzes extraction results. When enabled, each field in the output metadata will include a `reviewAgentScore` (1-5) and may include additional `insights` of type `issue` or `review_summary` to help identify fields that may need manual review. Enabling the review agent incurs additional credits. To learn more, view the [Review Agent Documentation](https://docs.extend.ai/2026-02-09/extraction/review-agent)

- `enabled` (boolean, optional) — Whether to enable the review agent.

### Enum

- `value` (string, required) — The value of the enum option.
- `description` (string, required) — Description of what this enum value represents.

### TextDetails

Details for text and heading blocks

- `type` (enum, required) — Indicates this is a text details object
  - Allowed values: `text_details`
- `cellReference` (string, optional) — Source spreadsheet cell or range in A1 notation for Excel-derived text or heading blocks. Only set when `advancedOptions.excelIncludeCellMetadata` is enabled.

### TableDetails

Details for table blocks

- `type` (enum, required) — Indicates this is a table details object
  - Allowed values: `table_details`
- `rowCount` (integer, required) — The number of rows in the table
- `columnCount` (integer, required) — The number of columns in the table

### TableCellDetails

Details for table cell blocks

- `type` (enum, required) — Indicates this is a table cell details object
  - Allowed values: `table_cell_details`
- `rowIndex` (integer, required)
- `columnIndex` (integer, required)
- `cellReference` (string, optional) — Source spreadsheet cell or range in A1 notation, such as `B2` or `A1:C1` for a merged cell. Only set for Excel table cells when `advancedOptions.excelIncludeCellMetadata` is enabled.
- `formula` (string, optional) — Source spreadsheet formula text with a leading `=`, when the cell has a formula. Only set for Excel table cells when `advancedOptions.excelIncludeCellMetadata` is enabled.
- `formatting` (CellFormatting, optional) — Structured spreadsheet cell formatting. Only set when `advancedOptions.excelIncludeCellFormatting` is enabled and formatting is present.

### FigureDetails

Details for figure blocks

- `type` (enum, required) — Indicates this is a figure details object
  - Allowed values: `figure_details`
- `imageUrl` (string, optional) — URL to the clipped/segmented figure image. Only set if the option `figureImageClippingEnabled` in the input is `true`, which it is by default.
- `figureType` (enum, optional) — The refined type of figure - only set when figure classification and summarization is enabled. Possible values: * `image`: A photographic image * `chart`: A data chart or graph * `diagram`: A schematic or diagram * `logo`: A company or brand logo * `other`: Any other type of figure
  - Allowed values: `other`, `chart`, `image`, `diagram`, `logo`

### BarcodeDetails

Details for barcode blocks

- `type` (enum, required) — Indicates this is a barcode details object
  - Allowed values: `barcode_details`
- `imageUrl` (string, optional) — URL to the clipped/segmented barcode image. Only set if the option `imageClippingEnabled` in blockOptions.barcodes is `true`.
- `decodedValue` (string, optional) — The decoded value of the barcode or QR code. Only set if the option `readingEnabled` in blockOptions.barcodes is `true`.
- `format` (string, optional) — The format of the barcode (e.g., "QRCode", "Code128", "DataMatrix", "EAN13").

### FormulaDetails

Details for formula blocks

- `type` (enum, required) — Indicates this is a formula details object
  - Allowed values: `formula_details`
- `latex` (string, optional) — The LaTeX representation of the detected formula.

### KeyValueDetails

Details for key-value pair blocks

- `type` (enum, required) — Indicates this is a key-value details object
  - Allowed values: `key_value_details`

### EmptyBlockDetails

An empty object

### BlockMetadataPage

Information about the page this block appears on.

- `number` (integer, required) — The page number where this block appears.
- `width` (double, optional) — The width of the page in points.
- `height` (double, optional) — The height of the page in points.

### BlockMetadataSheet

Spreadsheet sheet metadata. Present for blocks parsed from spreadsheet files, such as Excel workbooks.

- `index` (integer, required) — The zero-based index of the sheet in the original workbook.
- `name` (string, required) — The name of the sheet in the original workbook.

### CitationPage

- `number` (double, required) — Page number where the citation was found. Starts at 1.
- `width` (double, optional) — The width of the page in points.
- `height` (double, optional) — The height of the page in points.

### Polygon

- `x` (double, required) — X coordinate of the point
- `y` (double, required) — Y coordinate of the point

### CellFormatting

Structured formatting for an Excel table cell

- `bold` (boolean, optional) — Whether the cell text is bold.
- `italic` (boolean, optional) — Whether the cell text is italic.
- `fontColor` (string, optional) — Cell font color as a hex string.
- `backgroundColor` (string, optional) — Cell background color as a hex string.