Skip to main content
POST
/
api
/
v1
/
monitors
Create monitor
curl --request POST \
  --url https://app.larm.dev/api/v1/monitors \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "check_type": "<string>",
  "config": {},
  "interval_seconds": 123,
  "timeout_ms": 123,
  "confirm_down_minutes": 123,
  "confirm_up_minutes": 123,
  "enabled": true
}
'
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Marketing site",
    "check_type": "http",
    "enabled": true,
    "interval_seconds": 180,
    "timeout_ms": 10000,
    "confirm_down_minutes": 0,
    "confirm_up_minutes": 0,
    "config": {
      "url": "https://example.com",
      "method": "GET",
      "expected_status_codes": [200],
      "follow_redirects": true
    },
    "created_at": "2025-03-01T12:00:00Z",
    "updated_at": "2025-03-01T12:00:00Z"
  }
}
Requires monitors:read_write permission.
name
string
required
Monitor name (1–255 characters)
check_type
string
required
http, tcp, dns, or heartbeat
config
object
required
Type-specific configuration. See Monitors for fields per type.
interval_seconds
integer
default:180
Check interval in seconds (minimum: 30)
timeout_ms
integer
default:10000
Timeout in milliseconds (range: 1000–30000)
confirm_down_minutes
integer
default:0
Minutes of consecutive failures before marking down
confirm_up_minutes
integer
default:0
Minutes of consecutive successes before marking recovered
enabled
boolean
default:true
Whether the monitor is active
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Marketing site",
    "check_type": "http",
    "enabled": true,
    "interval_seconds": 180,
    "timeout_ms": 10000,
    "confirm_down_minutes": 0,
    "confirm_up_minutes": 0,
    "config": {
      "url": "https://example.com",
      "method": "GET",
      "expected_status_codes": [200],
      "follow_redirects": true
    },
    "created_at": "2025-03-01T12:00:00Z",
    "updated_at": "2025-03-01T12:00:00Z"
  }
}