Skip to content
Jump to a call

API reference

These are the calls you can make with an API key. Every call is a POST with a JSON body to its own address:

https://www.obsrvly.com/api/gw/<area>/obsrvly.v1.<Service>/<Call>

Send your key in the Authorization header. Calls marked no key needed work without one. Field names are camelCase. You never name your team: obsrvly takes it from the key.

For keys, errors, rate limits, pages of results and worked examples, read the API guide (chapter 13).

Set up
bash
export OBSRVLY_KEY="<your-api-key>"

curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListMonitors" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"limit": 50}'

Monitors

CreateUrlMonitor

MonitorConfigService

Create a monitor that requests a web address and checks the answer.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateUrlMonitor

Request fields

namestring

A name you choose.

urlstring

The address to check, with https:// or http://.

methodstring

The HTTP method, such as GET or POST. Default GET.

headersmap<string, string>

Request headers to send.

bodybytes (base64)

The request body, base64 encoded.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

assertionsarray of Assertion

Rules the answer must pass, such as a status code. All must pass.

Fields of Assertion
typestring

What to check, such as status_code, response_time_ms, body, header.<Name>, json.<path> or json_schema. Browser monitors accept status_code, body, response_time_ms and no_console_errors.

openum

How to compare, such as ASSERTION_OP_EQ. Not used for json_schema.

One of: ASSERTION_OP_EQ, ASSERTION_OP_NEQ, ASSERTION_OP_GT, ASSERTION_OP_LT, ASSERTION_OP_CONTAINS, ASSERTION_OP_MATCHES

valuestring

The expected value. For json_schema, the JSON Schema the body must match.

alertChannelIdsarray of string

IDs of the alert channels to notify.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateUrlMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "acme.io health",
    "url": "https://acme.io/health",
    "method": "GET",
    "intervalSeconds": 300,
    "locations": ["us-west"],
    "assertions": [{"type": "status_code", "op": "ASSERTION_OP_EQ", "value": "200"}],
    "alertChannelIds": ["<channel-id>"]
  }'

BulkCreateUrlMonitors

MonitorConfigService

Create up to 100 URL monitors in one call. The answer has one result per monitor: the new monitor, or why it failed.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/BulkCreateUrlMonitors

Request fields

specsarray of UrlMonitorSpec

One entry per monitor to create, with the same fields as CreateUrlMonitor. At most 100.

Fields of UrlMonitorSpec
namestring

A name you choose.

urlstring

The address to check, with https:// or http://.

methodstring

The HTTP method, such as GET or POST. Default GET.

headersmap<string, string>

Request headers to send.

bodybytes (base64)

The request body, base64 encoded.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

assertionsarray of Assertion

Rules the answer must pass, such as a status code. All must pass.

alertChannelIdsarray of string

IDs of the alert channels to notify.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

Response fields

resultsarray of BulkCreateUrlMonitorsResult

One result per spec, in order.

Fields of BulkCreateUrlMonitorsResult
monitorMonitor

The new monitor, when it was created.

errorstring

Why it failed, when it failed.

urlstring

The URL from the spec, so you can match results.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/BulkCreateUrlMonitors" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "specs": [{"name": "home", "url": "https://acme.io/", "intervalSeconds": 300}, {"name": "api", "url": "https://api.acme.io/health", "intervalSeconds": 300}]
  }'

CreateApiMonitor

MonitorConfigService

Create a monitor that calls an API, in one request or in several steps that pass values along.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateApiMonitor

Request fields

namestring

A name you choose.

urlstring

The address to check, with https:// or http://.

methodstring

The HTTP method, such as GET or POST. Default GET.

headersmap<string, string>

Request headers to send.

bodybytes (base64)

The request body, base64 encoded.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

assertionsarray of Assertion

Rules the answer must pass, such as a status code. All must pass.

Fields of Assertion
typestring

What to check, such as status_code, response_time_ms, body, header.<Name>, json.<path> or json_schema. Browser monitors accept status_code, body, response_time_ms and no_console_errors.

openum

How to compare, such as ASSERTION_OP_EQ. Not used for json_schema.

One of: ASSERTION_OP_EQ, ASSERTION_OP_NEQ, ASSERTION_OP_GT, ASSERTION_OP_LT, ASSERTION_OP_CONTAINS, ASSERTION_OP_MATCHES

valuestring

The expected value. For json_schema, the JSON Schema the body must match.

alertChannelIdsarray of string

IDs of the alert channels to notify.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

apiStepsarray of ApiStep

Optional steps, run in order. Empty means one request built from the fields above.

Fields of ApiStep
namestring

A name for the step.

methodstring

The HTTP method, such as GET or POST. Default GET.

urlstring

The address to check, with https:// or http://.

headersmap<string, string>

Request headers to send.

bodybytes (base64)

The request body, base64 encoded.

assertarray of Assertion

Rules this step's answer must pass.

extractarray of ExtractRule

Values to take from the answer for later steps.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateApiMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "orders API",
    "url": "https://api.acme.io/orders",
    "method": "GET",
    "headers": {"Accept": "application/json"},
    "intervalSeconds": 300,
    "assertions": [{"type": "status_code", "op": "ASSERTION_OP_EQ", "value": "200"}]
  }'

CreateBrowserMonitor

MonitorConfigService

Create a monitor that opens a page in a real browser, and can click and type through a script.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateBrowserMonitor

Request fields

namestring

A name you choose.

startUrlstring

The page to open.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

assertionsarray of Assertion

Rules the answer must pass, such as a status code. All must pass.

Fields of Assertion
typestring

What to check, such as status_code, response_time_ms, body, header.<Name>, json.<path> or json_schema. Browser monitors accept status_code, body, response_time_ms and no_console_errors.

openum

How to compare, such as ASSERTION_OP_EQ. Not used for json_schema.

One of: ASSERTION_OP_EQ, ASSERTION_OP_NEQ, ASSERTION_OP_GT, ASSERTION_OP_LT, ASSERTION_OP_CONTAINS, ASSERTION_OP_MATCHES

valuestring

The expected value. For json_schema, the JSON Schema the body must match.

alertChannelIdsarray of string

IDs of the alert channels to notify.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

scriptJsonstring

Optional. A JSON array of steps, each with a kind: goto, click, fill, wait_for, assert_visible or assert_text. Empty opens the page and runs the assertions.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateBrowserMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "login page",
    "startUrl": "https://acme.io/login",
    "intervalSeconds": 900,
    "assertions": [{"type": "no_console_errors"}]
  }'

CreateHeartbeatMonitor

MonitorConfigService

Create a monitor that waits for your job to ping it. The answer has the token for the ping address.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateHeartbeatMonitor

Request fields

namestring

A name you choose.

intervalSecondsuint32

How often your job pings, in seconds.

gracePeriodsuint32

How many intervals may pass with no ping before the monitor is down. Default 1.

alertChannelIdsarray of string

IDs of the alert channels to notify.

cronExpressionstring

Optional. A cron schedule for your job, instead of an interval.

graceSecondsuint32

With a cron schedule: how late a ping may be, in seconds.

cronTimezonestring

With a cron schedule: the time zone, such as Asia/Kolkata. Default UTC.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

tokenstring

Your job sends its pings to an address that ends with this token.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateHeartbeatMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "nightly backup",
    "intervalSeconds": 86400,
    "gracePeriods": 1
  }'

CreateTcpMonitor

MonitorConfigService

Create a monitor that checks a TCP port accepts a connection.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateTcpMonitor

Request fields

namestring

A name you choose.

hoststring

A hostname or IP address.

portuint32

The port number.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

alertChannelIdsarray of string

IDs of the alert channels to notify.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

assertionsarray of Assertion

