# Monitors API

The Uptizm API has 19 endpoints on this resource, one section each.

## Start an AI analysis of a URL

`POST /monitors/analyze`

Probes the URL from several regions and queues an AI analysis that proposes monitor settings and metrics. Answers 202 with `data.run_id` and the run state; poll `GET /monitors/analyze/{run}` until `status` is `completed` or `failed`. A second analysis while one is running for the team answers 409. Counts against the plan's AI setup allowance; an unclaimed anonymous workspace has none.

- URL: `https://api.uptizm.com/v1/monitors/analyze`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:write`
- Tag: Monitors
- operationId: `v1.monitors.analyze`

### Parameters

- `Idempotency-Key` (header, string): Any unique string per logical request.

### Request body

Content type: `application/json`.

- `url` (string, uri, max length 2048, required)
- `region` (MonitorRegion: string, one of `"us-east"`, `"us-west"`, `"eu-west"`, `"eu-central"`, `"ap"`): A region a check is probed from.
- `intent` (string or null, max length 500): What the operator wants from this monitor, in their own words.
- `auth_config` (object or null)
  - `type` (HttpAuthType: string, one of `"none"`, `"basic"`, `"bearer"`, `"api_key"`): Authentication scheme applied to outbound monitor check requests.
  - `username` (string or null, max length 255)
  - `password` (string or null, max length 255)
  - `token` (string or null, max length 2048)
  - `key` (string or null, max length 2048)
  - `header` (string or null, max length 255)

### Response 202

Content type: `application/json`.

- `data` (object, required)
  - `run_id` (string, required)
  - `status` (any, required)
  - `step` (any, required)
  - `steps` (any, required)
  - `probe` (any, required)
  - `probes` (any, required)
  - `reason` (any, required)
  - `result` (any, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 409: Conflict
- 422: Validation error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Poll an AI analysis run

`GET /monitors/analyze/{run}`

Returns the run state: `status` is `queued`, `analyzing`, `completed` or `failed`. On `completed`, `result.data` holds the proposed monitor (`name`, `url`, `suggestion` settings, `suggested_metrics`); on `failed`, `reason` says why. Poll every 2.5 seconds for up to about 150 seconds. A 404 means the run expired or belongs to another team: start a new analysis.

- URL: `https://api.uptizm.com/v1/monitors/analyze/{run}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `v1.monitors.analyze.run`

### Parameters

- `run` (path, string, required)

### Response 200

Content type: `application/json`.

