UptimeGuard

API Reference

Integrate UptimeGuard into your workflow using our REST API.

Authentication

All API requests require authentication. Generate an API key from Settings > API Keys. Include it in requests as a header:

Authorization: Bearer zm_your_api_key_here

Base URL

https://api.uptimeguard.com/api

Monitors

List monitors

GET /monitors?teamId=TEAM_ID

Returns a paginated list of all monitors for the team.

Get monitor

GET /monitors/:id

Returns details for a single monitor including recent checks.

Create monitor

POST /monitors
Content-Type: application/json

{
  "name": "My API",
  "type": "http",
  "url": "https://api.example.com/health",
  "interval": 60,
  "teamId": "TEAM_ID"
}

Update monitor

PUT /monitors/:id
Content-Type: application/json

{
  "name": "My API (updated)",
  "interval": 30
}

Delete monitor

DELETE /monitors/:id

Pause / resume monitor

PUT /monitors/:id/pause
PUT /monitors/:id/resume

Incidents

List incidents

GET /incidents?teamId=TEAM_ID&limit=20&sort=-createdAt

Get incident

GET /incidents/:id

Alert channels

List alert channels

GET /alerts?teamId=TEAM_ID

Create alert channel

POST /alerts
Content-Type: application/json

{
  "name": "Slack Alerts",
  "type": "slack",
  "config": {
    "webhookUrl": "https://hooks.slack.com/services/..."
  },
  "teamId": "TEAM_ID"
}

Test alert channel

POST /alerts/:id/test

Status pages

List status pages

GET /status-pages?teamId=TEAM_ID

Create status page

POST /status-pages
Content-Type: application/json

{
  "name": "My Status Page",
  "slug": "my-status",
  "visibility": "public",
  "teamId": "TEAM_ID"
}

Dashboard

Get dashboard stats

GET /dashboard/stats?teamId=TEAM_ID

Returns monitor counts, active incidents, issues, top monitor sparklines, and plan summary.

Rate limits

API requests are rate limited to 100 requests per minute per API key. Exceeding the limit returns a 429 Too Many Requests response.

Error handling

All errors return a JSON body with an error field:

{
  "error": "Monitor not found"
}
Status CodeDescription
400Bad request — invalid parameters
401Unauthorized — missing or invalid API key
404Resource not found
409Conflict — resource already exists
429Rate limit exceeded
500Internal server error