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=100Returns 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}/incidentsReturns 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.