Monitors
GET /v1/monitors
Section titled “GET /v1/monitors”A page of the org’s monitors.
Parameters
Section titled “Parameters”| Name | In | Required | Type | Constraints |
|---|---|---|---|---|
limit |
query | no | integer | default 50, min 1, max 200 |
offset |
query | no | integer | default 0, min 0 |
status |
query | no | "active", "paused" |
Responses
Section titled “Responses”| Status | Body | Meaning |
|---|---|---|
200 |
V1MonitorList |
A page of monitors plus its bounds. |
401 |
V1ErrorUnauthenticated |
The bearer token is absent, malformed, revoked, expired, or unknown. |
403 |
V1ErrorForbidden or V1ErrorFeatureGated |
Either the key’s role lacks the permission this route needs (forbidden), or the org’s plan does not include API access (feature_gated). |
429 |
V1ErrorRateLimited |
The key exceeded its plan’s per-minute request budget. |
Request
Section titled “Request”curl -sS \ 'https://api.wirewatch.io/v1/monitors?limit=50&offset=0' \ -H "Authorization: Bearer $WIREWATCH_API_KEY"Response (200)
Section titled “Response (200)”{ "data": [ { "id": "5bc9d194-2807-4353-8209-be57ec6bde7e", "name": "http-340a8cca", "type": "http", "interval_seconds": 60, "timeout_ms": 5000, "locations": [ "us-east" ], "tags": [ "prod" ], "status": "active", "service_id": null, "created_at": "2026-08-14T06:45:51.203Z", "updated_at": "2026-08-14T06:45:51.203Z" }, { "id": "e7bacda9-0853-4063-8fd5-e8c89034459e", "name": "hb-340a8cca", "type": "heartbeat", "interval_seconds": null, "timeout_ms": null, "locations": [], "tags": [], "status": "active", "service_id": null, "created_at": "2026-08-14T06:45:51.216Z", "updated_at": "2026-08-14T06:45:51.216Z" }, { "id": "06b962d6-4bca-4250-99fa-45538f05685c", "name": "del-340a8cca", "type": "http", "interval_seconds": 60, "timeout_ms": 5000, "locations": [ "us-east" ], "tags": [ "prod" ], "status": "active", "service_id": null, "created_at": "2026-08-14T06:45:51.226Z", "updated_at": "2026-08-14T06:45:51.226Z" } ], "page": { "limit": 50, "offset": 0, "total": 3 }}POST /v1/monitors
Section titled “POST /v1/monitors”Create a monitor.
Request body
Section titled “Request body”The monitor to create. type decides which variant the body must satisfy.
V1MonitorCreate, required.
Responses
Section titled “Responses”| Status | Body | Meaning |
|---|---|---|
201 |
V1Monitor |
The created monitor. |
401 |
V1ErrorUnauthenticated |
The bearer token is absent, malformed, revoked, expired, or unknown. |
402 |
V1ErrorQuotaExceeded |
A plan quota was hit. metric names the exhausted quota. |
403 |
V1ErrorForbidden or V1ErrorFeatureGated |
Either the key’s role lacks the permission this route needs (forbidden), or the org’s plan does not include API access (feature_gated). |
404 |
V1ErrorNotFound |
No such monitor in the caller’s org. A monitor belonging to another org answers 404, never 403 — a foreign id is indistinguishable from a missing one. |
429 |
V1ErrorRateLimited |
The key exceeded its plan’s per-minute request budget. |
Request
Section titled “Request”curl -sS -X POST \ 'https://api.wirewatch.io/v1/monitors' \ -H "Authorization: Bearer $WIREWATCH_API_KEY" \ -H 'content-type: application/json' \ -d '{"name":"http-340a8cca","type":"http","interval_seconds":60,"timeout_ms":5000,"locations":["us-east"],"tags":["prod"],"config":{"method":"GET","url":"https://example.com/health","followRedirects":true},"assertions":[{"field":"status_code","op":"eq","value":200}]}'Response (201)
Section titled “Response (201)”{ "id": "5bc9d194-2807-4353-8209-be57ec6bde7e", "name": "http-340a8cca", "type": "http", "interval_seconds": 60, "timeout_ms": 5000, "locations": [ "us-east" ], "tags": [ "prod" ], "status": "active", "service_id": null, "created_at": "2026-08-14T06:45:51.203Z", "updated_at": "2026-08-14T06:45:51.203Z"}GET /v1/monitors/{monitorId}
Section titled “GET /v1/monitors/{monitorId}”One monitor.
Parameters
Section titled “Parameters”| Name | In | Required | Type | Constraints |
|---|---|---|---|---|
monitorId |
path | yes | string (uuid) |
Responses
Section titled “Responses”| Status | Body | Meaning |
|---|---|---|
200 |
V1Monitor |
The monitor. |
401 |
V1ErrorUnauthenticated |
The bearer token is absent, malformed, revoked, expired, or unknown. |
403 |
V1ErrorForbidden or V1ErrorFeatureGated |
Either the key’s role lacks the permission this route needs (forbidden), or the org’s plan does not include API access (feature_gated). |
404 |
V1ErrorNotFound |
No such monitor in the caller’s org. A monitor belonging to another org answers 404, never 403 — a foreign id is indistinguishable from a missing one. |
429 |
V1ErrorRateLimited |
The key exceeded its plan’s per-minute request budget. |
Request
Section titled “Request”curl -sS \ 'https://api.wirewatch.io/v1/monitors/5bc9d194-2807-4353-8209-be57ec6bde7e' \ -H "Authorization: Bearer $WIREWATCH_API_KEY"Response (200)
Section titled “Response (200)”{ "id": "5bc9d194-2807-4353-8209-be57ec6bde7e", "name": "http-340a8cca", "type": "http", "interval_seconds": 60, "timeout_ms": 5000, "locations": [ "us-east" ], "tags": [ "prod" ], "status": "active", "service_id": null, "created_at": "2026-08-14T06:45:51.203Z", "updated_at": "2026-08-14T06:45:51.203Z"}PATCH /v1/monitors/{monitorId}
Section titled “PATCH /v1/monitors/{monitorId}”Partially update a monitor.
Parameters
Section titled “Parameters”| Name | In | Required | Type | Constraints |
|---|---|---|---|---|
monitorId |
path | yes | string (uuid) |
Request body
Section titled “Request body”The fields to change. What is validated is the MERGED record, not this body — an empty body, or none at all, is a no-op that answers 200.
V1MonitorPatch, optional.
Responses
Section titled “Responses”| Status | Body | Meaning |
|---|---|---|
200 |
V1Monitor |
The updated monitor. |
401 |
V1ErrorUnauthenticated |
The bearer token is absent, malformed, revoked, expired, or unknown. |
402 |
V1ErrorQuotaExceeded |
A plan quota was hit. metric names the exhausted quota. |
403 |
V1ErrorForbidden or V1ErrorFeatureGated |
Either the key’s role lacks the permission this route needs (forbidden), or the org’s plan does not include API access (feature_gated). |
404 |
V1ErrorNotFound |
No such monitor in the caller’s org. A monitor belonging to another org answers 404, never 403 — a foreign id is indistinguishable from a missing one. |
429 |
V1ErrorRateLimited |
The key exceeded its plan’s per-minute request budget. |
Request
Section titled “Request”curl -sS -X PATCH \ 'https://api.wirewatch.io/v1/monitors/5bc9d194-2807-4353-8209-be57ec6bde7e' \ -H "Authorization: Bearer $WIREWATCH_API_KEY" \ -H 'content-type: application/json' \ -d '{"tags":["prod","patched"]}'Response (200)
Section titled “Response (200)”{ "id": "5bc9d194-2807-4353-8209-be57ec6bde7e", "name": "http-340a8cca", "type": "http", "interval_seconds": 60, "timeout_ms": 5000, "locations": [ "us-east" ], "tags": [ "prod", "patched" ], "status": "active", "service_id": null, "created_at": "2026-08-14T06:45:51.203Z", "updated_at": "2026-08-14T06:45:51.285Z"}DELETE /v1/monitors/{monitorId}
Section titled “DELETE /v1/monitors/{monitorId}”Delete a monitor.
Parameters
Section titled “Parameters”| Name | In | Required | Type | Constraints |
|---|---|---|---|---|
monitorId |
path | yes | string (uuid) |
Responses
Section titled “Responses”| Status | Body | Meaning |
|---|---|---|
204 |
no body | Deleted. No response body. |
401 |
V1ErrorUnauthenticated |
The bearer token is absent, malformed, revoked, expired, or unknown. |
403 |
V1ErrorForbidden or V1ErrorFeatureGated |
Either the key’s role lacks the permission this route needs (forbidden), or the org’s plan does not include API access (feature_gated). |
404 |
V1ErrorNotFound |
No such monitor in the caller’s org. A monitor belonging to another org answers 404, never 403 — a foreign id is indistinguishable from a missing one. |
429 |
V1ErrorRateLimited |
The key exceeded its plan’s per-minute request budget. |
Request
Section titled “Request”curl -sS -X DELETE \ 'https://api.wirewatch.io/v1/monitors/06b962d6-4bca-4250-99fa-45538f05685c' \ -H "Authorization: Bearer $WIREWATCH_API_KEY"Response (204)
Section titled “Response (204)”HTTP/1.1 204 No ContentGET /v1/monitors/{monitorId}/status
Section titled “GET /v1/monitors/{monitorId}/status”The monitor’s latest known status per probe location.
Parameters
Section titled “Parameters”| Name | In | Required | Type | Constraints |
|---|---|---|---|---|
monitorId |
path | yes | string (uuid) |
Responses
Section titled “Responses”| Status | Body | Meaning |
|---|---|---|
200 |
V1Statuses |
One entry per expected probe location. |
401 |
V1ErrorUnauthenticated |
The bearer token is absent, malformed, revoked, expired, or unknown. |
403 |
V1ErrorForbidden or V1ErrorFeatureGated |
Either the key’s role lacks the permission this route needs (forbidden), or the org’s plan does not include API access (feature_gated). |
404 |
V1ErrorNotFound |
No such monitor in the caller’s org. A monitor belonging to another org answers 404, never 403 — a foreign id is indistinguishable from a missing one. |
429 |
V1ErrorRateLimited |
The key exceeded its plan’s per-minute request budget. |
Request
Section titled “Request”curl -sS \ 'https://api.wirewatch.io/v1/monitors/5bc9d194-2807-4353-8209-be57ec6bde7e/status' \ -H "Authorization: Bearer $WIREWATCH_API_KEY"Response (200)
Section titled “Response (200)”{ "statuses": [ { "location": "us-east", "status": "no_data", "errorClass": "", "nodeTs": null, "ingestTs": null } ]}GET /v1/monitors/{monitorId}/rollups
Section titled “GET /v1/monitors/{monitorId}/rollups”Hourly or daily uptime and latency buckets.
Parameters
Section titled “Parameters”| Name | In | Required | Type | Constraints |
|---|---|---|---|---|
monitorId |
path | yes | string (uuid) | |
tier |
query | yes | "hourly", "daily" |
|
from |
query | yes | string (date-time) | |
to |
query | yes | string (date-time) | |
location |
query | no | string |
Responses
Section titled “Responses”| Status | Body | Meaning |
|---|---|---|
200 |
V1Rollups |
The buckets in [from, to), clamped to the plan’s history window. An empty array is a valid answer. |
401 |
V1ErrorUnauthenticated |
The bearer token is absent, malformed, revoked, expired, or unknown. |
403 |
V1ErrorForbidden or V1ErrorFeatureGated |
Either the key’s role lacks the permission this route needs (forbidden), or the org’s plan does not include API access (feature_gated). |
404 |
V1ErrorNotFound |
No such monitor in the caller’s org. A monitor belonging to another org answers 404, never 403 — a foreign id is indistinguishable from a missing one. |
429 |
V1ErrorRateLimited |
The key exceeded its plan’s per-minute request budget. |
Request
Section titled “Request”curl -sS \ 'https://api.wirewatch.io/v1/monitors/5bc9d194-2807-4353-8209-be57ec6bde7e/rollups?tier=hourly&from=2026-08-01T00:00:00.000Z&to=2026-08-02T00:00:00.000Z' \ -H "Authorization: Bearer $WIREWATCH_API_KEY"Response (200)
Section titled “Response (200)”{ "rollups": []}