> ## Documentation Index
> Fetch the complete documentation index at: https://docs.happyuptime.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Build a status page

From new schedule to public URL in 3 minutes.

# Build a status page

**Create the page**

Dashboard → **Status Pages** → **+ New page**. Pick a template (`minimal`, `brand`, `terminal`), name it, choose a slug. The slug becomes the URL: `happyuptime.com/status/{slug}`.

  **Add components linked to monitors**

Status pages display **components**, each typically backed by a monitor. Click **+ Add component**, name it ("API", "Web App"…), and pick the monitor it tracks. The component's status auto-derives from the monitor.

    Add 5–10 components to start. Bulk add via `POST /status-pages/:id/components/bulk`.

  **(Optional) Group components**

Once you have 8+ components, add groups (Frontend / Backend / Infrastructure) so the page collapses cleanly. **Settings → Groups → + Add group**.

  **Brand it**

Settings → **Branding**:
    - Logo (light + dark)
    - Brand color
    - Custom CSS injection
    - "Hide branding" — Pro+

    Pages render server-side and are cached at the edge for 30s — changes go live within a minute.

  **Publish**

Toggle **is_published**. Your page is live at `happyuptime.com/status/{slug}`.

    Add a custom domain ([guide](/guides/custom-domain)) or embed components on your own site ([widgets](/guides/embed-badge), [banner](/guides/downtime-banner)).

## What's included on every page

- 90-day uptime bars per component
- Active and recent incidents (auto-fed from `/incidents`)
- Subscriber form (double-opt-in email)
- RSS / Atom feed at `/<slug>/feed.xml`
- Auto-refresh, dark mode toggle
- SEO meta tags + OG image

## Programmatic access

Every published status page exposes a public, CORS-enabled API. From the page itself,
the **API** link in the footer opens an in-page modal with the endpoint, code samples,
and full schema. Or hit it directly:

| Endpoint | Returns |
| --- | --- |
| `GET /api/status-pages/public/{slug}` | Full JSON snapshot — components, groups, dependencies, incidents, uptime |
| `GET /api/status-pages/public/{slug}/markdown` | Markdown summary (great for LLMs) |
| `GET /api/status-pages/public/{slug}/llms.txt` | Machine-readable LLM instructions |
| `GET /api/status-pages/public/{slug}/feed.xml` | Atom feed of incidents |
| `GET /api/status-pages/public/{slug}/uptime` | 90-day daily uptime per component |

On a custom domain the same payloads live at `/api`, `/api.md`, `/llms.txt`, `/feed.xml`.

See the full reference: [Public status page API](/api/status-pages/public).