es.uptime/API docs
Ready to monitor0 monitors

Authentication

Bearer token

Send your API key in the Authorization header. Invalid or revoked keys return 401.

curl https://es-uptime.vercel.app/api/v1/clients \ -H "Authorization: Bearer esu_your_key"

Clients

List and create clients

GET /api/v1/clients lists all clients. POST /api/v1/clients creates one.

curl -X POST https://es-uptime.vercel.app/api/v1/clients \ -H "Authorization: Bearer esu_your_key" \ -H "Content-Type: application/json" \ -d '{ "name": "Acme Studio", "contact_email": "hello@acme.example", "slug": "acme-studio", "monthly_report_enabled": true, "public_status_enabled": false }'

Monitors

List and create monitors

GET /api/v1/monitors accepts an optional client_id query. POST /api/v1/monitors creates a monitor.

curl -X POST https://es-uptime.vercel.app/api/v1/monitors \ -H "Authorization: Bearer esu_your_key" \ -H "Content-Type: application/json" \ -d '{ "client_id": "00000000-0000-0000-0000-000000000000", "name": "Main website", "monitor_type": "http", "url": "https://example.com", "interval_minutes": 10, "expected_status": 200, "keyword": null, "timeout_seconds": 10, "active": true, "alert_emails": ["you@example.com"] }'

Heartbeats

Monitor scheduled jobs

Create a monitor with monitor_type: "heartbeat" and no URL. The response contains a heartbeat_token. Ping its public endpoint after every successful job.

curl https://es-uptime.vercel.app/api/heartbeat/HEARTBEAT_TOKEN

Manage

Update, delete and inspect status

  • PATCH /api/v1/monitors/:id — update any monitor field except client.
  • DELETE /api/v1/monitors/:id — delete a monitor and its history.
  • GET /api/v1/monitors/:id/status — state, p95 response time and 24-hour, 7-day and 30-day uptime.
curl -X PATCH https://es-uptime.vercel.app/api/v1/monitors/MONITOR_ID \ -H "Authorization: Bearer esu_your_key" \ -H "Content-Type: application/json" \ -d '{"active": false}'

Bulk create

Create up to 100 monitors

POST /api/v1/monitors/bulk accepts a monitors array. The full request is rejected with 409 if a URL is duplicated for one client.

curl -X POST https://es-uptime.vercel.app/api/v1/monitors/bulk \ -H "Authorization: Bearer esu_your_key" \ -H "Content-Type: application/json" \ -d '{"monitors": [{ ... }, { ... }]}'

Errors

Response codes

400 means invalid input, 401 means the API key is missing or invalid, 404 means the resource does not exist, and 409 means the client slug or client URL is already in use.