# Uptime monitoring

> Monitor uptime with HTTP, keyword, TCP and DNS checks from our US datacenter, plus SSL certificate and domain expiry, incident history and downtime alerts.

## Checks

Create checks with **Add check** on a site's **Uptime** page, or on the
workspace's **Uptime** page for checks that belong to no site. Managing
checks needs the `uptime.manage` permission.

| Type | Up when |
|---|---|
| **HTTP status** | The URL answers with the expected status code |
| **Keyword** | The URL answers with the expected status code and the response body contains the keyword |
| **TCP port** | The host accepts a connection on the port |
| **DNS** | The hostname resolves to at least one address |

| Field | Applies to | What it does |
|---|---|---|
| **Name** | All | Optional, up to 100 characters. Defaults to the hostname |
| **URL** | HTTP status, keyword | The address to request. On a site's Uptime page it defaults to `https://<site domain>/` |
| **Expected status** | HTTP status, keyword | The status code that counts as up. Defaults to 200 |
| **Keyword** | Keyword | Text the response body must contain, up to 200 characters. Matching is case-sensitive and reads the first 2 MB of the body |
| **Host** | TCP port, DNS | The hostname to connect to or resolve |
| **Port** | TCP port | 1 to 65535 |
| **Check every** | All | 30 seconds, 1, 2, 5, 10, 15 or 30 minutes, or 1 hour, limited by your plan. Defaults to 5 minutes |
| **Timeout (seconds)** | All | 1 to 30. The whole request must finish in this time. Defaults to 20 |
| **Can be shown on status pages** | All | Lets the check be added to a [status page](/docs/features/status-pages). Off by default |

HTTP and keyword checks send a `GET` request and follow up to 3
redirects. A redirect is not followed when its status code is the
expected status. Over the API, `http_method` can be set to `HEAD`.

Private and internal addresses can't be checked.

**Pause** stops a check and **Resume** starts it again.

| Plan | Checks per workspace | Fastest interval |
|---|---|---|
| Free | 3 | 5 minutes |
| Pro | 20 | 1 minute |
| Business | 100 | 30 seconds |

## Where checks run from

Every check runs from one location, our US datacenter (US East). There
is no choice of probe locations and no multi-region confirmation.

## When is a check down?

When a probe fails, the check is run again 30 seconds later. The check is
**down** only if that second probe fails too. An incident opens when a
check goes down and closes when it recovers.

## Check detail

- Uptime for the last 24 hours, 7 days and 30 days, and the latest
  response time.
- A response time chart for 24 hours, 7 days or 30 days.
- The last 50 incidents: start, duration and the cause (timeout,
  connection refused, connection error, SSL error, DNS did not resolve,
  keyword missing, too many redirects or an unexpected status code).
- For HTTPS checks: the **SSL certificate** issuer and expiry date. For
  the check's domain: its **registration** expiry (from RDAP). Both are
  looked up once a day.

Uptime % is the share of the period not covered by an incident. Probe
results are kept for 90 days.

## Alerts

When a check goes down or recovers:

- the workspace's owners and admins who can see the check's site get an
  email,
- the `uptime.down` and `uptime.up` [webhook](/docs/api/webhooks) events
  fire,
- subscribers of a published status page that shows the check get an
  email,
- and, when the check belongs to a site, the incident appears as a
  [note](/docs/dashboard/notes) on that site's charts.

The same owners and admins get an email 14, 7 and 1 days before an SSL
certificate or a domain registration expires.

For other channels, create **Uptime down** and **SSL or domain expiry**
[alerts](/docs/reports/alerts). Alerts are delivered by email on every
plan, by Slack, Teams, Discord, webhook and browser push on Pro and
Business, and by PagerDuty and Opsgenie on Business.

## Allowing our probes

Probes identify themselves with this User-Agent:

```text
PrivatusUptime/1.0 (+https://privatusanalytics.com/docs/uptime)
```

The probe location and User-Agent, and our probe IP ranges when we
publish them, are available as JSON at
[`/uptime/probes.json`](/uptime/probes.json).
Uptime checks don't count toward event usage.

## Status pages

Show checks on a public [status page](/docs/features/status-pages).

## API

Checks are REST resources and the MCP tools `uptime_checks_list`,
`uptime_checks_create`, `uptime_checks_get`, `uptime_checks_update`,
`uptime_checks_delete`, `uptime_checks_pause` and `uptime_checks_resume`
(`workspace_uptime_checks_list` and `workspace_uptime_checks_create` for
the workspace). `kind` is `http`, `keyword`, `tcp` or `dns`, and
`interval_seconds` takes any value from your plan's minimum up to 86,400.
The [API reference](/docs/api) lists every input.
