List monitors Beta
GET /api/v1/monitors
Returns the monitors in your workspace, with their latest status and 24-hour uptime. Filters combine: a monitor must match all of them.
Needs an X-API-Key header whose owner has access to uptime monitoring in the app. The call counts once against your daily quota. See Monitoring API: getting started for authentication, rate limits and errors.
Query parameters
| Name | Type | Description |
|---|---|---|
status optional | string | Comma list of up, down, pending. |
type optional | string | Comma list of check types, such as http or smtp,imap. |
active optional | boolean | true for running monitors, false for paused ones. |
tags optional | string | Comma list of tag names, not case-sensitive. A monitor matches if it has any of them. |
q optional | string | Text to find in the monitor's name or URL, not case-sensitive. |
page optional | integer | Page number, starting at 1. Default 1. |
per optional | integer | Monitors per page, 1 to 1000. Default 100. |
Request
Response
200 · application/json
- {
- "total": 1,
- "page": 1,
- "per": 50,
- "monitors": [
- {
- "id": "mon_79ce3cf9c4fa56e98af4",
- "name": "Checkout",
- "url": "https://shop.example.com/checkout",
- "host": "shop.example.com",
- "type": "http",
- "port": null,
- "status": "down",
- "active": true,
- "statusCode": 503,
- "responseMs": 2140,
- "error": "HTTP 503",
- "intervalMinutes": 5,
- "regions": ["default"],
- "importance": "high",
- "tags": ["production"],
- "uptime24h": 98.6,
- "checks24h": 288,
- "lastCheckedAt": "2026-09-17T09:30:04.221Z",
- "lastChangedAt": "2026-09-17T09:10:03.980Z",
- "createdAt": "2026-08-02T14:22:51.000Z",
- "sslExpiresAt": "2026-11-28T23:59:59.000Z",
- "domainExpiresAt": "2027-03-14T00:00:00.000Z"
- }
- ],
- "usage": { "used": 12, "dailyLimit": 100, "tier": "free" }
- }
Monitor fields
| Field | Type | Description |
|---|---|---|
id | string | The monitor id, for example mon_79ce3cf9c4fa56e98af4. |
name | string | The name you gave it. Can be empty. |
url, host | string | What is being checked: a URL for a web check, or the bare host for every other type, plus the host name on its own. |
type | string | What the monitor checks. See Check types. |
port | integer | null | The port for a port or mail check, or null. |
status | string | up, down or pending. |
active | boolean | false when paused. |
statusCode | integer | null | HTTP status from the last check, or null when no response came back. |
responseMs | integer | null | Response time of the last check, in milliseconds. |
error | string | null | Why the last check failed, or null. |
intervalMinutes | integer | How often it's checked. |
regions | string[] | Where it's checked from. See settings. |
importance | string | high or low. |
tags | string[] | Tag names. |
uptime24h | number | null | Percentage of checks in the last 24 hours that were up, to one decimal place. null with no checks. |
checks24h | integer | Number of checks in the last 24 hours. |
lastCheckedAt, lastChangedAt | string | null | When it was last checked, and when its status last changed. |
createdAt | string | When the monitor was created. |
sslExpiresAt, domainExpiresAt | string | null | When the certificate and the domain registration expire, when known. |
Errors
| Status | When |
|---|---|
401 | The API key is missing or invalid. |
403 | The key's owner doesn't have access to uptime monitoring, or the key isn't linked to a workspace. |
405 | The endpoint doesn't accept that method. |
429 | A rate limit or your daily quota was hit. Read Retry-After, in seconds. |
500 | Something went wrong on our side. Try again. |
503 | The API is temporarily unavailable. Try again shortly. |
Errors are JSON: { "error": "message" }. See Monitoring API errors.
Related
- Create a monitor: add a monitor to the workspace
- Get a monitor: one monitor in full
- Results: the raw checks for a monitor