Appearance
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-08Network uptime
http
GET /api/uptime/networks/:id?from=2026-07-01&to=2026-07-08Both 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:
| Reason | What it means |
|---|---|
pod_stopped | The target pod was Off. |
app_error | The pod answered, but with an error. |
unreachable | We couldn't reach the target. |
uplink_unreachable | The network's uplink was down. |