Skip to Content
API ReferenceGet Check

Get Check

Retrieve details for a single monitoring check.

Endpoint

GET /v1/public/checks/{id}

Path Parameters

ParameterTypeDescription
idstringThe 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.

FieldTypeDescription
idstringUnique check identifier
namestringDisplay name. Falls back to url when no name is set
urlstringThe monitored URL, host or domain. Heartbeat checks return heartbeat://<token> and domain-only checks return domain://<domain>
statusstringonline, offline, degraded or unknown. New and re-enabled checks start as unknown until their first result
lastCheckednumberEpoch ms of the last synced check result. 0 if the check has never run
responseTimenumber | nullResponse time in milliseconds from the last synced result
lastStatusCodenumber | nullHTTP status code from the last synced result
typestringCheck 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
checkFrequencynumber | nullMinutes between checks
regionstring | nullRegion the check runs from, for example vps-eu-1 (Frankfurt) or vps-us-1 (Boston)
folderstring | nullFolder the check is grouped under in the dashboard
severitynumber | nullCheck severity from 1 (P1, critical) to 5 (P5, minimal). null means no severity is set
lastErrorstring | nullMost recent error message, if any
lastStatusChangenumber | nullEpoch ms when status last changed. null for a check whose status has not changed since this field was introduced
regionsobjectWhich regions observed the latest result: primary, peer, regionsTotal, regionsDown and confirmedDown. See Check Status
disabledbooleantrue if the check is paused
maintenanceModebooleantrue while the check is in maintenance mode
maintenanceUntilnumber | nullEpoch ms when the current maintenance window ends. null when not in maintenance or when the window has no end
maintenanceScheduledStartnumber | nullEpoch ms of an upcoming one-time maintenance window
maintenanceRecurringobject | nullRecurring maintenance schedule (see below)
sslCertificateobject | nullLast observed SSL certificate (see below). null for non-HTTPS checks or before the first observation
domainExpiryobject | nullDomain expiry data (see below). null unless Domain Intelligence is enabled for the check
lastPingAtnumber | nullHeartbeat checks only. Epoch ms of the last received ping, null if none yet. The field is absent for other check types
createdAtnumberEpoch ms when the check was created
updatedAtnumberEpoch ms of the last configuration change

There is no uptime field on the check object. Use Check Stats for uptime percentages.

sslCertificate

FieldTypeDescription
validbooleanWhether the certificate is currently valid
issuerstringCertificate Authority
subjectstringDomain the certificate is issued for
validFromnumberEpoch ms when the certificate became valid
validTonumberEpoch ms when the certificate expires
daysUntilExpirynumberDays left until validTo
lastCheckednumberEpoch ms when the certificate was last inspected
errorstringPresent when the certificate could not be validated

Fields that were not observed are omitted.

domainExpiry

FieldTypeDescription
domainstring | nullRegistered domain being tracked
registrarstring | nullDomain registrar
expiryDatenumber | nullEpoch ms when the registration expires
daysUntilExpirynumber | nullDays left until expiryDate

maintenanceRecurring

FieldTypeDescription
daysOfWeeknumber[]Days the window repeats on (0 = Sunday through 6 = Saturday)
startTimeMinutesnumberStart time in minutes after midnight, in timezone
durationMinutesnumberWindow length in minutes
timezonestringIANA timezone, for example Europe/Copenhagen
reasonstring | nullOptional note
createdAtnumberEpoch ms when the schedule was created

Note: status updates 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, lastChecked reflects the last sync, not the last probe. For per-probe data, use the check history endpoint.

Error Responses

StatusBodyCause
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