Analytics come from daily rollup tables, never from raw checks, so they are cheap to read and stable. Uptime is up / (up + degraded + down) with degraded counting half; maintenance time is excluded.
Workspace overview
GET
/user/analytics/overviewNeeds the analytics.read permission, or an API key with the matching scope.
Query parameters
workspace_idintegerrequired- The workspace to read from.
daysintegerdefault 30- Window, 1 to 365.
Request
curl "https://api.statusbee.co/user/analytics/overview?workspace_id=5&days=30" \
-H "Authorization: Bearer sb_live_…"Response
{
"statusCode": 200,
"error": false,
"message": null,
"data": {
"days": 30,
"pages": 1,
"open_incidents": 1,
"incidents_in_window": 2,
"uptime_pct": 99.937,
"mttr_minutes": 41,
"subscribers_total": 1284,
"monitors": {
"total": 7,
"up": 6,
"down": 1,
"paused": 0
}
}
}Page series
GET
/user/analytics/pageDaily page views, subscriber adds and removes, and per-component uptime for one page.
Needs the analytics.read permission, or an API key with the matching scope.
Query parameters
page_idintegerrequired- The status page to read from.
daysintegerdefault 30- Window, 1 to 365.
Request
curl "https://api.statusbee.co/user/analytics/page?page_id=4&days=7" \
-H "Authorization: Bearer sb_live_…"Response
{
"statusCode": 200,
"error": false,
"message": null,
"data": {
"days": 7,
"views": [
{
"page_id": 4,
"date": "2026-09-13",
"views": 412,
"uniques": 287
}
],
"subscriber_stats": [
{
"page_id": 4,
"date": "2026-09-13",
"adds": 9,
"removes": 1
}
],
"component_uptime": [
{
"component_id": 21,
"date": "2026-09-13",
"up_s": 86100,
"degraded_s": 0,
"down_s": 300,
"maint_s": 0,
"component": {
"id": 21,
"name": "REST API"
}
}
]
}
}