For dashboards, alerting, and status widgets in your own tools. No authentication, no rate limit worth documenting, CORS open to any origin.
One request returns overall state, every component, and any open incident.
GET https://status.dicast.dev/api/v1/summary
{
"status": "operational",
"updated_at": "2026-08-14T17:42:00Z",
"components": [
{
"id": "review-pipeline",
"group": "core",
"name": "Review pipeline",
"status": "operational",
"uptime_90d": 0.9994
},
{
"id": "merge-gate",
"group": "core",
"name": "Merge gate",
"status": "operational",
"uptime_90d": 0.9999
}
],
"incidents": []
}
| Value | Meaning |
|---|---|
| operational | Working normally. |
| degraded | Working, but slower or less reliably than normal. |
| partial_outage | Unavailable for some customers or some requests. |
| major_outage | Unavailable. |
| maintenance | Deliberately unavailable during an announced window. |
The top-level status is the worst state among all components.
| Endpoint | Returns |
|---|---|
| /api/v1/summary | Everything below in one response. |
| /api/v1/status | Just the overall status string. |
| /api/v1/components | All components with 90-day uptime. |
| /api/v1/incidents | Open incidents with their update timeline. |
| /api/v1/incidents/history | Resolved incidents, most recent first. |
| /api/v1/maintenance | Scheduled windows, upcoming and past. |
Responses carry an ETag; send If-None-Match and you will get a 304 when nothing changed. State is recomputed every 30 seconds, so polling faster than that gains you nothing.
curl -s -H "If-None-Match: \"a1b2c3\"" \
https://status.dicast.dev/api/v1/summary
The status API runs on infrastructure independent of the review pipeline. If Dicast is down, its status page should not be.