write scope and return 403 if it is absent.
List all monitors
Retrieve every monitor belonging to your account, ordered by creation date descending.GET /api/cli/monitors
Request headers
curl example
Response
Create a monitor
Create a new HTTP monitor. Requires thewrite scope.
POST /api/cli/monitors
Request headers
Request body
string
required
Display name for the monitor. Cannot be blank.
string
required
The full URL to monitor, including the scheme (e.g.
https://api.example.com/health). Cannot be blank.string
default:"HTTP"
Monitor type. Currently only
HTTP is supported.integer
default:"60"
How often to run the check, in seconds.
integer
default:"10"
Maximum time to wait for a response, in seconds. A check that exceeds this limit is recorded as
TIMEOUT.string
default:"GET"
HTTP method to use:
GET, POST, PUT, PATCH, or HEAD.object
Custom request headers sent with each check. Provide as a key-value object, e.g.
{"X-Api-Version": "2"}. Stored as JSON.string
Request body to send with
POST, PUT, or PATCH checks.object
Assertion rules that must pass for a check to be considered
UP. Stored as JSON. Example: {"statusCode": 200, "bodyContains": "ok"}.integer
default:"1"
Number of consecutive failures required before an alert is triggered.
array
List of region codes to run checks from, e.g.
["us-east-1", "eu-west-1"]. Leave empty to use the default region.string
URL of the runbook or incident-response guide for this monitor. Included in alert notifications and webhook payloads.
curl example
Response 201 Created
A newly created monitor has
status: "PENDING" until the first check completes. Use the trigger endpoint to run the first check immediately.Get a monitor
Retrieve full details of a single monitor, including its 10 most recent check events.GET /api/cli/monitors/:id
curl example
Response
404 if the monitor ID does not exist or belongs to a different account.
Update a monitor
Update one or more fields on an existing monitor. Only fields you include in the request body are changed — omitted fields remain unchanged. Requires thewrite scope.
PUT /api/cli/monitors/:id
Request headers
Request body
All fields are optional. Provide only the fields you want to update.string
New display name.
string
New URL to monitor.
integer
New check interval in seconds.
integer
New request timeout in seconds.
string
New HTTP method.
integer
New consecutive-failure threshold for alerts.
string
New runbook URL.
object
Replacement custom headers object. Overwrites any previously stored headers.
object
Replacement assertion rules. Overwrites any previously stored expectation.
array
Replacement list of region codes.
curl example
Response
Delete a monitor
Permanently delete a monitor and all its associated events. This action cannot be undone. Requires thewrite scope.
DELETE /api/cli/monitors/:id
curl example
Response
Trigger an immediate check
Force an HTTP health check on a monitor right now, bypassing the normal schedule. The check runs synchronously and returns the result in the response. The result is also persisted as a regular monitor event. Any valid Bearer token can trigger this endpoint; providing a URL override additionally requires thewrite scope.
POST /api/cli/monitors/:id/trigger
Request headers
Optional request body
string
Override the monitor’s configured URL for this single check. Useful for testing a new endpoint before updating the monitor. Requires the
write scope.curl example
Response
The trigger endpoint only supports
HTTP monitors. Attempting to trigger a monitor of another type returns 422 Unprocessable Entity.List monitor events
Retrieve the check history for a monitor in chronological order. Supports incremental polling with thesince parameter — ideal for building live log tails.
GET /api/cli/monitors/:id/events
Query parameters
integer
default:"50"
Maximum number of events to return. The server caps this at
500.string
ISO 8601 timestamp. When provided, only events recorded after this timestamp are returned. Use the
timestamp of the last event you received to poll incrementally.