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

# Create Evaluation Set Run

POST https://api.extend.ai/evaluation_set_runs
Content-Type: application/json

Create and start an async evaluation set run. The response returns the evaluation set run object with its initial status; use `GET /evaluation_set_runs/{id}` to poll for completion.

Evaluation set runs are currently supported for document processor evaluation sets.

Reference: https://docs.extend.ai/api-reference/endpoints/evaluation/create-evaluation-set-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

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

### Body (application/json)

This endpoint expects an object.

- `evaluationSetId` (string, required) — The ID of the evaluation set to run.
- `entity` (EvaluationSetRunsPostRequestBodyContentApplicationJsonSchemaEntity, optional) — Optional processor and version to run against the evaluation set. If omitted, the evaluation set's processor is run at its draft version.
- `evaluationSetItemIds` (list of string, optional) — Optional list of evaluation set item IDs to run. If omitted, all items in the evaluation set are run.

## Response

### 200

Evaluation set run created successfully

- `object` (enum, required) — The type of object. In this case, it will always be `"evaluation_set_run"`.
  - Allowed values: `evaluation_set_run`
- `id` (string, required) — The unique identifier for this evaluation set run. Example: `"bpr_Xj8mK2pL9nR4vT7qY5wZ"`
- `evaluationSetId` (string, required) — The ID of the evaluation set that was run. Example: `"ev_2LcgeY_mp2T5yPaEuq5Lw"`
- `entity` (EvaluationSetRunEntity, required) — The extractor, classifier, or splitter that was run.
- `entityVersion` (EvaluationSetRunEntityVersion, required) — The version of the extractor, classifier, or splitter that was run.
- `metrics` (EvaluationSetRunMetrics, required) — Metrics for the evaluation set run. The shape depends on the entity type.
- `status` (enum, required) — The status of a batch run: * `"PENDING"` - The batch has been created and is waiting to be processed * `"PROCESSING"` - The batch is currently being processed * `"PROCESSED"` - All runs in the batch have completed successfully * `"FAILED"` - The batch failed to process * `"CANCELLED"` - The batch was cancelled
  - Allowed values: `PENDING`, `PROCESSING`, `PROCESSED`, `FAILED`, `CANCELLED`
