StatusDashboard
Uptime

Get uptime report

Compute a monthly uptime report for a status dashboard or org component (admin + uptimeReports feature).

View Markdown

GET /app/reports/uptime

Returns an on-demand monthly uptime report for the authenticated tenant. The response is the input for the admin console PDF export.

Admin role and the uptimeReports plan capability are required.


Request

See API Basics for required headers.

Query parameters

Provide exactly one of dashboardId or componentId — not both, not neither.

NameTypeRequiredDescription
dashboardIdUUIDscopeWhole-dashboard mode: status dashboard to report on. Must belong to the authenticated org. Mutually exclusive with componentId.
componentIdUUIDscopeSingle-component mode: org-owned component (CMP#). Not limited to dashboard wiring. Mutually exclusive with dashboardId.
yearintegeryesCalendar year (20002100).
monthintegeryesCalendar month (112).
timezonestringyesIANA timezone (max 64 chars), e.g. America/Los_Angeles.
includeMaintenancebooleannoDefault false. When true, maintenance contributes to downtime. Accepts "true" or "false".

Future months (month start strictly after today in the given timezone) return 400.


Sample requests

Whole dashboard

curl "https://api.statusdashboard.com/app/reports/uptime?dashboardId=a1b2c3d4-e5f6-7890-abcd-ef1234567890&year=2026&month=3&timezone=America/Los_Angeles&includeMaintenance=false" \
  -H "Authorization: Bearer bcf847abf5c6:def456"

Single component (dashboard is null in the response)

curl "https://api.statusdashboard.com/app/reports/uptime?componentId=c1b2c3d4-e5f6-7890-abcd-ef1234567890&year=2026&month=3&timezone=America/Los_Angeles" \
  -H "Authorization: Bearer bcf847abf5c6:def456"

Sample response (dashboard scope)

Status: 200 OK

{
  "tenantName": "Acme Corp",
  "dashboard": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Production Status"
  },
  "period": {
    "year": 2026,
    "month": 3,
    "timezone": "America/Los_Angeles",
    "startUtc": "2026-03-01T08:00:00.000Z",
    "endUtc": "2026-04-01T06:59:59.999Z"
  },
  "options": {
    "includeMaintenance": false,
    "scope": "dashboard",
    "componentId": null,
    "dashboardId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  "generatedAt": "2026-03-15T17:22:01.234Z",
  "summary": {
    "uptimePercent": 99.12,
    "downtimeMinutes": 380,
    "periodMinutes": 43200
  },
  "components": [
    {
      "id": "c1…",
      "name": "API Gateway",
      "uptimePercent": 98.5,
      "downtimeMinutes": 648,
      "periodMinutes": 43200,
      "events": [
        {
          "id": "e1…",
          "title": "Elevated API errors",
          "eventType": "incident",
          "startTime": "2026-03-10T15:00:00.000Z",
          "endTime": "2026-03-10T18:30:00.000Z",
          "durationMinutesInPeriod": 210
        }
      ]
    }
  ]
}

Component scope

When componentId is supplied, dashboard is null, options.scope is "component", and components contains a single entry.


Response fields

FieldDescription
tenantNameOrganization display name.
dashboardDashboard id and name in dashboard scope; null in component scope.
periodSelected month boundaries in UTC plus the request timezone.
options.scope"dashboard" or "component".
options.componentIdComponent UUID when scoped to one component; otherwise null.
options.dashboardIdDashboard UUID in dashboard scope; otherwise null.
summary.uptimePercentRolled-up uptime (unweighted mean for multi-component dashboard scope).
summary.downtimeMinutesWall-clock downtime minutes for a single component (or 0 when the dashboard has no components). null for multi-component dashboard rollups — downtime is not summed across components.
components[].eventsContributing published events sorted by startTime ascending.
components[].events[].startTimeOriginal event interval start (not period-clipped).
components[].events[].endTimeOriginal event interval end; open events use generatedAt; final events without endTime use resolvedAt when present.
components[].events[].durationMinutesInPeriodDowntime minutes for this event clipped to the report month (used for display; component % uses merged intervals).

Empty months return uptimePercent: 100 and empty events arrays.


Error responses

StatusWhen
400Missing/invalid query, both or neither of dashboardId/componentId, invalid timezone, or future month
403Non-admin role, missing uptimeReports capability, or authentication failure
404Dashboard not found (dashboard scope) or component not found (component scope)
500Unexpected server error

On this page

We use cookies

We use essential cookies to keep the site working, and optional analytics cookies to understand how it's used. Read our Privacy Policy.