Updated 25 October 2026 · By the Upcertain team
Authentication
Owners and admins create API keys under Settings, API & MCP, read-only or read-write. Send the key as a bearer token. Keys start with upc_ and are shown once; Upcertain stores only a hash.
curl -H "Authorization: Bearer upc_..." https://upcertain.com/api/v1/monitorsEndpoints
| Method and path | What it does |
|---|---|
GET /api/v1/account | Plan, limits, monitor counts and open incidents |
GET /api/v1/monitors | Monitors; filter with status (up, down, paused, pending) and type |
POST /api/v1/monitors | Create a monitor (read-write) |
GET /api/v1/monitors/{id} | One monitor |
PATCH /api/v1/monitors/{id} | Change a monitor (read-write) |
DELETE /api/v1/monitors/{id} | Delete a monitor (read-write) |
POST /api/v1/monitors/{id}/pause | Pause checks (read-write) |
POST /api/v1/monitors/{id}/resume | Resume checks (read-write) |
GET /api/v1/monitors/{id}/uptime | Uptime for window 24h, 7d, 30d or 90d |
GET /api/v1/incidents | Incidents; since (7d or an ISO date), status (ongoing, resolved), monitor_id, limit up to 200 |
GET /api/v1/incidents/{id} | One incident with its activity |
POST /api/v1/incidents/{id}/acknowledge | Acknowledge an incident (read-write) |
GET /api/v1/maintenance | Maintenance windows |
GET /api/v1/status-pages | Status pages with address and visibility |
Create a monitor
curl -X POST https://upcertain.com/api/v1/monitors \
-H "Authorization: Bearer upc_..." \
-H "Content-Type: application/json" \
-d '{"type":"http","name":"API health","url":"https://api.example.com/health","intervalSec":60,"expectedStatus":"200"}'Fields follow the monitor form: type, name, url or host and port, intervalSec, keyword, expectedStatus, method, timeoutSec and so on. The interval defaults to 300 seconds and is limited by your plan.
Responses and errors
Successful responses wrap the result in { "data": ... }. Errors return { "error": { "code", "message" } } with a status code:
| Status | Code | Meaning |
|---|---|---|
| 400 | validation_error, bad_request | The request was not valid; the message says which field |
| 401 | unauthorized | Missing, malformed, revoked or unknown key |
| 403 | read_only_key, account_suspended | The key cannot do this |
| 404 | not_found | No such record in your account |
| 429 | rate_limited | Too many requests; see Retry-After |
Rate limit
60 requests a minute per key, shared with MCP tool calls made with the same key. Each response carries X-RateLimit-Limit and X-RateLimit-Remaining.