Rules the answer must pass, such as a status code. All must pass.

Fields of Assertion
typestring

What to check, such as status_code, response_time_ms, body, header.<Name>, json.<path> or json_schema. Browser monitors accept status_code, body, response_time_ms and no_console_errors.

openum

How to compare, such as ASSERTION_OP_EQ. Not used for json_schema.

One of: ASSERTION_OP_EQ, ASSERTION_OP_NEQ, ASSERTION_OP_GT, ASSERTION_OP_LT, ASSERTION_OP_CONTAINS, ASSERTION_OP_MATCHES

valuestring

The expected value. For json_schema, the JSON Schema the body must match.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateTcpMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "database port",
    "host": "db.acme.io",
    "port": 5432,
    "intervalSeconds": 300
  }'

CreateUdpMonitor

MonitorConfigService

Create a monitor that sends a UDP packet and checks the reply.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateUdpMonitor

Request fields

namestring

A name you choose.

hoststring

A hostname or IP address.

portuint32

The port number.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

alertChannelIdsarray of string

IDs of the alert channels to notify.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

assertionsarray of Assertion

Rules the answer must pass, such as a status code. All must pass.

Fields of Assertion
typestring

What to check, such as status_code, response_time_ms, body, header.<Name>, json.<path> or json_schema. Browser monitors accept status_code, body, response_time_ms and no_console_errors.

openum

How to compare, such as ASSERTION_OP_EQ. Not used for json_schema.

One of: ASSERTION_OP_EQ, ASSERTION_OP_NEQ, ASSERTION_OP_GT, ASSERTION_OP_LT, ASSERTION_OP_CONTAINS, ASSERTION_OP_MATCHES

valuestring

The expected value. For json_schema, the JSON Schema the body must match.

payloadbytes (base64)

The packet to send, base64 encoded. Empty sends an empty packet.

expectstring

Optional text the reply must contain. Empty accepts any reply.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateUdpMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "game server",
    "host": "play.acme.io",
    "port": 27015,
    "intervalSeconds": 300
  }'

CreatePingMonitor

MonitorConfigService

Create a monitor that pings a host.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreatePingMonitor

Request fields

namestring

A name you choose.

hoststring

A hostname or IP address.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

alertChannelIdsarray of string

IDs of the alert channels to notify.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreatePingMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "edge router",
    "host": "203.0.113.10",
    "intervalSeconds": 300
  }'

CreateDnsMonitor

MonitorConfigService

Create a monitor that checks a DNS record, or the mail records SPF, DMARC and DKIM.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateDnsMonitor

Request fields

namestring

A name you choose.

domainstring

The domain name.

recordTypestring

A, AAAA, CNAME, MX or TXT, or a mail check: SPF, DMARC, DKIM or BLACKLIST.

expectedValuesarray of string

The values the record must hold.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

alertChannelIdsarray of string

IDs of the alert channels to notify.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

assertionsarray of Assertion

Rules the answer must pass, such as a status code. All must pass.

Fields of Assertion
typestring

What to check, such as status_code, response_time_ms, body, header.<Name>, json.<path> or json_schema. Browser monitors accept status_code, body, response_time_ms and no_console_errors.

openum

How to compare, such as ASSERTION_OP_EQ. Not used for json_schema.

One of: ASSERTION_OP_EQ, ASSERTION_OP_NEQ, ASSERTION_OP_GT, ASSERTION_OP_LT, ASSERTION_OP_CONTAINS, ASSERTION_OP_MATCHES

valuestring

The expected value. For json_schema, the JSON Schema the body must match.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateDnsMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "acme.io A record",
    "domain": "acme.io",
    "recordType": "A",
    "expectedValues": ["203.0.113.10"],
    "intervalSeconds": 3600
  }'

CreateCertMonitor

MonitorConfigService

Create a monitor that warns before a TLS certificate expires.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateCertMonitor

Request fields

namestring

A name you choose.

hoststring

A hostname or IP address.

portuint32

The port. Default 443.

warnDaysuint32

Days before expiry at which the monitor turns degraded. 0 uses the default.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

alertChannelIdsarray of string

IDs of the alert channels to notify.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

expectedIssuersarray of string

Optional. The certificate authorities you expect, such as Let's Encrypt. A new certificate for the host from another one marks the check down.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateCertMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "acme.io certificate",
    "host": "acme.io",
    "port": 443,
    "intervalSeconds": 86400,
    "warnDays": 30
  }'

CreateDomainMonitor

MonitorConfigService

Create a monitor that warns before a domain registration expires.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateDomainMonitor

Request fields

namestring

A name you choose.

domainstring

The registered domain, such as acme.io (not www.acme.io).

warnDaysuint32

Days before expiry at which the monitor turns degraded. 0 uses the default.

intervalSecondsuint32

How often to check, in seconds. Default 86400 (once a day).

alertChannelIdsarray of string

IDs of the alert channels to notify.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateDomainMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "acme.io registration",
    "domain": "acme.io",
    "warnDays": 30
  }'

GetMonitor

MonitorConfigService

Get one monitor by its ID.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/GetMonitor

Request fields

idstring

The ID.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/GetMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "<monitor-id>"
  }'

ListMonitors

MonitorConfigService

List your monitors, one page at a time.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListMonitors

Request fields

limituint32

Page size, 1 to 200. Any other value uses 50.

cursorstring

Leave empty for the first page. Then send the nextCursor from the last answer.

Response fields

monitorsarray of Monitor

The monitors.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

nextCursorstring

Send this as cursor to get the next page. Empty on the last page.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListMonitors" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 50
  }'

UpdateMonitor

MonitorConfigService

Change a monitor. Only the fields you send change. Use it to pause, resume, mute and rename.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/UpdateMonitor

Request fields

idstring

The monitor ID.

namestringoptional

A name you choose.

intervalSecondsuint32optional

How often to check, in seconds. Your plan sets the shortest interval allowed.

activatedbooloptional

False pauses the monitor; true resumes it.

mutedbooloptional

True mutes alerts; false unmutes.

alertChannelIdsarray of string

The new list of alert channels. Used only with replaceAlertChannels.

replaceAlertChannelsbool

Set true to replace the alert channels with alertChannelIds.

muteUntiltimestamp

Optional. Mute until this time; send with muted true.

clearMuteUntilbool

Set true to remove the mute end time.

configMonitorConfig

Optional. New type-specific settings. This replaces all of them, so send the full set.

Fields of MonitorConfig
typeenum

The monitor type.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

urlstring

URL and API monitors: the address.

methodstring

The HTTP method, such as GET or POST. Default GET.

headersmap<string, string>

Request headers to send.

bodybytes (base64)

The request body, base64 encoded.

hoststring

TCP, UDP, ping and certificate monitors: the host.

portuint32

The port number.

domainstring

DNS and domain monitors: the domain.

recordTypestring

DNS monitors: the record type.

expectedValuesarray of string

DNS monitors: the values the record must hold.

assertionsarray of Assertion

Rules the answer must pass, such as a status code. All must pass.

timeoutMsuint32

How long to wait for an answer, in milliseconds.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

heartbeatTokenstring

Heartbeat monitors: the token at the end of the ping address.

gracePeriodsuint32

Heartbeat monitors: how many intervals may pass with no ping before down. Default 1.

cronExpressionstring

Heartbeat monitors: an optional cron schedule.

graceSecondsuint32

Heartbeat monitors with a cron schedule: how late a ping may be, in seconds.

cronTimezonestring

Heartbeat monitors: the cron time zone. Default UTC.

browserStartUrlstring

Browser monitors: the page to open.

browserScriptJsonstring

Browser monitors: the steps, as a JSON array.

apiStepsarray of ApiStep

