System Metrics
Alongside component status you can show your own measurements on the status page — response times, throughput, queue depth, whatever matters to your customers.
We do not measure anything ourselves. Your own monitoring sends us values and we draw them, so you always know where a number on your status page came from.
Defining a metric
Dashboard → Status pages → System Metrics → Create. Two fields matter:
- Key — the name you push against later, e.g.
api_response_time. It appears in the API URL. Changing it later breaks anything that is already pushing. - Aggregation — how values are combined for longer periods. Response times should average; counters like "requests per minute" should sum. Get this wrong and the month chart becomes meaningless.
Sending values
A single value:
curl -X POST https://statuswerk.eu/api/v1/metrics/api_response_time/points \
-H "Authorization: Bearer $STATUSWERK_TOKEN" \
-H "Content-Type: application/json" \
-d '{"value": 128.4}'
Without a timestamp the value counts as "now". Several values at once — up to 5,000 per call:
curl -X POST https://statuswerk.eu/api/v1/metrics/api_response_time/points \
-H "Authorization: Bearer $STATUSWERK_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"points": [
{"value": 128.4, "timestamp": "2026-09-07T12:00:00Z"},
{"value": 131.9, "timestamp": "2026-09-07T12:01:00Z"}
]
}'
The response is 202 Accepted.
How often to send
At least every five minutes, otherwise a visible gap appears in the day view. Once a minute is the usual rhythm.
Values are rounded to 60-second buckets. Send several within the same minute and the last one wins.
Retrying is safe
Making the same call twice does not duplicate data — each value lands in its bucket and overwrites it. You can put the call in a cron job without guarding it and simply retry on failure.
* * * * * /usr/local/bin/push-latency.sh || true
Backfilling history
When migrating from another provider you can backfill up to 28 days — just send the
values with the appropriate timestamp. Without it your status page starts with empty
charts.
Timestamps in the future are rejected.
How long we keep data
| Resolution | Retention | Used for |
|---|---|---|
| 1 minute | 7 days | Day view |
| 5 minutes | 90 days | Week view |
| 1 hour | 24 months | Month view |
Older values are condensed, not discarded. The condensed tiers keep the minimum and maximum, so outliers do not disappear into an average.
When values stop arriving
If nothing arrives for a while, the status page shows "No recent data" rather than the last known number. A stale value that looks current is the worst thing a status page can do.
Other endpoints
GET /api/v1/metrics list metrics
POST /api/v1/metrics define one
GET /api/v1/metrics/{key}
PATCH /api/v1/metrics/{key}
DELETE /api/v1/metrics/{key} also deletes its values
GET /api/v1/metrics/{key}/points read values back
When reading back you can pass from, to and resolution (60, 300 or 3600).
Plans
The number of metrics depends on your plan: Starter 2, Basic 5, Pro 15, Business 50.