Skip to Content
API ReferenceCheck History

Check History

Retrieve the execution history for a specific check, newest first.

Endpoint

GET /v1/public/checks/{id}/history

Path Parameters

ParameterTypeDescription
idstringThe unique check identifier

Query Parameters

ParameterTypeDefaultDescription
limitinteger25Number of results per page (max 200)
pageinteger1Page number for offset pagination
fromstring or number-Only return results at or after this time. ISO 8601 (2025-01-01T00:00:00Z) or a Unix timestamp in seconds or milliseconds
tostring or number-Only return results at or before this time. Same formats as from
statusstringallOnly return results with this exact status, for example online, offline, degraded or disabled
qstring-Case-sensitive substring match against the error message and status

History is paginated by page only. There is no cursor and no total count.

Response

{ "data": [ { "id": "hist_001", "checkId": "abc123", "websiteId": "abc123", "timestamp": 1736951400000, "status": "online", "responseTime": 245, "statusCode": 200, "createdAt": 1736951400000 }, { "id": "hist_002", "checkId": "abc123", "websiteId": "abc123", "timestamp": 1736951100000, "status": "offline", "statusCode": 503, "error": "HTTP 503 Service Unavailable", "createdAt": 1736951100000 } ], "meta": { "page": 1, "limit": 25, "total": null, "totalPages": null, "hasNext": true, "hasPrev": false } }

History Entry

FieldTypeDescription
idstringHistory entry identifier
checkIdstringThe check this result belongs to
websiteIdstringDeprecated. Same value as checkId, kept for older integrations
timestampnumberEpoch ms when the check ran
statusstringResult status, for example online, offline, degraded or disabled
responseTimenumberResponse time in milliseconds. Omitted when not recorded
statusCodenumberHTTP status code. Omitted when not recorded (for example on TCP checks or connection failures)
errorstringError message. Omitted when the check succeeded
redirectLocationstringRedirect target. Omitted when not recorded
createdAtnumberSame value as timestamp

Optional fields are left out of the entry entirely rather than sent as null.

meta

FieldTypeDescription
pagenumberCurrent page number
limitnumberResults per page
totalnullAlways null
totalPagesnullAlways null
hasNextbooleanWhether another page exists
hasPrevbooleantrue when page is greater than 1

Date Filtering

Filter history by date range using ISO 8601 or Unix timestamps:

curl -H "X-Api-Key: ek_live_..." \ "https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks/abc123/history?from=2025-01-01T00:00:00Z&to=2025-01-31T23:59:59Z"

Error Responses

StatusBodyCause
400{"error": "Invalid check ID format"}Malformed check ID
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/history?limit=50&status=offline"

JavaScript

const params = new URLSearchParams({ limit: "50", from: "2025-01-01T00:00:00Z", to: "2025-01-31T23:59:59Z", }); const response = await fetch( `https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks/abc123/history?${params}`, { headers: { "X-Api-Key": "ek_live_your_key_here", }, } ); const history = await response.json(); console.log(history.data);

Python

import requests response = requests.get( "https://us-central1-exit1-dev.cloudfunctions.net/publicApi/v1/public/checks/abc123/history", headers={"X-Api-Key": "ek_live_your_key_here"}, params={ "limit": 50, "from": "2025-01-01T00:00:00Z", "to": "2025-01-31T23:59:59Z", "status": "offline" } ) history = response.json() print(history["data"])
Last updated on