SLA tracking

Happy Uptime computes uptime over a rolling window and compares it against your declared target (sla_target_pct). The result tells you both the literal % and your remaining "error budget" — the headroom before you breach the SLA.

Anatomy

For each monitor with an SLA target:

FieldMeaning
sla_target_pctYour goal, e.g. 99.9
actual_uptime_pctComputed from check results in the window
error_budget_seconds_remainingHow much downtime you can still afford
error_budget_burned_pctFraction of the budget you've used
breachedtrue if actual < target

Pre-aggregation

Raw check results live in check_results (high cardinality). For SLA + analytics queries, hourly and daily rollups are pre-computed:

TableGranularity
check_rollups_hourlyPer (monitor, region, hour). Holds avg / p50 / p95 / p99 response time + uptime fraction
check_rollups_dailyPer (monitor, day). Aggregated from hourly. Includes incident count

A cron runs every hour to compute the previous hour's rollups, and every midnight UTC to roll daily.

Endpoints

EndpointReturns
GET /analytics/sla?monitor_id=…&days=30SLA tracking for one monitor over N days
GET /analytics/uptime?days=30Per-monitor uptime over time
GET /analytics/latency?monitor_id=…&days=7P50/P95/P99 response times
GET /analytics/summaryOrg-wide stats
Analytics API

Pull SLA numbers programmatically.

Learn More
Plans

Tier-specific SLA tracking limits.

Learn More
Ask a question... ⌘I