API monitors: the steps. Empty means one request.

certWarnDaysuint32

Certificate monitors: days before expiry at which it turns degraded.

certExpectedIssuersarray of string

Certificate monitors: the certificate authorities you expect.

udpPayloadbytes (base64)

UDP monitors: the packet to send, base64 encoded.

udpExpectstring

UDP monitors: text the reply must contain.

domainWarnDaysuint32

Domain monitors: days before expiry at which it turns degraded.

locationsarray of string

The new list of regions. Used only with replaceLocations.

replaceLocationsbool

Set true to replace the regions with locations.

failureThresholduint32optional

Failed checks in a row before an alert. 0 goes back to the default.

cooldownSecondsuint32optional

Seconds between alerts. 0 goes back to the default.

degradedAfterMsuint32optional

The slow-response limit in milliseconds. 0 removes it.

latencyAnomalybooloptional

Turn slow-check alerts on or off.

renotifyIntervalSecondsuint32optional

Reminder interval while an incident is open: 300 to 86400, or 0 for off.

minFailingLocationsuint32optional

How many regions must fail before an alert.

Response fields

monitorMonitor

The monitor.

Fields of Monitor
idstring

The ID.

typeenum

The monitor type, such as CHECK_TYPE_URL.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

namestring

A name you choose.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

locationsarray of string

Regions to check from (see ListRegions). Empty uses the default region.

activatedbool

False while the monitor is paused.

mutedbool

True while alerts are muted. Checks still run.

alertChannelIdsarray of string

IDs of the alert channels to notify.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

muteUntiltimestamp

When the mute ends. Empty if muted until you unmute.

configMonitorConfig

The type-specific settings, such as URL, host or record type.

failureThresholduint32

Failed checks in a row before an alert. 0 uses the default (see GetAlertPolicy).

cooldownSecondsuint32

After an alert, how long before the next one, in seconds. 0 uses the default.

degradedAfterMsuint32

A passing check slower than this is degraded. 0 means no limit.

latencyAnomalybool

Alert when a check is much slower than this monitor usually is.

renotifyIntervalSecondsuint32

While an incident is open, alert again this often. 0 turns reminders off.

minFailingLocationsuint32

How many regions must fail before an alert. 0 or 1 means any one region.

pausedByenum

Who paused it: PAUSED_BY_TEAM, PAUSED_BY_PLAN or PAUSED_BY_STAFF. Empty while it runs.

One of: PAUSED_BY_TEAM, PAUSED_BY_PLAN, PAUSED_BY_STAFF

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/UpdateMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "<monitor-id>",
    "activated": false
  }'

DeleteMonitor

MonitorConfigService

Delete a monitor.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/DeleteMonitor

Request fields

idstring

The ID.

Response fields

None. Send {}.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/DeleteMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "<monitor-id>"
  }'

Lookups

ListRegions

MonitorConfigServiceno key needed

List the regions checks can run from, and the default one. No key needed.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListRegions

Request fields

None. Send {}.

Response fields

regionsarray of string

Every region you can use in locations.

defaultRegionstring

The region used when you name none.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListRegions" \
  -H "Content-Type: application/json" \
  -d '{}'

ListDnsRecordTypes

MonitorConfigServiceno key needed

List the record types a DNS monitor accepts. No key needed.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListDnsRecordTypes

Request fields

None. Send {}.

Response fields

recordTypesarray of string

Every record type a DNS monitor accepts.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListDnsRecordTypes" \
  -H "Content-Type: application/json" \
  -d '{}'

DiscoverMonitors

MonitorConfigServiceno key needed

Give a website address and get suggested monitors for it. No key needed.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/DiscoverMonitors

Request fields

urlstring

Any address on the site.

Response fields

normalizedUrlstring

The address that was checked.

siteTitlestring

The page title of the site.

proposedarray of ProposedMonitor

Suggested URL monitors, each with a live test result.

Fields of ProposedMonitor
namestring

A name you choose.

urlstring

The address to check, with https:// or http://.

methodstring

The HTTP method, such as GET or POST. Default GET.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

assertionsarray of Assertion

Rules the answer must pass, such as a status code. All must pass.

probeProbeResult

The result of a live test request.

sourcestring

Why it was suggested: homepage, health-path or sitemap.

proposedTcparray of ProposedTcpMonitor

Suggested TCP monitors for common ports that answered.

Fields of ProposedTcpMonitor
namestring

A name you choose.

hoststring

A hostname or IP address.

portuint32

The port number.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

connectTimeMsint32

How long the connection took, in milliseconds.

sourcestring

Why it was suggested.

serviceHintstring

What probably runs on the port, such as postgres.

proposedDnsarray of ProposedDnsMonitor

Suggested DNS and mail record monitors.

Fields of ProposedDnsMonitor
namestring

A name you choose.

domainstring

The domain name.

recordTypestring

A, MX, SPF or DMARC.

expectedValuestring

The value to expect: the MX host, the SPF all term (-all) or the DMARC policy (p=reject).

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

lookupTimeMsint32

How long the lookup took, in milliseconds.

sourcestring

Why it was suggested.

proposedCertarray of ProposedCertMonitor

A suggested certificate monitor, if the site uses https.

Fields of ProposedCertMonitor
namestring

A name you choose.

hoststring

A hostname or IP address.

portuint32

The port number.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

daysUntilExpiryint32

Days until the certificate expires. Negative if it has expired.

issuerstring

Who issued the certificate, such as Let's Encrypt.

sourcestring

Why it was suggested.

certWarningCertWarning

Set when the site's certificate has already expired.

Fields of CertWarning
hoststring

A hostname or IP address.

portuint32

The port number.

issuerstring

Who issued the certificate.

daysSinceExpiryuint32

Whole days since expiry, always positive.

proposedDomainarray of ProposedDomainMonitor

A suggested domain registration monitor.

Fields of ProposedDomainMonitor
namestring

A name you choose.

domainstring

The domain name.

intervalSecondsuint32

How often to check, in seconds. Your plan sets the shortest interval allowed.

sourcestring

Why it was suggested.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/DiscoverMonitors" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://acme.io"
  }'

Alert channels

CreateEmailChannel

MonitorConfigService

Create an email alert channel. The address must confirm before alerts are sent.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateEmailChannel

Request fields

namestring

A name you choose.

emailTostring

The email address to alert.

Response fields

channelAlertChannel

The alert channel.

Fields of AlertChannel
idstring

The ID.

typeenum

The channel type, such as ALERT_CHANNEL_TYPE_EMAIL.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

namestring

A name you choose.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

emailTostring

The email address to alert.

emailVerifiedbool

Whether the address confirmed. Nothing is sent to an unconfirmed address.

slackWebhookUrlstring

Slack: the webhook URL. Empty when read with an API key.

webhookUrlstring

Webhook: the URL. Empty when read with an API key.

webhookHeadersmap<string, string>

Webhook: the headers. Values are empty when read with an API key.

webhookSecretstring

Webhook: the signing secret. Empty when read with an API key.

teamsWebhookUrlstring

Teams: the URL. Empty when read with an API key.

discordWebhookUrlstring

Discord: the URL. Empty when read with an API key.

telegramBotTokenstring

Telegram: the bot token. Empty when read with an API key.

telegramChatIdstring

The chat the bot posts to.

pagerdutyRoutingKeystring

PagerDuty: the integration key. Empty when read with an API key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateEmailChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "on-call email",
    "emailTo": "oncall@acme.io"
  }'

CreateSlackChannel

MonitorConfigService

Create a Slack alert channel from an incoming webhook URL.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateSlackChannel

Request fields

namestring

A name you choose.

slackWebhookUrlstring

The Slack incoming webhook URL.

