/alerts/silences - Mute an alert across systems

POST /alerts/silences

Cross-system parallel of POST /systems/{id}/alerts/silences. Mutes an active alert identified by fingerprint inside a single tenant (?organization_id=). The backend looks up the alert in Mimir, extracts system_key from its labels, builds the matchers server-side, and delegates to the same silence-creation path used by the per-system endpoint — so the silence object stored in Mimir is byte-identical regardless of which route created it.

If end_at is set it takes precedence over duration_minutes.

Requires manage:systems permission.

Query parameters

  • organization_id string Required

    Tenant that owns the alert. Mandatory for every role except Customer (where it is ignored — they're always pinned to their own organization). Owners can address any tenant in the system.

application/json

Body Required

  • fingerprint string Required

    Fingerprint of the active alert to silence.

  • comment string

    Optional silence comment. Defaults to a system-generated value when empty.

  • duration_minutes integer

    Optional duration in minutes. Defaults to 60 when omitted. Ignored when end_at is set.

    Minimum value is 1, maximum value is 10080.

  • end_at string(date-time)

    Optional explicit end time (RFC3339). Takes precedence over duration_minutes.

Responses

  • 200 application/json

    Alert silenced successfully

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object
      Hide data attribute Show data attribute object
      • silence_id string
  • 400 application/json

    Bad request - validation error

    Hide response attributes Show response attributes object
    • code integer

      HTTP error code

    • message string

      Error message

    • data object
      Hide data attributes Show data attributes object
      • type string

        Type of error

        Values are validation_error or external_api_error.

      • errors array[object]
        Hide errors attributes Show errors attributes object
        • key string

          Field name that failed validation

        • message string

          Error code or message

        • value string

          Value that failed validation

      • details

        Additional error details

  • 401 application/json

    Unauthorized - invalid or missing token

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object | null
  • 403 application/json

    Forbidden - insufficient permissions

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object | null
  • 404 application/json

    Resource not found

    Hide response attributes Show response attributes object
    • code integer

      HTTP error code

    • message string

      Error message

    • data object
      Hide data attributes Show data attributes object
      • type string

        Type of error

        Values are validation_error or external_api_error.

      • errors array[object]
        Hide errors attributes Show errors attributes object
        • key string

          Field name that failed validation

        • message string

          Error code or message

        • value string

          Value that failed validation

      • details

        Additional error details

POST /alerts/silences
curl \
 --request POST 'https://api.your-domain.com/api/alerts/silences?organization_id=m4m3mdjdiizs' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --data '{"fingerprint":"0a9d04bb6eed523f","comment":"silenced during maintenance window","end_at":"2026-05-12T09:16:36Z"}'
Request examples
When `end_at` is set, the silence expires at that moment regardless of `duration_minutes`. The backend resolves the alert by `fingerprint` inside the tenant given by `?organization_id=`, extracts `system_key` from its labels, and creates the silence.
{
  "fingerprint": "0a9d04bb6eed523f",
  "comment": "silenced during maintenance window",
  "end_at": "2026-05-12T09:16:36Z"
}
Without `end_at`, `duration_minutes` applies. If both are omitted, the silence defaults to 60 minutes from creation.
{
  "fingerprint": "0a9d04bb6eed523f",
  "comment": "investigating",
  "duration_minutes": 60
}
Response examples (200)
`silence_id` is the Alertmanager-assigned UUID; use it to look up, update, or delete the silence later. The corresponding `silenced` event is appended to the alert's activity timeline (`GET /alerts/activity/{fingerprint}`).
{
  "code": 200,
  "message": "alert silenced successfully",
  "data": {
    "silence_id": "d9f91c6e-1b33-484e-befa-bfb41020e178"
  }
}
Response examples (400)
{
  "code": 400,
  "message": "validation failed",
  "data": {
    "type": "validation_error",
    "errors": [
      {
        "key": "username",
        "message": "required",
        "value": "string"
      }
    ]
  }
}
Response examples (401)
{
  "code": 401,
  "message": "invalid token",
  "data": {}
}
Response examples (403)
{
  "code": 403,
  "message": "insufficient permissions",
  "data": {}
}
Response examples (404)
{
  "code": 400,
  "message": "validation failed",
  "data": {
    "type": "validation_error",
    "errors": [
      {
        "key": "username",
        "message": "required",
        "value": "string"
      }
    ]
  }
}