Get a public status page
const url = 'https://api.perstat.io/public/status-pages/example';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.perstat.io/public/status-pages/exampleReturns a published status page by slug with overall state, components, active incidents, and maintenance windows. Public pages need no authentication; protected pages answer 401 with a login_required marker instead of any page data. A renamed page may return a redirect hint pointing to its new slug.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”object
Gruppen-Namen, die initial eingeklappt dargestellt werden (Anzeige-Vorgabe; der Viewer kann sie manuell aufklappen).
object
Status je Tag, alt → neu (Uptime-Balken).
object
Akkumulierte Ausfall-/Beeinträchtigungsdauer des Tages in Sekunden (0 = keine).
Passed | degraded | failed | unknown.
Tagesbeginn (Unix-Sekunden, UTC).
Effektive Gruppe (Override oder Projektname) — Sektions-Bündelung.
Ø-Antwortzeit (ms) je Tag, alt → neu (Sparkline).
Passed | degraded | failed | unknown.
Uptime% im Anzeigefenster; null, wenn keine Daten.
Effektives Fenster in Tagen (auf Tarif-Retention geklammert).
Ob ein Logo existiert (→ /public/status-pages/{slug}/logo).
Ob ein Dark-Mode-Logo existiert (→ /public/status-pages/{slug}/logo/dark).
Die Public-SPA nutzt es im Dark-Theme, sonst Fallback aufs Standard-Logo.
Header-Navigation (Label + URL).
Ein Navigationselement der Header-Bar.
object
Optionaler Untertitel/Tagline.
Aktive + innerhalb des Fensters behobene Incidents (öffentlich sichtbar), offene zuerst. Leer, wenn keine.
object
Betroffene Komponente (Seiten-Label des Monitors).
Opake Incident-ID (Permalink/React-Key).
Detected|acknowledged|investigating|identified|monitoring|resolved.
Critical | degraded (technische Schwere; steuert die Tönung).
Unix-Sekunden (UTC).
Open | resolved.
Optionale öffentliche Zusammenfassung (“” = keine).
Öffentliche Timeline-Updates (älteste zuerst).
object
Unix-Sekunden (UTC).
Note | status.
Lebenszyklus-Phase, falls dieses Update eine Statusänderung war.
Laufende + demnächst geplante Wartungsfenster, die Monitore dieser Seite betreffen. Leer, wenn keine.
Öffentlich sichtbares Wartungsfenster (für die Status-Seite).
object
Betroffene Komponenten (Seiten-Labels).
Unix-Sekunden (UTC).
Öffentlicher Titel = der Seitenname (prominentes Editor-Feld).
Gesamtstatus = schlechtester Komponenten-Status.
Gesetzt, wenn der angefragte Slug ein reservierter Alt-Slug ist: die SPA
leitet dann hart auf <redirect_slug>.perstat.io um.
Ob die Org dieser Seite Statusseiten-Abonnements anbieten darf (Tarif-Cap
monitor.status_page_subscribers). Die Public-SPA blendet das Abo-Formular
nur dann ein. Der Subscribe-Endpoint gated zusätzlich serverseitig.
Aktive Prüf-Standorte (PoPs) der Plattform für die „Geprüft aus“-Transparenz (ADR-0010). Global (kein Tenant-Bezug); leer, wenn keine bekannten Standorte.
Aktiver Vantage-Point für die „Geprüft aus“-Transparenz auf der öffentlichen
Statusseite (ADR-0010). Trägt NUR den Kontinent-Key — Produkt-Entscheid
2026-06-24: keine PoP-/Städtenamen mehr im Frontend, „nur Region (=Kontinent)“.
Clients lokalisieren über region.<continent>.
object
EFFEKTIVES White-Label dieser Seite: Tarif-Cap monitor.white_label
(ab Command) UND Per-Seite-Toggle hide_datargo_brand. Blendet
„Powered by Perstat“ aus; die Public-SPA versteckt den Footer-Hinweis.
Examplegenerated
{ "collapsed_groups": [ "example" ], "components": [ { "bars": [ { "impact_seconds": 1, "status": "example", "ts": 1 } ], "group": "example", "label": "example", "show_sparkline": true, "show_uptime_bars": true, "show_uptime_chart": true, "sparkline": [ 1 ], "status": "example", "uptime_pct": 1, "uptime_window_days": 1 } ], "description": "example", "has_logo": true, "has_logo_dark": true, "header_nav": [ { "href": "example", "label": "example" } ], "headline": "example", "incidents": [ { "component": "example", "id": "example", "lifecycle_state": "example", "postmortem": { "impact": "example", "lessons": "example", "published_at": 1, "root_cause": "example", "summary": "example" }, "resolved_at": 1, "severity": "example", "started_at": 1, "status": "example", "summary": "example", "updates": [ { "body": "example", "created_at": 1, "kind": "example", "state": "example" } ] } ], "maintenances": [ { "body": "example", "components": [ "example" ], "id": "example", "scheduled_end": 1, "scheduled_start": 1, "title": "example" } ], "name": "example", "overall": "example", "redirect_slug": "example", "subscriptions_enabled": true, "vantage_points": [ { "continent": "example" } ], "white_label": true}Private Seite: {error:“login_required”, name, has_logo, has_logo_dark}