Check History
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 runcheck_id: the ID of the check this run belongs tocheck_type: the check typeresult: the check result of this runstarted_at: when the run started (ISO 8601, UTC), ornullif not recordedended_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 inYmdHisformat, in UTC (e.g.,20260315000000)filter[started_before](string, optional) -- only return runs started at or before this timestamp inYmdHisformat, in UTCfilter[result](string, optional) -- filter by result:succeeded,warning, orfailed
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 monitoring, DNS, ports, and DNS blocklist, detailed historical results are available through their own dedicated endpoints.
Feel free to reach out via [email protected] or on X via @OhDearApp if you have any other questions. We'd love to help!