> ## Documentation Index
> Fetch the complete documentation index at: https://test-8ad8522e-feat-ai-sre.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Get escalation rule detail

> Retrieve detailed information for a specific escalation rule.

## Restrictions

| Aspect      | Value                                                         |
| ----------- | ------------------------------------------------------------- |
| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |
| Permissions | **Channels Read** (`on-call`)                                 |


## OpenAPI

````yaml /api-reference/on-call.openapi.en.json post /channel/escalate/rule/info
openapi: 3.1.0
info:
  title: Flashduty Open API
  description: >-
    Public HTTP API for the Flashduty incident management platform — incidents,
    notification templates, channels, schedules, monitors, RUM, and platform
    administration. Every operation is authenticated with an `app_key` query
    parameter issued from the Flashduty console under Account → APP Keys.
    Responses follow a uniform envelope: `{ request_id, data }` on success, `{
    request_id, error }` on failure.
  version: 1.0.0
servers:
  - url: https://api.flashcat.cloud
    description: Flashduty Open API
security:
  - AppKeyAuth: []
tags:
  - name: On-call/Incidents
    description: ''
  - name: On-call/Channels
    description: ''
  - name: On-call/Alerts
    description: >-
      Search, inspect, and act on alerts. Manage card views and alert processing
      pipelines.
  - name: On-call/Integrations
    description: ''
  - name: On-call/IM integrations
    description: IM integration queries, such as which integrations have war room enabled.
  - name: On-call/Schedules
    description: ''
  - name: On-call/Licenses
    description: ''
  - name: On-call/Calendars
    description: ''
  - name: On-call/Notification templates
    description: ''
  - name: On-call/Alert enrichment
    description: Custom fields, enrichment rules, and data mapping (schema, data, API).
  - name: On-call/Analytics
    description: ''
  - name: On-call/Status pages
    description: ''
  - name: On-call/Changes
    description: ''