Response fields

channelAlertChannel

The alert channel.

Fields of AlertChannel
idstring

The ID.

typeenum

The channel type, such as ALERT_CHANNEL_TYPE_EMAIL.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

namestring

A name you choose.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

emailTostring

The email address to alert.

emailVerifiedbool

Whether the address confirmed. Nothing is sent to an unconfirmed address.

slackWebhookUrlstring

Slack: the webhook URL. Empty when read with an API key.

webhookUrlstring

Webhook: the URL. Empty when read with an API key.

webhookHeadersmap<string, string>

Webhook: the headers. Values are empty when read with an API key.

webhookSecretstring

Webhook: the signing secret. Empty when read with an API key.

teamsWebhookUrlstring

Teams: the URL. Empty when read with an API key.

discordWebhookUrlstring

Discord: the URL. Empty when read with an API key.

telegramBotTokenstring

Telegram: the bot token. Empty when read with an API key.

telegramChatIdstring

The chat the bot posts to.

pagerdutyRoutingKeystring

PagerDuty: the integration key. Empty when read with an API key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateSlackChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "#alerts",
    "slackWebhookUrl": "https://hooks.slack.com/services/<path>"
  }'

CreateTeamsChannel

MonitorConfigService

Create a Microsoft Teams alert channel from a Workflows URL.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateTeamsChannel

Request fields

namestring

A name you choose.

teamsWebhookUrlstring

The Teams Workflows trigger URL.

Response fields

channelAlertChannel

The alert channel.

Fields of AlertChannel
idstring

The ID.

typeenum

The channel type, such as ALERT_CHANNEL_TYPE_EMAIL.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

namestring

A name you choose.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

emailTostring

The email address to alert.

emailVerifiedbool

Whether the address confirmed. Nothing is sent to an unconfirmed address.

slackWebhookUrlstring

Slack: the webhook URL. Empty when read with an API key.

webhookUrlstring

Webhook: the URL. Empty when read with an API key.

webhookHeadersmap<string, string>

Webhook: the headers. Values are empty when read with an API key.

webhookSecretstring

Webhook: the signing secret. Empty when read with an API key.

teamsWebhookUrlstring

Teams: the URL. Empty when read with an API key.

discordWebhookUrlstring

Discord: the URL. Empty when read with an API key.

telegramBotTokenstring

Telegram: the bot token. Empty when read with an API key.

telegramChatIdstring

The chat the bot posts to.

pagerdutyRoutingKeystring

PagerDuty: the integration key. Empty when read with an API key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateTeamsChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ops team",
    "teamsWebhookUrl": "<workflows-url>"
  }'

CreateDiscordChannel

MonitorConfigService

Create a Discord alert channel from a channel webhook URL.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateDiscordChannel

Request fields

namestring

A name you choose.

discordWebhookUrlstring

The Discord channel webhook URL.

Response fields

channelAlertChannel

The alert channel.

Fields of AlertChannel
idstring

The ID.

typeenum

The channel type, such as ALERT_CHANNEL_TYPE_EMAIL.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

namestring

A name you choose.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

emailTostring

The email address to alert.

emailVerifiedbool

Whether the address confirmed. Nothing is sent to an unconfirmed address.

slackWebhookUrlstring

Slack: the webhook URL. Empty when read with an API key.

webhookUrlstring

Webhook: the URL. Empty when read with an API key.

webhookHeadersmap<string, string>

Webhook: the headers. Values are empty when read with an API key.

webhookSecretstring

Webhook: the signing secret. Empty when read with an API key.

teamsWebhookUrlstring

Teams: the URL. Empty when read with an API key.

discordWebhookUrlstring

Discord: the URL. Empty when read with an API key.

telegramBotTokenstring

Telegram: the bot token. Empty when read with an API key.

telegramChatIdstring

The chat the bot posts to.

pagerdutyRoutingKeystring

PagerDuty: the integration key. Empty when read with an API key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateDiscordChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "#status",
    "discordWebhookUrl": "https://discord.com/api/webhooks/<path>"
  }'

CreateTelegramChannel

MonitorConfigService

Create a Telegram alert channel from a bot token and a chat ID.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateTelegramChannel

Request fields

namestring

A name you choose.

telegramBotTokenstring

The bot token from @BotFather.

telegramChatIdstring

The chat the bot posts to.

Response fields

channelAlertChannel

The alert channel.

Fields of AlertChannel
idstring

The ID.

typeenum

The channel type, such as ALERT_CHANNEL_TYPE_EMAIL.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

namestring

A name you choose.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

emailTostring

The email address to alert.

emailVerifiedbool

Whether the address confirmed. Nothing is sent to an unconfirmed address.

slackWebhookUrlstring

Slack: the webhook URL. Empty when read with an API key.

webhookUrlstring

Webhook: the URL. Empty when read with an API key.

webhookHeadersmap<string, string>

Webhook: the headers. Values are empty when read with an API key.

webhookSecretstring

Webhook: the signing secret. Empty when read with an API key.

teamsWebhookUrlstring

Teams: the URL. Empty when read with an API key.

discordWebhookUrlstring

Discord: the URL. Empty when read with an API key.

telegramBotTokenstring

Telegram: the bot token. Empty when read with an API key.

telegramChatIdstring

The chat the bot posts to.

pagerdutyRoutingKeystring

PagerDuty: the integration key. Empty when read with an API key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateTelegramChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "ops chat",
    "telegramBotToken": "<bot-token>",
    "telegramChatId": "<chat-id>"
  }'

CreatePagerDutyChannel

MonitorConfigService

Create a PagerDuty alert channel from an Events API v2 integration key.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreatePagerDutyChannel

Request fields

namestring

A name you choose.

pagerdutyRoutingKeystring

The Events API v2 integration key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

Response fields

channelAlertChannel

The alert channel.

Fields of AlertChannel
idstring

The ID.

typeenum

The channel type, such as ALERT_CHANNEL_TYPE_EMAIL.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

namestring

A name you choose.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

emailTostring

The email address to alert.

emailVerifiedbool

Whether the address confirmed. Nothing is sent to an unconfirmed address.

slackWebhookUrlstring

Slack: the webhook URL. Empty when read with an API key.

webhookUrlstring

Webhook: the URL. Empty when read with an API key.

webhookHeadersmap<string, string>

Webhook: the headers. Values are empty when read with an API key.

webhookSecretstring

Webhook: the signing secret. Empty when read with an API key.

teamsWebhookUrlstring

Teams: the URL. Empty when read with an API key.

discordWebhookUrlstring

Discord: the URL. Empty when read with an API key.

telegramBotTokenstring

Telegram: the bot token. Empty when read with an API key.

telegramChatIdstring

The chat the bot posts to.

pagerdutyRoutingKeystring

PagerDuty: the integration key. Empty when read with an API key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreatePagerDutyChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "PagerDuty",
    "pagerdutyRoutingKey": "<integration-key>"
  }'

CreateWebhookChannel

MonitorConfigService

Create a webhook alert channel that posts JSON to your URL.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateWebhookChannel

Request fields

namestring

A name you choose.

webhookUrlstring

The URL obsrvly posts alerts to.

webhookHeadersmap<string, string>

Headers sent with each webhook post.

webhookSecretstring

Optional. Used to sign each post so you can check it came from obsrvly.

Response fields

channelAlertChannel

The alert channel.

Fields of AlertChannel
idstring

The ID.

typeenum

The channel type, such as ALERT_CHANNEL_TYPE_EMAIL.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

namestring

A name you choose.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

emailTostring

The email address to alert.

emailVerifiedbool

Whether the address confirmed. Nothing is sent to an unconfirmed address.

slackWebhookUrlstring

