Concepts

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.

FieldNotes
urlFull URL with scheme, e.g. https://api.example.com/health.
methodOne of GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS. Default GET.
expected_statusStatus code that counts as healthy. Default 200.
timeout_msHard 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

FieldRangeDescription
interval_secondsFree: 180 – 86400; Pro: 30 – 86400; Business: 10 – 86400How often to check.
timeout_ms1000 – 60000Hard timeout per attempt.
regionsarray of region IDsSee regions. Default ["global"].
is_activebooleanSet 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