Guides

Embed a status badge

Drop a live "All systems operational" pill into your README, marketing site, or footer.

Every unprotected public status page exposes a tiny embeddable badge that reflects current service health when the badge is loaded. Paste a single iframe — that's it.

Snippet

<iframe
  src="https://obzerv.xyz/status/your-slug/badge?theme=dark"
  width="250"
  height="36"
  frameborder="0"
  scrolling="no"
  style="color-scheme: normal"
></iframe>

Replace your-slug with your status page slug. Use ?theme=light for light mode or omit the param to default to light.

States

TriggerPill textDot color
All active monitors upAll systems operationalgreen
Some degraded, none downPartial degradationyellow
Every monitor degradedDegraded performanceyellow
Some down, not allPartial outageorange
Every monitor downMajor outagered
Unknown, pending, or stale observationsSome service statuses are unknowngray
Every monitor pausedAll monitors pausedgray
No monitors attachedNo monitorsgray

The same status model drives the hero on the public status page (/status/your-slug) and the per-group pills. It follows Atlassian Statuspage's worst-component-wins algorithm — a single down monitor out of many produces a partial outage (orange), not a major outage (red).

Refresh and access

The badge reflects the latest permitted response when loaded. Reload the iframe to refresh it. The full status page refreshes every 30 seconds and on focus. Private, password-protected, and IP-restricted pages do not expose badges.

The badge is wrapped in an <a target="_blank"> link to the full status page — clicking it opens /status/your-slug in a new tab.

Markdown / GitHub README

The badge route returns HTML, so use an ordinary status-page link in Markdown:

[Service status](https://obzerv.xyz/status/your-slug)

See also

  • Status pages — create the public page the badge links to.
  • GET /stats — for building custom badges/dashboards.