---
type: api
title: List action policy executions
description: **Spaces method and path for this operation:**
url: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/kibana/operation/operation-get-alerting-v2-execution-history-action-policies
resource: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/kibana/operation/operation-get-alerting-v2-execution-history-action-policies
products:
  - Kibana
---

# List action policy executions

Availability: Experimental since 9.5

- Server: `https://{kibana_url}`

## Paths

- `GET` `/api/alerting/v2/execution_history/action_policies`
- `GET` `/s/{space_id}/api/alerting/v2/execution_history/action_policies`

## Description

Refer to [Spaces](https://www.elastic.co/docs/deploy-manage/manage-spaces) for more information.

Get a paginated list of dispatcher summary events for action policies in the current space.

## Required authorization

- Privileges: `read_alerting-v2-execution-history`

## Authentication

- Api key: `Authorization: <value>`
  These APIs use key-based authentication. You must create an API key and use the encoded value in the request header. For example: `Authorization: ApiKey base64AccessApiKey`
- Basic: `Authorization: Basic <credentials>`

## Query string parameters

- `page` (integer · min: 1 · max: 10000 · default: 1) — required
  Page number (1-indexed). Defaults to 1.
- `per_page` (integer · min: 1 · max: 100 · default: 20) — required
  Number of events per page. Defaults to 20.
- `from` (string · format: date-time) — optional
  Inclusive ISO datetime lower bound on the event timestamp; overrides the default 24-hour window. Independent of alert_ids — e.g. set it to an alert’s start time to scope results to that alert’s lifetime.
- `to` (string · format: date-time) — optional
  Inclusive ISO datetime upper bound on the event timestamp.
- `alert_ids` (string[] · min items: 1 · max items: 50) — optional
  Alert filter. Narrows events to those referencing at least one of the provided alert IDs.
- `sort_field` (enum · default: dispatched_at) — required
  Sort field. Defaults to "dispatched_at".
  Values: `dispatched_at`
- `sort_order` (enum · default: desc) — required
  Sort direction. Defaults to "desc".
  Values: `asc`, `desc`
- `search` (string · min length: 1 · max length: 256) — optional
  Free-text search. Matches policy name, rule name, policy/rule ID (case-insensitive).
- `rule_ids` (string[] · min items: 1 · max items: 50) — optional
  Explicit rule filter. Narrows events to those referencing at least one of the provided rule IDs. Also unions with the search filter if both are provided.
- `outcomes` (enum[] · min items: 1 · max items: 3) — optional
  Outcome filter. When omitted matches all outcomes. Pass one or more of "success", "throttled", "failure" to narrow.
  Values: `success`, `throttled`, `failure`

## Responses

#### `200`

Returns a paginated list of execution history events.

`application/json`

- `items` (object[])
  - `action_group_count` (number)
  - `alert_count` (number)
  - `alerts` (object[] · max items: 50)
    Alert IDs referenced by this event, bounded to 50. Empty when the event references no alerts. Use `alert_count` for the true total.
    - `id` (string)
  - `dispatched_at` (string · format: date-time)
  - `error` (object)
    Failure details. Omitted when the dispatch did not fail.
    - `message` (string)
    - `stack_trace` (string)
      Omitted when the source recorded no trace.
  - `failure_reason` (enum)
    Values: `missing_api_key`, `workflow_not_found`, `workflow_disabled`, `schedule_error`, `license_not_supported`
  - `outcome` (enum)
    Values: `success`, `throttled`, `failure`
  - `policy` (object)
    - `id` (string)
    - `name` (string)
      Omitted when the referenced resource could not be resolved.
  - `rule_count` (number)
    Number of rules referenced by this event after search or rule-filter narrowing. Unlike `total` on a list response, this is an exact count and it can exceed `rules.length` when the embedded array is truncated to the cap.
  - `rules` (object[] · max items: 20)
    Rules referenced by this event, bounded to 20. When a search or rule filter narrows the match, this array is intersected with the matched subset server-side. Use `rule_count` for the full count.
    - `id` (string)
    - `name` (string)
      Omitted when the referenced resource could not be resolved.
  - `workflows` (object[] · max items: 100)
    - `id` (string)
    - `name` (string)
      Omitted when the referenced resource could not be resolved.
- `page` (integer · min: 1 · max: 9007199254740991)
- `per_page` (integer · min: 1 · max: 9007199254740991)
- `search_matches` (object)
  Per-type match counts for the active search. Omitted when no search was provided. When is_truncated is true the server ID filter was capped and the result may be truncated.
  - `is_truncated` (boolean)
    True when the server filter cap was reached and results may be truncated.
  - `policies` (number)
    Policies matching the search. This count is an estimate: results above 10,000 may be reported as 10,000.
  - `rules` (number)
    Rules matching the search. This count is an estimate: results above 10,000 may be reported as 10,000.
- `total` (integer · min: 0 · max: 9007199254740991)
  The number of action policy events matching the query. This count is an estimate: results above 10,000 may be reported as 10,000.
#### `400`

Indicates an invalid schema or parameters.

`application/json`

- `code` (string)
  Stable error code you can branch on, for example `INVALID_SCHEDULE` or `RULE_ALREADY_EXISTS`.
- `details` (map string to object)
  Optional extra information about the error, for example field validation issues or the `rule_id` when that ID already exists.
- `error` (string)
  A short human-readable summary of the error category (e.g., "Not Found", "Bad Request"). Subject to change without notice. Do not parse or rely on its content.
- `message` (string)
  A readable explanation of the error. The wording can change without notice. Do not parse this field.
#### `401`

Indicates the request was not authenticated.

`application/json`

- `code` (string)
  Stable error code you can branch on, for example `INVALID_SCHEDULE` or `RULE_ALREADY_EXISTS`.
- `details` (map string to object)
  Optional extra information about the error, for example field validation issues or the `rule_id` when that ID already exists.
- `error` (string)
  A short human-readable summary of the error category (e.g., "Not Found", "Bad Request"). Subject to change without notice. Do not parse or rely on its content.
- `message` (string)
  A readable explanation of the error. The wording can change without notice. Do not parse this field.
#### `403`

Indicates the user does not have the required privileges to perform the request.

`application/json`

- `code` (string)
  Stable error code you can branch on, for example `INVALID_SCHEDULE` or `RULE_ALREADY_EXISTS`.
- `details` (map string to object)
  Optional extra information about the error, for example field validation issues or the `rule_id` when that ID already exists.
- `error` (string)
  A short human-readable summary of the error category (e.g., "Not Found", "Bad Request"). Subject to change without notice. Do not parse or rely on its content.
- `message` (string)
  A readable explanation of the error. The wording can change without notice. Do not parse this field.
#### `500`

Indicates an unexpected server-side error.

`application/json`

- `code` (string)
  Stable error code you can branch on, for example `INVALID_SCHEDULE` or `RULE_ALREADY_EXISTS`.
- `details` (map string to object)
  Optional extra information about the error, for example field validation issues or the `rule_id` when that ID already exists.
- `error` (string)
  A short human-readable summary of the error category (e.g., "Not Found", "Bad Request"). Subject to change without notice. Do not parse or rely on its content.
- `message` (string)
  A readable explanation of the error. The wording can change without notice. Do not parse this field.
#### `503`

Indicates the alerting engine is disabled by the `alerting:v2:enabled` advanced setting.

`application/json`

- `code` (string)
  Stable error code you can branch on, for example `INVALID_SCHEDULE` or `RULE_ALREADY_EXISTS`.
- `details` (map string to object)
  Optional extra information about the error, for example field validation issues or the `rule_id` when that ID already exists.
- `error` (string)
  A short human-readable summary of the error category (e.g., "Not Found", "Bad Request"). Subject to change without notice. Do not parse or rely on its content.
- `message` (string)
  A readable explanation of the error. The wording can change without notice. Do not parse this field.
## Code examples

#### Console

```console
GET kbn:/api/alerting/v2/execution_history/action_policies?page=1&per_page=20&sort_field=dispatched_at&sort_order=desc
```

#### curl

```curl
curl -X GET "${KIBANA_URL}/api/alerting/v2/execution_history/action_policies?page=1&per_page=20&sort_field=dispatched_at&sort_order=desc" \
  -H "Authorization: ApiKey ${API_KEY}"
```

## Response examples

#### A page of action policy execution events

```json
{
  "items": [
    {
      "action_group_count": 1,
      "alert_count": 1,
      "alerts": [
        {
          "id": "alert-1"
        }
      ],
      "dispatched_at": "2026-01-15T12:05:00.000Z",
      "outcome": "success",
      "policy": {
        "id": "action-policy-1",
        "name": "Notify on production alerts"
      },
      "rule_count": 1,
      "rules": [
        {
          "id": "rule-1",
          "name": "Host CPU high"
        }
      ],
      "workflows": [
        {
          "id": "workflow-1",
          "name": "Notify oncall"
        }
      ]
    }
  ],
  "page": 1,
  "per_page": 20,
  "total": 1
}
```

#### Exceeds the max result window

```json
{
  "code": "BAD_REQUEST",
  "details": {
    "errors": {
      "page": [
        "page * per_page cannot exceed 10000."
      ]
    }
  },
  "error": "Bad Request",
  "message": "page * per_page cannot exceed 10000."
}
```

#### Request was not authenticated

```json
{
  "code": "UNAUTHORIZED",
  "error": "Unauthorized",
  "message": "Authentication required to access this API."
}
```

#### Caller lacks required privileges

```json
{
  "code": "FORBIDDEN",
  "error": "Forbidden",
  "message": "The current user does not have the required privileges for this request."
}
```

#### Unexpected server-side error

```json
{
  "code": "INTERNAL_SERVER_ERROR",
  "error": "Internal Server Error",
  "message": "An unexpected error occurred."
}
```

#### Alerting V2 is disabled

```json
{
  "code": "ALERTING_DISABLED",
  "error": "Service Unavailable",
  "message": "Alerting is disabled."
}
```

