Match action policies for a rule Experimental; added in 9.5.0

POST /api/alerting/v2/action_policies/_match_for_rule

Spaces method and path for this operation:

post /s/{space_id}/api/alerting/v2/action_policies/_match_for_rule

Refer to Spaces for more information.

Returns action policies that match a given rule, categorised as direct, global, or global-filtered.

[Required authorization] Route required privileges: read_alerting-v2-action-policies.

Headers

  • kbn-xsrf string Required

    A required header to protect against CSRF attacks

application/json

Body

  • rule object

    Additional properties are NOT allowed.

    Hide rule attributes Show rule attributes object
    • id string

      The ID of the rule.

      Minimum length is 1, maximum length is 256.

    • name string

      The name of the rule, used to evaluate global matcher expressions.

      Minimum length is 1, maximum length is 256.

    • tags array[string]

      The tags of the rule, used to evaluate global matcher expressions.

      Not more than 100 elements. Minimum length of each is 1, maximum length of each is 256.

Responses

  • 200 application/json

    Indicates a successful call.

    Hide response attributes Show response attributes object
    • items array[object] Required

      The list of matched action policies.

      Hide items attributes Show items attributes object

      An action policy that matches a rule, along with the reason it matched.

      • actionPolicy object Required

        The matched action policy.

        Additional properties are NOT allowed.

        Hide actionPolicy attributes Show actionPolicy attributes object
        • auth object Required

          Authentication and ownership information.

          Additional properties are NOT allowed.

          Hide auth attributes Show auth attributes object
          • created_by_user boolean Required

            Whether this policy was created by a user (vs system-generated).

          • owner string Required

            The owner of the action policy.

        • created_at string Required

          The ISO datetime when the action policy was created.

        • created_by string | null Required

          The user ID who created the action policy.

        • description string Required

          A description of the action policy.

        • destinations array[object] Required

          The list of destinations.

          Hide destinations attributes Show destinations attributes object

          An action policy destination configuration.

          • id string Required

            The workflow connector identifier.

            Minimum length is 1, maximum length is 150.

          • type string Required Discriminator

            The destination type.

            Value is workflow.

        • enabled boolean Required

          Whether the action policy is enabled.

        • group_by array[string] | null Required

          The fields used to group alerts, or null for no grouping.

        • grouping_mode string Required

          The grouping mode for alert notifications.

          Any of:

          one notification per alert episode lifecycle (default).

          Value is per_episode.

          a single notification for all matching episodes.

          Value is all.

          group by specified groupBy fields.

          Value is per_field.

        • id string Required

          The unique identifier for the action policy.

        • matcher string | null Required

          A KQL query to match alerts, or null to match all.

        • name string Required

          The name of the action policy.

        • snoozed_until string | null Required

          The ISO datetime until which the policy is snoozed, or null if not snoozed.

        • tags array[string] | null Required

          Tags associated with the action policy.

        • throttle object | null Required

          The throttle configuration for notifications.

          Additional properties are NOT allowed.

          Hide throttle attributes Show throttle attributes object | null
          • interval string | null Required

            The throttle interval duration (e.g. 5m, 1h), or null when the strategy is intervalless.

          • strategy string

            The throttle strategy.

            Any of:

            notify only on episode status transitions (default for per_episode).

            Value is on_status_change.

            notify on transitions and at regular intervals.

            Value is per_status_interval.

            notify at regular intervals regardless of status (default for all/per_field).

            Value is time_interval.

            notify on every evaluation cycle (high volume).

            Value is every_time.

        • updated_at string Required

          The ISO datetime when the action policy was last updated.

        • updated_by string | null Required

          The user ID who last updated the action policy.

        • version string

          The version, used for optimistic concurrency control.

      • category string Required

        Why this action policy matches the rule: "global" (applies to all rules, no filter), or "global-filtered" (applies to all rules, KQL filter evaluated to true).

        Values are global or global-filtered.

    • total integer Required

      Total number of action policies in the space. If greater than the number evaluated, the match results may be incomplete.

      Minimum value is 0, maximum value is 9007199254740991.

  • 400 application/json

    Indicates an invalid schema or parameters.

    Hide response attributes Show response attributes object
    • code string Required

      A stable, machine-readable error code (e.g., "RULE_NOT_FOUND", "INVALID_SCHEDULE"). Safe for clients to branch on.

    • details object

      Optional structured context (e.g., validation field errors, conflict resource IDs).

      Additional properties are allowed.

    • error string Required

      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 Required

      A human-friendly explanation of the error. Subject to change without notice. Do not parse or rely on its content.

  • 401 application/json

    Indicates the request was not authenticated.

    Hide response attributes Show response attributes object
    • code string Required

      A stable, machine-readable error code (e.g., "RULE_NOT_FOUND", "INVALID_SCHEDULE"). Safe for clients to branch on.

    • details object

      Optional structured context (e.g., validation field errors, conflict resource IDs).

      Additional properties are allowed.

    • error string Required

      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 Required

      A human-friendly explanation of the error. Subject to change without notice. Do not parse or rely on its content.

  • 403 application/json

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

    Hide response attributes Show response attributes object
    • code string Required

      A stable, machine-readable error code (e.g., "RULE_NOT_FOUND", "INVALID_SCHEDULE"). Safe for clients to branch on.

    • details object

      Optional structured context (e.g., validation field errors, conflict resource IDs).

      Additional properties are allowed.

    • error string Required

      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 Required

      A human-friendly explanation of the error. Subject to change without notice. Do not parse or rely on its content.

  • 500 application/json

    Indicates an unexpected server-side error.

    Hide response attributes Show response attributes object
    • code string Required

      A stable, machine-readable error code (e.g., "RULE_NOT_FOUND", "INVALID_SCHEDULE"). Safe for clients to branch on.

    • details object

      Optional structured context (e.g., validation field errors, conflict resource IDs).

      Additional properties are allowed.

    • error string Required

      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 Required

      A human-friendly explanation of the error. Subject to change without notice. Do not parse or rely on its content.

  • 503 application/json

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

    Hide response attributes Show response attributes object
    • code string Required

      A stable, machine-readable error code (e.g., "RULE_NOT_FOUND", "INVALID_SCHEDULE"). Safe for clients to branch on.

    • details object

      Optional structured context (e.g., validation field errors, conflict resource IDs).

      Additional properties are allowed.

    • error string Required

      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 Required

      A human-friendly explanation of the error. Subject to change without notice. Do not parse or rely on its content.

