---
title: "List alerts"
method: GET
path: "/alerts"
tags: ["Alerts"]
---

# List alerts

`GET /alerts`

## Request

- Base URL: `https://api.spectate.net/v1`
- URL: `https://api.spectate.net/v1/alerts`
- Auth: HTTP bearer

Returns the team's alerts, most recently fired first unless you sort.

## Query parameters

- `page` integer
- `per_page` integer
- `filter[status]` 'firing' | 'resolved': Whether an alert's problem is ongoing. | | |---| | `firing` <br/> The problem is ongoing; it escalates until acknowledged. | | `resolved` <br/> The problem is over. |
- `filter[severity]` 'critical' | 'high' | 'medium' | 'low': How urgent an alert or incident is. Escalation paths can branch on it. | | |---| | `critical` <br/> Customers are affected right now. | | `high` <br/> Serious, needs attention soon. | | `medium` <br/> Should be looked at. | | `low` <br/> Informational. |
- `filter[source_type]` 'uptime' | 'certificate' | 'performance' | 'dns' | 'host_metric' | 'domain' | 'external' | 'status_page' | 'manual': What raised an alert. | | |---| | `uptime` <br/> A monitor went down. | | `certificate` <br/> A monitor's certificate is invalid or expires soon. | | `performance` <br/> A monitor got slow. | | `dns` <br/> The answer of a DNS monitor changed (when it alerts on changes), or a nameserver has a problem that leaves its monitor up. | | `host_metric` <br/> A host's metric condition held, or it stopped sending data. | | `domain` <br/> A domain expires soon, expired or its registration changed. | | `external` <br/> An alert source (external tool) fired it. | | `status_page` <br/> Visitor issue reports over the threshold or a traffic spike (`metadata.type`: `issue_reports`, `traffic_spike`). | | `manual` <br/> Someone paged by hand, with nothing else to attach it to. |
- `filter[resource_id]` string, uuid
- `filter[acknowledged]` boolean
- `sort` string

## Response `200`

Paginated set of `Alert`

- object
  - `current_page` integer, required
  - `data` Alert[], required
    - `id` string, uuid, required: Alert ID
    - `title` string, required: What's wrong
    - `description` string, nullable, required: More about it, as the source described it
    - `status` 'firing' | 'resolved', required: Whether an alert's problem is ongoing. | | |---| | `firing` <br/> The problem is ongoing; it escalates until acknowledged. | | `resolved` <br/> The problem is over. |
    - `severity` 'critical' | 'high' | 'medium' | 'low', required: How urgent an alert or incident is. Escalation paths can branch on it. | | |---| | `critical` <br/> Customers are affected right now. | | `high` <br/> Serious, needs attention soon. | | `medium` <br/> Should be looked at. | | `low` <br/> Informational. |
    - `source_type` 'uptime' | 'certificate' | 'performance' | 'dns' | 'host_metric' | 'domain' | 'external' | 'status_page' | 'manual', required: What raised an alert. | | |---| | `uptime` <br/> A monitor went down. | | `certificate` <br/> A monitor's certificate is invalid or expires soon. | | `performance` <br/> A monitor got slow. | | `dns` <br/> The answer of a DNS monitor changed (when it alerts on changes), or a nameserver has a problem that leaves its monitor up. | | `host_metric` <br/> A host's metric condition held, or it stopped sending data. | | `domain` <br/> A domain expires soon, expired or its registration changed. | | `external` <br/> An alert source (external tool) fired it. | | `status_page` <br/> Visitor issue reports over the threshold or a traffic spike (`metadata.type`: `issue_reports`, `traffic_spike`). | | `manual` <br/> Someone paged by hand, with nothing else to attach it to. |
    - `resource` AlertResource, required: The resource an alert is about.
      - `type` 'monitor' | 'host' | 'domain' | 'status_page' | 'alert_source', required: What kind of resource an alert is about.
      - `id` string, uuid, required: The resource's ID, for example a monitor ID
      - `name` string, nullable, required: Its name or label
    - `fired_at` string, date-time, required: When it fired
    - `acknowledged_at` string, date-time, nullable, required: When it was acknowledged, which stopped its escalation; `null` while unacknowledged
    - `acknowledged_by` string, nullable, required: Who acknowledged it: a member's name, an API token, or how (for example a phone call)
    - `recovering_since` string, date-time, nullable, required: When the monitor came back up. The alert stays `firing` for the team's recovery wait and resolves when the monitor stays up; `null` at any other time
    - `group_leader_id` string, uuid, nullable, required: The alert that escalates for this one, when they're grouped; `null` when it escalates by itself
    - `snoozed_until` string, date-time, nullable, required: Until when someone snoozed it; `null` when it isn't snoozed. It counts as acknowledged until then
    - `muted_at` string, date-time, nullable, required: When maintenance muted it, so it pages nobody until the window ends; `null` when it isn't muted
    - `resolved_at` string, date-time, nullable, required: When it resolved; `null` while firing
    - `resolved_by` string, nullable, required: Who resolved it by hand: a member's name or an API token. `null` while firing, and when it resolved on its own because the problem was over
    - `labels` object, nullable, required: Labels the source sent (Prometheus, Grafana); `null` when it sent none
    - `links` AlertLink[], required: Links the source sent along
      - `label` string, required: What it opens
      - `url` string, uri, required: Where it goes
  - `first_page_url` string, nullable, required
  - `from` integer, nullable, required
  - `last_page_url` string, nullable, required
  - `last_page` integer, required
  - `links` object[], required: Generated paginator links.
    - `url` string, nullable, required
    - `label` string, required
    - `active` boolean, required
  - `next_page_url` string, nullable, required
  - `path` string, nullable, required: Base path for paginator generated URLs.
  - `per_page` integer, required: Number of items shown per page.
  - `prev_page_url` string, nullable, required
  - `to` integer, nullable, required: Number of the last item in the slice.
  - `total` integer, required: Total number of items being paginated.

## Other responses

- `401`: `UNAUTHENTICATED`: no token was sent. `INVALID_TOKEN`: the token is unknown or revoked. `TOKEN_EXPIRED`: the token has expired.
- `403`: `FORBIDDEN`: the token lacks an ability this endpoint requires (listed in `details.required_abilities`). `TEAM_PENDING_DELETION`: the team is scheduled for deletion. `TEAM_SUSPENDED`: Spectate suspended the team.
- `429`: `RATE_LIMITED`: too many requests for this token. Wait for the number of seconds in `Retry-After`.

---

[API](https://skmtc.dev/spectate/apis/spectate-api.md) - [All operations](https://skmtc.dev/spectate/apis/spectate-api/llms.txt) - [OpenAPI document](https://skmtc.dev/spectate/apis/spectate-api/revisions/9b1a233997de?raw)
