Monitor types
Config fields per monitor type, as the API validates them.
Monitor types
Five monitor types are live: HTTP, TCP, ping, DNS and heartbeat. A sixth, browser, has a config shape declared in the API schema for forward compatibility, but no prober module executes it and no browser monitor can run a check today, so it is not documented here.
type is set once at creation and cannot be changed afterward. config is a
JSON object whose shape depends on type. The API rejects an unknown field
for the type you picked with a 422.
Each of the sections below was created against a real cluster during this
page's review (POST /api/v1/me/monitors, one call per type) and reached
up within one probe cycle.
HTTP
{
"name": "Production API",
"type": "http",
"url": "https://example.com/health",
"interval_seconds": 300,
"config": {
"method": "GET",
"timeout_ms": 30000,
"expected_status": [200, 201],
"expected_body": null,
"headers": { "Authorization": "Bearer ..." },
"body": null,
"follow_redirects": true,
"verify_ssl": true
}
}url must start with http:// or https://. expected_status defaults to
treating any 2xx as success when omitted.
TCP
{
"name": "Postgres port",
"type": "tcp",
"url": "db.example.com:5432",
"interval_seconds": 300,
"config": { "timeout_ms": 5000, "port": 5432 }
}url carries host:port together, split on the last colon so an IPv6 host
still works. config.port is accepted but nothing reads it back out. The
port that is actually probed is the one in url.
Ping
{
"name": "Edge node",
"type": "ping",
"url": "8.8.8.8",
"interval_seconds": 300,
"config": { "timeout_ms": 5000 }
}url is a bare hostname or IP. No scheme, no port, no path: either one makes
creation fail with a validation error.
DNS
{
"name": "Apex A record",
"type": "dns",
"url": "example.com",
"interval_seconds": 300,
"config": {
"record_type": "A",
"expected_value": null,
"nameserver": null
}
}url is a bare domain name, the same rule as ping. record_type is one of
A, AAAA, CNAME, MX, TXT, NS. Leaving expected_value unset checks
resolution only; setting it also checks the resolved value matches.
Heartbeat
Heartbeat monitors take no url and are covered on their own page, since
creating one is only half the story: Heartbeat monitors.
SSRF guard on every type but heartbeat
url is checked before it is stored: a hostname that resolves to a private,
loopback, link-local or otherwise reserved address is rejected, for every
type that takes one. There is no override for this in the current API.
Common fields
| Field | Notes |
|---|---|
name | 1-255 chars, unique within the organization |
interval_seconds | 10-3600, floored by your plan (see Monitors) |
service_id | Optional. Soft-binds the monitor to a service catalog entry, see Binding to services |
tags is not a field on monitor creation or update. See
Tags for what tag management covers today.