List Checks
Retrieve a list of all monitoring checks in your account.
Endpoint
GET /v1/public/checksQuery Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 25 | Number of results per page (max 100) |
page | integer | 1 | Page number for offset pagination |
cursor | string | - | nextCursor value from a previous response, for cursor pagination |
status | string | all | Filter by status: all, online, offline, degraded or unknown. Any other value returns 400 |
folder | string | - | Only checks in this folder, by its full path, such as Personal/Radio |
recursive | boolean | false | With folder, also include checks in its subfolders. Any value other than true or false returns 400 |
include | string | - | Comma-separated extras to add to each check. Supported: uptime. Any other value returns 400 |
includeTotal | boolean | true | Set to false to skip counting. total and totalPages are then null |
Checks are returned in the same order as in your dashboard.
Filtering by Folder
folder takes the full path of the folder, with / between levels, as it appears in the folder field of each check. Leading and trailing slashes are ignored. Without recursive, only checks directly in that folder are returned:
curl -H "X-Api-Key: ek_live_..." "https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks?folder=Personal/Radio"Add recursive=true to include every subfolder too, so Personal/Radio/Live matches but Personal/Radio-old does not:
curl -H "X-Api-Key: ek_live_..." "https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks?folder=Personal/Radio&recursive=true"folder combines with status and both pagination methods. When folder is set, total is always returned, even with includeTotal=false.
Including Uptime
Add include=uptime to get uptime figures on every listed check, so you do not need one stats call per check:
curl -H "X-Api-Key: ek_live_..." "https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks?include=uptime"Each check then carries three extra fields:
| Field | Type | Description |
|---|---|---|
uptime24h | number | null |
uptime30d | number | null |
avgResponseTime24h | number | null |
A field is null when there is no data for the window. If the lookup fails, the list still returns with all three set to null. The 24h figures are cached for about 5 minutes and the 30d figure for about 1 hour.
Pagination
The API supports two pagination methods:
Offset Pagination
Use page and limit parameters:
curl -H "X-Api-Key: ek_live_..." \
"https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks?page=2&limit=10"Cursor Pagination
Pass the nextCursor value from the previous response as cursor. When cursor is set, page is ignored:
curl -H "X-Api-Key: ek_live_..." \
"https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks?cursor=eyJvcmRlckluZGV4IjoxMDAwLCJpZCI6ImFiYzEyMyJ9&limit=10"Response
{
"data": [
{
"id": "abc123",
"name": "Production Website",
"url": "https://example.com",
"status": "online",
"lastChecked": 1736951400000,
"responseTime": 245,
"lastStatusCode": 200,
"type": "website",
"checkFrequency": 5,
"region": "vps-eu-1",
"folder": null,
"severity": null,
"lastError": null,
"disabled": false,
"maintenanceMode": false,
"maintenanceUntil": null,
"maintenanceScheduledStart": null,
"maintenanceRecurring": null,
"sslCertificate": {
"valid": true,
"issuer": "Let's Encrypt",
"subject": "example.com",
"validFrom": 1736899200000,
"validTo": 1744675200000,
"daysUntilExpiry": 89,
"lastChecked": 1736944200000
},
"domainExpiry": null,
"createdAt": 1717236000000,
"updatedAt": 1736951400000
}
],
"meta": {
"page": 1,
"limit": 25,
"total": 12,
"totalPages": 1,
"hasNext": false,
"hasPrev": false,
"nextCursor": "eyJvcmRlckluZGV4IjoxMDAwLCJpZCI6ImFiYzEyMyJ9"
}
}Each item in data is a check object. See Get Check for every field. All timestamps are Unix epoch milliseconds.
meta
| Field | Type | Description |
|---|---|---|
page | number | Current page number |
limit | number | Results per page |
total | number | null | Total matching checks. null when includeTotal=false |
totalPages | number | null | Total pages at this limit. null when includeTotal=false |
hasNext | boolean | Whether another page exists |
hasPrev | boolean | Whether a previous page exists. Always true when cursor is set |
nextCursor | string | null | Pass as cursor to fetch the next page. null when the page is empty |
Note:
statusupdates in real time on every state change. The timing fields (lastChecked,responseTime,lastStatusCode) are synced on status changes and at least once every 24 hours. For a check that has been stable for a while,lastCheckedreflects the last sync, not the last probe. For per-probe data, use the check history endpoint.
Error Responses
| Status | Body | Cause |
|---|---|---|
| 400 | {"error": "Invalid status. Allowed: all, online, offline, degraded, unknown"} | Unsupported status value |
| 400 | {"error": "Invalid include: ... Allowed: uptime"} | Unsupported include value |
Code Examples
cURL
curl -H "X-Api-Key: ek_live_your_key_here" \
"https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks?limit=10&status=offline"JavaScript
const response = await fetch(
"https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks?limit=10",
{
headers: {
"X-Api-Key": "ek_live_your_key_here",
},
}
);
const data = await response.json();
console.log(data);Python
import requests
response = requests.get(
"https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks",
headers={"X-Api-Key": "ek_live_your_key_here"},
params={"limit": 10}
)
data = response.json()
print(data)