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 check
type: the check type -- uptime, performance, certificate_health, broken_links, mixed_content, lighthouse, cron, application_health, sitemap, dns, domain, ai, ports, dns_blocklist
label: human-readable label for the check
enabled: whether this check is currently active
latest_run_ended_at: timestamp (UTC) of when this check last ran
latest_run_result: result of the last run -- succeeded, failed, warning, pending, errored-or-timed-out
summary: human-readable summary of the current status
settings: check-specific configuration (varies by check type -- see the monitors docs for details)
active_snooze: snooze details if active (see below), or null
average_response_time_in_ms: only present on performance checks -- 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.
Note
You cannot enable or disable the 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 snooze
starts_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 snooze
unsnoozed_by: name of the user who unsnoozed early, or null
source: how the snooze was created (e.g., "API", "Dashboard")
created_at: when the snooze record was created (UTC)