Skip to content

Docs

REST API reference

Everything the MCP server offers is also a plain HTTP API, for scripts, CI pipelines and your own dashboards. It is available on every plan.

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/monitors

Endpoints

Method and pathWhat it does
GET /api/v1/accountPlan, limits, monitor counts and open incidents
GET /api/v1/monitorsMonitors; filter with status (up, down, paused, pending) and type
POST /api/v1/monitorsCreate 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}/pausePause checks (read-write)
POST /api/v1/monitors/{id}/resumeResume checks (read-write)
GET /api/v1/monitors/{id}/uptimeUptime for window 24h, 7d, 30d or 90d
GET /api/v1/incidentsIncidents; 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}/acknowledgeAcknowledge an incident (read-write)
GET /api/v1/maintenanceMaintenance windows
GET /api/v1/status-pagesStatus 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:

StatusCodeMeaning
400validation_error, bad_requestThe request was not valid; the message says which field
401unauthorizedMissing, malformed, revoked or unknown key
403read_only_key, account_suspendedThe key cannot do this
404not_foundNo such record in your account
429rate_limitedToo 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.