Create monitor

POST /monitors

Create a new monitor.

Auth: Bearer token (write scope)

Body parameters

namestringrequiredbody

Monitor display name.

typestringrequiredbody

Check type: http, ping, tcp, dns, keyword, heartbeat.

urlstringbody

URL to monitor. Required for http, ping, tcp, and keyword types.

methodstringbodydefault: GET

HTTP method.

interval_secondsintegerbodydefault: 60

Check interval in seconds.

timeout_msintegerbodydefault: 30000

Timeout in milliseconds.

regionsstring[]body

Regions to run checks from: us-east, us-west, eu-west, eu-central, ap-southeast, ap-northeast.

tagsstring[]body

Tags for filtering and organization.

headersobjectbody

Custom request headers.

bodystringbody

Request body (for POST / PUT methods).

assertionsobjectbody

Response assertions (status_code, body_contains, etc.).

auth_typestringbody

Auth type: basic, bearer, or header.

auth_configobjectbody

Auth credentials, shape depends on auth_type.

Request

bash
curl -X POST https://happyuptime.com/api/v1/monitors \ -H "Authorization: Bearer hu_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "name": "My App", "url": "https://myapp.com", "type": "http", "interval_seconds": 60 }'

Response

json
{ "data": { "id": "mon_new456", "project_id": "proj_xyz", "name": "My API", "type": "http", "url": "https://api.example.com/health", "method": "GET", "status": "unknown", "interval_seconds": 30, "timeout_ms": 30000, "regions": ["us-east", "eu-west"], "tags": [], "paused": false, "created_at": "2026-03-07T15:00:00Z", "updated_at": "2026-03-07T15:00:00Z" }}