Slack: the webhook URL. Empty when read with an API key.

webhookUrlstring

Webhook: the URL. Empty when read with an API key.

webhookHeadersmap<string, string>

Webhook: the headers. Values are empty when read with an API key.

webhookSecretstring

Webhook: the signing secret. Empty when read with an API key.

teamsWebhookUrlstring

Teams: the URL. Empty when read with an API key.

discordWebhookUrlstring

Discord: the URL. Empty when read with an API key.

telegramBotTokenstring

Telegram: the bot token. Empty when read with an API key.

telegramChatIdstring

The chat the bot posts to.

pagerdutyRoutingKeystring

PagerDuty: the integration key. Empty when read with an API key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateWebhookChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my webhook",
    "webhookUrl": "https://acme.io/hooks/obsrvly",
    "webhookSecret": "<secret>"
  }'

GetAlertChannel

MonitorConfigService

Get one alert channel by its ID. With an API key, webhook URLs and tokens come back empty.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/GetAlertChannel

Request fields

idstring

The ID.

Response fields

channelAlertChannel

The alert channel.

Fields of AlertChannel
idstring

The ID.

typeenum

The channel type, such as ALERT_CHANNEL_TYPE_EMAIL.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

namestring

A name you choose.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

emailTostring

The email address to alert.

emailVerifiedbool

Whether the address confirmed. Nothing is sent to an unconfirmed address.

slackWebhookUrlstring

Slack: the webhook URL. Empty when read with an API key.

webhookUrlstring

Webhook: the URL. Empty when read with an API key.

webhookHeadersmap<string, string>

Webhook: the headers. Values are empty when read with an API key.

webhookSecretstring

Webhook: the signing secret. Empty when read with an API key.

teamsWebhookUrlstring

Teams: the URL. Empty when read with an API key.

discordWebhookUrlstring

Discord: the URL. Empty when read with an API key.

telegramBotTokenstring

Telegram: the bot token. Empty when read with an API key.

telegramChatIdstring

The chat the bot posts to.

pagerdutyRoutingKeystring

PagerDuty: the integration key. Empty when read with an API key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/GetAlertChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "<channel-id>"
  }'

ListAlertChannels

MonitorConfigService

List your alert channels, one page at a time.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListAlertChannels

Request fields

limituint32

Page size, 1 to 200. Any other value uses 50.

cursorstring

Leave empty for the first page. Then send the nextCursor from the last answer.

Response fields

channelsarray of AlertChannel

The alert channels.

Fields of AlertChannel
idstring

The ID.

typeenum

The channel type, such as ALERT_CHANNEL_TYPE_EMAIL.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

namestring

A name you choose.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

emailTostring

The email address to alert.

emailVerifiedbool

Whether the address confirmed. Nothing is sent to an unconfirmed address.

slackWebhookUrlstring

Slack: the webhook URL. Empty when read with an API key.

webhookUrlstring

Webhook: the URL. Empty when read with an API key.

webhookHeadersmap<string, string>

Webhook: the headers. Values are empty when read with an API key.

webhookSecretstring

Webhook: the signing secret. Empty when read with an API key.

teamsWebhookUrlstring

Teams: the URL. Empty when read with an API key.

discordWebhookUrlstring

Discord: the URL. Empty when read with an API key.

telegramBotTokenstring

Telegram: the bot token. Empty when read with an API key.

telegramChatIdstring

The chat the bot posts to.

pagerdutyRoutingKeystring

PagerDuty: the integration key. Empty when read with an API key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

nextCursorstring

Send this as cursor to get the next page. Empty on the last page.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListAlertChannels" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 50
  }'

UpdateAlertChannel

MonitorConfigService

Change an alert channel. Only the fields you send change.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/UpdateAlertChannel

Request fields

idstring

The ID.

namestringoptional

A name you choose.

emailTostringoptional

The email address to alert.

slackWebhookUrlstringoptional

The Slack incoming webhook URL.

webhookUrlstringoptional

The URL obsrvly posts alerts to.

webhookHeadersmap<string, string>

Headers sent with each webhook post.

replaceWebhookHeadersbool

Set true to replace the webhook headers with webhookHeaders.

webhookSecretstringoptional

Optional. Used to sign each post so you can check it came from obsrvly.

teamsWebhookUrlstringoptional

The Teams Workflows trigger URL.

discordWebhookUrlstringoptional

The Discord channel webhook URL.

telegramBotTokenstringoptional

The bot token from @BotFather.

telegramChatIdstringoptional

The chat the bot posts to.

pagerdutyRoutingKeystringoptional

The Events API v2 integration key.

pagerdutyEubooloptional

True if your PagerDuty account is in the EU region.

Response fields

channelAlertChannel

The alert channel.

Fields of AlertChannel
idstring

The ID.

typeenum

The channel type, such as ALERT_CHANNEL_TYPE_EMAIL.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

namestring

A name you choose.

createdAttimestamp

When it was created.

updatedAttimestamp

When it last changed.

emailTostring

The email address to alert.

emailVerifiedbool

Whether the address confirmed. Nothing is sent to an unconfirmed address.

slackWebhookUrlstring

Slack: the webhook URL. Empty when read with an API key.

webhookUrlstring

Webhook: the URL. Empty when read with an API key.

webhookHeadersmap<string, string>

Webhook: the headers. Values are empty when read with an API key.

webhookSecretstring

Webhook: the signing secret. Empty when read with an API key.

teamsWebhookUrlstring

Teams: the URL. Empty when read with an API key.

discordWebhookUrlstring

Discord: the URL. Empty when read with an API key.

telegramBotTokenstring

Telegram: the bot token. Empty when read with an API key.

telegramChatIdstring

The chat the bot posts to.

pagerdutyRoutingKeystring

PagerDuty: the integration key. Empty when read with an API key.

pagerdutyEubool

True if your PagerDuty account is in the EU region.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/UpdateAlertChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "<channel-id>",
    "name": "on-call email"
  }'

DeleteAlertChannel

MonitorConfigService

Delete an alert channel.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/DeleteAlertChannel

Request fields

idstring

The ID.

Response fields

None. Send {}.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/DeleteAlertChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "<channel-id>"
  }'

ResendEmailVerification

MonitorConfigService

Send a new confirmation email for an email channel that is not confirmed yet.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ResendEmailVerification

Request fields

channelIdstring

The email channel ID. At most one email per 10 minutes and five per day.

Response fields

None. Send {}.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ResendEmailVerification" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "channelId": "<channel-id>"
  }'

Secrets

CreateSecret

MonitorConfigService

Store a secret (a password or token) for browser and API monitors, and the sites it may be sent to.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateSecret

Request fields

namestring

The secret name, used as ${NAME} in browser scripts and API requests. A capital letter, then up to 63 capital letters, digits or underscores.

valuestring

The secret value.

allowedHostsarray of string

Required. 1 to 20 sites the secret may be typed into: hostnames or *.domain.

Response fields

secretSecret

The new secret, without its value.

Fields of Secret
idstring

The ID.

namestring

The secret name. Unique in your team.

createdAttimestamp

When it was created.

createdBystring

Who created it.

allowedHostsarray of string

The sites the secret may be typed into.

valuestring

The value you sent. It is returned this once and never again.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateSecret" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "LOGIN_PASSWORD",
    "value": "<value>",
    "allowedHosts": ["acme.io"]
  }'

ListSecrets

MonitorConfigService

List your secrets. Values are never returned.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListSecrets

Request fields

None. Send {}.

Response fields

secretsarray of Secret

The secrets, without values.

Fields of Secret
idstring

The ID.

namestring

The secret name. Unique in your team.

createdAttimestamp

When it was created.

createdBystring

Who created it.

