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-powered 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!