Create monitor
create_monitorCreate a monitor for an http, tcp, ping, dns, tls_cert, domain_expiry or heartbeat check. The check is run once before anything is saved and the result is shown to the user along with every setting it would apply; where the client can show a prompt, nothing is created unless they approve; otherwise the monitor is created on the token's scope and the trial result comes back with it. Bind it to alerts as you create it: pass channel_ids from list_notification_channels (this needs the channels:read scope), and if the org has no channel yet, say so rather than leaving a monitor that pages nobody. Leave regions unset unless the user named where they want the check to run from — omitted, it probes from the operator's default set, which is already the intended coverage; naming more regions than the plan allows is refused outright. Request headers and a request body can be set, but a credential must be referenced rather than pasted: write Bearer {{ my_key }} and call list_variables for the keys this org has. A URL carrying a username or password is refused, and browser flows cannot be created here — add those in the app. Not read-only.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | What the operator will see in lists and alerts. | |
| tags | No | At most 50, each at most 50 characters. | |
| check | Yes | ||
| regions | No | Probe regions to run the check from, as ids from `list_regions`. Omit unless the user named the places they want covered: omitting takes the regions `list_regions` flags `default_selected`, which is the coverage the operator chose, capped at the plan's region cap and falling back to the control plane's own region when nothing is flagged. A vantage point can be offered without being on by default, so the full catalog is not the thorough answer. Rejected for a heartbeat, which is pinged rather than probed, and a set larger than a `max_regions` `list_regions` reports is refused outright, not trimmed to fit. | |
| group_name | No | Operator-side grouping label. | |
| channel_ids | No | Channel ids from `list_notification_channels` to alert. Omitting them creates a monitor that pages nobody, which is worth saying out loud rather than leaving for an outage to reveal. The channels themselves are set up in the app, since they hold the tokens and addresses. | |
| interval_secs | No | Seconds between checks, held to the plan's floor and the check kind's own floor. Omit it to get the cadence the app's own picker opens this kind at, which is well above the hard minimum for the slow-moving kinds: a certificate is checked twice a day, a domain registration daily. | |
| region_policy | No | Detection quorum across probe regions. | |
| notify_recovery | No | Whether recovery is announced. Defaults to true. | |
| alert_confirmations | No | Consecutive failing checks before the monitor alerts. Minimum 1, defaults to 2. | |
| renotify_interval_secs | No | Seconds before the first reminder while an outage stays unacknowledged; each further reminder waits twice as long, up to a day. 0 turns reminders off; otherwise at least 60. Defaults to 3600. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | Yes | ||
| probe | No | The trial run's outcome, which the operator saw before approving. Absent for a heartbeat, which has nothing to probe. | |
| alerts | Yes | The channels this monitor will alert, by name, or `nobody` when nothing reaches it. One covered by a channel's tag rule rather than a binding is marked `by tag`. A channel that cannot deliver says so here. | |
| address | Yes | What the check watches, as stored. | |
| regions | Yes | Probe regions the monitor was assigned, which is the operator's default set when `regions` was omitted. Empty for a heartbeat. | |
| interval_secs | Yes |