---
title: "List metric alarms"
method: GET
path: "/orgs/{org_id}/alarms"
tags: ["alarms"]
---

# List metric alarms

`GET /orgs/{org_id}/alarms`

The metric alarms you can see in this org, with current state and channels.

Filtered per alarm, not per request: org-level alarms (credits, org-wide spend) need `alarms.read`, and an alarm tagged to a project needs `projects.alarms.read` on that project. Holding one and not the other returns the matching subset rather than a `403`, so a role scoped to a single project sees exactly that project's alarms.

## Path parameters

- `org_id` string, required

## Response `200`

List of alarms

- ListOrgAlarmsResBody — Wrapper for **GET** `/orgs/{org_id}/alarms`.
  - `alarms` AlarmOut[], required
    - `channels` NotificationChannelOut[], required
      - `config` object, required
      - `id` integer, required
      - `name` string, nullable
      - `type` 'email' | 'slack', required
    - `clear_threshold` number, double, nullable — Set when this alarm uses hysteresis; see [`CreateAlarmReq`].
    - `comparison` 'gt' | 'gte' | 'lt' | 'lte', required
    - `datapoints_to_alarm` integer, required
    - `denominator_metric_name` string, nullable — Set when this is a ratio alarm; see [`CreateAlarmReq`].
    - `dims` AlarmDims, required — Metric dimension filters. Omitted = aggregate across that dimension. Not `Copy` since `label` is owned.
      - `deployment_id` string, nullable
      - `label` string, nullable — `Metrics.label` — the span name behind a trace-derived metric. Scopes the alarm to one tool/step instead of the sum over every span the filter matched.
      - `project_env_id` string, nullable
      - `project_id` string, nullable
      - `workforce_id` string, nullable — Agent / workflow app (`OrgsApps.id`).
    - `enabled` boolean, required
    - `evaluation_periods` integer, required
    - `id` integer, required
    - `metric_name` string, required
    - `min_sample_count` integer, required
    - `missing_data` 'not_breaching' | 'breaching' | 'insufficient' | 'ignore', required
    - `name` string, required
    - `period_seconds` integer, required
    - `project_id` integer, nullable — Project this alarm belongs to; omitted for org-level alarms.
    - `stat` string, required — Aggregation applied to each evaluation period. Percentiles run from p0.1 to p99.9 in tenths; equivalent spellings such as p95.0 are accepted and returned canonically as p95, while a finer value such as p95.05 is rejected rather than rounded. They are exact rather than interpolated from bins, so they are only available on app.run.duration_ms and cannot be used with denominator_metric_name.
    - `state` 'ok' | 'alarm' | 'insufficient_data', required
    - `state_changed_at` string, date-time, nullable
    - `threshold` number, double, required

## Other responses

- `403` — Forbidden

---

[API](https://skmtc.net/timbal-ai/apis/timbal-platform-api.md) · [All operations](https://skmtc.net/timbal-ai/apis/timbal-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/timbal-ai/timbal-platform-api/versions/dd7e398ce0d3/schema)
