Uptime API › Analytics
Get uptime analytics
GET/api/v1/uptime/analytics
Uptime, latency, downtime, outages and SLA results over a date range for every monitor the caller can see: organization totals, a time series, a row per monitor, the five monitors furthest below their SLA target, and a row per team.
- With neither
fromnorto, the range is the last 30 UTC days, today included. - A date (
YYYY-MM-DD) is a whole UTC day, andtois the last day included. An RFC 3339 time is an exact instant, andtois excluded. - The range may be at most 366 days. Ranges up to 48 hours are
answered in hourly buckets, longer ones in daily buckets of whole
UTC days;
rangein the answer gives what was used. - A monitor without its own
sla_targetis held todefault_sla_target(99.9).
Requires the uptime:monitor:read scope.
Authorization
Parameters
Query parameters
fromstringStart of the range. Send together withto.tostringEnd of the range. Send together withfrom.comparestringAlso return headline numbers for the period before (previous) or the same range a year earlier (year).team_idstringNarrow to one team's monitors, ornonefor only the organization-wide ones. It never widens what the caller can see.
Responses
200
The analytics.
dataUptimeAnalytics requiredShow UptimeAnalytics properties
rangeobjectThe window answered. Daily answers cover whole UTC days, so it can be wider than asked.fromstring (date-time)tostring (date-time)granularitystringtzstring
default_sla_targetnumbertotalsobjectmonitorsintegeruptime_percentnumber | nullCheck-weighted across all monitors.monitor_average_uptime_percentnumber | nullThe plain mean of each monitor's own uptime.checksintegerup_checksintegerdown_checksintegerdegraded_checksintegerdegraded_secondsintegerdown_secondsintegerlatencyLatencyShow Latency properties
avg_msnumber | nullp50_msnumber | nullp95_msnumber | null
slaobjectmetintegermissedintegerno_datainteger
incidentsIncidentStatsShow IncidentStats properties
countintegerresolvedintegeropen_nowintegerdowntime_secondsnumbermttrobjectTime to recover, over resolved outages.countintegerp50_secondsnumber | nullp95_secondsnumber | nullavg_secondsnumber | null
seriesarray of objectbucketstring (date-time)checksintegerup_checksintegeruptime_percentnumber | nulldegraded_secondsintegerdown_secondsintegerlatencyLatencyShow Latency properties
avg_msnumber | nullp50_msnumber | nullp95_msnumber | null
incidentsinteger
by_monitorarray of MonitorStatsShow MonitorStats properties
monitor_idstringnamestringtypeMonitorTypeteam_idstringis_activebooleansla_targetnumber | nullsla_target_sourcestringWhether the target is the monitor's own ordefault_sla_target.uptime_percentnumber | nullsla_gapnumber | nullUptime minus target, in percentage points.sla_metboolean | nullchecksintegerup_checksintegerdegraded_secondsintegerdown_secondsintegerlatencyLatencyShow Latency properties
avg_msnumber | nullp50_msnumber | nullp95_msnumber | null
incidentsIncidentStatsShow IncidentStats properties
countintegerresolvedintegeropen_nowintegerdowntime_secondsnumbermttrobjectTime to recover, over resolved outages.countintegerp50_secondsnumber | nullp95_secondsnumber | nullavg_secondsnumber | null
worst_monitorsarray of MonitorStatsUp to five monitors furthest below their target, then lowest uptime.Show MonitorStats properties
monitor_idstringnamestringtypeMonitorTypeteam_idstringis_activebooleansla_targetnumber | nullsla_target_sourcestringWhether the target is the monitor's own ordefault_sla_target.uptime_percentnumber | nullsla_gapnumber | nullUptime minus target, in percentage points.sla_metboolean | nullchecksintegerup_checksintegerdegraded_secondsintegerdown_secondsintegerlatencyLatencyShow Latency properties
avg_msnumber | nullp50_msnumber | nullp95_msnumber | null
incidentsIncidentStatsShow IncidentStats properties
countintegerresolvedintegeropen_nowintegerdowntime_secondsnumbermttrobjectTime to recover, over resolved outages.countintegerp50_secondsnumber | nullp95_secondsnumber | nullavg_secondsnumber | null
by_teamarray of objectOne row per team;team_id""is the organization-wide monitors.team_idstringmonitorsintegeruptime_percentnumber | nullsla_missedintegerincidentsintegerdowntime_secondsnumberdegraded_secondsinteger
coverageobjectDays rolled up before latency and degraded or down time were recorded add nothing to those figures; this says how many there are.rowsintegerrows_without_detailinteger
comparenull | objectThe comparison period's headline numbers, ornullwithoutcompare.- null
- object
modestringfromstring (date-time)tostring (date-time)uptime_percentnumber | nullchecksintegerdegraded_secondsintegerlatencyLatencyShow Latency properties
avg_msnumber | nullp50_msnumber | nullp95_msnumber | null
incidentsIncidentStatsShow IncidentStats properties
countintegerresolvedintegeropen_nowintegerdowntime_secondsnumbermttrobjectTime to recover, over resolved outages.countintegerp50_secondsnumber | nullp95_secondsnumber | nullavg_secondsnumber | null
successboolean required
400
from, to or compare is invalid (VALIDATION_FAILED, with details naming each field).
errorobject requiredcodestring requiredmessagestring requireddetailsarray of object requiredfieldstringmessagestring
401
No API key was sent, or it is unknown, revoked or expired (UNAUTHORIZED).
errorobject requiredcodestring requiredmessagestring requiredrequest_idstring
403
The key lacks the scope this endpoint needs (FORBIDDEN).
errorobject requiredcodestring requiredmessagestring requiredrequest_idstring
429
Too many requests (RATE_LIMITED). Wait for Retry-After seconds.
Retry-AfterintegerSeconds to wait before retrying.
errorobject requiredcodestring requiredmessagestring requiredrequest_idstring
500
Something went wrong on EvoHub's side (INTERNAL_ERROR). Retry later.
errorobject requiredcodestring requiredmessagestring requiredrequest_idstring
Example request
curl -X GET 'https://evohub.io/api/v1/uptime/analytics' \
-H 'Authorization: Bearer <TOKEN>'