> This page is for version v2025-04-21.
> 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.

# Events

## The Event object

| Field     | Description                                                                                            |
| --------- | ------------------------------------------------------------------------------------------------------ |
| eventId   | **string** - Unique identifier for the event                                                           |
| eventType | **string** - Type of the event that occurred (workflow_run.completed)                                  |
| payload   | **object** - Contains the relevant object for the event type (see Payload Type column in tables below) |

Here is what you can expect for a given incoming event:

**`Example Event (JSON Payload)`**

```json Example Event (JSON Payload)
{
  "eventId": "event_1234",
  "eventType": "workflow_run.completed",
  "payload": {
    "object": "workflow_run",
    "id": "workflow_run_1234"
    // etc.
  }
}
```

**`Example Event (Signed Download URL)`**

```json Example Event (Signed Download URL)
{
  "eventId": "event_1234",
  "eventType": "workflow_run.completed",
  "payload": {
    "data": "<signed download URL here>"
  }
}
```

## Workflow specific event types

The following table outlines the various event types you can receive via webhooks for a given workflow after you have created a webhook endpoint and subscribed to the desired event types.

| Event Type                        | Payload Type                                                                                                                   | Description                                                                                                                                                                                                      |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `workflow_run.completed`          | [WorkflowRun](/2025-04-21/developers/api-reference/workflow-endpoints/get-workflow-run#response.body.workflowRun)              | Triggered whenever a WorkflowRun is completed                                                                                                                                                                    |
| `workflow_run.failed`             | [WorkflowRun](/2025-04-21/developers/api-reference/workflow-endpoints/get-workflow-run#response.body.workflowRun)              | Triggered whenever a WorkflowRun fails                                                                                                                                                                           |
| `workflow_run.needs_review`       | [WorkflowRun](/2025-04-21/developers/api-reference/workflow-endpoints/get-workflow-run#response.body.workflowRun)              | Triggered whenever a WorkflowRun needs review\*                                                                                                                                                                  |
| `workflow_run.rejected`           | [WorkflowRun](/2025-04-21/developers/api-reference/workflow-endpoints/get-workflow-run#response.body.workflowRun)              | Triggered whenever a WorkflowRun is rejected from the Extend dashboard. [More info](/2025-04-21/product/workflows/reviewing-workflow-run#rejecting-a-workflow-run)                                               |
| `workflow_run.step_run.processed` | [WorkflowStepRun](/2025-04-21/developers/api-reference/workflow-endpoints/get-workflow-run#response.body.workflowRun.stepRuns) | Triggered whenever a WorkflowStep is finished processing. The payload is a single `stepRun` object from the `stepRuns` array. Useful for consuming incremental extractions to create streaming-like experiences. |

\* Only triggered when the workflow is configured to have a HumanReview step in the Extend workflow builder.

## Processor run specific event types

The following table outlines the event types you can receive via webhook for a given processor run that you have created using the API after you have created a webhook endpoint and subscribed to the desired event types.

| Event Type                | Payload Type                                                                                                          | Description                                               |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| `processor_run.processed` | [ProcessorRun](/2025-04-21/developers/api-reference/processor-endpoints/get-processor-run#response.body.processorRun) | Triggered whenever a ProcessorRun has finished processing |
| `processor_run.failed`    | [ProcessorRun](/2025-04-21/developers/api-reference/processor-endpoints/get-processor-run#response.body.processorRun) | Triggered whenever a ProcessorRun fails                   |

## Global event types

The following table outlines the various event types you can receive via webhooks for your workspace as a whole after you have created a webhook endpoint and subscribed to the desired global event types.

| Event Type                     | Payload Type                                                                                                             | Description                                                                                                                                                 |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `workflow.created`             | [Workflow](/2025-04-21/developers/api-reference/workflow-endpoints/create-workflow#response.body.workflow)               | Triggered when a new Workflow is created                                                                                                                    |
| `workflow.deployed`            | [Workflow](/2025-04-21/developers/api-reference/workflow-endpoints/create-workflow#response.body.workflow)               | Triggered when a Workflow is deployed                                                                                                                       |
| `workflow.deleted`             | [Workflow](/2025-04-21/developers/api-reference/workflow-endpoints/create-workflow#response.body.workflow)               | Triggered when a Workflow is deleted                                                                                                                        |
| `processor.created`            | [Processor](/2025-04-21/developers/api-reference/processor-endpoints/list-processors#response.body.processors)           | Triggered when a new Processor is created                                                                                                                   |
| `processor.updated`            | [Processor](/2025-04-21/developers/api-reference/processor-endpoints/list-processors#response.body.processors)           | Triggered when a Processor is updated                                                                                                                       |
| `processor.deleted`            | [Processor](/2025-04-21/developers/api-reference/processor-endpoints/list-processors#response.body.processors)           | Triggered when a Processor is deleted                                                                                                                       |
| `processor.draft.updated`      | [Processor](/2025-04-21/developers/api-reference/processor-endpoints/list-processors#response.body.processors)           | Triggered when a Processor's draft version is updated. Typically this is when someone hits Save on the Extend Dashboard or a config is updated via the API. |
| `processor.version.published`  | [ProcessorVersion](/2025-04-21/developers/api-reference/processor-endpoints/get-processor-version#response.body.version) | Triggered when a new ProcessorVersion of a Processor is published. Typically this is when someone hits Publish on the Extend Dashboard.                     |
| `parser_run.processed`         | [ParserRun](/2025-04-21/developers/api-reference/parse-endpoints/get-parser-run#response.body.parserRun)                 | Triggered when a ParserRun finishes processing.                                                                                                             |
| `parser_run.failed`            | [ParserRun](/2025-04-21/developers/api-reference/parse-endpoints/get-parser-run#response.body.parserRun)                 | Triggered when a ParserRun fails.                                                                                                                           |
| `edit_run.processed`           | [EditRun](/2025-04-21/developers/api-reference/edit-endpoints/get-edit-run) (fills document form fields)                 | Triggered after an API-created EditRun finishes filling the document's form fields.                                                                         |
| `edit_run.failed`              | [EditRun](/2025-04-21/developers/api-reference/edit-endpoints/get-edit-run) (fills document form fields)                 | Triggered when an API-created EditRun fails before it finishes filling the document's form fields.                                                          |
| `form_detection_run.processed` | `FormDetectionRun` (detects and annotates form fields)                                                                   | Triggered after a FormDetectionRun created directly through the Form Detection API finishes detecting fields and generating the edit schema.                |
| `form_detection_run.failed`    | `FormDetectionRun` (detects and annotates form fields)                                                                   | Triggered when a FormDetectionRun created directly through the Form Detection API fails.                                                                    |