Skip to content
runlot
ReferenceAPImonitors

monitors

Covers 14 API operations in the monitors category.

MethodPathDescription
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/monitorsList monitors
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/exportExport 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}/historyMonitor history
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/monitors/{monitorId}/testSend a test notification
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/downtimesList 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/slosList 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 codeDescriptionResponse body
200ResultMonitorList
400Request refused—
401Request refused—
403Request refused—
404Request 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 codeDescriptionResponse body
200ResultMonitorExport
400Request refused—
401Request refused—
403Request refused—
404Request 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 codeDescriptionResponse body
200ResultMonitorDetail
400Request refused—
401Request refused—
403Request refused—
404Request 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 codeDescriptionResponse body
200ResultMonitor
400Request refused—
401Request refused—
403Request refused—
404Request refused—
409The 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 codeDescriptionResponse body
204Removed—
400Request refused—
401Request refused—
403Request refused—
404Request refused—
409The 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 codeDescriptionResponse body
200ResultMonitorHistory
400Request refused—
401Request refused—
403Request refused—
404Request 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 codeDescriptionResponse body
202QueuedMonitorTestResult
400Request refused—
401Request refused—
403Request refused—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/downtimes

The project's downtimes, each with whether it is active now. Viewer.

operationId listDowntimes

Status codeDescriptionResponse body
200ResultDowntimeList
400Request refused—
401Request refused—
403Request refused—
404Request 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 codeDescriptionResponse body
200ResultDowntime
400Request refused—
401Request refused—
403Request refused—
404Request refused—

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/downtimes/{downtimeId}

Admin.

operationId deleteDowntime

Status codeDescriptionResponse body
204Removed—
400Request refused—
401Request refused—
403Request refused—
404Request 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 codeDescriptionResponse body
200ResultSLOList
400Request refused—
401Request refused—
403Request refused—
404Request 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 codeDescriptionResponse body
200ResultSLOReport
400Request refused—
401Request refused—
403Request refused—
404Request 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 codeDescriptionResponse body
200ResultSLO
400Request refused—
401Request refused—
403Request refused—
404Request 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 codeDescriptionResponse body
204Removed—
400Request refused—
401Request refused—
403Request refused—
404Request refused—
409A burn-rate monitor reads this SLO—

On this page