Public endpoints
The visitor-facing surfaces a published status page exposes on its address: the rendered page, the live version fingerprint, status.json, the SVG badge, Atom and RSS feeds, and subscriptions.
A published status page exposes these unauthenticated surfaces on its address. None take an API key; access is governed by the page being published, not suspended, and not expired. Replace <your-address> with your custom domain or <slug>.status.hep.gg.
The rendered page
https://<your-address>/PublicThe status page itself: a mobile-friendly render with an overall status hero, a color legend, the component tree with 90-day uptime bars, active incidents, scheduled maintenance, and the incident history with published postmortems. When you allow subscriptions, a Subscribe button opens a small form with an Email tab and a Feeds tab.
Live auto-refresh
The rendered page refreshes itself when you change anything. It polls the version endpoint every 30 to 45 seconds (and when the tab regains focus) and reloads only when the fingerprint changes, so visitors who leave the tab open see new updates within about a minute.
Live version
https://<your-address>/status-version.jsonPublicA tiny opaque fingerprint of everything a visitor sees. Compare it for equality against your last-seen value; do not parse it.
{ "v": "mpsgxslc-13.mpsjyydk-1.mpsjxznk-2.mpsjxyvs" }Status JSON
https://<your-address>/status.jsonPublicA compact JSON snapshot of the page for dashboards, bots, or your own integrations.
status.indicatoris the worst component status;componentslists each visible leaf component;incidentslists active incidents;scheduled_maintenanceslists maintenance that is booked or under way.versionis the same fingerprint served by/status-version.json.
{
"page": { "name": "Acme", "url": "https://status.acme.example" },
"version": "mpsgxslc-13.mpsjyydk-1.mpsjxznk-2.mpsjxyvs",
"status": { "indicator": "operational", "description": "All Systems Operational" },
"components": [
{ "id": "c_api", "name": "API", "status": "operational", "label": "Online" }
],
"incidents": [
{
"id": "i_123",
"name": "Elevated API latency",
"impact": "minor",
"state": "monitoring",
"startedAt": "2026-05-30T18:00:00.000Z",
"latestUpdate": "We are monitoring the fix."
}
],
"scheduled_maintenances": [
{ "id": "i_124", "name": "Database upgrade", "impact": "none", "state": "scheduled", "scheduledFor": "2026-10-05T02:00:00.000Z", "scheduledUntil": "2026-10-05T03:00:00.000Z" }
]
}Status badge
https://<your-address>/badge.svgPublicA shields-style SVG badge showing the overall status, colored to match, cached for a minute.
[](https://your-address.example)Feeds
https://<your-address>/history.atomPublichttps://<your-address>/history.rssPublicOne entry per update, titled with the incident and its state, linking back to the page. The rendered page advertises the Atom feed with a <link rel="alternate"> tag, so feed readers find it from the page URL.
Subscriptions
When the page owner allows subscriptions, visitors can leave an email address through the page's Subscribe form. Hep.gg sends a confirmation link (double opt-in), and every email carries a one-click unsubscribe link. The form, the confirmation page and the unsubscribe page all live on the page's own address. Webhook and Discord channels are added by the page owner in the dashboard rather than by visitors.