Monitor types
HTTP, Ping, TCP, UDP, DNS, Keyword — when to use each and how they behave.
A monitor is one declared check that runs on a recurring interval. The monitor_type field on the resource picks the protocol. Each type interprets url, port, and (for HTTP) expected_status slightly differently.
HTTP / HTTPS
monitor_type: "http"
Sends a request to the URL and verifies the response status code. Enable SSL certificate expiry monitoring for HTTPS URLs when available on your plan. Expiry warnings are separate from target Down incidents.
| Field | Notes |
|---|---|
url | Full URL with scheme, e.g. https://api.example.com/health. |
method | One of GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS. Default GET. |
expected_status | Status code that counts as healthy. Default 200. |
timeout_ms | Hard timeout. Default 10000, max 60000. |
Available on all plans.
Keyword
monitor_type: "keyword"
Fetches the URL and verifies a configured substring is present in the response body. Use to catch "200 OK with a stale page" failures.
Available on Pro+.
Ping (ICMP)
monitor_type: "ping"
Sends ICMP echo requests to verify the host is reachable. No port, no body — just liveness.
Available on all plans.
TCP
monitor_type: "tcp"
Opens a TCP connection to host:port and immediately closes. Useful for databases, mail servers, custom services where you only care that the port accepts connections.
port is required (1–65535).
Available on Pro+.
UDP
monitor_type: "udp"
Sends an ASCII ping datagram and requires a ping or pong echo response before the read deadline. Use it only with a service that implements this echo contract. It does not implement DNS, game-server, VoIP, or other application-specific UDP protocols.
port is required.
Available on Business+.
DNS
monitor_type: "dns"
Resolves the configured hostname. Checks use the worker's resolver; DNS infrastructure errors are inconclusive rather than proof that the target is Down.
Available on Pro+.
Common configuration
| Field | Range | Description |
|---|---|---|
interval_seconds | Free: 180 – 86400; Pro: 30 – 86400; Business: 10 – 86400 | How often to check. |
timeout_ms | 1000 – 60000 | Hard timeout per attempt. |
regions | array of region IDs | See regions. Default ["global"]. |
is_active | boolean | Set false to pause without deleting. |
What happens on failure
Configured fresh regional verification confirms an incident. A deliberately selected single-region check can confirm a local failure; missing workers and inconclusive observations do not confirm Down.
SSRF protection
For HTTP, TCP, UDP and Keyword monitors, internal/private addresses are rejected at create/update time:
localhost,127.0.0.0/8,::1- Private IPv4:
10/8,172.16/12,192.168/16 - Private IPv6:
fc00::/7,fe80::/10 - Cloud metadata:
169.254.169.254
You'll receive 400 Validation failed if you pass one of these.
Next
- Wire up notifications.
- Learn how incidents are opened and resolved.
- Check the API reference for the create payload.