allowedHostsarray of string

The sites the secret may be typed into.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListSecrets" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

DeleteSecret

MonitorConfigService

Delete a secret.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/DeleteSecret

Request fields

idstring

The ID.

Response fields

None. Send {}.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/DeleteSecret" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "<secret-id>"
  }'

Maintenance

CreateMaintenanceWindow

MonitorConfigService

Plan a maintenance window. Monitors in it do not alert.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateMaintenanceWindow

Request fields

namestring

A name you choose.

startsAttimestamp

When it starts.

endsAttimestamp

When it ends.

monitorIdsarray of string

The monitors it covers. Empty means every monitor.

Response fields

windowMaintenanceWindow

The new maintenance window.

Fields of MaintenanceWindow
idstring

The ID.

namestring

A name you choose.

startsAttimestamp

When it starts.

endsAttimestamp

When it ends.

monitorIdsarray of string

The monitors it covers. Empty means every monitor.

allTeamsbool

True for obsrvly's own maintenance. You cannot delete it.

createdBystring

Who created it.

createdAttimestamp

When it was created.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/CreateMaintenanceWindow" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "database upgrade",
    "startsAt": "2026-11-01T02:00:00Z",
    "endsAt": "2026-11-01T03:00:00Z",
    "monitorIds": ["<monitor-id>"]
  }'

ListMaintenanceWindows

MonitorConfigService

List your maintenance windows that have not ended, soonest first.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListMaintenanceWindows

Request fields

None. Send {}.

Response fields

windowsarray of MaintenanceWindow

The maintenance windows, soonest first.

Fields of MaintenanceWindow
idstring

The ID.

namestring

A name you choose.

startsAttimestamp

When it starts.

endsAttimestamp

When it ends.

monitorIdsarray of string

The monitors it covers. Empty means every monitor.

allTeamsbool

True for obsrvly's own maintenance. You cannot delete it.

createdBystring

Who created it.

createdAttimestamp

When it was created.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/ListMaintenanceWindows" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

DeleteMaintenanceWindow

MonitorConfigService

Delete a maintenance window.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/DeleteMaintenanceWindow

Request fields

idstring

The ID.

Response fields

None. Send {}.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/DeleteMaintenanceWindow" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "<window-id>"
  }'

Status page

GetStatusPage

MonitorConfigService

Get your status page settings.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/GetStatusPage

Request fields

None. Send {}.

Response fields

pageStatusPage

Your status page settings. Empty before the first save.

Fields of StatusPage
enabledbool

True when the page is public.

slugstring

The page address, /status/<slug>. 3 to 40 lowercase letters, digits and hyphens.

titlestring

The page title.

descriptionstring

Optional. Up to 280 characters.

monitorsarray of StatusPageMonitor

The monitors shown, in page order. At most 50.

updatedAttimestamp

When it last changed.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/GetStatusPage" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

SaveStatusPage

MonitorConfigService

Save your status page settings. This replaces all of them.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/SaveStatusPage

Request fields

pageStatusPage

The full settings. updatedAt is ignored.

Fields of StatusPage
enabledbool

True when the page is public.

slugstring

The page address, /status/<slug>. 3 to 40 lowercase letters, digits and hyphens.

titlestring

The page title.

descriptionstring

Optional. Up to 280 characters.

monitorsarray of StatusPageMonitor

The monitors shown, in page order. At most 50.

updatedAttimestamp

When it last changed.

Response fields

pageStatusPage

The saved settings.

Fields of StatusPage
enabledbool

True when the page is public.

slugstring

The page address, /status/<slug>. 3 to 40 lowercase letters, digits and hyphens.

titlestring

The page title.

descriptionstring

Optional. Up to 280 characters.

monitorsarray of StatusPageMonitor

The monitors shown, in page order. At most 50.

updatedAttimestamp

When it last changed.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/SaveStatusPage" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "page": {"enabled": true, "slug": "acme", "title": "Acme status", "monitors": [{"monitorId": "<monitor-id>", "publicName": "Website"}]}
  }'

GetPublicStatusPage

MonitorConfigServiceno key needed

Get what visitors see on a public status page. No key needed.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/GetPublicStatusPage

Request fields

slugstring

The status page address part, as in /status/<slug>.

Response fields

titlestring

The page title.

descriptionstring

The page description.

monitorsarray of PublicStatusMonitor

The monitors shown, in page order.

Fields of PublicStatusMonitor
keystring

A public key for the monitor, used instead of its ID.

namestring

A name you choose.

pausedbool

True when the monitor is paused.

maintenancearray of PublicMaintenance

Planned maintenance that has not ended, soonest first.

Fields of PublicMaintenance
titlestring

The maintenance title.

startsAttimestamp

When it starts.

endsAttimestamp

When it ends.

monitorKeysarray of string

The monitors it covers. Empty means all on the page.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/GetPublicStatusPage" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "acme"
  }'

Plan limits

GetPlanLimitUsage

MonitorConfigService

Get each plan limit and how much of it your team uses.

POSThttps://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/GetPlanLimitUsage

Request fields

None. Send {}.

Response fields

limitsarray of PlanLimitUsage

Every limit in force for your team. A limit your plan does not set is left out.

Fields of PlanLimitUsage
kindenum

Which limit.

One of: PLAN_LIMIT_MONITORS, PLAN_LIMIT_BROWSER_MONITORS, PLAN_LIMIT_ALERT_CHANNELS, PLAN_LIMIT_SECRETS, PLAN_LIMIT_API_KEYS, PLAN_LIMIT_MAINTENANCE_WINDOWS, PLAN_LIMIT_BROWSER_RUNS

useduint32

How much your team uses now.

limituint32

The limit for your team.

levelenum

NEARING from 80% of the limit, REACHED at 100%. Empty below 80%.

One of: PLAN_LIMIT_LEVEL_NEARING, PLAN_LIMIT_LEVEL_REACHED

overageCentsPer1kuint32

Run allowances only: US cents per 1,000 runs past the limit.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService/GetPlanLimitUsage" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Results

ListExecutions

ResultService

List the recent check results of one monitor, newest first.

POSThttps://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/ListExecutions

Request fields

monitorIdstring

The monitor ID.

limituint32

Page size, 1 to 1000. Any other value uses 50.

cursorstring

Leave empty for the first page. Then send the nextCursor from the last answer.

statusFilterenum

Optional. Return only checks with this status, such as CHECK_STATUS_DOWN.

One of: CHECK_STATUS_UP, CHECK_STATUS_DOWN, CHECK_STATUS_DEGRADED

Response fields

executionsarray of Execution

The check results, newest first.

Fields of Execution
monitorIdstring

The monitor ID.

executionIdstring

The ID of one check result.

typeenum

The monitor type.

One of: CHECK_TYPE_URL, CHECK_TYPE_TCP, CHECK_TYPE_DNS, CHECK_TYPE_API, CHECK_TYPE_BROWSER, CHECK_TYPE_HEARTBEAT, CHECK_TYPE_CERT, CHECK_TYPE_UDP, CHECK_TYPE_DOMAIN, CHECK_TYPE_PING

statusenum

UP, DOWN or DEGRADED.

One of: CHECK_STATUS_UP, CHECK_STATUS_DOWN, CHECK_STATUS_DEGRADED

responseTimeMsint32

How long the check took, in milliseconds.

statusCodeint32optional

The HTTP status code, when there is one.

errorMessagestringoptional

Why the check failed.

locationstring

The region the check ran from.

executedAttimestamp

When the check ran.

metadataJsonstring

Extra details as JSON, such as the steps of a browser check.

scheduledAttimestamp

The scheduled run this check belongs to. The same for every region of one run.

nextCursorstring

