monitors
Covers 14 API operations in the monitors category.
| Method | Path | Description |
|---|---|---|
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors | List monitors |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/export | Export dashboard monitors as code |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId} | Get a monitor |
| PUT | /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId} | Create or replace a monitor |
| DELETE | /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId} | Delete a monitor |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId}/history | Monitor history |
| POST | /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId}/test | Send a test notification |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/observability/downtimes | List downtimes |
| PUT | /v1/orgs/{orgSlug}/projects/{projectName}/observability/downtimes/{downtimeId} | Create or replace a downtime |
| DELETE | /v1/orgs/{orgSlug}/projects/{projectName}/observability/downtimes/{downtimeId} | Delete a downtime |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/observability/slos | List SLOs |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/observability/slos/{sloId} | Get an SLO report |
| PUT | /v1/orgs/{orgSlug}/projects/{projectName}/observability/slos/{sloId} | Create or replace an SLO |
| DELETE | /v1/orgs/{orgSlug}/projects/{projectName}/observability/slos/{sloId} | Delete an SLO |
GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors
Every monitor of the project with its worst group state (alert, no_data, warn, ok; pending before its first evaluation; ingest for issue monitors), the plan's monitor limit, and the state of monitors as code. Errors alert rules made through the Errors API are listed read-only as issue monitors. Viewer.
operationId listMonitors
| Status code | Description | Response body |
|---|---|---|
| 200 | Result | MonitorList |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/export
The project's dashboard monitors in the .runlot/monitors file format: no server fields, destinations by name, and a key for each. Commit them under .runlot/monitors/ to manage them from the repository. Viewer.
operationId exportMonitors
| Status code | Description | Response body |
|---|---|---|
| 200 | Result | MonitorExport |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId}
One monitor with the state of each group (up to 1000, alerting first). Viewer.
operationId getMonitor
| Status code | Description | Response body |
|---|---|---|
| 200 | Result | MonitorDetail |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId}
Validated against the type's query and the plan (Free 10, Pro 500 monitors per project: 403 monitor_limit). Log monitors run at most every 5 minutes, 20 per project. Destinations are the project's alert destinations by ID or name. A monitor defined in the repository answers 409 monitor_managed_by_repo. Changing what a monitor measures closes the groups it paged with a recovery. Admin.
operationId putMonitor
Request body: application/json · Monitor
| Status code | Description | Response body |
|---|---|---|
| 200 | Result | Monitor |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
| 409 | The ID belongs to another project, the key is taken, or the repository owns the monitor | — |
DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId}
Removes the monitor, its state, history and pending deliveries. An incident it opened in PagerDuty or Opsgenie is not closed by a delete; disable it first to have the recovery sent. Admin.
operationId deleteMonitor
| Status code | Description | Response body |
|---|---|---|
| 204 | Removed | — |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
| 409 | The repository owns the monitor | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId}/history
State transitions, newest first (kept 100 days), with whether each was muted, and the latest 100 deliveries. Viewer.
operationId getMonitorHistory
| Status code | Description | Response body |
|---|---|---|
| 200 | Result | MonitorHistory |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId}/test
Queues one test notification to each of the monitor's enabled destinations; nothing about the monitor's state changes. PagerDuty and Opsgenie receive a key of its own, so a test never touches a real incident. Admin.
operationId testMonitor
| Status code | Description | Response body |
|---|---|---|
| 202 | Queued | MonitorTestResult |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/downtimes
The project's downtimes, each with whether it is active now. Viewer.
operationId listDowntimes
| Status code | Description | Response body |
|---|---|---|
| 200 | Result | DowntimeList |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/downtimes/{downtimeId}
Mutes monitors by ID or by tags (a monitor matches when it carries every listed tag); an empty scope mutes the whole project. One window [start, end), or a daily or weekly recurrence that opens at start's UTC time of day. Muting defers notifications only: states and history still move, a group still alerting when the window closes is notified then, and the recovery of a page already sent still goes out. At most 200 per project. Admin.
operationId putDowntime
Request body: application/json · Downtime
| Status code | Description | Response body |
|---|---|---|
| 200 | Result | Downtime |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/downtimes/{downtimeId}
Admin.
operationId deleteDowntime
| Status code | Description | Response body |
|---|---|---|
| 204 | Removed | — |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/slos
Every SLO with its report per window (without the burn chart series) and the plan's SLO limit. Viewer.
operationId listSLOs
| Status code | Description | Response body |
|---|---|---|
| 200 | Result | SLOList |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/slos/{sloId}
The SLO with, per window, the SLI, the remaining error budget and the budget burn chart (hourly for 7 days, daily otherwise). Viewer.
operationId getSLO
| Status code | Description | Response body |
|---|---|---|
| 200 | Result | SLOReport |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/slos/{sloId}
Request SLOs count good requests (not an error, and within latencyMs when set) exactly; latencyMs must be one of 50, 100, 200, 300, 500, 750, 1000, 1500, 2000, 3000, 5000 or 10000. Monitor SLOs count the time a monitor spent with every group ok. Windows longer than the plan's metric retention are refused. Free 1, Pro 50 SLOs per project (403 slo_limit). Admin.
operationId putSLO
Request body: application/json · SLO
| Status code | Description | Response body |
|---|---|---|
| 200 | Result | SLO |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/slos/{sloId}
Refused with 409 slo_in_use while a burn-rate monitor reads it. Admin.
operationId deleteSLO
| Status code | Description | Response body |
|---|---|---|
| 204 | Removed | — |
| 400 | Request refused | — |
| 401 | Request refused | — |
| 403 | Request refused | — |
| 404 | Request refused | — |
| 409 | A burn-rate monitor reads this SLO | — |