Status Pages

Public status pages, custom domains, branding and members.

What a status page is

A status page is a public site showing the live status of your monitors, active incidents and scheduled maintenance. Every monitor belongs to a status page.

Domains

Each page is instantly reachable at status.shxrk.systems/<slug>. Paid plans can attach a custom domain (e.g. status.yourcompany.com) — point a CNAME at our edge and we issue the certificate automatically (PUT /status-pages/:id/ssl for the cert type, PUT /status-pages/:id/legal for imprint/privacy links).

Creating a page via the API

curl -X POST https://api.shxrk.systems/api/v1/uptime/status-pages \
  -H "Authorization: Bearer sk_shx_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Status",
    "slug": "acme",
    "description": "Live status of all Acme services",
    "is_public": true,
    "show_branding": true,
    "timezone": "Europe/Berlin",
    "auto_create_incident": true
  }'

Check slug availability first with GET /status-pages/check-slug?slug=acme.

Branding

curl -X PUT https://api.shxrk.systems/api/v1/uptime/status-pages/<id> \
  -H "Authorization: Bearer sk_shx_..." \
  -H "Content-Type: application/json" \
  -d '{
    "logo_url": "https://acme.com/logo.svg",
    "brand_color": "#e85d04",
    "footer_text": "© Acme Corp",
    "footer_links": "[{\"label\":\"Imprint\",\"url\":\"https://acme.com/imprint\"}]"
  }'

Hiding the show_branding badge requires a paid plan.

Members

Login members can sign in and manage the page without owning it. Members are added by invitation — the invitee accepts via a link:

# Invite — sends an email with an accept link
curl -X POST https://api.shxrk.systems/api/v1/uptime/status-pages/<id>/members \
  -H "Authorization: Bearer sk_shx_..." \
  -H "Content-Type: application/json" \
  -d '{ "email": "[email protected]", "role": "editor" }'

# Invitee accepts
POST /api/v1/uptime/status-pages/members/accept

Roles: admin, editor, viewer, and custom — a custom role takes an explicit capabilities list (e.g. edit_monitors, manage_members, manage_settings). You can only grant capabilities you hold yourself, and owner email cannot be invited. Login seats require at least the Premium plan on the page owner's subscription.

Manage members with GET/PUT/DELETE /status-pages/:id/members[/:member_id]; pending invitations can be cancelled via DELETE /status-pages/:id/members/invitations/:invitation_id. Members see shared pages through GET /status-pages/member-of.

Two member-facing guarantees worth knowing: members never see monitor credentials (settings, headers, infrastructure logins are server-side redacted), and read-only members cannot mutate monitor state.

Subscribers

Visitors can subscribe on your public page for incident/maintenance notifications. You see them via GET /subscribers; notification-only contacts are managed through notify-contacts.