- `data` (object, required)
  - `run_id` (string, required)
  - `status` (any, required)
  - `step` (any, required)
  - `steps` (any, required)
  - `probe` (any, required)
  - `probes` (any, required)
  - `reason` (any, required)
  - `result` (any, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: An error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## List monitors

`GET /monitors`

The team's monitors, newest first, cursor-paginated. Filter by `status`. Monitors read through a key never include `request_headers` or `request_body`, and credentials are stripped from `url`.

- URL: `https://api.uptizm.com/v1/monitors`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `monitors.index`

### Parameters

- `status` (query, string)
- `per_page` (query, integer, min 1, max 200): Page size, clamped to 1 and the endpoint's maximum (200 on most lists).
- `cursor` (query, string): The `meta.next_cursor` of the previous page.

### Response 200

Content type: `application/json`.

- `data` (array of MonitorResource, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `url` (string or null, required)
  - `type` (string, required)
  - `method` (string, one of `"get"`, `"post"`, `"head"`, required)
  - `status` (string, required)
  - `paused_by_plan` (boolean, required): Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.
  - `paused_for_downtime` (boolean, required): True when a month of nothing but `down` readings paused a Free monitor.
  - `last_status` (string or null, one of `"up"`, `"down"`, `"degraded"`, `"paused"`, `"maintenance"`, `null`, required)
  - `check_interval_sec` (integer, required)
  - `effective_check_interval_sec` (integer, required): What the loop actually spends, which is the stored value clamped up to the plan's floor.
  - `timeout_sec` (integer, required)
  - `regions` (array of any, required)
  - `expected_status_code` (integer, required)
  - `request_headers` (array of any): Both emitted so the edit form can prefill what the operator configured.
  - `request_body` (string or null)
  - `ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `effective_ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `ai_auto_updates` (boolean, required): Read back by the monitor form's own switch.
  - `auth_config` (array of any or null, required)
  - `slo_target` (number or null, required)
  - `escalation_policy_id` (string or null, required): The pinned paging ladder, or null to fall back to the team default.
  - `uptime_24h` (string, required): Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").
  - `slo_down_minutes_7d` (string, required)
  - `slo_observed_minutes_7d` (string, required)
  - `slo_gap_minutes_7d` (string, required)
  - `slo_measured_minutes_7d` (string, required)
  - `slo_down_minutes_30d` (string, required)
  - `slo_observed_minutes_30d` (string, required)
  - `slo_gap_minutes_30d` (string, required)
  - `slo_measured_minutes_30d` (string, required)
  - `tags` (array of any, required)
  - `show_on_status_page` (boolean, required)
  - `only_show_if_degraded` (boolean, required)
  - `follow_redirects` (boolean, required)
  - `alert_on_down` (boolean, required)
  - `alert_on_recover` (boolean, required)
  - `ssl_tracking` (boolean, required)
  - `anomaly_detection` (boolean, required)
  - `response_anomaly_sensitivity` (string, one of `"low"`, `"medium"`, `"high"`, required)
  - `ssl_expires_at` (string or null, required)
  - `ssl_last_checked_at` (string or null, required)
  - `ssl_last_error` (string or null, required)
  - `ssl_alert_threshold_days` (integer, required)
  - `is_group` (boolean, required)
  - `parent_id` (string or null, required)
  - `last_checked_at` (string or null, required)
  - `last_response_ms` (integer or null, required)
  - `last_probe_error` (string or null, required): Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.
  - `last_probe_error_at` (string or null, required)
  - `next_check_at` (string or null, required)
  - `consecutive_fails` (integer, required)
  - `incident_threshold` (integer, required)
  - `assertion_rules` (array of any or null, required): Null for both means off: no rules asserted, no degraded threshold.
  - `degraded_after_ms` (integer or null, required)
  - `maintenance_tolerance_sec` (integer, required)
  - `description` (string or null, required)
  - `description_source` (string or null, one of `"ai_draft"`, `"user"`, `null`, required)
  - `site_kind` (string or null, one of `"ecommerce"`, `"saas"`, `"api"`, `"content"`, `"corporate"`, `"other"`, `null`, required)
  - `intent` (string or null, required)
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)
- `links` (object, required)
  - `first` (string or null, required)
  - `last` (string or null, required)
  - `prev` (string or null, required)
  - `next` (string or null, required)
- `meta` (object, required)
  - `path` (string or null, required): Base path for paginator generated URLs.
  - `per_page` (integer, min 0, required): Number of items shown per page.
  - `next_cursor` (string or null, required): The "cursor" that points to the next set of items.
  - `prev_cursor` (string or null, required): The "cursor" that points to the previous set of items.
  - `total` (number, required)
  - `counts` (array, max items 2, required)
  - `avg_response_ms` (integer or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Create a monitor

`POST /monitors`

Creates a monitor, plus any `metrics` sent with it in the same write, and queues its first check. Send an `Idempotency-Key` so a retry cannot create it twice. The plan caps the monitor count and the shortest `check_interval_sec`.

- URL: `https://api.uptizm.com/v1/monitors`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:write`
- Tag: Monitors
- operationId: `monitors.store`

### Parameters

- `Idempotency-Key` (header, string): Any unique string per logical request.

### Request body

Content type: `application/json`.

- `name` (string, max length 200, required)
- `url` (string, uri, max length 2048, required)
- `type` (MonitorType: string, one of `"http"`, required): Supported check protocol for a monitor.
- `method` (HttpMethod: string, one of `"get"`, `"post"`, `"head"`, required): HTTP verb used when issuing a monitor check request.
- `check_interval_sec` (integer, min 30, max 86400, required)
- `timeout_sec` (integer, min 1, max 30, required)
- `regions` (array of MonitorRegion: string, one of `"us-east"`, `"us-west"`, `"eu-west"`, `"eu-central"`, `"ap"`, required)
- `expected_status_code` (integer or null, min 100, max 599)
- `ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`): How much authority the AI has for a given monitor or workspace.
- `anomaly_detection` (boolean): Absent means the model default (true).
- `response_anomaly_sensitivity` (AnomalySensitivity: string, one of `"low"`, `"medium"`, `"high"`): How far from its baseline a metric has to move before the sweep reports it.
- `ai_auto_updates` (boolean): Whether AI may publish incident updates to the public status page for this monitor.
- `escalation_policy_id` (string or null, uuid): The team's escalation policy that pages for this monitor's incidents.
- `request_headers` (array of string or null)
- `request_body` (string or null)
- `slo_target` (number or null, min 0, max 100)
- `tags` (array of string or null)
- `show_on_status_page` (boolean)
- `follow_redirects` (boolean): Whether a 3xx is the answer or a step on the way to it.
- `only_show_if_degraded` (boolean)
- `alert_on_down` (boolean)
- `alert_on_recover` (boolean)
- `ssl_tracking` (boolean)
- `ssl_alert_threshold_days` (integer or null, min 1, max 365)
- `maintenance_tolerance_sec` (integer, one of `"0"`, `"60"`, `"120"`, `"180"`, `"300"`, `"600"`, `"900"`): Maintenance tolerance in seconds; omit it for the default of 0.
- `metrics` (array of object, max items 40): Metrics to create together with the monitor, in the same write.
  - `group_name` (string or null, max length 80)
  - `label` (string, max length 120, required)
  - `type` (MetricType: string, one of `"numeric"`, `"status"`, `"string"`, required): Classification of a custom monitor metric.
  - `source` (MetricSource: string, one of `"json_path"`, `"regex"`, `"xpath"`, `"header"`, `"http_status"` or null)
  - `extraction_path` (string or null, max length 500)
  - `unit` (MetricUnit: string, one of `"bytes_auto"`, `"byte"`, `"kilobyte"`, `"megabyte"`, `"gigabyte"`, `"terabyte"`, `"duration_auto"`, `"millisecond"`, `"second"`, `"minute"`, `"hour"`, `"percent"`, `"ratio"`, `"count"`, `"count_short"`, `"custom"` or null)
  - `threshold_direction` (ThresholdDirection: string, one of `"high_bad"`, `"low_bad"` or null)
  - `warn_bound` (number or null)
  - `critical_bound` (number or null)
  - `display_order` (integer or null, min 0)
  - `anomaly_enabled` (boolean)
  - `anomaly_direction` (MetricAnomalyDirection: string, one of `"high_bad"`, `"low_bad"`, `"both"`): Which side of a baseline counts as an anomaly: `high_bad`, `low_bad` or `both`.
  - `anomaly_kind` (MetricKind: string, one of `"gauge"`, `"counter"`, `"count_per_period"`): What a numeric metric's readings measure, which decides how the sweep reads them.
  - `anomaly_sensitivity` (AnomalySensitivity: string, one of `"low"`, `"medium"`, `"high"`): How far from its baseline a metric has to move before the sweep reports it.
  - `ok_values` (array of string, min length 1, max length 120, max items 50)
  - `warn_values` (array of string, min length 1, max length 120, max items 50)
  - `critical_values` (array of string, min length 1, max length 120, max items 50)
  - `unmatched_band` (MetricBand: string, one of `"ok"`, `"warn"`, `"critical"` or null)
  - `key` (string, max length 40, required)
- `auth_config` (object or null)
  - `type` (HttpAuthType: string, one of `"none"`, `"basic"`, `"bearer"`, `"api_key"`): Authentication scheme applied to outbound monitor check requests.
  - `username` (string or null, max length 255)
  - `password` (string or null, max length 255)
  - `token` (string or null, max length 2048)
  - `key` (string or null, max length 2048)
  - `header` (string or null, max length 255)
- `assertion_rules` (array of string or null, max items 20)
- `incident_threshold` (integer, min 1, max 10): How many consecutive failed checks open an incident, from 1 to 10.
- `degraded_after_ms` (integer or null, min 100, max 30000): Null is "off" in both engines.
- `description` (string or null, max length 1000): Context the AI reads as unverified and source-labelled, never a probe input.
- `description_source` (DescriptionSource: string, one of `"ai_draft"`, `"user"` or null)
- `site_kind` (SiteKind: string, one of `"ecommerce"`, `"saas"`, `"api"`, `"content"`, `"corporate"`, `"other"` or null)
- `intent` (string or null, max length 500): What the operator says matters about this monitor, in their own words.

### Response 201

Content type: `application/json`.

- `data` (MonitorResource, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `url` (string or null, required)
  - `type` (string, required)
  - `method` (string, one of `"get"`, `"post"`, `"head"`, required)
  - `status` (string, required)
  - `paused_by_plan` (boolean, required): Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.
  - `paused_for_downtime` (boolean, required): True when a month of nothing but `down` readings paused a Free monitor.
  - `last_status` (string or null, one of `"up"`, `"down"`, `"degraded"`, `"paused"`, `"maintenance"`, `null`, required)
  - `check_interval_sec` (integer, required)
  - `effective_check_interval_sec` (integer, required): What the loop actually spends, which is the stored value clamped up to the plan's floor.
  - `timeout_sec` (integer, required)
  - `regions` (array of any, required)
  - `expected_status_code` (integer, required)
  - `request_headers` (array of any): Both emitted so the edit form can prefill what the operator configured.
  - `request_body` (string or null)
  - `ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `effective_ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `ai_auto_updates` (boolean, required): Read back by the monitor form's own switch.
  - `auth_config` (array of any or null, required)
  - `slo_target` (number or null, required)
  - `escalation_policy_id` (string or null, required): The pinned paging ladder, or null to fall back to the team default.
  - `uptime_24h` (string, required): Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").
  - `slo_down_minutes_7d` (string, required)
  - `slo_observed_minutes_7d` (string, required)
  - `slo_gap_minutes_7d` (string, required)
  - `slo_measured_minutes_7d` (string, required)
  - `slo_down_minutes_30d` (string, required)
  - `slo_observed_minutes_30d` (string, required)
  - `slo_gap_minutes_30d` (string, required)
  - `slo_measured_minutes_30d` (string, required)
  - `tags` (array of any, required)
  - `show_on_status_page` (boolean, required)
  - `only_show_if_degraded` (boolean, required)
  - `follow_redirects` (boolean, required)
  - `alert_on_down` (boolean, required)
  - `alert_on_recover` (boolean, required)
  - `ssl_tracking` (boolean, required)
  - `anomaly_detection` (boolean, required)
  - `response_anomaly_sensitivity` (string, one of `"low"`, `"medium"`, `"high"`, required)
  - `ssl_expires_at` (string or null, required)
  - `ssl_last_checked_at` (string or null, required)
  - `ssl_last_error` (string or null, required)
  - `ssl_alert_threshold_days` (integer, required)
  - `is_group` (boolean, required)
  - `parent_id` (string or null, required)
  - `last_checked_at` (string or null, required)
  - `last_response_ms` (integer or null, required)
  - `last_probe_error` (string or null, required): Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.
  - `last_probe_error_at` (string or null, required)
  - `next_check_at` (string or null, required)
  - `consecutive_fails` (integer, required)
  - `incident_threshold` (integer, required)
  - `assertion_rules` (array of any or null, required): Null for both means off: no rules asserted, no degraded threshold.
  - `degraded_after_ms` (integer or null, required)
  - `maintenance_tolerance_sec` (integer, required)
  - `description` (string or null, required)
  - `description_source` (string or null, one of `"ai_draft"`, `"user"`, `null`, required)
  - `site_kind` (string or null, one of `"ecommerce"`, `"saas"`, `"api"`, `"content"`, `"corporate"`, `"other"`, `null`, required)
  - `intent` (string or null, required)
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 422: Validation error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Get a monitor

`GET /monitors/{monitor}`

One monitor of the team. A monitor of another team answers 404. Credentials are masked as in the list.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `monitors.show`

### Parameters

- `monitor` (path, string, required): The monitor ID

### Response 200

Content type: `application/json`.

- `data` (MonitorResource, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `url` (string or null, required)
  - `type` (string, required)
  - `method` (string, one of `"get"`, `"post"`, `"head"`, required)
  - `status` (string, required)
  - `paused_by_plan` (boolean, required): Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.
  - `paused_for_downtime` (boolean, required): True when a month of nothing but `down` readings paused a Free monitor.
  - `last_status` (string or null, one of `"up"`, `"down"`, `"degraded"`, `"paused"`, `"maintenance"`, `null`, required)
  - `check_interval_sec` (integer, required)
  - `effective_check_interval_sec` (integer, required): What the loop actually spends, which is the stored value clamped up to the plan's floor.
  - `timeout_sec` (integer, required)
  - `regions` (array of any, required)
  - `expected_status_code` (integer, required)
  - `request_headers` (array of any): Both emitted so the edit form can prefill what the operator configured.
  - `request_body` (string or null)
  - `ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `effective_ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `ai_auto_updates` (boolean, required): Read back by the monitor form's own switch.
  - `auth_config` (array of any or null, required)
  - `slo_target` (number or null, required)
  - `escalation_policy_id` (string or null, required): The pinned paging ladder, or null to fall back to the team default.
  - `uptime_24h` (string, required): Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").
  - `slo_down_minutes_7d` (string, required)
  - `slo_observed_minutes_7d` (string, required)
  - `slo_gap_minutes_7d` (string, required)
  - `slo_measured_minutes_7d` (string, required)
  - `slo_down_minutes_30d` (string, required)
  - `slo_observed_minutes_30d` (string, required)
  - `slo_gap_minutes_30d` (string, required)
  - `slo_measured_minutes_30d` (string, required)
  - `tags` (array of any, required)
  - `show_on_status_page` (boolean, required)
  - `only_show_if_degraded` (boolean, required)
  - `follow_redirects` (boolean, required)
  - `alert_on_down` (boolean, required)
  - `alert_on_recover` (boolean, required)
  - `ssl_tracking` (boolean, required)
  - `anomaly_detection` (boolean, required)
  - `response_anomaly_sensitivity` (string, one of `"low"`, `"medium"`, `"high"`, required)
  - `ssl_expires_at` (string or null, required)
  - `ssl_last_checked_at` (string or null, required)
  - `ssl_last_error` (string or null, required)
  - `ssl_alert_threshold_days` (integer, required)
  - `is_group` (boolean, required)
  - `parent_id` (string or null, required)
  - `last_checked_at` (string or null, required)
  - `last_response_ms` (integer or null, required)
  - `last_probe_error` (string or null, required): Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.
  - `last_probe_error_at` (string or null, required)
  - `next_check_at` (string or null, required)
  - `consecutive_fails` (integer, required)
  - `incident_threshold` (integer, required)
  - `assertion_rules` (array of any or null, required): Null for both means off: no rules asserted, no degraded threshold.
  - `degraded_after_ms` (integer or null, required)
  - `maintenance_tolerance_sec` (integer, required)
  - `description` (string or null, required)
  - `description_source` (string or null, one of `"ai_draft"`, `"user"`, `null`, required)
  - `site_kind` (string or null, one of `"ecommerce"`, `"saas"`, `"api"`, `"content"`, `"corporate"`, `"other"`, `null`, required)
  - `intent` (string or null, required)
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Update a monitor

`PUT /monitors/{monitor}`

Replaces the monitor's settings with the validated body. The same plan limits as on create apply.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:write`
- Tag: Monitors
- operationId: `monitors.update`

### Parameters

- `monitor` (path, string, required): The monitor ID

### Request body

Content type: `application/json`.

- `name` (string, max length 200)
- `url` (string, uri, max length 2048)
- `type` (MonitorType: string, one of `"http"`): Supported check protocol for a monitor.
- `method` (HttpMethod: string, one of `"get"`, `"post"`, `"head"`): HTTP verb used when issuing a monitor check request.
- `check_interval_sec` (integer, min 30, max 86400)
- `timeout_sec` (integer, min 1, max 30)
- `regions` (array of MonitorRegion: string, one of `"us-east"`, `"us-west"`, `"eu-west"`, `"eu-central"`, `"ap"`)
- `expected_status_code` (integer or null, min 100, max 599)
- `ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`): How much authority the AI has for a given monitor or workspace.
- `ai_auto_updates` (boolean)
- `escalation_policy_id` (string or null, uuid)
- `request_headers` (array of string or null)
- `request_body` (string or null)
- `slo_target` (number or null, min 0, max 100)
- `tags` (array of string or null)
- `show_on_status_page` (boolean)
- `follow_redirects` (boolean)
- `only_show_if_degraded` (boolean)
- `alert_on_down` (boolean)
- `alert_on_recover` (boolean)
- `ssl_tracking` (boolean)
- `anomaly_detection` (boolean)
- `response_anomaly_sensitivity` (AnomalySensitivity: string, one of `"low"`, `"medium"`, `"high"`): How far from its baseline a metric has to move before the sweep reports it.
- `ssl_alert_threshold_days` (integer or null, min 1, max 365)
- `maintenance_tolerance_sec` (integer, one of `"0"`, `"60"`, `"120"`, `"180"`, `"300"`, `"600"`, `"900"`)
- `auth_config` (object or null)
  - `type` (HttpAuthType: string, one of `"none"`, `"basic"`, `"bearer"`, `"api_key"`): Authentication scheme applied to outbound monitor check requests.
  - `username` (string or null, max length 255)
  - `password` (string or null, max length 255)
  - `token` (string or null, max length 2048)
  - `key` (string or null, max length 2048)
  - `header` (string or null, max length 255)
- `assertion_rules` (array of string or null, max items 20)
- `incident_threshold` (integer, min 1, max 10)
- `degraded_after_ms` (integer or null, min 100, max 30000)
- `description` (string or null, max length 1000)
- `site_kind` (SiteKind: string, one of `"ecommerce"`, `"saas"`, `"api"`, `"content"`, `"corporate"`, `"other"` or null)
- `intent` (string or null, max length 500)
- `description_source` (DescriptionSource: string, one of `"ai_draft"`, `"user"` or null)

### Response 200

Content type: `application/json`.

- `data` (MonitorResource, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `url` (string or null, required)
  - `type` (string, required)
  - `method` (string, one of `"get"`, `"post"`, `"head"`, required)
  - `status` (string, required)
  - `paused_by_plan` (boolean, required): Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.
  - `paused_for_downtime` (boolean, required): True when a month of nothing but `down` readings paused a Free monitor.
  - `last_status` (string or null, one of `"up"`, `"down"`, `"degraded"`, `"paused"`, `"maintenance"`, `null`, required)
  - `check_interval_sec` (integer, required)
  - `effective_check_interval_sec` (integer, required): What the loop actually spends, which is the stored value clamped up to the plan's floor.
  - `timeout_sec` (integer, required)
  - `regions` (array of any, required)
  - `expected_status_code` (integer, required)
  - `request_headers` (array of any): Both emitted so the edit form can prefill what the operator configured.
  - `request_body` (string or null)
  - `ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `effective_ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `ai_auto_updates` (boolean, required): Read back by the monitor form's own switch.
  - `auth_config` (array of any or null, required)
  - `slo_target` (number or null, required)
  - `escalation_policy_id` (string or null, required): The pinned paging ladder, or null to fall back to the team default.
  - `uptime_24h` (string, required): Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").
  - `slo_down_minutes_7d` (string, required)
  - `slo_observed_minutes_7d` (string, required)
  - `slo_gap_minutes_7d` (string, required)
  - `slo_measured_minutes_7d` (string, required)
  - `slo_down_minutes_30d` (string, required)
  - `slo_observed_minutes_30d` (string, required)
  - `slo_gap_minutes_30d` (string, required)
  - `slo_measured_minutes_30d` (string, required)
  - `tags` (array of any, required)
  - `show_on_status_page` (boolean, required)
  - `only_show_if_degraded` (boolean, required)
  - `follow_redirects` (boolean, required)
  - `alert_on_down` (boolean, required)
  - `alert_on_recover` (boolean, required)
  - `ssl_tracking` (boolean, required)
  - `anomaly_detection` (boolean, required)
  - `response_anomaly_sensitivity` (string, one of `"low"`, `"medium"`, `"high"`, required)
  - `ssl_expires_at` (string or null, required)
  - `ssl_last_checked_at` (string or null, required)
  - `ssl_last_error` (string or null, required)
  - `ssl_alert_threshold_days` (integer, required)
  - `is_group` (boolean, required)
  - `parent_id` (string or null, required)
  - `last_checked_at` (string or null, required)
  - `last_response_ms` (integer or null, required)
  - `last_probe_error` (string or null, required): Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.
  - `last_probe_error_at` (string or null, required)
  - `next_check_at` (string or null, required)
  - `consecutive_fails` (integer, required)
  - `incident_threshold` (integer, required)
  - `assertion_rules` (array of any or null, required): Null for both means off: no rules asserted, no degraded threshold.
  - `degraded_after_ms` (integer or null, required)
  - `maintenance_tolerance_sec` (integer, required)
  - `description` (string or null, required)
  - `description_source` (string or null, one of `"ai_draft"`, `"user"`, `null`, required)
  - `site_kind` (string or null, one of `"ecommerce"`, `"saas"`, `"api"`, `"content"`, `"corporate"`, `"other"`, `null`, required)
  - `intent` (string or null, required)
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 422: Validation error
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Delete a monitor

`DELETE /monitors/{monitor}`

Deletes the monitor and stops its checks.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:write`
- Tag: Monitors
- operationId: `monitors.destroy`

### Parameters

- `monitor` (path, string, required): The monitor ID

### Response 204

No body.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Pause a monitor

`POST /monitors/{monitor}/pause`

Stops scheduling checks for the monitor until it is resumed. A paused monitor keeps its history.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/pause`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:write`
- Tag: Monitors
- operationId: `v1.monitors.pause`

### Parameters

- `monitor` (path, string, required): The monitor ID
- `Idempotency-Key` (header, string): Any unique string per logical request.

### Response 200

Content type: `application/json`.

- `data` (MonitorResource, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `url` (string or null, required)
  - `type` (string, required)
  - `method` (string, one of `"get"`, `"post"`, `"head"`, required)
  - `status` (string, required)
  - `paused_by_plan` (boolean, required): Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.
  - `paused_for_downtime` (boolean, required): True when a month of nothing but `down` readings paused a Free monitor.
  - `last_status` (string or null, one of `"up"`, `"down"`, `"degraded"`, `"paused"`, `"maintenance"`, `null`, required)
  - `check_interval_sec` (integer, required)
  - `effective_check_interval_sec` (integer, required): What the loop actually spends, which is the stored value clamped up to the plan's floor.
  - `timeout_sec` (integer, required)
  - `regions` (array of any, required)
  - `expected_status_code` (integer, required)
  - `request_headers` (array of any): Both emitted so the edit form can prefill what the operator configured.
  - `request_body` (string or null)
  - `ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `effective_ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `ai_auto_updates` (boolean, required): Read back by the monitor form's own switch.
  - `auth_config` (array of any or null, required)
  - `slo_target` (number or null, required)
  - `escalation_policy_id` (string or null, required): The pinned paging ladder, or null to fall back to the team default.
  - `uptime_24h` (string, required): Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").
  - `slo_down_minutes_7d` (string, required)
  - `slo_observed_minutes_7d` (string, required)
  - `slo_gap_minutes_7d` (string, required)
  - `slo_measured_minutes_7d` (string, required)
  - `slo_down_minutes_30d` (string, required)
  - `slo_observed_minutes_30d` (string, required)
  - `slo_gap_minutes_30d` (string, required)
  - `slo_measured_minutes_30d` (string, required)
  - `tags` (array of any, required)
  - `show_on_status_page` (boolean, required)
  - `only_show_if_degraded` (boolean, required)
  - `follow_redirects` (boolean, required)
  - `alert_on_down` (boolean, required)
  - `alert_on_recover` (boolean, required)
  - `ssl_tracking` (boolean, required)
  - `anomaly_detection` (boolean, required)
  - `response_anomaly_sensitivity` (string, one of `"low"`, `"medium"`, `"high"`, required)
  - `ssl_expires_at` (string or null, required)
  - `ssl_last_checked_at` (string or null, required)
  - `ssl_last_error` (string or null, required)
  - `ssl_alert_threshold_days` (integer, required)
  - `is_group` (boolean, required)
  - `parent_id` (string or null, required)
  - `last_checked_at` (string or null, required)
  - `last_response_ms` (integer or null, required)
  - `last_probe_error` (string or null, required): Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.
  - `last_probe_error_at` (string or null, required)
  - `next_check_at` (string or null, required)
  - `consecutive_fails` (integer, required)
  - `incident_threshold` (integer, required)
  - `assertion_rules` (array of any or null, required): Null for both means off: no rules asserted, no degraded threshold.
  - `degraded_after_ms` (integer or null, required)
  - `maintenance_tolerance_sec` (integer, required)
  - `description` (string or null, required)
  - `description_source` (string or null, one of `"ai_draft"`, `"user"`, `null`, required)
  - `site_kind` (string or null, one of `"ecommerce"`, `"saas"`, `"api"`, `"content"`, `"corporate"`, `"other"`, `null`, required)
  - `intent` (string or null, required)
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Resume a monitor

`POST /monitors/{monitor}/resume`

Schedules checks for a paused monitor again, starting with the next tick.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/resume`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:write`
- Tag: Monitors
- operationId: `v1.monitors.resume`

### Parameters

- `monitor` (path, string, required): The monitor ID
- `Idempotency-Key` (header, string): Any unique string per logical request.

### Response 200

Content type: `application/json`.

- `data` (MonitorResource, required)
  - `id` (string, required)
  - `team_id` (string, required)
  - `name` (string, required)
  - `url` (string or null, required)
  - `type` (string, required)
  - `method` (string, one of `"get"`, `"post"`, `"head"`, required)
  - `status` (string, required)
  - `paused_by_plan` (boolean, required): Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.
  - `paused_for_downtime` (boolean, required): True when a month of nothing but `down` readings paused a Free monitor.
  - `last_status` (string or null, one of `"up"`, `"down"`, `"degraded"`, `"paused"`, `"maintenance"`, `null`, required)
  - `check_interval_sec` (integer, required)
  - `effective_check_interval_sec` (integer, required): What the loop actually spends, which is the stored value clamped up to the plan's floor.
  - `timeout_sec` (integer, required)
  - `regions` (array of any, required)
  - `expected_status_code` (integer, required)
  - `request_headers` (array of any): Both emitted so the edit form can prefill what the operator configured.
  - `request_body` (string or null)
  - `ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `effective_ai_mode` (AiMode: string, one of `"off"`, `"suggest"`, `"auto"`, required): How much authority the AI has for a given monitor or workspace.
  - `ai_auto_updates` (boolean, required): Read back by the monitor form's own switch.
  - `auth_config` (array of any or null, required)
  - `slo_target` (number or null, required)
  - `escalation_policy_id` (string or null, required): The pinned paging ladder, or null to fall back to the team default.
  - `uptime_24h` (string, required): Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").
  - `slo_down_minutes_7d` (string, required)
  - `slo_observed_minutes_7d` (string, required)
  - `slo_gap_minutes_7d` (string, required)
  - `slo_measured_minutes_7d` (string, required)
  - `slo_down_minutes_30d` (string, required)
  - `slo_observed_minutes_30d` (string, required)
  - `slo_gap_minutes_30d` (string, required)
  - `slo_measured_minutes_30d` (string, required)
  - `tags` (array of any, required)
  - `show_on_status_page` (boolean, required)
  - `only_show_if_degraded` (boolean, required)
  - `follow_redirects` (boolean, required)
  - `alert_on_down` (boolean, required)
  - `alert_on_recover` (boolean, required)
  - `ssl_tracking` (boolean, required)
  - `anomaly_detection` (boolean, required)
  - `response_anomaly_sensitivity` (string, one of `"low"`, `"medium"`, `"high"`, required)
  - `ssl_expires_at` (string or null, required)
  - `ssl_last_checked_at` (string or null, required)
  - `ssl_last_error` (string or null, required)
  - `ssl_alert_threshold_days` (integer, required)
  - `is_group` (boolean, required)
  - `parent_id` (string or null, required)
  - `last_checked_at` (string or null, required)
  - `last_response_ms` (integer or null, required)
  - `last_probe_error` (string or null, required): Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.
  - `last_probe_error_at` (string or null, required)
  - `next_check_at` (string or null, required)
  - `consecutive_fails` (integer, required)
  - `incident_threshold` (integer, required)
  - `assertion_rules` (array of any or null, required): Null for both means off: no rules asserted, no degraded threshold.
  - `degraded_after_ms` (integer or null, required)
  - `maintenance_tolerance_sec` (integer, required)
  - `description` (string or null, required)
  - `description_source` (string or null, one of `"ai_draft"`, `"user"`, `null`, required)
  - `site_kind` (string or null, one of `"ecommerce"`, `"saas"`, `"api"`, `"content"`, `"corporate"`, `"other"`, `null`, required)
  - `intent` (string or null, required)
  - `created_at` (string or null, required)
  - `updated_at` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Run a check now

`POST /monitors/{monitor}/test`

Fires an immediate one-off probe across the monitor's regions, outside its schedule.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/test`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:write`
- Tag: Monitors
- operationId: `v1.monitors.test`

### Parameters

- `monitor` (path, string, required): The monitor ID
- `Idempotency-Key` (header, string): Any unique string per logical request.

### Response 202

No body.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## List a monitor's checks

`GET /monitors/{monitor}/checks`

The monitor's recent check readings, newest first, cursor-paginated.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/checks`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `v1.monitors.checks.index`

### Parameters

- `monitor` (path, string, required): The monitor ID
- `per_page` (query, integer, min 1, max 200): Page size, clamped to 1 and the endpoint's maximum (200 on most lists).
- `cursor` (query, string): The `meta.next_cursor` of the previous page.

### Response 200

Content type: `application/json`.

- `data` (array of MonitorCheckResource, required)
  - `id` (string, required)
  - `region` (string, required)
  - `status` (string, one of `"up"`, `"down"`, `"degraded"`, `"paused"`, `"maintenance"`, required)
  - `status_code` (integer or null, required)
  - `response_ms` (integer or null, required)
  - `timing_dns_ms` (integer, required)
  - `timing_connect_ms` (integer, required)
  - `timing_tls_ms` (integer, required)
  - `timing_ttfb_ms` (integer, required)
  - `timing_download_ms` (integer, required)
  - `checked_at` (string, date-time, required)
  - `error_message` (string or null, required)
- `links` (object, required)
  - `first` (string or null, required)
  - `last` (string or null, required)
  - `prev` (string or null, required)
  - `next` (string or null, required)
- `meta` (object, required)
  - `path` (string or null, required): Base path for paginator generated URLs.
  - `per_page` (integer, min 0, required): Number of items shown per page.
  - `next_cursor` (string or null, required): The "cursor" that points to the next set of items.
  - `prev_cursor` (string or null, required): The "cursor" that points to the previous set of items.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Get one check

`GET /monitors/{monitor}/checks/{check}`

A single check reading of the monitor.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/checks/{check}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `v1.monitors.checks.show`

### Parameters

- `monitor` (path, string, required): The monitor ID
- `check` (path, string, required): The check ID

### Response 200

Content type: `application/json`.

- `data` (MonitorCheckResource, required)
  - `id` (string, required)
  - `region` (string, required)
  - `status` (string, one of `"up"`, `"down"`, `"degraded"`, `"paused"`, `"maintenance"`, required)
  - `status_code` (integer or null, required)
  - `response_ms` (integer or null, required)
  - `timing_dns_ms` (integer, required)
  - `timing_connect_ms` (integer, required)
  - `timing_tls_ms` (integer, required)
  - `timing_ttfb_ms` (integer, required)
  - `timing_download_ms` (integer, required)
  - `checked_at` (string, date-time, required)
  - `error_message` (string or null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## List archived content versions

`GET /monitors/{monitor}/content`

The archived versions of the monitor's response body, most recently seen first, page-numbered.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/content`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `v1.monitors.content.index`

### Parameters

- `monitor` (path, string, required): The monitor ID

### Response 200

Content type: `application/json`.

- `data` (array of MonitorContentVersionResource, required)
  - `content_hash` (string, required)
  - `byte_size` (integer, required): The RAW decoded length, not the size of the gzipped blob on disk.
  - `content_type` (string or null, required)
  - `truncated` (boolean, required)
  - `first_seen_at` (string, required)
  - `last_seen_at` (string, required)
- `links` (object, required)
  - `first` (string or null, required)
  - `last` (string or null, required)
  - `prev` (string or null, required)
  - `next` (string or null, required)
- `meta` (object, required)
  - `current_page` (integer, min 1, required)
  - `from` (integer or null, min 1, required)
  - `last_page` (integer, min 1, required)
  - `links` (array of object, required): Generated paginator links.
    - `url` (string or null, required)
    - `label` (string, required)
    - `active` (boolean, required)
  - `path` (string or null, required): Base path for paginator generated URLs.
  - `per_page` (integer, min 0, required): Number of items shown per page.
  - `to` (integer or null, min 1, required): Number of the last item in the slice.
  - `total` (integer, min 0, required): Total number of items being paginated.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## List metric candidates

`GET /monitors/{monitor}/content/candidates`

The values found in the monitor's newest archived body that a metric could extract, with the rule that extracts each.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/content/candidates`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `v1.monitors.content.candidates`

### Parameters

- `monitor` (path, string, required): The monitor ID

### Response 200

Content type: `application/json`.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Download an archived version

`GET /monitors/{monitor}/content/{contentHash}`

Downloads one archived body, addressed by its sha256 content hash, with its original bytes.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/content/{contentHash}`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `v1.monitors.content.show`

### Parameters

- `monitor` (path, string, required): The monitor ID
- `contentHash` (path, string, required): The sha256 content hash of the archived version: 64 lowercase hex characters.

### Response 200

Content type: `text/plain; charset=utf-8`.

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Get uptime over a range

`GET /monitors/{monitor}/uptime`

Totals of up, down and degraded readings and the uptime ratio for the requested range.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/uptime`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `v1.monitors.uptime`

### Parameters

- `monitor` (path, string, required): The monitor ID

### Response 200

Content type: `application/json`.

- `data` (string, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Get response times over a range

`GET /monitors/{monitor}/response-times`

Response times bucketed over the requested range, for charting.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/response-times`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `v1.monitors.response-times`

### Parameters

- `monitor` (path, string, required): The monitor ID

### Response 200

Content type: `application/json`.

- `data` (array of object, required): The response-time buckets of the requested range, for charting.
  - `id` (null, required)
  - `region` (null, required)
  - `status` (string, one of `"down"`, `"degraded"`, `"maintenance"`, `"up"`, required)
  - `status_code` (null, required)
  - `response_ms` (integer, required)
  - `timing_dns_ms` (null, required)
  - `timing_connect_ms` (null, required)
  - `timing_tls_ms` (null, required)
  - `timing_ttfb_ms` (null, required)
  - `timing_download_ms` (null, required)
  - `checked_at` (string, date-time, required)
  - `error_message` (null, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## List anomalies

`GET /monitors/{monitor}/anomalies`

The monitor's anomaly episodes inside the requested range, newest first.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/anomalies`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `v1.monitors.anomalies`

### Parameters

- `monitor` (path, string, required): The monitor ID

### Response 200

Content type: `application/json`.

- `data` (array of string, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md

## Get the 90-day status history

`GET /monitors/{monitor}/status-history`

Status-only daily buckets for the last 90 days. Takes no range.

- URL: `https://api.uptizm.com/v1/monitors/{monitor}/status-history`
- Auth: `Authorization: Bearer upz_...`
- Required ability (`x-required-ability`): `monitors:read`
- Tag: Monitors
- operationId: `v1.monitors.status-history`

### Parameters

- `monitor` (path, string, required): The monitor ID

### Response 200

Content type: `application/json`.

- `data` (array of object, required)
  - `checked_at` (string, date-time, required)
  - `status` (string, one of `"down"`, `"degraded"`, `"maintenance"`, `"up"`, required)

### Errors

- 401: Unauthenticated
- 403: The key lacks the ability this endpoint requires (`required_ability` names it), or the action is not allowed for the team.
- 404: Not found
- 429: Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for `Retry-After` seconds.

Error bodies: https://uptizm.com/docs/errors.md. Rate limits: https://uptizm.com/docs/rate-limits.md. Idempotency: https://uptizm.com/docs/idempotency.md
