Skip to main content
A monitor watches one endpoint, service or scheduled job and opens an incident when it fails. This guide walks through creating an HTTP monitor in the dashboard and with the API. The other monitor types work the same way; see Monitor Types for their specific settings.

Before you start

  • Create an account and verify your email address. Monitors cannot be created until the email is verified.
  • Decide where alerts should go. You can add notification destinations now or after creating the monitor.
  • Check your plan limits in Plans & Features: monitor count and minimum check interval.

Create a monitor in the dashboard

1

Open the new monitor form

Click Monitors in the sidebar, then Create Monitor.
2

Enter the URL

HTTP is selected by default. Enter the full URL, for example https://example.com/health. The monitor name is derived from the URL and can be changed later from the monitor’s edit page.To monitor something else (heartbeat, ping, TCP port, DNS), open Monitoring something else? and pick the type.
3

Review how often we check (optional)

Expand How often we check:
  • Check Interval slider. The default is 5 minutes. The shortest interval you can save is set by your plan: 5 minutes on Free, 1 minute on Pro and Scale. The slider only offers intervals at or above your plan’s minimum.
  • Regions. The default is automatic selection. Pro and Scale can choose specific locations (at least one). Free always uses automatic selection.
4

Review HTTP settings (optional)

Expand the HTTP section to change the method, expected status codes, headers, request body, redirects and SSL verification. See Advanced options.
5

Choose notification destinations (optional)

Expand Notifications and select the destinations that should be alerted. Verified destinations are pre-selected.
6

Create the monitor

Click Create Monitor. The first check runs shortly afterwards and the monitor page shows the status, response time and the location that ran the check.

Create a monitor with the API

POST /api/monitors with a read_write API key (see Authentication):

Main request fields

The full field reference is on the Create Monitor page.

Choosing check settings

Interval

Use 5 minutes for non-critical sites and 1 minute for services where you need the fastest detection. A request below your plan’s minimum is rejected with INTERVAL_TOO_SHORT.

Timeout

The default is 30 seconds in the dashboard and 10 seconds through the API. The maximum is 60 seconds, through the API and the dashboard. The timeout must be shorter than the check interval, so a 60 second timeout needs an interval of 2 minutes or more. A timeout that is too short causes false failures on slow endpoints; too long delays failure detection.

Locations

UptimeIO checks from multiple probe locations; see Probe locations for the current list. On Free, sending a non-empty monitoring_regions returns 403 with code LOCATION_MONITORING_NOT_AVAILABLE. Whichever locations you select, an incident is only opened after failures are confirmed from multiple locations. See Understanding Incidents.

Advanced options

Default GET. Also available: POST, PUT, PATCH, DELETE, HEAD and OPTIONS. HEAD is faster because no body is downloaded.
Default: [200]. A check passes only when the response status is in the list. Add the codes your endpoint really returns, for example [200, 201, 204].
Add custom headers (for example Authorization) and a request body for POST, PUT and PATCH.
On by default, following up to 5 redirects (max_redirects, 0 to 10). Turn it off to detect unexpected redirects.
Send credentials in a request header, for example Authorization: Bearer YOUR_TOKEN. Use a dedicated, revocable credential for monitoring.
Set slow_response_threshold_ms to open a separate slow-response incident when responses exceed it. See Understanding Incidents.
Turn on certificate and domain expiry warnings in SSL, domain & performance alerts on the monitor form. See Setting Up Alerts.

Test a monitor

After creating a monitor, use Test Now on its page to run an immediate check. The result shows success or failure, response time, status code and the location that ran it. If a test fails, check the URL, expected status codes, timeout and authentication.

Limits and pausing

  • Every monitor that is not deleted counts towards your plan’s monitor limit, including paused monitors. At the limit, creating a monitor returns 403 with code MONITOR_LIMIT_REACHED. Delete monitors or upgrade to free up room.
  • Pausing stops checks. Resuming is refused with MONITOR_LIMIT_REACHED when your plan’s limit of active monitors is reached.

Troubleshooting

  • Timeout too short for the endpoint.
  • Expected status codes do not match what the endpoint returns (the default is only 200).
  • A firewall or rate limiter is blocking the UptimeIO user agent UptimeIO-Monitor/1.0 (+https://uptimeio.com/monitoring-bot).
  • An invalid or expired certificate on the target. HTTPS checks fail when the certificate cannot be verified.
  • EMAIL_NOT_VERIFIED: verify your email address.
  • MONITOR_LIMIT_REACHED: you are at your plan limit.
  • INTERVAL_TOO_SHORT: choose an interval at or above your plan minimum.
  • VALIDATION_ERROR: the target or another field is invalid. The message explains which.
Incidents come from scheduled checks that fail and are then confirmed from multiple locations. Open the incident to see which checks failed and where.

Next steps

Understanding Incidents

How incidents are opened and resolved

Setting Up Alerts

Send alerts to email, Slack, webhooks and more

Monitor Types

Settings for each monitor type

Reading Metrics

Uptime and response time