paths:
  /channel/escalate/rule/info:
    post:
      tags:
        - On-call/Channels
      summary: Get escalation rule detail
      description: Retrieve detailed information for a specific escalation rule.
      operationId: channelEscalateRuleInfo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChannelRuleIDRequest'
            example:
              channel_id: 1001
              rule_id: 6621b23f4a2c5e0012ab34d0
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SuccessEnvelope'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/EscalateRuleItem'
              example:
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
                data:
                  account_id: 2451002751131
                  channel_id: 6193426913131
                  priority: 0
                  aggr_window: 0
                  rule_name: Default
                  description: ''
                  layers:
                    - max_times: 1
                      notify_step: 10
                      target:
                        person_ids:
                          - 3790925372131
                        by:
                          follow_preference: true
                        webhooks: null
                      escalate_window: 30
                      force_escalate: false
                  time_filters: []
                  filters: []
                  status: enabled
                  template_id: 6321aad26c12104586a88916
                  rule_id: 69bd0ce95a238693176c1d66
                  updated_by: 3790925372131
                  created_at: 1773997289
                  updated_at: 1773997289
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    ChannelRuleIDRequest:
      type: object
      required:
        - channel_id
        - rule_id
      properties:
        channel_id:
          type: integer
          format: int64
          description: Owning channel ID; obtain it from `POST /channel/list`.
        rule_id:
          type: string
          pattern: ^[0-9a-fA-F]{24}$
          description: Rule ID (MongoDB ObjectID).
    SuccessEnvelope:
      type: object
      description: >-
        Success response envelope. On every 2xx response, `request_id`
        identifies the call (also mirrored in the `Flashcat-Request-Id` header)
        and `data` holds the endpoint-specific payload. Failure responses use a
        different shape — see `ErrorResponse`.
      properties:
        request_id:
          type: string
          description: >-
            Unique ID for this request. Mirrored in the Flashcat-Request-Id
            response header. Include it when reporting issues.
          example: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
        data:
          description: Endpoint-specific payload. See each operation's 200 response schema.
      required:
        - request_id
        - data
    EscalateRuleItem:
      type: object
      required:
        - account_id
        - channel_id
        - priority
        - aggr_window
        - rule_name
        - description
        - layers
        - time_filters
        - filters
        - status
        - template_id
        - rule_id
        - updated_by
        - created_at
        - updated_at
      properties:
        account_id:
          type: integer
          format: int64
          description: Owning account ID.
        channel_id:
          type: integer
          format: int64
          description: Channel the rule belongs to.
        priority:
          type: integer
          description: Evaluation priority. Lower runs first.
        aggr_window:
          type: integer
          description: Delay window in seconds.
        rule_name:
          type: string
          description: Rule name.
        description:
          type: string
          description: Rule description.
        layers:
          type: array
          items:
            $ref: '#/components/schemas/EscalateLayer'
          description: Escalation levels in order.
        time_filters:
          type: array
          items:
            $ref: '#/components/schemas/TimeFilter'
          description: Recurring time windows during which the rule applies.
        filters:
          $ref: '#/components/schemas/FilterGroup'
          description: >-
            Incident-level match conditions (OR-of-AND tree): the rule is
            matched against the incident the alert was grouped into, not against
            the alert itself. Omit or leave empty to apply the rule to all
            incidents in the channel.
        status:
          type: string
          enum:
            - enabled
            - disabled
            - deleted
          description: >-
            Rule status: `enabled` means active, `disabled` means paused,
            `deleted` is soft-deleted (possible only from the detail endpoint;
            lists never return deleted rules).
        template_id:
          type: string
          pattern: ^[0-9a-fA-F]{24}$
          description: Notification template ID (MongoDB ObjectID).
        rule_id:
          type: string
          pattern: ^[0-9a-fA-F]{24}$
          description: Escalation rule ID (MongoDB ObjectID).
        updated_by:
          type: integer
          format: int64
          description: Member ID that last updated the rule.
        deleted_at:
          type: integer
          format: int64
          description: >-
            Deletion time, Unix timestamp in seconds. Omitted unless the rule is
            soft-deleted; deleted rules are excluded from list responses.
        created_at:
          type: integer
          format: int64
          description: Creation time, Unix timestamp in seconds.
        updated_at:
          type: integer
          format: int64
          description: Last update time, Unix timestamp in seconds.
        channel_name:
          type: string
          description: Channel name, populated for cross-channel listing responses.
    EscalateLayer:
      type: object
      required:
        - target
      properties:
        max_times:
          type: integer
          minimum: 0
          maximum: 6
          description: Max repeat notifications within the level.
        notify_step:
          type: number
          format: float
          minimum: 0.5
          maximum: 120
          description: Repeat interval in minutes.
        target:
          $ref: '#/components/schemas/EscalateTarget'
        escalate_window:
          type: integer
          minimum: 0
          maximum: 720
          description: Wait before moving to the next level, in minutes.
        force_escalate:
          type: boolean
          description: When true, always escalate regardless of acknowledgement.
    TimeFilter:
      type: object
      description: >-
        Recurring time window. `start`/`end` use 24-hour `HH:MM` format;
        `repeat` lists ISO-style weekday indices (0=Sunday … 6=Saturday).
      properties:
        start:
          type: string
          description: Start of the window in `HH:MM`.
        end:
          type: string
          description: End of the window in `HH:MM`.
        repeat:
          type: array
          items:
            type: integer
            minimum: 0
            maximum: 6
          description: Days of the week this window repeats on. Empty means every day.
        cal_id:
          type: string
          description: >-
            Optional calendar ID; restricts the window to days matching the
            calendar.
        is_off:
          type: boolean
          description: When true, match days marked as days-off in the calendar.
    FilterGroup:
      $ref: '#/components/schemas/OrFilterGroup'
    ErrorResponse:
      type: object
      description: Response envelope for errors. `error` is required; `data` is absent.
      properties:
        request_id:
          type: string
          example: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
          description: >-
            Unique trace ID of this request; include it when reporting issues so
            logs can be located.
        error:
          $ref: '#/components/schemas/DutyError'
      required:
        - request_id
        - error
    EscalateTarget:
      type: object
      description: >-
        Notification target. At least one of `person_ids`, `team_ids`,
        `schedule_to_role_ids`, or `emails` must be set, together with either
        `by` or `webhooks`.
      properties:
        person_ids:
          type: array
          items:
            type: integer
            format: int64
          description: Member IDs to notify directly.
        team_ids:
          type: array
          items:
            type: integer
            format: int64
          description: Team IDs to notify.
        schedule_to_role_ids:
          type: object
          additionalProperties:
            type: array
            items:
              type: integer
              format: int64
          description: Map of schedule ID to the role IDs on that schedule to notify.
        emails:
          type: array
          items:
            type: string
            format: email
          description: Email addresses to notify (push-only scenarios).
        by:
          type: object
          description: >-
            Per-severity personal notification channels. Required unless
            `webhooks` is provided.
          properties:
            follow_preference:
              type: boolean
              description: >-
                When true, use each responder's personal preference instead of
                the lists below.
            critical:
              type: array
              items:
                type: string
              description: >-
                Notify channels used for Critical severity. Personal channels:
                `sms`, `voice`, `email`, `push`; IM group-chat channels:
                `feishu_app:<chat_id>`, `dingtalk_app:<chat_id>`,
                `wecom_app:<chat_id>`, `slack_app:<chat_id>`,
                `teams_app:<chat_id>`.
            warning:
              type: array
              items:
                type: string
              description: >-
                Notify channels used for Warning severity. Values as for
                `critical`.
            info:
              type: array
              items:
                type: string
              description: >-
                Notify channels used for Info severity. Values as for
                `critical`.
        webhooks:
          type: array
          description: Group chat / webhook targets. Required unless `by` is provided.
          items:
            type: object
            required:
              - type
              - settings
            properties:
              type:
                type: string
                description: >-
                  Webhook type, one of `feishu`, `feishu_app`, `dingtalk`,
                  `dingtalk_app`, `wecom`, `slack`, `slack_app`, `teams_app`,
                  `telegram`, `zoom`.
              settings:
                type: object
                additionalProperties: true
                description: Type-specific settings (chat IDs, URLs, etc.).
    OrFilterGroup:
      type: array
      description: >-
        OR-of-AND filter tree. Outer array is a list of AND groups; the
        condition passes if **any** AND group matches. Within each AND group,
        **all** conditions must match.
      items:
        type: array
        description: AND group — all conditions in this array must match.
        items:
          $ref: '#/components/schemas/FilterCondition'
    DutyError:
      type: object
      description: >-
        Error payload inside the response envelope. Present only on non-2xx
        responses.
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
        message:
          type: string
          description: >-
            Human-readable error message, localized by the caller's
            Accept-Language. May contain field names, IDs, or other context from
            the failing request.
          example: The specified parameter template_id is not valid.
      required:
        - code
        - message
    FilterCondition:
      type: object
      required:
        - key
        - oper
        - vals
      properties:
        key:
          type: string
          description: >-
            Field name to filter on. Use plain names for built-in alert fields
            (e.g. `alert_severity`, `alert_key`, `check`, `resource`, `service`,
            `cluster`) or the `labels.<name>` prefix for custom alert labels
            (e.g. `labels.env`, `labels.region`).
        oper:
          type: string
          enum:
            - IN
            - NOTIN
          description: >-
            Filter operator. `IN` — value must match one of `vals`; `NOTIN` —
            value must not match any of `vals`. Supports regex patterns wrapped
            in `/pattern/`.
        vals:
          type: array
          items:
            type: string
          description: >-
            List of values to match against. Each entry is a plain string or a
            `/regex/` pattern.
    ErrorCode:
      type: string
      description: >-
        Flashduty error code enum. Every failed API response sets `error.code`
        to one of these stable wire strings. HTTP status is informational — the
        authoritative signal is the enum value.


        | Code | HTTP | Meaning |

        |---|---|---|

        | `OK` | 200 | Reserved — not returned on real errors. |

        | `InvalidParameter` | 400 | A required parameter is missing or failed
        validation. |

        | `BadRequest` | 400 | Generic 400 used when no more specific code fits.
        |

        | `InvalidContentType` | 400 | The `Content-Type` header is not
        `application/json`. |

        | `ResourceNotFound` | 400 | The referenced resource does not exist.
        Note: returned as HTTP 400, not 404 (historical choice). |

        | `NoLicense` | 400 | The feature is license-gated and no active license
        was found. |

        | `ReferenceExist` | 400 | Deletion blocked — other entities still
        reference this resource. |

        | `Unauthorized` | 401 | `app_key` is missing, invalid, or expired. |

        | `BalanceNotEnough` | 402 | Billing-gated operation with insufficient
        account balance. |

        | `AccessDenied` | 403 | Authenticated but lacking the permission
        required for this operation. |

        | `RouteNotFound` | 404 | The request URL path is not a known route. |

        | `MethodNotAllowed` | 405 | The HTTP method is not allowed on this
        otherwise-known path. |

        | `UndonedOrderExist` | 409 | An outstanding billing order blocks this
        new one. Wait and retry. |

        | `RequestLocked` | 423 | Operation temporarily locked due to repeated
        failures. |

        | `EntityTooLarge` | 413 | Request body exceeds the configured max size.
        |

        | `RequestTooFrequently` | 429 | Rate limit hit — API-global,
        per-account, or per-integration. |

        | `RequestVerifyRequired` | 428 | Second-factor verification required
        but not supplied. |

        | `DangerousOperation` | 428 | High-risk operation requires MFA
        verification. |

        | `InternalError` | 500 | Unhandled server-side error. Include
        `request_id` in the bug report. |

        | `ServiceUnavailable` | 503 | A backend dependency is unavailable. Try
        again later. |
      enum:
        - OK
        - InvalidParameter
        - BadRequest
        - InvalidContentType
        - ResourceNotFound
        - NoLicense
        - ReferenceExist
        - Unauthorized
        - BalanceNotEnough
        - AccessDenied
        - RouteNotFound
        - MethodNotAllowed
        - UndonedOrderExist
        - RequestLocked
        - EntityTooLarge
        - RequestTooFrequently
        - RequestVerifyRequired
        - DangerousOperation
        - InternalError
        - ServiceUnavailable
      x-enumDescriptions:
        OK: Reserved — not returned on real errors.
        InvalidParameter: A required parameter is missing or failed validation.
        BadRequest: Generic 400 used when no more specific code fits.
        InvalidContentType: The `Content-Type` header is not `application/json`.
        ResourceNotFound: >-
          The referenced resource does not exist. Note: returned as HTTP 400,
          not 404 (historical choice).
        NoLicense: The feature is license-gated and no active license was found.
        ReferenceExist: Deletion blocked — other entities still reference this resource.
        Unauthorized: '`app_key` is missing, invalid, or expired.'
        BalanceNotEnough: Billing-gated operation with insufficient account balance.
        AccessDenied: Authenticated but lacking the permission required for this operation.
        RouteNotFound: The request URL path is not a known route.
        MethodNotAllowed: The HTTP method is not allowed on this otherwise-known path.
        UndonedOrderExist: An outstanding billing order blocks this new one. Wait and retry.
        RequestLocked: Operation temporarily locked due to repeated failures.
        EntityTooLarge: Request body exceeds the configured max size.
        RequestTooFrequently: Rate limit hit — API-global, per-account, or per-integration.
        RequestVerifyRequired: Second-factor verification required but not supplied.
        DangerousOperation: High-risk operation requires MFA verification.
        InternalError: Unhandled server-side error. Include `request_id` in the bug report.
        ServiceUnavailable: A backend dependency is unavailable. Try again later.
      example: InvalidParameter
  responses:
    BadRequest:
      description: Invalid request — usually a missing or malformed parameter.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missingParameter:
              value:
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
                error:
                  code: InvalidParameter
                  message: The specified parameter is not valid.
    Unauthorized:
      description: Missing or invalid app_key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missingAppKey:
              value:
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
                error:
                  code: Unauthorized
                  message: You are unauthorized.
    TooManyRequests:
      description: >-
        Rate limit hit. Either the global API limit, a per-account limit, or a
        per-integration limit.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            rateLimited:
              value:
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
                error:
                  code: RequestTooFrequently
                  message: Request too frequently.
    ServerError:
      description: Unexpected server-side error. Include the request_id when reporting.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            internal:
              value:
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
                error:
                  code: InternalError
                  message: >-
                    We encountered an internal error, and it has been reported.
                    Please try again later.
  securitySchemes:
    AppKeyAuth:
      type: apiKey
      in: query
      name: app_key
      description: >-
        App key issued from the Flashduty console under Account → APP Keys.
        Required on every public API call. Keep it secret — it grants the same
        access as the owning account.

````