Send this as cursor to get the next page. Empty on the last page.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/ListExecutions" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "monitorId": "<monitor-id>",
    "limit": 20,
    "statusFilter": "CHECK_STATUS_DOWN"
  }'

GetMonitorSummary

ResultService

Get uptime and response times of one monitor over a time window.

POSThttps://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/GetMonitorSummary

Request fields

monitorIdstring

The monitor ID.

windowenum

The time window: SUMMARY_WINDOW_1H, _24H, _7D or _30D.

One of: SUMMARY_WINDOW_24H, SUMMARY_WINDOW_7D, SUMMARY_WINDOW_30D, SUMMARY_WINDOW_1H

Response fields

summaryMonitorSummary

The summary.

Fields of MonitorSummary
monitorIdstring

The monitor ID.

totalChecksuint32

Checks in the window.

successfulChecksuint32

Checks that passed.

uptimePctnumber

Uptime from 0 to 100, or -1 when nothing was measured.

p50Msint32

Median response time.

p95Msint32

95th percentile response time.

p99Msint32

99th percentile response time.

lastCheckAttimestamp

When the last check ran.

lastStatusenum

The status of the last check.

One of: CHECK_STATUS_UP, CHECK_STATUS_DOWN, CHECK_STATUS_DEGRADED

lastResponseTimeMsint32

The response time of the last check.

lastStatusCodeint32

The status code of the last check. 0 if none.

evaluatedChecksuint32

Checks that reached a result about your site. Uptime is counted over these.

overduebool

True when an active monitor has gone too long without a result.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/GetMonitorSummary" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "monitorId": "<monitor-id>",
    "window": "SUMMARY_WINDOW_24H"
  }'

ListMonitorSummaries

ResultService

Get uptime and response times of many monitors in one call.

POSThttps://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/ListMonitorSummaries

Request fields

monitorIdsarray of string

The monitors. An empty list returns nothing.

windowenum

The time window: SUMMARY_WINDOW_1H, _24H, _7D or _30D.

One of: SUMMARY_WINDOW_24H, SUMMARY_WINDOW_7D, SUMMARY_WINDOW_30D, SUMMARY_WINDOW_1H

Response fields

summariesarray of MonitorSummary

One summary per monitor.

Fields of MonitorSummary
monitorIdstring

The monitor ID.

totalChecksuint32

Checks in the window.

successfulChecksuint32

Checks that passed.

uptimePctnumber

Uptime from 0 to 100, or -1 when nothing was measured.

p50Msint32

Median response time.

p95Msint32

95th percentile response time.

p99Msint32

99th percentile response time.

lastCheckAttimestamp

When the last check ran.

lastStatusenum

The status of the last check.

One of: CHECK_STATUS_UP, CHECK_STATUS_DOWN, CHECK_STATUS_DEGRADED

lastResponseTimeMsint32

The response time of the last check.

lastStatusCodeint32

The status code of the last check. 0 if none.

evaluatedChecksuint32

Checks that reached a result about your site. Uptime is counted over these.

overduebool

True when an active monitor has gone too long without a result.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/ListMonitorSummaries" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "monitorIds": ["<monitor-id>", "<monitor-id-2>"],
    "window": "SUMMARY_WINDOW_7D"
  }'

GetMonitorSeries

ResultService

Get response times and failures of one monitor in time buckets, for a chart.

POSThttps://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/GetMonitorSeries

Request fields

monitorIdstring

The monitor ID.

windowenum

The time window: SUMMARY_WINDOW_1H, _24H, _7D or _30D.

One of: SUMMARY_WINDOW_24H, SUMMARY_WINDOW_7D, SUMMARY_WINDOW_30D, SUMMARY_WINDOW_1H

bucketSecondsuint32

Bucket size in seconds, for example 300 for 5 minutes.

Response fields

pointsarray of TimeSeriesPoint

One point per time bucket, oldest first.

Fields of TimeSeriesPoint
ttimestamp

The start of the bucket.

avgMsint32

Average response time in the bucket.

downCountint32

Failed checks in the bucket.

totalint32

All checks in the bucket.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/GetMonitorSeries" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "monitorId": "<monitor-id>",
    "window": "SUMMARY_WINDOW_24H",
    "bucketSeconds": 300
  }'

GetGlobalSeries

ResultService

Get response times and failures across many monitors in time buckets.

POSThttps://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/GetGlobalSeries

Request fields

monitorIdsarray of string

The monitors to combine. An empty list returns nothing.

windowenum

The time window: SUMMARY_WINDOW_1H, _24H, _7D or _30D.

One of: SUMMARY_WINDOW_24H, SUMMARY_WINDOW_7D, SUMMARY_WINDOW_30D, SUMMARY_WINDOW_1H

bucketSecondsuint32

Bucket size in seconds, for example 300 for 5 minutes.

Response fields

pointsarray of TimeSeriesPoint

One point per time bucket, oldest first.

Fields of TimeSeriesPoint
ttimestamp

The start of the bucket.

avgMsint32

Average response time in the bucket.

downCountint32

Failed checks in the bucket.

totalint32

All checks in the bucket.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/GetGlobalSeries" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "monitorIds": ["<monitor-id>", "<monitor-id-2>"],
    "window": "SUMMARY_WINDOW_24H",
    "bucketSeconds": 300
  }'

GetPublicStatus

ResultServiceno key needed

Get the current status and 90 days of uptime for a public status page. No key needed.

POSThttps://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/GetPublicStatus

Request fields

slugstring

The status page address part, as in /status/<slug>.

Response fields

monitorsarray of PublicMonitorStatus

One entry per monitor on the page.

Fields of PublicMonitorStatus
keystring

The monitor key from GetPublicStatusPage.

statusenum

The current status.

One of: CHECK_STATUS_UP, CHECK_STATUS_DOWN, CHECK_STATUS_DEGRADED

uptimePctnumber

Uptime over 90 days, from 0 to 100, or -1 when nothing was measured.

daysarray of PublicUptimeDay

90 days of daily uptime, oldest first.

noRecentDatabool

True when the monitor should have been checked by now and was not.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/result/obsrvly.v1.ResultService/GetPublicStatus" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "acme"
  }'

Incidents

ListIncidents

AlertService

List incidents, open or resolved, one page at a time.

POSThttps://www.obsrvly.com/api/gw/alert/obsrvly.v1.AlertService/ListIncidents

Request fields

limituint32

Page size, 1 to 200. Any other value uses 50.

cursorstring

Leave empty for the first page. Then send the nextCursor from the last answer.

statusstring

Optional. "firing" for open incidents, "resolved" for closed ones. Empty for all.

Response fields

incidentsarray of IncidentRecord

The incidents.

Fields of IncidentRecord
alertIdstring

The incident ID.

monitorIdstring

The monitor ID.

monitorNamestring

The monitor name.

monitorUrlstring

What the monitor checks: URL, host:port or domain.

firedAttimestamp

When the incident opened.

resolvedAttimestamp

When it resolved. Empty while open.

durationSecondsuint64 (string)

How long it lasted, in seconds. While open, how long it has lasted so far.

consecutiveFailuresuint32

Failed checks in a row.

lastErrorstring

The last error.

statusstring

"firing" or "resolved".

acknowledgedAttimestamp

When someone acknowledged it.

acknowledgedBystring

Who acknowledged it.

nextCursorstring

Send this as cursor to get the next page. Empty on the last page.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/alert/obsrvly.v1.AlertService/ListIncidents" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "firing",
    "limit": 50
  }'

AcknowledgeIncident

AlertService

Mark an open incident as picked up. Reminders for it stop.

POSThttps://www.obsrvly.com/api/gw/alert/obsrvly.v1.AlertService/AcknowledgeIncident

Request fields

