Skip to main content
Monitors are the core resource in Overwatch. Each monitor represents a single check — an HTTP endpoint, TCP port, TLS certificate, DNS record, or scheduled job — that your workers run on a recurring interval. This page covers every monitor endpoint: listing, creating, reading, updating, deleting, pausing, and retrieving historical check results.

List monitors

Returns all monitors in your organization, enriched with uptime percentage, the latest check result, and a bucketed status history for the selected time range.

Query parameters

string
Filter monitors by type. One of HTTP, TCP, TLS, DNS, SCHEDULED. Omit to return all types.
string
Time range for the history buckets and uptime calculation. One of 1d, 7d, 30d, 90d. Defaults to 90d. Uptime percentage is always computed over the trailing 90 days regardless of this value.

Response

EnrichedMonitor[]
Array of monitor objects. Each object includes all monitor fields plus enrichment.

Example


Create a monitor

Creates a new monitor. Requires admin or owner role. Returns 402 if your organization has no active subscription, and 422 with "upgrade": true if you have reached your monitor limit.

Request body

string
required
Display name for the monitor.
string
required
Monitor type. One of HTTP, TCP, TLS, DNS, SCHEDULED.
object
required
Type-specific configuration object. See Monitor config by type below.
string[]
Optional list of alert channel IDs to bind to this monitor. Alerts fire on status changes.

Monitor config by type

For SCHEDULED monitors, the interval field in config is always set to 300 seconds regardless of what you submit. The interval for scheduled job monitors is determined by how often your job calls the checkin URL — not by the config.

Monitor statuses

The statuses a monitor can report depend on its type:

Response

Returns 201 Created with the new monitor object. For SCHEDULED monitors, the response also includes a checkinUrl field — the public URL your cron job should call to register a successful run.

Example


Get a monitor

Returns a single monitor by ID, including its bound alert channels.

Path parameters

string
required
The monitor ID.

Response

Example


Update a monitor

Updates one or more fields on a monitor. All fields are optional — only the fields you include are changed. Requires admin or owner role. When you supply alertChannelIds, the full list of bindings is replaced with the new set. Pass an empty array ([]) to remove all alert bindings.

Path parameters

string
required
The monitor ID.

Request body

string
New display name.
object
Updated type-specific configuration. For SCHEDULED monitors, interval is always forced to 300.
boolean
Set to false to pause this monitor, true to resume it.
string[]
Replaces the monitor’s alert channel bindings with this list.

Response

Returns the updated monitor object with 200 OK.

Example


Delete a monitor

Permanently deletes a monitor and all associated check results. Requires admin or owner role.

Path parameters

string
required
The monitor ID.

Response

Example


Pause all monitors

Sets enabled: false on every currently-enabled monitor in your organization. Useful as an emergency kill switch during deployments or incidents. Requires admin or owner role.

Response

Returns the count of monitors that were paused.
number
The number of monitors that were paused by this request. Monitors that were already disabled are not counted.

Example


Get check results for a monitor

Returns paginated check results for a single monitor, ordered most-recent first.

Path parameters

string
required
The monitor ID.

Query parameters

number
Number of results to return. Maximum 200, default 50.
string
Cursor from a previous response to fetch the next page.

Response

CheckResult[]
Array of check result objects.
string | null
Pass this value as ?cursor= in your next request to fetch the following page. null when there are no more results.

Example