Spaces method and path for this operation:
Refer to Spaces for more information.
Creates an action policy with the given identifier, or fully replaces it if one already exists.
[Required authorization] Route required privileges: manage_alerting-v2-action-policies AND read_alerting-v2-rules.
Body
-
A description of the action policy.
Maximum length is
1024. -
The list of destinations. At least one is required.
At least
1but not more than10elements. -
The fields used to group alerts.
Not more than
16elements. Minimum length of each is1, maximum length of each is256. -
A KQL query string to match alerts.
Maximum length is
4096. -
The name of the action policy.
Minimum length is
1, maximum length is256. -
The throttle configuration for notifications.
Additional properties are NOT allowed.
Responses
-
Returns the replaced action policy.
-
Returns the newly created action policy.
-
Indicates an invalid schema or parameters.
-
Indicates the request was not authenticated.
-
Indicates the user does not have the required privileges to perform the request.
-
Indicates an action policy with the given ID does not exist.
-
Indicates the action policy was created or updated concurrently by another caller.
-
Indicates an unexpected server-side error.
-
Indicates the alerting engine is disabled by the
alerting:v2:enabledadvanced setting.
curl \
--request PUT 'https://localhost:5601/api/alerting/v2/action_policies/{id}' \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--header "kbn-xsrf: true" \
--data '"{\n \"description\": \"Sends a workflow notification when matching host alerts fire.\",\n \"destinations\": [\n {\n \"id\": \"workflow-1\",\n \"type\": \"workflow\"\n }\n ],\n \"grouping_mode\": \"per_episode\",\n \"matcher\": \"host.name: \\\"web-*\\\"\",\n \"name\": \"Notify on host alerts\",\n \"tags\": [\n \"production\"\n ],\n \"throttle\": {\n \"strategy\": \"on_status_change\"\n }\n}"'
{
"description": "Sends a workflow notification when matching host alerts fire.",
"destinations": [
{
"id": "workflow-1",
"type": "workflow"
}
],
"grouping_mode": "per_episode",
"matcher": "host.name: \"web-*\"",
"name": "Notify on host alerts",
"tags": [
"production"
],
"throttle": {
"strategy": "on_status_change"
}
}
{
"auth": {
"created_by_user": true,
"owner": "elastic"
},
"created_at": "2026-01-15T12:00:00.000Z",
"created_by": "elastic",
"description": "Sends a workflow notification when matching host alerts fire.",
"destinations": [
{
"id": "workflow-1",
"type": "workflow"
}
],
"enabled": true,
"group_by": null,
"grouping_mode": "per_episode",
"id": "action-policy-1",
"matcher": "host.name: \"web-*\"",
"name": "Notify on host alerts",
"snoozed_until": null,
"tags": [
"production"
],
"throttle": {
"interval": null,
"strategy": "on_status_change"
},
"updated_at": "2026-01-15T12:00:00.000Z",
"updated_by": "elastic",
"version": "WzAsMV0="
}
{
"auth": {
"created_by_user": true,
"owner": "elastic"
},
"created_at": "2026-01-15T12:00:00.000Z",
"created_by": "elastic",
"description": "Sends a workflow notification when matching host alerts fire.",
"destinations": [
{
"id": "workflow-1",
"type": "workflow"
}
],
"enabled": true,
"group_by": null,
"grouping_mode": "per_episode",
"id": "action-policy-1",
"matcher": "host.name: \"web-*\"",
"name": "Notify on host alerts",
"snoozed_until": null,
"tags": [
"production"
],
"throttle": {
"interval": null,
"strategy": "on_status_change"
},
"updated_at": "2026-01-15T12:00:00.000Z",
"updated_by": "elastic",
"version": "WzAsMV0="
}
{
"code": "INVALID_ACTION_POLICY_DATA",
"details": {
"context": "upsert",
"errors": {
"errors": [],
"properties": {
"name": {
"errors": [
"Invalid input: expected string, received undefined"
]
}
}
}
},
"error": "Bad Request",
"message": "Error validating upsert action policy data - name: Invalid input: expected string, received undefined"
}
{
"code": "UNAUTHORIZED",
"error": "Unauthorized",
"message": "Authentication required to access this API."
}
{
"code": "FORBIDDEN",
"error": "Forbidden",
"message": "The current user does not have the required privileges for this request."
}
{
"code": "ACTION_POLICY_NOT_FOUND",
"details": {
"action_policy_id": "action-policy-1"
},
"error": "Not Found",
"message": "Action policy with id \"action-policy-1\" not found"
}
{
"code": "ACTION_POLICY_VERSION_CONFLICT",
"details": {
"action_policy_id": "action-policy-1"
},
"error": "Conflict",
"message": "Action policy with id \"action-policy-1\" has already been updated by another user"
}
{
"code": "INTERNAL_SERVER_ERROR",
"error": "Internal Server Error",
"message": "An unexpected error occurred."
}
{
"code": "ALERTING_DISABLED",
"error": "Service Unavailable",
"message": "Alerting is disabled."
}