API reference · Monitoring

Monitors

The heart of the API: create, list, pause, resume and delete the things we check every ten seconds.

Base URL https://app.upfour.io/v1 · auth via Authorization: Bearer <key> · “Try it” runs from your browser — the key is kept in this tab only. Use a pls_test_ sandbox key to experiment freely.

GET /monitors

scope monitor.write stable returns 200

ParameterInTypeNotes
limit query integer default 50
cursor query string
client_id query uuid
all_clients query boolean
q query string
sort query string
status query string one of UP · DOWN · PAUSED
monitor_type query string one of http · ping · tcp · dns
region query string
curl -s https://app.upfour.io/v1/monitors \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

POST /monitors

scope monitor.write stable returns 201

Body fieldTypeNotes
namestringDisplay name
urlstringTarget for http/ping monitors
monitor_typestringhttp · ping · tcp · dns (default http)
interval_secondsintegerDown to 10; the form shows cost per interval
regionsstring[]Check regions; only offered regions are accepted
expected_status_codeintegerPass only on this status (http)
alert_typestringkeyword · keyword_absence for content checks
keywordstringThe needle for alert_type
http_methodstringGET · HEAD · POST · PUT · PATCH · DELETE
request_timeout_sintegerPer-check budget; a timeout is a failed check
request_bodystringSent with methods that carry one
request_headers[{name, value}]Extra headers per check
follow_redirectsbooleanFollow 3xx (default true)
keep_cookiesbooleanPersist cookies across a redirect chain
auth_username / auth_passwordstringHTTP basic auth; password stored encrypted, never returned
ssl_verificationbooleanFail on broken chains
ssl_expiry_alert_days / domain_expiry_alert_daysintegerWarn before certificate / domain expiry
proxy_host / proxy_portstring / integerCheck through your proxy
ip_versionstringForce IPv4 or IPv6
maintenance_from / maintenance_tostring (HH:MM)Recurring maintenance window
maintenance_timezonestringIANA zone for the window
maintenance_weekdaysstring[]Restrict the window to weekdays
tcp_host / tcp_portstring / integerTarget for tcp monitors
dns_server / dns_query / dns_type / dns_expectedstringResolver, name, record type, asserted answer (dns)
confirmation_period / recovery_periodintegerRequire failing/healthy for longer before the state flips
escalation_policy_iduuidAttach an alert plan
client_iduuidCreate inside a client partition (agency mode)
curl -s -X POST https://app.upfour.io/v1/monitors \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Example", "url": "https://example.com", "monitor_type": "http", "interval_seconds": 60, "regions": [ "default" ] }'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

POST /monitors/batch

scope monitor.write stable returns 201

curl -s -X POST https://app.upfour.io/v1/monitors/batch \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

POST /monitors/batch/dry-run

scope monitor.write stable returns 201

curl -s -X POST https://app.upfour.io/v1/monitors/batch/dry-run \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

GET /monitors/{monitorID}

scope monitor.delete stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s https://app.upfour.io/v1/monitors/<monitorID> \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

PUT /monitors/{monitorID}

scope monitor.delete stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s -X PUT https://app.upfour.io/v1/monitors/<monitorID> \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

PATCH /monitors/{monitorID}

scope monitor.delete stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s -X PATCH https://app.upfour.io/v1/monitors/<monitorID> \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

DELETE /monitors/{monitorID}

scope monitor.delete stable returns 204

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s -X DELETE https://app.upfour.io/v1/monitors/<monitorID> \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

GET /monitors/{monitorID}/availability

scope monitor.read stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s https://app.upfour.io/v1/monitors/<monitorID>/availability \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

GET /monitors/{monitorID}/certificates

scope monitor.read stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s https://app.upfour.io/v1/monitors/<monitorID>/certificates \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

POST /monitors/{monitorID}/check

scope monitor.write stable returns 202

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s -X POST https://app.upfour.io/v1/monitors/<monitorID>/check \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

PUT /monitors/{monitorID}/escalation-policy

scope monitor.delete stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s -X PUT https://app.upfour.io/v1/monitors/<monitorID>/escalation-policy \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

DELETE /monitors/{monitorID}/escalation-policy

scope monitor.delete stable returns 204

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s -X DELETE https://app.upfour.io/v1/monitors/<monitorID>/escalation-policy \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

GET /monitors/{monitorID}/incidents

scope monitor.read stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s https://app.upfour.io/v1/monitors/<monitorID>/incidents \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

GET /monitors/{monitorID}/notification_channels

scope monitor.read stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s https://app.upfour.io/v1/monitors/<monitorID>/notification_channels \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

POST /monitors/{monitorID}/notification_channels/{channelID}

scope monitor.delete stable returns 201

ParameterInTypeNotes
monitorIDrequired path uuid
channelIDrequired path uuid
curl -s -X POST https://app.upfour.io/v1/monitors/<monitorID>/notification_channels/<channelID> \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

DELETE /monitors/{monitorID}/notification_channels/{channelID}

scope monitor.delete stable returns 204

ParameterInTypeNotes
monitorIDrequired path uuid
channelIDrequired path uuid
curl -s -X DELETE https://app.upfour.io/v1/monitors/<monitorID>/notification_channels/<channelID> \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

POST /monitors/{monitorID}/pause

scope monitor.write stable returns 201

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s -X POST https://app.upfour.io/v1/monitors/<monitorID>/pause \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

GET /monitors/{monitorID}/regions

scope monitor.read stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s https://app.upfour.io/v1/monitors/<monitorID>/regions \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

GET /monitors/{monitorID}/response_times

scope monitor.read stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s https://app.upfour.io/v1/monitors/<monitorID>/response_times \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

GET /monitors/{monitorID}/results

scope monitor.read stable returns 200

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s https://app.upfour.io/v1/monitors/<monitorID>/results \
  -H "Authorization: Bearer $UP4_API_KEY"
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

POST /monitors/{monitorID}/resume

scope monitor.write stable returns 201

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s -X POST https://app.upfour.io/v1/monitors/<monitorID>/resume \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.

POST /monitors/{monitorID}/test-alert

scope monitor.write stable returns 202

ParameterInTypeNotes
monitorIDrequired path uuid
curl -s -X POST https://app.upfour.io/v1/monitors/<monitorID>/test-alert \
  -H "Authorization: Bearer $UP4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Try it

Sent directly from your browser to https://app.upfour.io/v1. Mutating calls get an automatic Idempotency-Key.