Docs/REST API Reference
⚙️6 min read

REST API Reference

Manage monitors programmatically via our API.

The UptimeWiz REST API lets you create, manage, and query monitors programmatically. All endpoints except the public status endpoint require authentication.

Authentication

All protected endpoints accept two authentication methods via the Authorization header:

API Keys (recommended for scripts & CI/CD)

Generate an API key from Dashboard → API Keys. Keys start with uwz_live_ and never expire until explicitly revoked.

Authorization: Bearer uwz_live_your-api-key

Supabase JWT (browser sessions)

Include your Supabase JWT, issued when a user signs in via the dashboard or the Supabase Auth REST API.

Authorization: Bearer your-jwt-token

Base URL

https://your-api-id.execute-api.us-east-1.amazonaws.com/prod

Monitors

List all monitors

GET /monitors

Returns all monitors for the authenticated user, including current status and configuration.

Get a single monitor

GET /monitors/{id}

Create a monitor

POST /monitors

Returns 402 if the plan's monitor limit is reached. Upgrade from Dashboard → Billing to increase your limit.

Request body:

{
  "name": "My API",
  "url": "https://api.example.com/health",
  "monitorType": "http",
  "intervalMinutes": 1,
  "httpMethod": "GET",
  "keyword": null,
  "customHeaders": {},
  "alertChannels": [
    { "type": "email", "to_email": "you@example.com" },
    { "type": "slack", "webhook_url": "https://hooks.slack.com/services/..." }
  ]
}

Create a TCP monitor

{
  "name": "Production DB",
  "monitorType": "tcp",
  "host": "db.example.com",
  "port": 5432,
  "intervalMinutes": 1,
  "alertChannels": [
    { "type": "slack", "webhook_url": "https://hooks.slack.com/services/..." }
  ]
}

Update a monitor

PUT /monitors/{id}

Same body format as POST. All fields are replaced with the values you provide.

Delete a monitor

DELETE /monitors/{id}

Soft-deletes the monitor. It stops being checked immediately and its status is set to DELETED.

Logs & Incidents

Get ping logs

GET /monitors/{id}/logs?limit=100

Returns the most recent ping log entries for a monitor. Logs are retained for 7 days (Starter) or 30 days (Pro). The limit parameter defaults to 100 (max 1000).

Get incidents

GET /monitors/{id}/incidents

Returns the incident history for a monitor, newest first. Each incident includes start time, end time (null if unresolved), and whether it has been resolved.

Public endpoints (no auth)

Health check

GET /health

Public status page data

GET /status/{handle}/{slug}

Returns current status, recent ping logs, and incident history for a monitor identified by its account handle and public slug. No authentication required.

Monitor type values

  • http — HTTP/HTTPS monitoring (uses url field)
  • tcp — TCP port monitoring (uses host and port fields)

Alert channel type values

  • email — requires to_email field
  • slack — requires webhook_url field
  • discord — requires webhook_url field

API Key Management

List API keys

GET /api-keys

Create an API key

POST /api-keys
{ "name": "My CI pipeline" }

The full key is returned only in this response. Store it securely — it cannot be retrieved again.

Revoke an API key

DELETE /api-keys/{keyId}

For quick testing in a browser session, open DevTools → Network, sign in to UptimeWiz, and copy the Authorization header from any dashboard API request.

Start monitoring today

Set up your first monitor in under 2 minutes.

Invite only — coming soon