Skip to content

Monitoring API

Uptime history for your domains and networks. All endpoints need a bearer token:

http
Authorization: Bearer <jwt-or-apikey>

Pods are different

These endpoints cover domains and networks. For a pod's CPU, memory, disk, and network, use pod telemetry instead - there's no separate uptime endpoint for pods.

Domain uptime

http
GET /api/uptime/domains/:id?from=2026-07-01&to=2026-07-08

Network uptime

http
GET /api/uptime/networks/:id?from=2026-07-01&to=2026-07-08

Both take the same optional from / to params (RFC3339 or YYYY-MM-DD). The default window is the last 24 hours, clamped to the 90-day retention. The point resolution scales to the window: roughly 5-minute buckets for a few hours, hourly for a few days, daily beyond that.

Response

Both return an UptimeHistory:

json
{
  "summary": {
    "total": 288,
    "up": 286,
    "degraded": 1,
    "down": 1,
    "uptimePercent": 99.65,
    "byReason": { "pod_stopped": 1, "unreachable": 1 }
  },
  "series": [
    {
      "timestamp": "2026-07-08T14:00:00Z",
      "total": 12,
      "up": 12,
      "degraded": 0,
      "down": 0,
      "uptimePercent": 100
    }
  ],
  "from": "2026-07-07T14:00:00Z",
  "to": "2026-07-08T14:00:00Z"
}

summary is the roll-up for the whole window; series is the same shape bucketed over time for charting. When something was down, byReason attributes it:

ReasonWhat it means
pod_stoppedThe target pod was Off.
app_errorThe pod answered, but with an error.
unreachableWe couldn't reach the target.
uplink_unreachableThe network's uplink was down.

See also

Built for the long tail.