Get Check
Retrieve details for a single monitoring check.
Endpoint
GET /v1/public/checks/{id}Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | The unique check identifier |
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": "Production",
"severity": 2,
"lastError": null,
"lastStatusChange": 1736865000000,
"regions": {
"primary": "vps-eu-1",
"peer": null,
"regionsTotal": 1,
"regionsDown": 0,
"confirmedDown": false
},
"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": {
"domain": "example.com",
"registrar": "Namecheap",
"expiryDate": 1780272000000,
"daysUntilExpiry": 502
},
"createdAt": 1717236000000,
"updatedAt": 1736951400000
}
}All timestamps are Unix epoch milliseconds (numbers), not ISO strings.
Check Object
This is the shape returned by both List Checks and Get Check.
| Field | Type | Description |
|---|---|---|
id | string | Unique check identifier |
name | string | Display name. Falls back to url when no name is set |
url | string | The monitored URL, host or domain. Heartbeat checks return heartbeat://<token> and domain-only checks return domain://<domain> |
status | string | online, offline, degraded or unknown. New and re-enabled checks start as unknown until their first result |
lastChecked | number | Epoch ms of the last synced check result. 0 if the check has never run |
responseTime | number | null | Response time in milliseconds from the last synced result |
lastStatusCode | number | null | HTTP status code from the last synced result |
type | string | Check type: website, rest_endpoint, redirect, ping, tcp, udp, websocket, dns, heartbeat or domain. Defaults to website when unset. Some older checks report the legacy values api or rest |
checkFrequency | number | null | Minutes between checks |
region | string | null | Region the check runs from, for example vps-eu-1 (Frankfurt) or vps-us-1 (Boston) |
folder | string | null | Folder the check is grouped under in the dashboard |
severity | number | null | Check severity from 1 (P1, critical) to 5 (P5, minimal). null means no severity is set |
lastError | string | null | Most recent error message, if any |
lastStatusChange | number | null | Epoch ms when status last changed. null for a check whose status has not changed since this field was introduced |
regions | object | Which regions observed the latest result: primary, peer, regionsTotal, regionsDown and confirmedDown. See Check Status |
disabled | boolean | true if the check is paused |
maintenanceMode | boolean | true while the check is in maintenance mode |
maintenanceUntil | number | null | Epoch ms when the current maintenance window ends. null when not in maintenance or when the window has no end |
maintenanceScheduledStart | number | null | Epoch ms of an upcoming one-time maintenance window |
maintenanceRecurring | object | null | Recurring maintenance schedule (see below) |
sslCertificate | object | null | Last observed SSL certificate (see below). null for non-HTTPS checks or before the first observation |
domainExpiry | object | null | Domain expiry data (see below). null unless Domain Intelligence is enabled for the check |
lastPingAt | number | null | Heartbeat checks only. Epoch ms of the last received ping, null if none yet. The field is absent for other check types |
createdAt | number | Epoch ms when the check was created |
updatedAt | number | Epoch ms of the last configuration change |
There is no uptime field on the check object. Use Check Stats for uptime percentages.
sslCertificate
| Field | Type | Description |
|---|---|---|
valid | boolean | Whether the certificate is currently valid |
issuer | string | Certificate Authority |
subject | string | Domain the certificate is issued for |
validFrom | number | Epoch ms when the certificate became valid |
validTo | number | Epoch ms when the certificate expires |
daysUntilExpiry | number | Days left until validTo |
lastChecked | number | Epoch ms when the certificate was last inspected |
error | string | Present when the certificate could not be validated |
Fields that were not observed are omitted.
domainExpiry
| Field | Type | Description |
|---|---|---|
domain | string | null | Registered domain being tracked |
registrar | string | null | Domain registrar |
expiryDate | number | null | Epoch ms when the registration expires |
daysUntilExpiry | number | null | Days left until expiryDate |
maintenanceRecurring
| Field | Type | Description |
|---|---|---|
daysOfWeek | number[] | Days the window repeats on (0 = Sunday through 6 = Saturday) |
startTimeMinutes | number | Start time in minutes after midnight, in timezone |
durationMinutes | number | Window length in minutes |
timezone | string | IANA timezone, for example Europe/Copenhagen |
reason | string | null | Optional note |
createdAt | number | Epoch ms when the schedule was created |
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 check ID format"} | The ID contains characters other than letters, digits, - and _, or is longer than 128 characters |
| 403 | {"error": "Forbidden"} | The check belongs to another account |
| 404 | {"error": "Not found"} | No check with this ID exists |
Code Examples
cURL
curl -H "X-Api-Key: ek_live_your_key_here" \
"https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks/abc123"JavaScript
const response = await fetch(
"https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks/abc123",
{
headers: {
"X-Api-Key": "ek_live_your_key_here",
},
}
);
const check = await response.json();
console.log(check.data);Python
import requests
response = requests.get(
"https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks/abc123",
headers={"X-Api-Key": "ek_live_your_key_here"}
)
check = response.json()
print(check["data"])Last updated on