Checks
Each monitor has a set of checks that run against it -- uptime, broken links, certificate health, and more. This page covers how to enable, disable, snooze, and trigger those checks through the API.
You'll need check IDs for most of these endpoints. You can find them in the checks array of any monitor response.
Example request:
$ OHDEAR_TOKEN="your API token" $ curl https://ohdear.app/api/checks/1/enable \ -H "Authorization: Bearer $OHDEAR_TOKEN" \ -H 'Accept: application/json' \ -H 'Content-Type: application/json'
All endpoints below follow the same authentication pattern.
Check response fields #
Every check endpoint returns a check object with these fields:
{ "id": 405, "type": "uptime", "label": "Uptime", "enabled": true, "latest_run_ended_at": "2019-09-16 07:29:02", "latest_run_result": "succeeded", "summary": "Up", "settings": { "location": "paris", "look_for_string": "", "absent_string": null, "expected_response_headers": [], "failed_notification_threshold": 2, "http_verb": "get", "payload": [], "timeout": 5, "valid_status_codes": ["2*"], "max_redirect_count": 5, "expected_final_redirect_url": null, "http_client_headers": [] }, "active_snooze": null }
id: unique identifier for the checktype: the check type --uptime,performance,certificate_health,broken_links,mixed_content,lighthouse,cron,application_health,sitemap,dns,domain,ai,ports,dns_blocklistlabel: human-readable label for the checkenabled: whether this check is currently activelatest_run_ended_at: timestamp (UTC) of when this check last ranlatest_run_result: result of the last run --succeeded,failed,warning,pending,errored-or-timed-outsummary: human-readable summary of the current statussettings: check-specific configuration (varies by check type -- see the monitors docs for details)active_snooze: snooze details if active (see below), ornullaverage_response_time_in_ms: only present onperformancechecks -- average response time over the past 15 minutes in milliseconds
Enable a check #
POST /api/checks/{checkId}/enable
Enables a check on a monitor. Returns the updated check object.
performance check directly. The performance check follows the uptime check state.
Disable a check #
POST /api/checks/{checkId}/disable
Disables a check on a monitor. We'll stop running it until you re-enable it. Returns the updated check object with enabled set to false.
Request a run #
POST /api/checks/{checkId}/request-run
Triggers an on-demand run of a check -- useful for immediately scanning for broken links or mixed content after a deployment.
Returns the check object.
Request body (JSON, optional):
httpClientHeaders(array, optional) -- custom HTTP headers for this specific run (uptime checks only, max 5 headers)
Each header object has a name and value field:
{ "httpClientHeaders": [ {"name": "X-Custom-Header", "value": "custom-value"} ] }
Snooze a check #
POST /api/checks/{checkId}/snooze
Temporarily silences notifications for a check. We'll still perform the check, but won't send any notifications while it's snoozed. For more details on snoozing, see our snooze documentation.
If you'd rather stop monitoring entirely for a period, disable the check instead.
Request body (JSON):
minutes(integer, required) -- how long to snooze the check
{ "minutes": 10 }
Returns the check object with active_snooze populated.
Unsnooze a check #
POST /api/checks/{checkId}/unsnooze
Removes the active snooze from a check and resumes notifications immediately. Returns the check object with active_snooze set to null.
Snooze a scheduled task #
POST /api/cron-checks/{cronCheckDefinitionId}/snooze
In addition to snoozing an entire check, you can snooze individual scheduled tasks. Send the minutes payload the same way as snoozing a check.
You can find the cron check definition ID by calling the cron checks endpoint or by looking at the cron check details in the Oh Dear dashboard.
Unsnooze a scheduled task #
POST /api/cron-checks/{cronCheckDefinitionId}/unsnooze
Removes the active snooze from a scheduled task.
Snooze an application health check #
POST /api/monitors/{monitorId}/application-health-checks/{healthCheckId}/snooze
You can also snooze individual application health checks. Send the minutes payload the same way as snoozing a check.
You can find the health check ID by calling the application health checks endpoint or by looking at the health check details in the Oh Dear dashboard.
Unsnooze an application health check #
POST /api/monitors/{monitorId}/application-health-checks/{healthCheckId}/unsnooze
Removes the active snooze from an application health check.
Active snooze object #
When a check is snoozed, the active_snooze field contains these details:
{ "id": 1, "starts_at": "2025-04-30 11:35:20", "ends_at": "2025-04-30 11:40:20", "snoozed_by": "Sean White", "unsnoozed_by": null, "source": "API", "created_at": "2025-04-30 11:35:20" }
id: unique identifier for the snoozestarts_at: when the snooze started (UTC)ends_at: when the snooze will end (UTC)snoozed_by: name of the user or integration that created the snoozeunsnoozed_by: name of the user who unsnoozed early, ornullsource: how the snooze was created (e.g.,"API","Dashboard")created_at: when the snooze record was created (UTC)
Feel free to reach out via [email protected] or on X via @OhDearApp if you have any other questions. We'd love to help!