POST /api/alerting/v2/action_policies/_match_for_rule
curl \
 --request POST 'https://localhost:5601/api/alerting/v2/action_policies/_match_for_rule' \
 --header "Authorization: $API_KEY" \
 --header "Content-Type: application/json" \
 --header "kbn-xsrf: true" \
 --data '"{\n  \"rule\": {\n    \"id\": \"rule-1\",\n    \"name\": \"Host CPU high\",\n    \"tags\": [\n      \"production\"\n    ]\n  }\n}"'
Request example
{
  "rule": {
    "id": "rule-1",
    "name": "Host CPU high",
    "tags": [
      "production"
    ]
  }
}
Response examples (200)
{
  "items": [
    {
      "actionPolicy": {
        "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="
      },
      "category": "global-filtered"
    }
  ],
  "total": 1
}
Response examples (400)
{
  "code": "BAD_REQUEST",
  "details": {
    "errors": {
      "errors": [],
      "properties": {
        "rule": {
          "errors": [
            "Invalid input: expected object, received undefined"
          ]
        }
      }
    }
  },
  "error": "Bad Request",
  "message": "rule: Invalid input: expected object, received undefined"
}
Response examples (401)
{
  "code": "UNAUTHORIZED",
  "error": "Unauthorized",
  "message": "Authentication required to access this API."
}
Response examples (403)
{
  "code": "FORBIDDEN",
  "error": "Forbidden",
  "message": "The current user does not have the required privileges for this request."
}
Response examples (500)
{
  "code": "INTERNAL_SERVER_ERROR",
  "error": "Internal Server Error",
  "message": "An unexpected error occurred."
}
Response examples (503)
{
  "code": "ALERTING_DISABLED",
  "error": "Service Unavailable",
  "message": "Alerting is disabled."
}