galena
Reference

snapshot.json

The status page's read model, published as a public file.

/snapshot.json holds everything the status page shows. The page, its feeds, badge and favicons are all derived from it, and open pages poll it every 30 seconds. It contains public data only: nothing from a draft, dismissed or internal incident ever reaches it.

{
  "version": 1,
  "snapshotVersion": 412,
  "publishedAt": "2026-10-02T09:41:14.380Z",
  "page": { "slug": "status", "name": "Acme", "url": "https://status.example.com" },
  "indicator": "major",
  "groups": [
    { "id": "0199…", "name": "Europe", "componentIds": ["0199…", "0199…"] }
  ],
  "components": [
    {
      "id": "0199…",
      "groupId": "0199…",
      "name": "API",
      "description": null,
      "status": "partial_outage",
      "days": [
        { "date": "2026-10-01", "worst": "operational", "downMinutes": 0, "minutes": { "operational": 1440 } },
        { "date": "2026-10-02", "worst": "partial_outage", "downMinutes": 27, "minutes": { "operational": 554, "partial_outage": 27 } }
      ],
      "uptime": 99.98
    }
  ],
  "incidents": { "active": [], "recent": [] },
  "maintenance": { "active": [], "upcoming": [] }
}

Top level

FieldMeaning
versionThe file format, 1
snapshotVersionIncreases with every publish; a newer file never loses to an older one
publishedAtWhen this file was published
pageThe page's slug, name and address
indicatorThe headline: none, minor, major or critical, as Statuspage's status.indicator
groupsComponent groups in page order, each with its components' ids
componentsEvery component, in page order
incidents.activePublished incidents not yet resolved, newest first
incidents.recentIncidents resolved in the last 14 days, newest first
maintenance.activeWindows in progress
maintenance.upcomingWindows not started yet, soonest first; cancelled windows never appear

Component

FieldMeaning
statusoperational, degraded_performance, partial_outage, major_outage or under_maintenance
daysUp to 90 UTC days, oldest first, ending today
days[].worstThe worst status held for at least a minute; null for a day with no data
days[].downMinutesMinutes in partial or major outage
days[].minutesWhole minutes in each status; statuses never reached are left out
uptimePercent of observed minutes outside an outage over the 90 days, two decimals; null with no data

Incident

FieldMeaning
id, title
statusinvestigating, identified, monitoring, resolved or postmortem
impactnone, minor, major or critical
startedAt, resolvedAt, updatedAtresolvedAt is null while open; updatedAt is the latest update's time
components{ componentId, status } for each affected component
updates{ id, status, body, createdAt }, newest first; body is Markdown

Maintenance window

FieldMeaning
id, title, bodybody is the window's message
statusscheduled, in_progress, verifying or completed
startsAt, endsAt
componentIdsThe components under maintenance

The file is served with Cache-Control: public, max-age=2. Fields may be added; ignore ones you don't know.

On this page