Public REST API v1 Docs

Authentication

All REST API endpoints require a valid API key passed in the X-API-Key request header or via HTTP Bearer token.

Request Header Format
X-API-Key: up_live_a1b2c3d4e5f678901234567890abcdef

Rate Limits & Quotas

Requests are rate-limited to 120 requests per minute per API key. Rate limit status is returned in the response headers.

Header
X-RateLimit-Limit
120 requests / min
Header
X-RateLimit-Remaining
Remaining quota in window
GET

/api/v1/public/monitors

Retrieve list of all active health monitors and their live statuses.

Request Example (curl)
curl -X GET "/api/v1/public/monitors" \
  -H "X-API-Key: up_live_a1b2c3d4e5f678901234567890abcdef"
Response 200 OK
{
  "count": 2,
  "monitors": [
    {
      "id": "mon-a1b2c3d4",
      "name": "Production Gateway",
      "check_type": "HTTP",
      "target": "https://api.example.com",
      "status": "UP",
      "interval_seconds": 60
    }
  ]
}
POST

/api/v1/public/monitors

Programmatically provision a new HTTP, Keyword, or DNS monitor.

Create Monitor Payload
curl -X POST "/api/v1/public/monitors" \
  -H "X-API-Key: up_live_a1b2c3d4e5f678901234567890abcdef" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "API Gateway",
  "target": "https://api.example.com",
  "check_type": "KEYWORD",
  "config": {"target_keyword": "OK"}
}'
Response 201 Created
{
  "id": "mon-98765432",
  "name": "API Gateway",
  "check_type": "KEYWORD",
  "target": "https://api.example.com",
  "status": "UP",
  "created_at": "2026-08-08T09:30:00Z"
}
POST

/api/v1/public/push/{heartbeat_token}

Passive Heartbeat ping endpoint for Cron jobs, DB backups, and scheduled workers.

Cron Job Ping Example
curl -X POST "<your-origin>/api/v1/public/push/<your-token>"