When to use it
- Website or API availability and response time
- Health-check endpoints (
/health) - Web services that need custom headers, a request body or a specific status code
- Tracking SSL certificate and domain expiry for a site (see below)
Create an HTTP monitor
1
Set the basics
Enter a name and the URL to monitor, then choose the check interval and timeout.
2
Choose probe locations
UptimeIO checks from multiple probe locations. On Pro and Scale you can choose which locations run your regular checks (at least one). On Free, locations are selected automatically.
3
Configure the request
Set the method, headers, body and expected status codes (see below).
4
Attach notification channels
Choose where alerts go. See Notifications.
Settings
Targets that are private or internal are rejected with a
VALIDATION_ERROR: localhost, private IP ranges (10.x, 172.16-31.x, 192.168.x, 127.x and similar), and names ending in .local, .internal or .lan. UptimeIO’s own domains and test domains such as example.com are rejected too.Example
read_write scope. See Create Monitor for the full request and response.
Status codes and redirects
A check succeeds only when the response status is inexpected_status_codes. If you do not set it, only 200 counts as success. Set the list explicitly for other codes, for example [200, 201, 204]. Ranges are not supported; list each code.
Authentication
Send credentials as request headers:Slow response alerts
Sethttp_config.slow_response_threshold_ms to open a separate slow response incident when a check takes longer than the threshold. It resolves when the response time stays below 80% of the threshold for 3 consecutive checks. A monitor can be up and still have an open slow-response incident.
SSL certificate monitoring
Turn onssl_monitoring for HTTPS targets to track certificate health.
What happens:
- Warnings: at each selected threshold (30, 15, 7 or 1 days before expiry) a warning is sent to the monitor’s notification channels. Warnings do not open an incident, because the site is still up.
- Expired or invalid certificate: opens an incident, which resolves automatically once a valid certificate is served.
Domain expiry monitoring
Turn ondomain_monitoring to be warned before the domain registration runs out.
- Available for HTTP, Keyword and DNS monitors.
- The target must be on a publicly registered domain. IP addresses,
localhostand internal names are rejected with aVALIDATION_ERROR. - UptimeIO looks up the registration through RDAP (the registry lookup protocol) and evaluates warnings every hour against the stored expiry date.
- Warnings go to the monitor’s notification channels at 30, 15, 7 and 1 days (only the values you select; all four by default). They do not open an incident.
- Subdomains are checked against their registrable domain:
app.example.comis checked asexample.com. A subdomain of a shared platform domain such asmyapp.vercel.appis checked against the platform’s domain, not yours. - Some country-code registries do not publish an expiry date. Those domains show as not published and never produce warnings.
GET /api/monitors/{id}/domain-info returns domain, status, expires_at, days_until_expiry and registrar.
Response time breakdown
Each check records DNS, TCP connect, TLS handshake, time to first byte (shown as Server) and total time. The monitor page shows the split per location, with the remainder as Transfer. Use it to tell whether slowness comes from DNS, the network, TLS or your application. See Reading metrics.Best practices
- Point the monitor at a lightweight health endpoint that checks your critical dependencies and answers quickly.
- Keep the timeout close to what a healthy response needs (5-10 seconds for APIs).
- Prefer
HEADwhen you only need availability and your server answers it correctly. - Expect incidents to open only after confirmation from several probe locations (see Understanding incidents).
- Allow the
UptimeIO-Monitor/1.0user agent through your firewall or WAF.
Troubleshooting
Timeout errors
Timeout errors
The server was too slow or unreachable. Check the timing breakdown to see which stage is slow, raise
timeout_ms (maximum 60,000, and always shorter than the check interval) if the server legitimately needs longer, and make sure a firewall or WAF is not blocking the UptimeIO-Monitor user agent.Unexpected status code
Unexpected status code
Only
200 passes by default. Add the codes your endpoint returns to expected_status_codes. If the endpoint redirects, enable follow_redirects or list the redirect code. Check with curl -I https://your-url.SSL certificate errors
SSL certificate errors
An HTTPS check fails when the certificate is expired, self-signed, has an incomplete chain or does not match the hostname. Fix the certificate, and check that the chain includes intermediate certificates. For a test system with a self-signed certificate you can clear Verify SSL certificate (
verify_ssl: false); do not do this in production.403 LOCATION_MONITORING_NOT_AVAILABLE
403 LOCATION_MONITORING_NOT_AVAILABLE
You sent a non-empty
monitoring_regions on the Free plan. Send [], or upgrade to Pro or Scale to choose locations.INTERVAL_TOO_SHORT or MONITOR_LIMIT_REACHED
INTERVAL_TOO_SHORT or MONITOR_LIMIT_REACHED
The interval is below your plan minimum, or you reached your plan’s monitor limit. See Plans.
Next steps
Keyword Monitoring
Check page content as well
Notifications
Configure alerts for HTTP monitors