POST/v1/monitors

Create a monitor

Creates a new monitor.

Request

Bodyapplication/json
namestringrequired
Pronounceable name of the monitor
Example:"My Website"
urlstringrequired
The URL of your website, or hostname (for DNS/ICMP/port monitors) you want to check
Example:"https://acme.com"
protocolenum<string>optional
Type of monitor to create
Available options:
httpporticmpdns
Default: http
dns_record_typeenum<string>optional
DNS record type to check. Only used when protocol is dns
Available options:
AAAAACNAMEMXNSTXTSOASRVCAAPTR
Default: A
dns_nameserverstringoptional
Nameserver to query against (e.g. 8.8.8.8). Leave empty to use default resolvers. Only used when protocol is dns
Example:"8.8.8.8"
dns_expected_answerstringoptional
Expected DNS answer to validate against. Monitor fails if the resolved value does not contain this string. Only used when protocol is dns
Example:"192.0.2.1"
regionsarray<string>optional
Array of region names to monitor from
Available options:
sanfrancisconyclondonparisfrankfurtseoulmumbaibangaloresaopaulocaliforniavirginiasydneytorontoamsterdamsingaporetokyobahraincapetown
Default: all regions
check_frequencynumberoptional
Check frequency in seconds
Available options:
1020306012018030060018003600216004320086400
Default: 30
http_methodenum<string>optional
HTTP method for the request
Available options:
GETPOSTPUTHEADDELETEPATCHOPTIONS
Default: GET
request_bodystringoptional
Request body for POST, PUT, PATCH requests
request_headersarray<object>optional
Array of objects with name and value properties for custom HTTP headers
follow_redirectsbooleanoptional
Whether to follow HTTP redirects
Default: true
ip_versionenum<number>optional
IP version used to reach the target: 4 or 6. An IPv6 monitor is checked over IPv6 only, never IPv4. Available for the http, port and icmp protocols. Checks run only from the selected regions that have an IPv6 probe, and the request is rejected if none of the selected regions has one. See IP version.
Available options:
46
Default: 4
portnumberoptional
Port number to check. Required if protocol is port
Example:443
expected_status_codestringoptional
Expected HTTP status code. Use "2xx" for 200-299, "1xx-3xx" for 100-399, or a specific code like "200".
Example:"2xx"
Default: 2xx (200-299)
required_keywordstringoptional
Triggers downtime if body response is missing this keyword
pausedbooleanoptional
Whether the monitor should be paused
Default: false
alerts_waitnumberoptional
Minutes to wait before sending alerts. Use -1 to disable alerts.
Available options:
-101235103060
Default: 0
ssl_alert_daysnumberoptional
Days before the TLS certificate expires to send the first expiry alert. -1 = never. When omitted on create, the default applies.
Available options:
-113715306090
ssl_remindersbooleanoptional
Also remind at each step below the threshold (30, 15, 7, 3 and 1 days). Default true.
ssl_notify_on_changebooleanoptional
Notify when the server starts serving a different certificate. Default false.
domain_alert_daysnumberoptional
Days before the domain registration expires to alert. -1 = never (default for monitors created through the API).
Available options:
-1714306090
escalation_policystringoptional
Policy UUID to link. Send null or "none" to unlink.
Example:"policy_123abc"

Response

Returns the newly created monitor object.

RequestcURL
curl -X POST https://api.hyperping.io/v1/monitors \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Website",
    "url": "https://acme.com",
    "regions": ["paris", "frankfurt", "amsterdam", "london"],
    "http_method": "GET",
    "check_frequency": 30,
    "request_headers": [
      { "name": "X-Request-Header", "value": "Header value" }
    ],
    "protocol": "http"
  }'
201 CreatedJSON
{
  "name": "Website",
  "url": "https://acme.com",
  "paused": false,
  "regions": [
    "paris",
    "frankfurt",
    "amsterdam",
    "london"
  ],
  "http_method": "GET",
  "check_frequency": 30,
  "request_headers": [
    {
      "name": "X-Request-Header",
      "value": "Header value"
    }
  ],
  "protocol": "http",
  "port": null,
  "follow_redirects": true,
  "ip_version": 4,
  "expected_status_code": "2xx",
  "request_body": "",
  "projectUuid": "0109c1f0-b521-44f4-9681-9046aa6f51d8",
  "uuid": "mon_3GhAQMYGEQuyUH",
  "status": "up",
  "ssl_expiration": 90,
  "ssl_alert_days": 30,
  "ssl_reminders": true,
  "ssl_notify_on_change": false,
  "domain_alert_days": 30,
  "domain_expiration": 214,
  "alerts_wait": 0
}