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

# Get Verify Run

GET https://api.extend.ai/verify_runs/{id}

Retrieve the status and result of a verify run.

Use this endpoint to poll a run created with `POST /verify_runs`. When `status` is `PROCESSED`, `output` contains the document-level `riskLevel`, `summary`, and detected `signals`. When `status` is `FAILED`, read `failureReason` and `failureMessage`.

For a zero-retention run, the first `GET` that returns the result also schedules its purge, so store what you need from that response.


Reference: https://docs.extend.ai/api-reference/endpoints/verify/get-verify-run

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://api.extend.ai` (Production, default)
- `https://api.us2.extend.app` (Production US2)
- `https://api.eu1.extend.ai` (Production EU1)

## Request

### Path parameters

- `id` (string, required) — The unique identifier for the verify run. Example: `"vr_xK9mLPqRtN3vS8wF5hB2cQ"`

### Headers

- `x-extend-api-version` ("2026-02-09", optional, default: 2026-02-09) — API version to use for the request. If you're using an SDK, you can ignore this parameter. If you are not using an SDK and do not specify a version, you will either receive a `400 Bad Request` or be set to a previous legacy version. See [API Versioning](https://docs.extend.ai/2026-02-09/api-reference/api-versioning) for more details.
- `x-extend-workspace-id` (string, optional) — The workspace ID to target. **Required** when using an organization-scoped API key; optional for workspace-scoped keys (the key is already tied to a workspace). See [Authentication](https://docs.extend.ai/2026-02-09/api-reference/authentication) for details on API key scopes.

## Response

### 200

Successfully retrieved verify run

- `object` (enum, required) — The type of object. Will always be `"verify_run"`.
  - Allowed values: `verify_run`
- `id` (string, required) — A unique identifier for the verify run. Example: `"vr_xK9mLPqRtN3vS8wF5hB2cQ"`
- `file` (FileSummary, required, nullable) — The file that was verified. `null` once the input file has been deleted.
- `status` (enum, required) — The status of the verify run: * `"PROCESSING"` - The document is still being checked * `"PROCESSED"` - Verification completed successfully; read `output` * `"FAILED"` - Verification failed (see `failureReason` for details) * `"CANCELLED"` - The run was cancelled before it completed
  - Allowed values: `PROCESSING`, `PROCESSED`, `FAILED`, `CANCELLED`
- `output` (VerifyOutput, required, nullable) — The verification result. **Availability:** Present when `status` is `"PROCESSED"`. For a zero-retention run the result is delivered once, in the synchronous response or the first `GET`, and purged afterwards; it is purged in any case one hour after the run reaches a terminal status.
- `failureReason` (string, required, nullable) — The reason for failure. **Availability:** Present when `status` is `"FAILED"`. Possible values include: * `FILE_TYPE_NOT_SUPPORTED` * `NO_APPLICABLE_SIGNALS` * `PARSE_FAILED` * `REQUEST_ABORTED` * `INTERNAL_ERROR` **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 verify run. **Availability:** Present when metadata was provided during creation.
- `metrics` (VerifyRunMetrics, required, nullable) — Metrics about the verification process. **Availability:** Present when `status` is `"PROCESSED"`.
- `config` (VerifyConfig, required) — The configuration that ran, with defaults applied: the `engine`, the concrete `engineVersion` that `"latest"` resolved to, and `advancedOptions.requireParsing` as it applied to this run.
- `usage` (RunUsage, required, nullable) — Usage credits consumed by this verify run. Always `null` in the current release: verify runs are not metered during the beta.
- `source` (enum, required) — How the run was created.
  - Allowed values: `API`, `STUDIO`
- `sourceId` (string, required, nullable) — An identifier for the request that created the run. For API-created runs this is the request ID, the same value returned as `requestId` on errors, which you can quote to support.
- `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"`

## Errors

### 400 Bad Request Error

Standard error response format for all Extend API errors. See the [Error Codes documentation](https://docs.extend.ai/2026-02-09/api-reference/error-handling) for error handling recommendations.

- `code` (string, required) — Error code for programmatic handling.
- `message` (string, required) — Human-readable error message suitable for displaying to developers. Do not rely on the exact text of this message as it may change.
- `retryable` (boolean, required) — Whether the request can be retried. When true, retry with exponential backoff. When false, fix the underlying issue before retrying.
- `requestId` (string, optional) — Unique request identifier for support purposes. Always include this when contacting Extend support about an error.
- `docUrl` (string, optional) — Link to relevant documentation when one is available.
- `runId` (string, optional) — The ID of the run the error refers to, when the run outlives the request. Currently returned only when a synchronous `POST /verify` request times out: the verify run keeps processing, so fetch it with `GET /verify_runs/{id}` instead of resubmitting the file.

### 401 Unauthorized Error

Standard error response format for all Extend API errors. See the [Error Codes documentation](https://docs.extend.ai/2026-02-09/api-reference/error-handling) for error handling recommendations.

- `code` (string, required) — Error code for programmatic handling.
- `message` (string, required) — Human-readable error message suitable for displaying to developers. Do not rely on the exact text of this message as it may change.
- `retryable` (boolean, required) — Whether the request can be retried. When true, retry with exponential backoff. When false, fix the underlying issue before retrying.
- `requestId` (string, optional) — Unique request identifier for support purposes. Always include this when contacting Extend support about an error.
- `docUrl` (string, optional) — Link to relevant documentation when one is available.
- `runId` (string, optional) — The ID of the run the error refers to, when the run outlives the request. Currently returned only when a synchronous `POST /verify` request times out: the verify run keeps processing, so fetch it with `GET /verify_runs/{id}` instead of resubmitting the file.

### 402 Payment Required Error

Standard error response format for all Extend API errors. See the [Error Codes documentation](https://docs.extend.ai/2026-02-09/api-reference/error-handling) for error handling recommendations.

- `code` (string, required) — Error code for programmatic handling.
- `message` (string, required) — Human-readable error message suitable for displaying to developers. Do not rely on the exact text of this message as it may change.
- `retryable` (boolean, required) — Whether the request can be retried. When true, retry with exponential backoff. When false, fix the underlying issue before retrying.
- `requestId` (string, optional) — Unique request identifier for support purposes. Always include this when contacting Extend support about an error.
- `docUrl` (string, optional) — Link to relevant documentation when one is available.
- `runId` (string, optional) — The ID of the run the error refers to, when the run outlives the request. Currently returned only when a synchronous `POST /verify` request times out: the verify run keeps processing, so fetch it with `GET /verify_runs/{id}` instead of resubmitting the file.

### 403 Forbidden Error

Standard error response format for all Extend API errors. See the [Error Codes documentation](https://docs.extend.ai/2026-02-09/api-reference/error-handling) for error handling recommendations.

- `code` (string, required) — Error code for programmatic handling.
- `message` (string, required) — Human-readable error message suitable for displaying to developers. Do not rely on the exact text of this message as it may change.
- `retryable` (boolean, required) — Whether the request can be retried. When true, retry with exponential backoff. When false, fix the underlying issue before retrying.
- `requestId` (string, optional) — Unique request identifier for support purposes. Always include this when contacting Extend support about an error.
- `docUrl` (string, optional) — Link to relevant documentation when one is available.
- `runId` (string, optional) — The ID of the run the error refers to, when the run outlives the request. Currently returned only when a synchronous `POST /verify` request times out: the verify run keeps processing, so fetch it with `GET /verify_runs/{id}` instead of resubmitting the file.

### 404 Not Found Error

Standard error response format for all Extend API errors. See the [Error Codes documentation](https://docs.extend.ai/2026-02-09/api-reference/error-handling) for error handling recommendations.

- `code` (string, required) — Error code for programmatic handling.
- `message` (string, required) — Human-readable error message suitable for displaying to developers. Do not rely on the exact text of this message as it may change.
- `retryable` (boolean, required) — Whether the request can be retried. When true, retry with exponential backoff. When false, fix the underlying issue before retrying.
- `requestId` (string, optional) — Unique request identifier for support purposes. Always include this when contacting Extend support about an error.
- `docUrl` (string, optional) — Link to relevant documentation when one is available.
- `runId` (string, optional) — The ID of the run the error refers to, when the run outlives the request. Currently returned only when a synchronous `POST /verify` request times out: the verify run keeps processing, so fetch it with `GET /verify_runs/{id}` instead of resubmitting the file.

### 422 Unprocessable Entity Error

Standard error response format for all Extend API errors. See the [Error Codes documentation](https://docs.extend.ai/2026-02-09/api-reference/error-handling) for error handling recommendations.

- `code` (string, required) — Error code for programmatic handling.
- `message` (string, required) — Human-readable error message suitable for displaying to developers. Do not rely on the exact text of this message as it may change.
- `retryable` (boolean, required) — Whether the request can be retried. When true, retry with exponential backoff. When false, fix the underlying issue before retrying.
- `requestId` (string, optional) — Unique request identifier for support purposes. Always include this when contacting Extend support about an error.
- `docUrl` (string, optional) — Link to relevant documentation when one is available.
- `runId` (string, optional) — The ID of the run the error refers to, when the run outlives the request. Currently returned only when a synchronous `POST /verify` request times out: the verify run keeps processing, so fetch it with `GET /verify_runs/{id}` instead of resubmitting the file.

### 429 Too Many Requests Error

Standard error response format for all Extend API errors. See the [Error Codes documentation](https://docs.extend.ai/2026-02-09/api-reference/error-handling) for error handling recommendations.

- `code` (string, required) — Error code for programmatic handling.
- `message` (string, required) — Human-readable error message suitable for displaying to developers. Do not rely on the exact text of this message as it may change.
- `retryable` (boolean, required) — Whether the request can be retried. When true, retry with exponential backoff. When false, fix the underlying issue before retrying.
- `requestId` (string, optional) — Unique request identifier for support purposes. Always include this when contacting Extend support about an error.
- `docUrl` (string, optional) — Link to relevant documentation when one is available.
- `runId` (string, optional) — The ID of the run the error refers to, when the run outlives the request. Currently returned only when a synchronous `POST /verify` request times out: the verify run keeps processing, so fetch it with `GET /verify_runs/{id}` instead of resubmitting the file.

### 500 Internal Server Error

Standard error response format for all Extend API errors. See the [Error Codes documentation](https://docs.extend.ai/2026-02-09/api-reference/error-handling) for error handling recommendations.

- `code` (string, required) — Error code for programmatic handling.
- `message` (string, required) — Human-readable error message suitable for displaying to developers. Do not rely on the exact text of this message as it may change.
- `retryable` (boolean, required) — Whether the request can be retried. When true, retry with exponential backoff. When false, fix the underlying issue before retrying.
- `requestId` (string, optional) — Unique request identifier for support purposes. Always include this when contacting Extend support about an error.
- `docUrl` (string, optional) — Link to relevant documentation when one is available.
- `runId` (string, optional) — The ID of the run the error refers to, when the run outlives the request. Currently returned only when a synchronous `POST /verify` request times out: the verify run keeps processing, so fetch it with `GET /verify_runs/{id}` instead of resubmitting the file.

## Types

### 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"`

### VerifyOutput

The result of a processed verify run. `signals` contains detected Public Signals only. An empty `signals` array means no Public Signals were detected; it does not mean that every check ran or that the document is authentic.

- `riskLevel` (enum, required) — The document-level risk: the highest `riskAssessment` among the detected signals, or `"LOW"` when nothing was detected.
  - Allowed values: `LOW`, `MEDIUM`, `HIGH`
- `summary` (string, required) — A plain-language summary of the document's findings, or `"No fraud signals were detected."` when `signals` is empty.
- `signals` (list of VerifySignal, required)

### VerifyRunMetrics

Metrics about the verification process.

- `processingTimeMs` (double, required) — Total processing time in milliseconds.
- `pageCount` (integer, required, nullable) — The number of pages in the document. `null` when the page count could not be determined, such as for some image inputs.

### VerifyConfig

Configuration for a verify run. Every field is optional on a request, and unknown keys are rejected with `400`. Runs echo the resolved configuration, with defaults applied, in `config`.

- `engine` (enum, optional) — The verification engine to use. Defaults to `"verify_agentic"`.
  - Allowed values: `verify_agentic`, `verify_light`
- `engineVersion` (string, optional) — The engine release to use. Pass a specific version (for example `"0.1.0"`) to pin your integration to that release, or `"latest"` (the default) to use the newest release. The response echoes the resolved version in `config.engineVersion`. Unsupported values return `400 INVALID_REQUEST`.
- `advancedOptions` (VerifyAdvancedOptions, optional) — Advanced options for a verify run. Every field is optional. Unknown keys are rejected with `400`.

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

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

### VerifySignal

One detected Public Signal. When several internal checks detect issues in the same category, they are combined into a single signal with one summary and the relevant evidence from each.

- `id` (string, required) — A stable identifier for this detected signal. Example: `"vs_xK9mLPqRtN3vS8wF5hB2cQ"`
- `type` (enum, required) — The customer-facing Public Signal categories. Each detected signal in a run's `output.signals` has one of these types; signals that were not detected are not returned. * `"FILE_FORMAT_AND_PDF_STRUCTURE"` - Files disguised as another type, structure rebuilt or broken by an edit, content appended after the end of the file, and documents that read differently to different PDF software. * `"DIGITAL_SIGNATURE_INTEGRITY"` - Content changed after the document was signed, signatures that do not match the file they are attached to, and signer certificates or timestamps that did not hold up when the signature was made. * `"PROVENANCE_AND_ISSUER_MARKERS"` - Provenance credentials that fail to verify, and provenance watermarks whose manifest has been stripped. * `"REVISION_AND_PRODUCTION_HISTORY"` - Documents re-saved after issuance, edited with software the issuer would not use, backdated, or carrying a page produced differently from the rest. * `"CAPTURE_CONVERSION_AND_LAUNDERING"` - Annotation layers that hide or change what a reader sees. * `"PDF_LAYERS_TEXT_AND_FORMS"` - Values covered over and retyped, image patches pasted over a scan, hidden text, form values that differ from what the form shows, numbers set in a typeface the rest of the line does not use, and an OCR text layer that disagrees with the page. * `"IMAGE_COMPOSITING_AND_RECONSTRUCTION"` - Regions spliced in from another image, cloned from elsewhere on the page, or erased and painted back over. * `"IMAGE_FORENSIC_INCONSISTENCIES"` - Edits that leave compression, noise, sharpness, or lighting different in one part of an image than the rest. * `"AI_GENERATED_CONTENT"` - Pages or regions produced by a generative model rather than captured or typeset, including generator watermarks and content credentials that assert generation. * `"ISSUER_TEMPLATE_AND_SECURITY_FEATURES"` - Documents that do not match the issuer's template, or that are missing a logo, seal, or security feature the real one carries. * `"FIELD_IDENTIFIER_AND_MACHINE_READABLE_VALIDITY"` - Account numbers, licence numbers, MRZ lines, and barcodes that fail their own checks or contradict the values printed beside them. * `"CROSS_FIELD_AND_SEMANTIC_CONSISTENCY"` - Names, dates, addresses, and identifiers that were changed in one place and left alone in another. * `"FINANCIAL_RECONCILIATION_AND_SEQUENCE_CONTINUITY"` - Altered amounts that stop a statement adding up, and removed pages or transactions that leave a gap. * `"REUSE_DUPLICATION_AND_NETWORK_HISTORY"` - A signature, stamp, or region reused from another document, and documents submitted before. Every supported check runs on every run; support for each category is added over time. See [Verify Signals](https://docs.extend.ai/2026-02-09/verify/signals) for what each category checks today and which require the `verify_agentic` engine.
  - Allowed values: `FILE_FORMAT_AND_PDF_STRUCTURE`, `DIGITAL_SIGNATURE_INTEGRITY`, `PROVENANCE_AND_ISSUER_MARKERS`, `REVISION_AND_PRODUCTION_HISTORY`, `CAPTURE_CONVERSION_AND_LAUNDERING`, `PDF_LAYERS_TEXT_AND_FORMS`, `IMAGE_COMPOSITING_AND_RECONSTRUCTION`, `IMAGE_FORENSIC_INCONSISTENCIES`, `AI_GENERATED_CONTENT`, `ISSUER_TEMPLATE_AND_SECURITY_FEATURES`, `FIELD_IDENTIFIER_AND_MACHINE_READABLE_VALIDITY`, `CROSS_FIELD_AND_SEMANTIC_CONSISTENCY`, `FINANCIAL_RECONCILIATION_AND_SEQUENCE_CONTINUITY`, `REUSE_DUPLICATION_AND_NETWORK_HISTORY`
- `riskAssessment` (VerifyRiskAssessment, required) — The risk attributed to one detected signal, distinct from the document-level `riskLevel`.
- `summary` (string, required) — A plain-language explanation of what was detected, written for a reviewer.
- `evidence` (list of VerifyEvidence, required)

### VerifyAdvancedOptions

Advanced options for a verify run. Every field is optional. Unknown keys are rejected with `400`.

- `requireParsing` (boolean, optional) — If `true`, this forces the verify run to parse the document if it has not already been parsed in Extend. This is for checks that require OCR, like detecting mismatches with the text layer. `verify_agentic` requires this to be `true`, and rejects `false` with `400`. `verify_light` parses only when this is `true`. Defaults to `false` for `verify_light` to reduce latency. In both cases, if the file has already been parsed in Extend with Verify's default parse settings and you reuse the `fileId` without zero data retention (ZDR), then the parsed results will be used here.

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

### VerifyRiskAssessment

The risk attributed to one detected signal, distinct from the document-level `riskLevel`.

- `type` (enum, required) — The kind of assessment. Always `"LEVEL"`.
  - Allowed values: `LEVEL`
- `level` (enum, required) — A categorical risk level. It is derived from the checks that ran and is never a claim of authenticity: `"LOW"` means the checks that ran found nothing, not that the document is genuine.
  - Allowed values: `LOW`, `MEDIUM`, `HIGH`

### VerifyEvidence

One coherent observation supporting a detected signal. Every evidence item has exactly four fields: `evidenceId`, `type`, `data`, and `locations`. `type` selects the schema of `data`; the six types are composable building blocks shared across signals rather than one type per signal. `locations` may be empty when the evidence cannot be honestly localized.

- `type`: `value_comparison` (value_comparison)
  - `data` (VerifyEvidenceDiscriminatorMappingValueComparisonData, required)
  - `evidenceId` (string, required) — Unique within the run, such as `"meta.timestamp_conflict:001"`. Treat it as an opaque identifier; do not parse it.
  - `locations` (list of VerifyEvidenceLocation, required)
- `type`: `validation` (validation)
  - `data` (VerifyEvidenceDiscriminatorMappingValidationData, required)
  - `evidenceId` (string, required)
  - `locations` (list of VerifyEvidenceLocation, required)
- `type`: `inventory` (inventory)
  - `data` (VerifyEvidenceDiscriminatorMappingInventoryData, required)
  - `evidenceId` (string, required)
  - `locations` (list of VerifyEvidenceLocation, required)
- `type`: `history` (history)
  - `data` (VerifyEvidenceDiscriminatorMappingHistoryData, required)
  - `evidenceId` (string, required)
  - `locations` (list of VerifyEvidenceLocation, required)
- `type`: `structural_pattern` (structural_pattern)
  - `data` (VerifyEvidenceDiscriminatorMappingStructuralPatternData, required)
  - `evidenceId` (string, required)
  - `locations` (list of VerifyEvidenceLocation, required)
- `type`: `model_prediction` (model_prediction)
  - `data` (VerifyEvidenceDiscriminatorMappingModelPredictionData, required) — Always an empty object in the current release.
  - `evidenceId` (string, required)
  - `locations` (list of VerifyEvidenceLocation, required)

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

### VerifyEvidenceDiscriminatorMappingValueComparisonData

- `code` (string, required) — A stable code for what the compared values describe, such as `"DOCUMENT_LIFECYCLE_TIMESTAMPS"`.
- `values` (list of VerifyNamedValue, required)

### VerifyEvidenceLocation

Where in the submitted document a piece of evidence was found. Every location carries at least one resolved locator (`page`, `boundingBox`, `objectRefs`, or `byteRange`); unresolved locators are omitted rather than guessed. A `boundingBox` is always accompanied by a `page` with its `width` and `height`.

- `locationId` (string, required) — Identifier referenced by `locationIds` fields inside the evidence `data`.
- `page` (VerifyEvidencePage, optional) — The page a location is on. Matches the `page` shape used elsewhere in the API: `number` starts at 1, and `width` and `height` give the page's dimensions (PDF points for PDF pages, pixels for image submissions).
- `boundingBox` (VerifyEvidenceBoundingBox, optional) — A rectangle on the page, defined by its edges and measured from the page's top-left corner, in the same units as the page's `width` and `height`.
- `objectRefs` (list of string, optional) — Indirect PDF object references (for example `"26 0 R"`). These identify objects in the file, not visible page positions.
- `byteRange` (VerifyEvidenceByteRange, optional) — A range of bytes measured from the beginning of the submitted file.

### VerifyEvidenceDiscriminatorMappingValidationData

- `findings` (list of VerifyEvidenceDiscriminatorMappingValidationDataFindingsItems, required)

### VerifyEvidenceDiscriminatorMappingInventoryData

- `code` (string, required) — A stable code for the kind of item counted, such as `"EMBEDDED_FILE"`.
- `count` (integer, required)
- `items` (list of VerifyEvidenceDiscriminatorMappingInventoryDataItemsItems, optional) — Up to 20 of the counted items. Each item says where it is, what it is, or both.

### VerifyEvidenceDiscriminatorMappingHistoryData

- `events` (list of VerifyEvidenceDiscriminatorMappingHistoryDataEventsItems, required)

### VerifyEvidenceDiscriminatorMappingStructuralPatternData

- `code` (string, required) — A stable pattern code, such as `"OPAQUE_MASK_FOLLOWED_BY_TEXT"`.
- `components` (list of VerifyEvidenceDiscriminatorMappingStructuralPatternDataComponentsItems, required)

### VerifyEvidenceDiscriminatorMappingModelPredictionData

Always an empty object in the current release.

### VerifyNamedValue

A value read from the document, with an optional raw form, normalized form, and the locations it was read from. It operates as a non-strongly-typed key-value pair for rendering and evaluating findings.

- `name` (string, required)
- `raw` (string, optional) — The value exactly as it appears in the file.
- `normalized` (string, optional) — The value in a normalized form, such as an ISO 8601 timestamp.
- `locationIds` (list of string, optional)

### VerifyEvidencePage

The page a location is on. Matches the `page` shape used elsewhere in the API: `number` starts at 1, and `width` and `height` give the page's dimensions (PDF points for PDF pages, pixels for image submissions).

- `number` (integer, required) — The page number. Starts at 1.
- `width` (double, optional) — The width of the page. Always present when the location has a `boundingBox`.
- `height` (double, optional) — The height of the page. Always present when the location has a `boundingBox`.

### VerifyEvidenceBoundingBox

A rectangle on the page, defined by its edges and measured from the page's top-left corner, in the same units as the page's `width` and `height`.

- `left` (double, required)
- `top` (double, required)
- `right` (double, required)
- `bottom` (double, required)

### VerifyEvidenceByteRange

A range of bytes measured from the beginning of the submitted file.

- `offset` (integer, required)
- `length` (integer, required)

### VerifyEvidenceDiscriminatorMappingValidationDataFindingsItems

- `code` (string, required) — A stable finding code, such as `"SIGNED_BYTES_CHANGED"`.
- `values` (list of VerifyNamedValue, optional)

### VerifyEvidenceDiscriminatorMappingInventoryDataItemsItems

- `locationIds` (list of string, optional)
- `values` (list of VerifyNamedValue, optional)

### VerifyEvidenceDiscriminatorMappingHistoryDataEventsItems

- `code` (string, required) — A stable event code, such as `"PDF_REVISION_APPENDED"` or `"PAGE_CONTENT_REPLACED"`.
- `locationIds` (list of string, optional)
- `timestamp` (string, optional) — When the event happened, if the file records it.
- `actor` (string, optional) — Who or what performed the event, if the file records it.
- `values` (list of VerifyNamedValue, optional)

### VerifyEvidenceDiscriminatorMappingStructuralPatternDataComponentsItems

- `role` (string, required) — The part this component plays in the pattern, such as `"MASK"` or `"REPLACEMENT_TEXT"`.
- `locationIds` (list of string, required)
- `value` (VerifyNamedValue, optional) — A value read from the document, with an optional raw form, normalized form, and the locations it was read from. It operates as a non-strongly-typed key-value pair for rendering and evaluating findings.

## Examples

**Response**

```json
{
  "object": "verify_run",
  "id": "vr_xK9mLPqRtN3vS8wF5hB2cQ",
  "file": {
    "object": "file",
    "id": "file_xK9mLPqRtN3vS8wF5hB2cQ",
    "name": "Invoices.pdf",
    "type": "PDF",
    "parentFileId": "file_Zk9mNP12Qw4yTv8BdR3H",
    "metadata": {
      "pageCount": 30,
      "parentSplit": {
        "id": "string",
        "type": "Invoice",
        "identifier": "other_2_9",
        "startPage": 1,
        "endPage": 10
      }
    },
    "createdAt": "2024-03-21T16:45:00Z",
    "updatedAt": "2024-03-21T16:45:00Z"
  },
  "status": "PROCESSED",
  "output": {
    "riskLevel": "LOW",
    "summary": "The document was modified after it was digitally signed: a later revision replaced page content that the signature had sealed.",
    "signals": [
      {
        "id": "vs_xK9mLPqRtN3vS8wF5hB2cQ",
        "type": "DIGITAL_SIGNATURE_INTEGRITY",
        "riskAssessment": {
          "type": "LEVEL",
          "level": "HIGH"
        },
        "summary": "Content changed after the document was signed, outside the changes the signature permits.",
        "evidence": [
          {
            "type": "value_comparison",
            "data": {
              "code": "DOCUMENT_LIFECYCLE_TIMESTAMPS",
              "values": [
                {
                  "name": "modification_time",
                  "raw": "D:20200101090000-05'00'",
                  "normalized": "2020-01-01T14:00:00Z",
                  "locationIds": [
                    "loc_1"
                  ]
                }
              ]
            },
            "evidenceId": "meta.timestamp_conflict:001",
            "locations": [
              {
                "locationId": "loc_1",
                "page": {
                  "number": 1,
                  "width": 612,
                  "height": 792
                },
                "boundingBox": {
                  "left": 325.4,
                  "top": 262.976,
                  "right": 360.66,
                  "bottom": 273.215
                },
                "objectRefs": [
                  "26 0 R"
                ],
                "byteRange": {
                  "offset": 102334,
                  "length": 537
                }
              }
            ]
          }
        ]
      }
    ]
  },
  "failureReason": "FILE_TYPE_NOT_SUPPORTED",
  "failureMessage": "This file type is not supported for verification.",
  "metadata": {},
  "metrics": {
    "processingTimeMs": 4210,
    "pageCount": 7
  },
  "config": {
    "engine": "verify_agentic",
    "engineVersion": "0.1.0",
    "advancedOptions": {
      "requireParsing": true
    }
  },
  "usage": {
    "credits": 9,
    "totalCredits": 15,
    "breakdown": [
      {
        "object": "parse_run",
        "id": "pr_3UZSj69pYZDKHFuuX57ic",
        "credits": 6,
        "charges": [
          {
            "product": "extraction_performance",
            "unit": "page",
            "quantity": 10,
            "credits": 30
          },
          {
            "product": "review_agent",
            "unit": "page",
            "quantity": 10,
            "credits": 10
          },
          {
            "product": "agentic_text_correction",
            "unit": "page",
            "quantity": 3,
            "credits": 3,
            "pages": [
              2,
              4,
              7
            ]
          }
        ]
      }
    ]
  },
  "source": "API",
  "sourceId": "apireq_Xj8mK2pL9nR4vT7qY5wZ",
  "createdAt": "2024-03-21T16:45:00Z",
  "updatedAt": "2024-03-21T16:45:00Z"
}
```