---
title: "List monitors"
method: GET
path: "/v1/projects/{projectSlug}/monitors"
tags: ["Monitors"]
---

# List monitors

`GET /v1/projects/{projectSlug}/monitors`

Returns the project's monitors, system monitors first, then by most recent activity.

## Path parameters

- `projectSlug` string, required — Project slug (human-readable identifier)

## Query parameters

- `cursor` string — Opaque cursor returned in a previous response's `nextCursor`. Omit on the first page.
- `limit` integer — Page size. Defaults to 50; max 100.
- `search` string — Filter by name (case-insensitive substring).

## Response `200`

Page of monitors

- PaginatedMonitors
  - `items` Monitor[], required — Page of items, in the requested sort order.
    - `id` string, required — Stable monitor identifier.
    - `organizationId` string, required — Organization that owns this monitor.
    - `projectId` string, required — Project this monitor belongs to.
    - `slug` string, required — URL-safe slug derived from `name`. Unique within the project.
    - `name` string, required — Human-readable name.
    - `description` string, required — Free-form description. Empty string when not set.
    - `system` boolean, required — `true` for the auto-provisioned system monitors, which can't be deleted or edited; `false` otherwise.
    - `alerts` MonitorAlert[], required — The monitor's alerts. Always at least one.
      - `id` string, required — Stable alert identifier.
      - `monitorId` string, required — Monitor that owns this alert.
      - `kind` 'issue.new' | 'issue.regressed' | 'issue.escalating' | 'savedSearch.match' | 'savedSearch.threshold' | 'savedSearch.escalating' | 'event.matched' | 'metric.threshold' | 'metric.escalating', required — What the alert fires on. The `savedSearch.*` kinds watch a saved search; `issue.*` are system-only.
      - `source` MonitorAlertSource, nullable, required — The entity this alert watches, or `null` for unified alerts whose target lives on the monitor.
        - `type` 'issue' | 'savedSearch', required — Entity the alert watches: `savedSearch` or `issue`.
        - `id` string, nullable, required — Id of the watched entity, or `null` to watch all entities of its `type`.
      - `condition` union, required
        - object — Kind-specific configuration, or `null` for kinds with no parameters.
          - `kind` 'savedSearch.threshold', required — Threshold alert: opens once the count threshold is crossed.
          - `threshold` union, required — How the match count/rate is compared.
            - object
              - …
            - object
              - …
            - object
              - …
        - object — Kind-specific configuration, or `null` for kinds with no parameters.
          - `kind` 'savedSearch.escalating', required — Sustained alert: opens only when the threshold stays crossed for the whole `window`.
          - `threshold` union, required — How the match count/rate is compared.
            - object
              - …
            - object
              - …
            - object
              - …
          - `window` object, required — Sustained-condition window.
            - `minutes` integer, required — How long the threshold must stay crossed before the incident opens. The incident stays open while the threshold keeps holding over this window and closes once it no longer does. Minimum 5.
        - object — Kind-specific configuration, or `null` for kinds with no parameters.
          - `kind` 'issue.escalating', required — System signal-escalation alert; only `sensitivity` is tunable.
          - `sensitivity` integer — Detector sensitivity from 1 (noisiest) to 6 (strictest). Defaults to 3 when omitted.
      - `severity` 'low' | 'medium' | 'high', required — Severity of incidents this alert opens: `low`, `medium`, or `high`.
      - `createdAt` string, required — ISO-8601 timestamp of creation.
    - `mutedAt` string, nullable, required — ISO-8601 timestamp at which the monitor was muted, or `null` when active.
    - `deletedAt` string, nullable, required — ISO-8601 timestamp at which the monitor was deleted, or `null`.
    - `createdAt` string, required — ISO-8601 timestamp of creation.
    - `updatedAt` string, required — ISO-8601 timestamp of the last update.
  - `nextCursor` string, nullable, required — Opaque cursor for fetching the next page. `null` when there are no more pages. Pass it back in `cursor` to continue.
  - `hasMore` boolean, required — `true` when there is at least one more page after this one.

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `404` — Not found

## Changes

- **2026-06-15** `0e5d35c9aa15` — 1 breaking, 3 warning
  - the response property `items/items/alerts/items/source` became nullable for the status `200`
  - added the new `event.matched` enum value to the `items/items/alerts/items/kind` response property for the response status `200`
  - added the new `metric.escalating` enum value to the `items/items/alerts/items/kind` response property for the response status `200`
  - added the new `metric.threshold` enum value to the `items/items/alerts/items/kind` response property for the response status `200`
- **2026-06-05** `7a4027f058a7` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/latitude-dev/apis/latitude/changes/v1/projects/:projectSlug/monitors/get.md)

---

[API](https://skmtc.dev/latitude-dev/apis/latitude.md) · [All operations](https://skmtc.dev/latitude-dev/apis/latitude/llms.txt) · [OpenAPI document](https://skmtc.dev/latitude-dev/apis/latitude/revisions/bcfa3b9b2add?raw)
