Webhooks
Each webhook endpoint has a secret URL. Point your monitoring tool at it and the component's state follows. Create endpoints in the dashboard, on the page's webhook section; the URL is shown once.
https://status.starhold.app/in/YOUR_ENDPOINT_TOKEN
- Send
POSTwith a JSON body of up to 64 KB, at most 60 requests a minute per endpoint. - Success is
204. A wrong token is404. A body the endpoint does not understand is422with a message that names the shape it expects. Too many requests is429. - A webhook sets the component's state. It never writes a public incident: you stay in charge of the wording your clients read.
- The body is never stored or logged.
Uptime Kuma
- In the dashboard, add a webhook endpoint with source "Uptime Kuma" and pick the component.
- In Uptime Kuma, open Settings, Notifications, Setup Notification. Choose type "Webhook".
- Post URL: your endpoint URL above. Request body: "application/json" (the preset). Save, then attach the notification to your monitor.
Mapping: heartbeat status 1 (up) is operational, 0 (down) is major outage, 3 (maintenance) is maintenance. Status 2 (pending) is ignored.
Better Stack
- Add an endpoint with source "Better Stack" and pick the component.
- In Better Stack Uptime, open Integrations and add a Webhook. Use your endpoint URL and POST, and turn on incident started and incident resolved.
Mapping: incident started is major outage, resolved is operational, acknowledged is ignored.
Grafana
- Add an endpoint with source "Grafana", pick the component, and choose what a firing alert reports (major outage by default, or degraded).
- In Grafana, open Alerting, Contact points, add a contact point of type "Webhook". URL: your endpoint URL. HTTP method: POST. Route your alert rule to it.
Mapping: "status": "firing" becomes the state you chose, "status": "resolved" is operational.
Generic JSON
Anything that can send a POST works. Add an endpoint with source "Generic". On an endpoint bound to one component, send just the state:
curl -X POST https://status.starhold.app/in/YOUR_ENDPOINT_TOKEN \
-H "Content-Type: application/json" \
-d '{"state": "degraded"}'
On an endpoint that is not bound, name the component by its id or its exact name:
{"component": "API", "state": "major_outage"}
State is one of operational, degraded, partial_outage, major_outage, maintenance.