Skip to content

SLA reports

An SLA report answers “did we hit our uptime commitment last month?” for each UTC calendar month, per monitor, with a clear met or breached verdict.

Find it on the SLA tab of any HTTP monitor, or pull the whole account at once through the API.

Terminal window
# One monitor
curl -G "https://api.siteqwality.com/http/job/$JOB_ID/sla" \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
--data-urlencode "months=6"
# Every monitor
curl -G "https://api.siteqwality.com/monitors/sla" \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
--data-urlencode "months=6"

$JOB_ID is the monitor’s id. months defaults to 3 and is clamped to 1 to 24, so months=99 gives you 24. The dashboard offers 3, 6 and 12, defaulting to 6.

Each month returns:

FieldMeaning
monthYYYY-MM, newest first.
uptime_percentageUptime for the month, or null with no data.
days_with_dataHow many days actually contributed.
targetThe target this month was judged against.
attainedtrue, false, or null with no data.

The account-wide report adds breached_months per monitor, counting months where attained is false. Months with no data are not counted as breaches.

target_sourceMeaning
status_pageTaken from an SLA target you set on a status page.
defaultNo target configured, so the default 99.9% applies.

The target is configured on the monitor’s row in a status page, not on the monitor itself. If a monitor appears on several status pages with different targets, the highest (strictest) one wins. A status page also accepts an SLA target on a browser check, but browser checks never appear in SLA reports, so that target is unused.

Month uptime is the unweighted average of that month’s daily uptime percentages, not a request-weighted or minutes-of-downtime figure. Every day with data counts equally, so a day with a handful of checks (a partial first day of monitoring, or a day the monitor spent mostly paused) moves the month as much as a fully sampled day. Check days_with_data when a number looks surprising.

Other rules:

  • Days with no data are excluded, not treated as 0% or 100%.
  • A month with no data at all returns uptime_percentage: null and attained: null rather than a breach.
  • Attainment is inclusive. Exactly 99.900% against a 99.9% target is attained.
  • Months are UTC calendar months, so the newest month is always month-to-date.

SLA figures come from daily figures updated every five minutes, so the current UTC day counts with the checks so far, and each day is complete by 01:00 UTC the next day. For contractual reporting, run the report after 01:00 UTC on the 1st.

  • HTTP, TCP port and ping monitors only. Browser, cron, DNS and TLS monitors have no SLA report.
  • JSON only. There is no SLA CSV or PDF export; the monitor uptime CSV is the closest thing and uses the same daily-average convention.