- `options` (EvaluationSetRunOptions, required) — The options for the evaluation set run.
- `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.

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

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

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

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

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

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

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

## Types

### EvaluationSetRunsPostRequestBodyContentApplicationJsonSchemaEntity

Optional processor and version to run against the evaluation set. If omitted, the evaluation set's processor is run at its draft version.

- `id` (string, required) — The ID of the extractor, classifier, or splitter to evaluate.
- `version` (string, optional, default: latest) — An optional version to use. When not supplied, the most recent published version will be used. Special values include: - `"latest"` for the most recent published version. If there are no published versions, the draft version will be used. - `"draft"` for the draft version. - Specific version numbers corresponding to versions your team has published, e.g. `"1.0"`, `"2.2"`, etc.

### EvaluationSetRunEntity

The extractor, classifier, or splitter that was run.

### EvaluationSetRunEntityVersion

The version of the extractor, classifier, or splitter that was run.

### EvaluationSetRunMetrics

Metrics for the evaluation set run. The shape depends on the entity type.

- `type`: `EXTRACT` (EXTRACT)
  - `accuracy` (double, optional) — Aggregate accuracy across every reviewed field in `fieldMetrics`.
  - `fieldMetrics` (map from string to EvaluationSetRunFieldMetric, optional) — Per-field accuracy statistics. Keys are the extractor schema's field names — nested fields are flattened to dot-joined paths. See [Extraction response format](https://docs.extend.ai/2026-02-09/extraction/response-format#output-value-and-metadata) for more on how extractor field paths are structured.
  - `meanLatencyMs` (double, optional) — Mean per-file latency in milliseconds.
  - `numFilesProcessed` (double, optional) — The number of files that have finished processing.
  - `numFilesTotal` (double, optional) — The total number of files that will be processed in this evaluation set run.
  - `numPages` (double, optional) — The total number of pages processed across the completed files.
  - `p50LatencyMs` (double, optional) — 50th percentile per-file latency in milliseconds.
  - `p90LatencyMs` (double, optional) — 90th percentile per-file latency in milliseconds.
  - `p95LatencyMs` (double, optional) — 95th percentile per-file latency in milliseconds.
  - `p99LatencyMs` (double, optional) — 99th percentile per-file latency in milliseconds.
  - `numFiles` (double, optional, deprecated) — Deprecated. Use `numFilesProcessed` instead.
- `type`: `CLASSIFY` (CLASSIFY)
  - `accuracy` (double, optional) — Overall accuracy across the evaluation set, computed as the share of files whose predicted class matched the expected class.
  - `classificationMetrics` (map from string to ClassificationMetric, optional) — Per-class precision, recall, and F1. Keys are the classifier's classification types as defined in the classifier configuration.
  - `meanLatencyMs` (double, optional) — Mean per-file latency in milliseconds.
  - `numFilesProcessed` (double, optional) — The number of files that have finished processing.
  - `numFilesTotal` (double, optional) — The total number of files that will be processed in this evaluation set run.
  - `numPages` (double, optional) — The total number of pages processed across the completed files.
  - `p50LatencyMs` (double, optional) — 50th percentile per-file latency in milliseconds.
  - `p90LatencyMs` (double, optional) — 90th percentile per-file latency in milliseconds.
  - `p95LatencyMs` (double, optional) — 95th percentile per-file latency in milliseconds.
  - `p99LatencyMs` (double, optional) — 99th percentile per-file latency in milliseconds.
  - `numFiles` (double, optional, deprecated) — Deprecated. Use `numFilesProcessed` instead.
- `type`: `SPLITTER` (SPLITTER)
  - `f1` (double, optional) — Harmonic mean of `precision` and `recall`.
  - `meanLatencyMs` (double, optional) — Mean per-file latency in milliseconds.
  - `numFilesProcessed` (double, optional) — The number of files that have finished processing.
  - `numFilesTotal` (double, optional) — The total number of files that will be processed in this evaluation set run.
  - `numPages` (double, optional) — The total number of pages processed across the completed files.
  - `numSplitsCorrect` (double, optional) — The number of predicted splits that exactly matched an expected split.
  - `numSplitsExpected` (double, optional) — The total number of expected split documents across the evaluation set.
  - `numSplitsPredicted` (double, optional) — The total number of split documents the model produced.
  - `p50LatencyMs` (double, optional) — 50th percentile per-file latency in milliseconds.
  - `p90LatencyMs` (double, optional) — 90th percentile per-file latency in milliseconds.
  - `p95LatencyMs` (double, optional) — 95th percentile per-file latency in milliseconds.
  - `p99LatencyMs` (double, optional) — 99th percentile per-file latency in milliseconds.
  - `precision` (double, optional) — `numSplitsCorrect / numSplitsPredicted`.
  - `recall` (double, optional) — `numSplitsCorrect / numSplitsExpected`.
  - `numFiles` (double, optional, deprecated) — Deprecated. Use `numFilesProcessed` instead.

### EvaluationSetRunOptions

The options for the evaluation set run.

- `fuzzyMatchFields` (list of string, optional) — The fields that were fuzzy matched.
- `excludeFields` (list of string, optional) — The fields that were excluded from the run.

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

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

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

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

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

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

### EvaluationSetRunFieldMetric

Per-field accuracy statistics for an extract evaluation run.

- `countTotal` (double, optional) — The number of runs that included this field in the schema.
- `countPresent` (double, optional) — The number of runs where the model produced a non-null value for this field.
- `countExpected` (double, optional) — The number of runs where an expected value was provided.
- `countAccurate` (double, optional) — The number of runs where the extracted value matched the expected value.
- `accuracy` (double, optional) — Accuracy for this field, computed as `countAccurate / countExpected`. Omitted when `countExpected` is `0`.

### ClassificationMetric

Per-class precision, recall, and F1 for a classify evaluation run.

- `countExpected` (double, optional) — The number of files whose expected classification was this class.
- `countPredicted` (double, optional) — The number of files the model classified as this class.
- `countCorrect` (double, optional) — The number of files correctly classified as this class.
- `precision` (double, optional) — `countCorrect / countPredicted` for this class.
- `recall` (double, optional) — `countCorrect / countExpected` for this class.
- `f1` (double, optional) — Harmonic mean of `precision` and `recall`.

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

## Examples

### Run selected evaluation set items

**Request**

```json
{
  "evaluationSetId": "ev_2LcgeY_mp2T5yPaEuq5Lw",
  "evaluationSetItemIds": [
    "evi_kR9mNP12Qw4yTv8BdR3H"
  ]
}
```

**Response**

```json
{
  "object": "evaluation_set_run",
  "id": "bpr_Xj8mK2pL9nR4vT7qY5wZ",
  "evaluationSetId": "ev_2LcgeY_mp2T5yPaEuq5Lw",
  "entity": {
    "object": "extractor",
    "id": "ex_Xj8mK2pL9nR4vT7qY5wZ",
    "name": "Invoice Extractor",
    "createdAt": "2024-03-21T16:45:00Z",
    "updatedAt": "2024-03-21T16:45:00Z"
  },
  "entityVersion": {
    "object": "extractor_version",
    "id": "exv_xK9mLPqRtN3vS8wF5hB2cQ",
    "description": "Updated extraction fields for new invoice format",
    "version": "draft",
    "extractorId": "ex_Xj8mK2pL9nR4vT7qY5wZ",
    "createdAt": "2024-03-21T16:45:00Z",
    "createdBy": {
      "type": "user",
      "email": "matt@extend.app"
    }
  },
  "metrics": {
    "type": "EXTRACT",
    "accuracy": 0.8,
    "fieldMetrics": {
      "invoice_number": {
        "countTotal": 10,
        "countPresent": 10,
        "countExpected": 10,
        "countAccurate": 9,
        "accuracy": 0.9
      },
      "vendor.name": {
        "countTotal": 10,
        "countPresent": 8,
        "countExpected": 10,
        "countAccurate": 7,
        "accuracy": 0.7
      }
    },
    "meanLatencyMs": 100,
    "numFilesProcessed": 10,
    "numFilesTotal": 10,
    "numPages": 25,
    "p50LatencyMs": 90,
    "p90LatencyMs": 150,
    "p95LatencyMs": 200,
    "p99LatencyMs": 300,
    "numFiles": 10
  },
  "status": "PROCESSING",
  "options": {
    "fuzzyMatchFields": [
      "string"
    ],
    "excludeFields": [
      "string"
    ]
  },
  "createdAt": "2024-03-21T16:45:00Z",
  "updatedAt": "2024-03-21T16:45:00Z"
}
```

### Example 2

**Request**

```json
{
  "evaluationSetId": "ev_2LcgeY_mp2T5yPaEuq5Lw",
  "entity": {
    "id": "ex_Xj8mK2pL9nR4vT7qY5wZ",
    "version": "1.0"
  }
}
```

**Response**

```json
{
  "object": "evaluation_set_run",
  "id": "bpr_Xj8mK2pL9nR4vT7qY5wZ",
  "evaluationSetId": "ev_2LcgeY_mp2T5yPaEuq5Lw",
  "entity": {
    "object": "extractor",
    "id": "ex_Xj8mK2pL9nR4vT7qY5wZ",
    "name": "Invoice Extractor",
    "createdAt": "2024-03-21T16:45:00Z",
    "updatedAt": "2024-03-21T16:45:00Z"
  },
  "entityVersion": {
    "object": "extractor_version",
    "id": "exv_xK9mLPqRtN3vS8wF5hB2cQ",
    "description": "Updated extraction fields for new invoice format",
    "version": "draft",
    "extractorId": "ex_Xj8mK2pL9nR4vT7qY5wZ",
    "createdAt": "2024-03-21T16:45:00Z",
    "createdBy": {
      "type": "user",
      "email": "matt@extend.app"
    }
  },
  "metrics": {
    "type": "EXTRACT",
    "accuracy": 0.8,
    "fieldMetrics": {
      "invoice_number": {
        "countTotal": 10,
        "countPresent": 10,
        "countExpected": 10,
        "countAccurate": 9,
        "accuracy": 0.9
      },
      "vendor.name": {
        "countTotal": 10,
        "countPresent": 8,
        "countExpected": 10,
        "countAccurate": 7,
        "accuracy": 0.7
      }
    },
    "meanLatencyMs": 100,
    "numFilesProcessed": 10,
    "numFilesTotal": 10,
    "numPages": 25,
    "p50LatencyMs": 90,
    "p90LatencyMs": 150,
    "p95LatencyMs": 200,
    "p99LatencyMs": 300,
    "numFiles": 10
  },
  "status": "PROCESSING",
  "options": {
    "fuzzyMatchFields": [
      "string"
    ],
    "excludeFields": [
      "string"
    ]
  },
  "createdAt": "2024-03-21T16:45:00Z",
  "updatedAt": "2024-03-21T16:45:00Z"
}
```