Create a monitor
Learn how to create a monitor from the dashboard and what every field and default does.
This page explains how to create a monitor from the dashboard and what every field does. The same fields are available over the REST API and MCP.
#Prerequisites
- A project. Every monitor belongs to one.
- The owner, admin, or member role in that project. Viewers cannot create monitors.
- A target UptimeX can reach from the public internet. Private addresses,
localhost, and hosts without a dot are refused.
#Create a monitor
- Open the project and choose New monitor.
- Choose a check type. HTTP, Keyword, Heartbeat, and Port are on every plan. API, DNS, and Scheduler need Pro or Team. For what each type checks, see Check types.
- Give the monitor a name of up to 16 characters. You can change it later.
- Enter the target: a URL for HTTP, Keyword, API, and Scheduler, a host for Port, or a domain for DNS. A heartbeat has no target, since your job calls UptimeX.
- Set the interval and any options you need, then choose Create.
For HTTP, Keyword, and API monitors, Test check runs one check against the form as it stands and shows the result without saving anything.
The first check runs as soon as the monitor is created, so the page shows a real status within seconds. A heartbeat waits for its first ping instead, and a scheduler runs at its next scheduled slot.
Monitor limits
#Fields for HTTP, Keyword, and API monitors
| Field | Default | Notes |
|---|---|---|
| Method | HEAD (GET for Keyword and API) | HEAD, GET, POST, PUT, PATCH, DELETE, or OPTIONS. A monitor with content rules always uses GET or a write method, since it needs the body. |
| Check every | 5 minutes | 1, 5, 10, or 30 minutes, or 1 hour. 1 minute needs Pro or Team. |
| Request headers | none | Up to 4. Stored encrypted and never shown again. See Requests and rules. |
| Request body | none | Up to 8 KB, with POST, PUT, PATCH, or DELETE only. Sent as JSON unless you set a Content-Type header. |
| Timeout | 10 s | 5, 10, 30, or 60 s. A check that takes longer is down. |
| Slow threshold | 1.5 s | 0.5, 1, 1.5, or 3 s. A check that passes but takes at least this long is slow. |
| Expected status | Automatic | Automatic accepts any status below 400. Or choose a code, or enter one between 100 and 599, and only that code passes. |
| Follow redirects | Off | Off treats a 3xx as a pass. On follows the redirect and judges the final response. Monitors with content rules always follow. |
| Check SSL certificate | Off | Pro and Team. https URLs only. See SSL and domain expiry. |
| Check domain expiry | Off | Pro and Team. Needs a target with a registrable domain. |
| Failure threshold | 3 | 1 to 5 consecutive failed checks before the monitor is confirmed down. |
| Recovery threshold | 1 | 1 to 5 consecutive passing checks before it is confirmed up again. |
Keyword monitors add content rules under Content match, and API monitors add JSON assertions. Both are explained in Requests and rules.
#Fields for the other types
| Type | Fields |
|---|---|
| Heartbeat | Expected every: how often your job should ping. Grace: how late a ping may be before the monitor goes down, 1, 5, 10, or 30 minutes (1 minute by default). |
| Scheduler | Method (POST by default, or PUT, PATCH, DELETE) and Run every. Headers, a body, and the timeout can be set after creation in Monitor settings. |
| Port | Port number, Check every, and under Advanced settings the timeout and the two thresholds. The host can be a hostname or a public IPv4 address. |
| DNS | Record type (A by default, or AAAA, CNAME, MX, TXT, NS), Check every, and an optional expected value. The target must be a hostname, not an IP. |
#After you create it
Open the monitor to watch its status, uptime, response time, and activity, or to pause it. Every field except the type can be changed later from Monitor settings. For what happens from here, see The monitor lifecycle.
#What's next?
- Check types: what each type checks and when to use it.
- Requests and rules: auth headers, bodies, and content rules.
- REST API: create the same monitor with one
curlcall.