All posts
1 min readstatus pages

Embeddable status badges

Drop a live "status up" pill on your docs site, README, or marketing page. CORS-friendly JSON and a shields.io-style SVG, both cache-tagged at the edge.

Every gochron status page now publishes two extra endpoints designed for embedding the page's overall status on a site you control, without iframing the whole status page.

What ships

For any public status page at https://api.gochron.com/api/status/{slug}, two sibling endpoints are now live:

  • GET /api/status/{slug}/lite returns a small JSON shape with the overall status and a last-updated timestamp.
  • GET /api/status/{slug}/badge.svg returns a shields.io-style SVG pill that embeds via a plain <img> tag.

Both serve Access-Control-Allow-Origin: * and a 30-second Cache-Control, so a popular embed on a busy site won't hammer the API.

The JSON shape

{
  "ok": true,
  "status": "up",
  "updated_at": "2026-05-28T14:21:09Z"
}

status is the overall status word that drives the badge color: up, degraded, down, or pending. Fetch it from a browser or a server, parse it however you like, render whatever UI you want around it.

The badge

The SVG endpoint produces a familiar shields.io-style pill: dark left segment with a label, colored right segment with the status word.

<a href="https://status.example.com">
  <img src="https://api.gochron.com/api/status/example/badge.svg" alt="status" />
</a>

Override the left label with ?label= for branded badges:

https://api.gochron.com/api/status/example/badge.svg?label=payments

Labels are clamped to 32 characters and XML-escaped at the render boundary, so the badge can't be used to inject markup into a page that renders the SVG inline.

Where to find it

Open any status page in the gochron dashboard. The Embed card shows a live preview of the badge alongside copy buttons for the JSON URL, the badge URL, and a ready-to-paste Markdown snippet.

That's the feature in one sentence: live status on your site, no iframe, no extra JS, one image tag.