The check history endpoint lets you list past runs for any check type on a monitor. Every time Oh Dear runs a check, it creates a run record. You can list these runs, filter them by date or result, and fetch detailed results for a specific run.
Runs are kept for approximately 10 days before being automatically pruned.
You'll need a monitor ID for this endpoint.
Example request:
$ OHDEAR_TOKEN="your API token"
$ curl https://ohdear.app/api/monitors/1/checks/broken_links/runs \
-H "Authorization: Bearer $OHDEAR_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json'
All endpoints below follow the same authentication pattern.
List runs #
GET /api/monitors/{monitorId}/checks/{checkType}/runs
Returns a paginated list of completed runs for any check type on a monitor. Only runs with a result of succeeded, warning, or failed are included.
The checkType parameter accepts any check type value: uptime, performance, certificate_health, broken_links, mixed_content, lighthouse, cron, application_health, sitemap, dns, domain, ai, ports, dns_blocklist.
Here's what the response looks like:
{
"data": [
{
"id": 98765,
"check_id": 30536,
"check_type": "broken_links",
"result": "succeeded",
"started_at": "2026-03-17T00:30:00+00:00",
"ended_at": "2026-03-17T00:53:58+00:00",
"ohdear_url": "https://ohdear.app/monitors/1234/check/broken-links/report/98765"
},
{
"id": 98710,
"check_id": 30536,
"check_type": "broken_links",
"result": "failed",
"started_at": "2026-03-16T00:30:00+00:00",
"ended_at": "2026-03-16T00:48:12+00:00",
"ohdear_url": "https://ohdear.app/monitors/1234/check/broken-links/report/98710"
}
],
"links": {
"documentation_url": "https://ohdear.app/docs/features/broken-links-detection",
"..."
},
"meta": { "..." }
}
id: unique identifier for this run
check_id: the ID of the check this run belongs to
check_type: the check type
result: the check result of this run
started_at: when the run started (ISO 8601, UTC), or null if not recorded
ended_at: when the run completed (ISO 8601, UTC)
ohdear_url: direct link to this run's report page in the Oh Dear dashboard
The response links object includes a documentation_url pointing to the documentation for this check type.
Query parameters:
filter[started_after] (string, optional) -- only return runs started at or after this timestamp in YmdHis format, in UTC (e.g., 20260315000000)
filter[started_before] (string, optional) -- only return runs started at or before this timestamp in YmdHis format, in UTC
filter[result] (string, optional) -- filter by result: succeeded, warning, or failed
Fetching detailed results for a run #
Once you have a run ID, you can fetch the detailed results by adding ?run_id={id} to the check type's endpoint:
| Check type |
Endpoint |
Docs |
broken_links |
GET /api/broken-links/{monitorId}?run_id=123 |
Broken links |
mixed_content |
GET /api/mixed-content/{monitorId}?run_id=123 |
Mixed content |
certificate_health |
GET /api/certificate-health/{monitorId}?run_id=123 |
Certificate health |
sitemap |
GET /api/sitemap/{monitorId}?run_id=123 |
Sitemap |
Without run_id, these endpoints return the latest completed run. With run_id, they return that specific run's data in the same response shape. The run_id must belong to the correct check on the specified monitor, otherwise you'll get a 422 error.
For other check types like lighthouse, AI-powered monitoring, DNS, ports, and DNS blocklist, detailed historical results are available through their own dedicated endpoints.
Was this page helpful?
Feel free to reach out via [email protected]
or on X via @OhDearApp if you have any other questions.
We'd love to help!