Documentation

Status API

Read-only endpoints for monitor status, rolling uptime, and incident history. Responses are JSON; all timestamps are UTC (RFC 3339).

Base URL

All endpoints are served from the probe node region:

https://de1.uptimegrid.org/api/v1

Authentication

Public status endpoints are open. Account-scoped endpoints expect a bearer token in the Authorization header. Tokens are issued per workspace from the dashboard.

# public — no auth
curl https://de1.uptimegrid.org/api/v1/status

# scoped
curl -H "Authorization: Bearer $TOKEN" \
     https://de1.uptimegrid.org/api/v1/monitors

GET /status

Returns the aggregate state for the region and a summary per monitor.

{
  "region": "eu-central",
  "node": "de1",
  "state": "operational",
  "uptime_30d": 0.9998,
  "monitors": [
    { "id": "edge",   "state": "up", "rtt_ms": 38 },
    { "id": "api",    "state": "up", "rtt_ms": 51 },
    { "id": "store",  "state": "up", "rtt_ms": 72 }
  ],
  "checked_at": "2026-06-08T22:41:09Z"
}

GET /monitors/{id}/uptime

Rolling uptime for a single monitor. Supported windows: 24h, 7d, 30d, 90d.

curl "https://de1.uptimegrid.org/api/v1/monitors/edge/uptime?window=7d"

GET /incidents

Chronological incident feed. Each entry carries a severity, start/end time, and the resolution note shown on the public status page.

Rate limits

Webhooks

Subscribe to state changes and incident lifecycle events. Payloads are signed with an HMAC-SHA256 signature in the X-UG-Signature header so you can verify origin before processing.

JSON only

Predictable schema, no surprises. Errors return a machine-readable code and message.

UTC everywhere

Every timestamp is RFC 3339 in UTC. No timezone math on your side.

Stable versioning

The /v1 contract is frozen. Breaking changes ship under a new prefix.