alertIdstring

The incident ID.

Response fields

incidentIncidentRecord

The incident, now acknowledged.

Fields of IncidentRecord
alertIdstring

The incident ID.

monitorIdstring

The monitor ID.

monitorNamestring

The monitor name.

monitorUrlstring

What the monitor checks: URL, host:port or domain.

firedAttimestamp

When the incident opened.

resolvedAttimestamp

When it resolved. Empty while open.

durationSecondsuint64 (string)

How long it lasted, in seconds. While open, how long it has lasted so far.

consecutiveFailuresuint32

Failed checks in a row.

lastErrorstring

The last error.

statusstring

"firing" or "resolved".

acknowledgedAttimestamp

When someone acknowledged it.

acknowledgedBystring

Who acknowledged it.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/alert/obsrvly.v1.AlertService/AcknowledgeIncident" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "alertId": "<incident-id>"
  }'

ListEvaluations

AlertService

See why recent failed checks of a monitor did or did not alert anyone.

POSThttps://www.obsrvly.com/api/gw/alert/obsrvly.v1.AlertService/ListEvaluations

Request fields

monitorIdstring

The monitor ID.

limituint32

How many to return, 1 to 1000. Any other value uses 200.

windowSecondsuint32

How far back to look, in seconds. Default 24 hours.

Response fields

evaluationsarray of EvaluationRecord

One entry per failed check, newest first. Passing checks are left out.

Fields of EvaluationRecord
executionIdstring

The check result this is about (see ListExecutions).

evaluatedAttimestamp

When the decision was made.

outcomestring

What happened, such as below_threshold, cooldown, fired, fired_muted, fired_maintenance or reminder_sent.

consecutiveFailuresuint32

Failed checks in a row at that time.

thresholdApplieduint32

The failure threshold in force at that time.

cooldownSecondsApplieduint32

The cooldown in force at that time.

mutedbooloptional

Whether the monitor was muted.

muteUntiltimestamp

When the mute was set to end.

alertIdstring

The incident this check opened or reminded about, if any.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/alert/obsrvly.v1.AlertService/ListEvaluations" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "monitorId": "<monitor-id>"
  }'

GetAlertPolicy

AlertService

Get how many failures it takes to alert, and how long until the next alert.

POSThttps://www.obsrvly.com/api/gw/alert/obsrvly.v1.AlertService/GetAlertPolicy

Request fields

monitorIdstring

Optional. Get the values for this monitor.

Response fields

failureThresholduint32

Failed checks in a row before an alert.

cooldownSecondsuint32

Seconds after an alert before the same monitor can alert again.

configurablebool

True when a monitor can set its own threshold and cooldown.

certWarnDaysarray of uint32

Days before expiry at which certificate warnings are sent, highest first.

platformFailureThresholduint32

obsrvly's default threshold.

platformCooldownSecondsuint32

obsrvly's default cooldown.

teamFailureThresholduint32

Your team's default threshold, if set.

teamCooldownSecondsuint32

Your team's default cooldown, if set.

canEditTeamPolicybool

Always false with an API key. Team defaults are changed in the dashboard.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/alert/obsrvly.v1.AlertService/GetAlertPolicy" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "monitorId": "<monitor-id>"
  }'

ListPublicIncidents

AlertServiceno key needed

List the incidents shown on a public status page. No key needed.

POSThttps://www.obsrvly.com/api/gw/alert/obsrvly.v1.AlertService/ListPublicIncidents

Request fields

slugstring

The status page address part, as in /status/<slug>.

Response fields

incidentsarray of PublicIncident

Open incidents, and ones resolved in the last 14 days. Newest first.

Fields of PublicIncident
monitorKeystring

The monitor key from GetPublicStatusPage.

startedAttimestamp

When it started.

resolvedAttimestamp

When it resolved. Empty while open.

acknowledgedbool

True when someone is on it.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/alert/obsrvly.v1.AlertService/ListPublicIncidents" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "acme"
  }'

Notifications

ListNotifications

NotificationService

List the alerts obsrvly sent, and whether each one was delivered.

POSThttps://www.obsrvly.com/api/gw/notification/obsrvly.v1.NotificationService/ListNotifications

Request fields

limituint32

Page size, 1 to 200. Any other value uses 50.

cursorstring

Leave empty for the first page. Then send the nextCursor from the last answer.

monitorIdstring

Optional. Only alerts for this monitor.

Response fields

recordsarray of NotificationRecord

The alerts sent, newest first.

Fields of NotificationRecord
idstring

The ID.

monitorIdstring

The monitor ID.

alertIdstring

The incident ID.

channelIdstring

The alert channel ID.

channelTypeenum

The channel type.

One of: ALERT_CHANNEL_TYPE_EMAIL, ALERT_CHANNEL_TYPE_SLACK, ALERT_CHANNEL_TYPE_WEBHOOK, ALERT_CHANNEL_TYPE_TEAMS, ALERT_CHANNEL_TYPE_DISCORD, ALERT_CHANNEL_TYPE_TELEGRAM, ALERT_CHANNEL_TYPE_PAGERDUTY

channelNamestring

The channel name.

eventstring

"fire", "resolved", "reminder" or "acknowledged".

statusstring

"sent", "failed" or "skipped".

errorMessagestring

The error, when it failed.

sentAttimestamp

When it was sent.

subjectstring

The subject or title that was sent.

bodystring

The message that was sent.

nextCursorstring

Send this as cursor to get the next page. Empty on the last page.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/notification/obsrvly.v1.NotificationService/ListNotifications" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 50
  }'

TestChannel

NotificationService

Send a test alert to one channel and see what happened.

POSThttps://www.obsrvly.com/api/gw/notification/obsrvly.v1.NotificationService/TestChannel

Request fields

channelIdstring

The alert channel ID.

Response fields

statusstring

"sent" or "failed".

errorMessagestring

When it failed: the error from the provider, such as Slack.

subjectstring

The subject or title that was sent.

bodystring

The message that was sent.

notificationIdstring

The entry this test added to the notification log.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/notification/obsrvly.v1.NotificationService/TestChannel" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "channelId": "<channel-id>"
  }'

Runs

TriggerNow

SchedulerService

Run a monitor check now, outside its schedule. Once per monitor every 30 seconds.

POSThttps://www.obsrvly.com/api/gw/scheduler/obsrvly.v1.SchedulerService/TriggerNow

Request fields

monitorIdstring

The monitor ID.

locationstring

Optional. The region to run from. Default: the monitor's first region.

Response fields

executionIdstring

An ID for the request, not for the result. Read the result with ListExecutions.

locationstring

The region the check runs from.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/scheduler/obsrvly.v1.SchedulerService/TriggerNow" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "monitorId": "<monitor-id>"
  }'

GetSchedule

SchedulerService

Get when a monitor last ran and when it runs next.

POSThttps://www.obsrvly.com/api/gw/scheduler/obsrvly.v1.SchedulerService/GetSchedule

Request fields

monitorIdstring

The monitor ID.

Response fields

monitorIdstring

The monitor ID.

intervalSecondsuint32

How often the monitor runs, in seconds.

activatedbool

False while paused.

nextRunAtstring

When it runs next (RFC 3339).

lastRunAtstring

When it last ran (RFC 3339). Empty if never.

Request
bash
curl -s "https://www.obsrvly.com/api/gw/scheduler/obsrvly.v1.SchedulerService/GetSchedule" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "monitorId": "<monitor-id>"
  }'

Dashboard only

These calls exist but refuse an API key. Use the dashboard for them (see 13.2):

  • CreateApiKey
  • ListApiKeys
  • DeleteApiKey
  • ListAuditEvents
  • UpdateSecretHosts
  • SetTeamAlertPolicy