Utilita Status API

Public, anonymous, read-only JSON API reporting the live operational state of Utilita Energy's services. Eight GET endpoints under https://status.utilita.co.uk/api/v2 return the page status indicator, all 21 tracked components (SMETS1, SMETS1 DCC-enrolled and SMETS2 smart meters, Guest Payments, Open Banking, PayPoint in-store and IVR top-up, PayZone in-store, the My Utilita app and web portal, Power-up functionality, utilita.co.uk, join.utilita.co.uk, telephone lines, the chatbot, smart meter installations and the smart metering network), open and historical incidents with their full update timelines, and scheduled maintenance windows. No API key, no sign-up, no OAuth — every endpoint is anonymous and CORS-open with a 10-second cache window. Runs on Atlassian Statuspage under Utilita's own domain, and offers webhook, RSS, Atom, email and Slack subscriptions for push delivery. This is Utilita's only public API; it carries no customer, billing or consumption data.

Documentation

Specifications

Other Resources

OpenAPI Specification

utilita-status-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Utilita Status API
  version: '2'
  summary: Public, anonymous read API for Utilita Energy service status, components, incidents and scheduled maintenance.
  description: >-
    Utilita Energy publishes a public status page at https://status.utilita.co.uk/ running on
    Atlassian Statuspage, and that page exposes the standard Statuspage v2 read API on the Utilita
    domain. It is the only public, anonymous, machine-readable API surface API Evangelist has been
    able to verify for Utilita: it returns the live operational state of Utilita's own components —
    SMETS1 / SMETS1 (DCC Enrolled) / SMETS2 smart meters, Guest Payments, PayPoint and PayZone in-store
    payments, the PayPoint IVR top-up line, Open Banking, My Utilita (app and web portal), Power-up
    functionality, utilita.co.uk, join.utilita.co.uk, the Contact Centre, telephone lines, the chatbot,
    smart meter installations and the smart metering network.

    PROVENANCE — this document was GENERATED by API Evangelist from live anonymous probes of the eight
    endpoints Utilita's own API documentation page (https://status.utilita.co.uk/api) lists. Utilita
    does not publish an OpenAPI document. Every path, response shape and example below was observed on
    2026-07-27; each operation carries an `x-evidence` block recording the URL probed, the HTTP status
    returned and the date. No operation, parameter or field has been invented — the API is read-only
    and has no documented request parameters.
  contact:
    name: Utilita Help
    url: https://utilita.co.uk/help
  license:
    name: Not published
    url: https://www.atlassian.com/legal/product-specific-terms#statuspage-specific-terms
  x-platform: Atlassian Statuspage
  x-status-page-id: lgm23svnh0xr
  x-generated-by: API Evangelist enrichment pipeline (live endpoint observation)
  x-generated-on: '2026-07-27'
  x-documentation: https://status.utilita.co.uk/api
externalDocs:
  description: Utilita Status Page API documentation (published by Utilita on its status page)
  url: https://status.utilita.co.uk/api
servers:
- url: https://status.utilita.co.uk/api/v2
  description: Production — public, anonymous, no authentication required
tags:
- name: Status
  description: Overall page status and rolled-up summary.
- name: Components
  description: The individual Utilita services tracked on the status page.
- name: Incidents
  description: Unplanned service incidents and their update timeline.
- name: Scheduled Maintenance
  description: Planned maintenance windows.
security: []
paths:
  /summary.json:
    get:
      operationId: getSummary
      summary: Get status page summary
      description: >-
        Returns a rollup of the page: the status indicator, every component and its status, all
        unresolved incidents, and any upcoming or in-progress scheduled maintenances. One call
        answers "is anything wrong at Utilita right now".
      tags: [Status]
      security: []
      responses:
        '200':
          description: Status page summary.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Summary'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        url: https://status.utilita.co.uk/api/v2/summary.json
        http_status: 200
        content_type: application/json; charset=utf-8
        probed: '2026-07-27'
        example: examples/utilita-status-summary.json
  /status.json:
    get:
      operationId: getStatus
      summary: Get overall status indicator
      description: >-
        Returns the page object and a single rolled-up status indicator/description
        (for example `none` / "All Systems Operational"). This is the endpoint the status
        page itself polls for change.
      tags: [Status]
      security: []
      responses:
        '200':
          description: Overall status indicator.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        url: https://status.utilita.co.uk/api/v2/status.json
        http_status: 200
        content_type: application/json; charset=utf-8
        probed: '2026-07-27'
        example: examples/utilita-status-status.json
  /components.json:
    get:
      operationId: getComponents
      summary: List components
      description: >-
        Returns every component tracked on the Utilita status page, including group components
        (Payments, My Utilita, Websites, Contact Centre) and their children, each with its current
        status.
      tags: [Components]
      security: []
      responses:
        '200':
          description: All components on the page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComponentsResponse'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        url: https://status.utilita.co.uk/api/v2/components.json
        http_status: 200
        content_type: application/json; charset=utf-8
        probed: '2026-07-27'
        example: examples/utilita-status-components.json
  /incidents.json:
    get:
      operationId: getIncidents
      summary: List recent incidents
      description: >-
        Returns the most recent incidents on the page (resolved and unresolved), each with its
        full `incident_updates` timeline and the components it affected.
      tags: [Incidents]
      security: []
      responses:
        '200':
          description: Recent incidents.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncidentsResponse'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        url: https://status.utilita.co.uk/api/v2/incidents.json
        http_status: 200
        content_type: application/json; charset=utf-8
        probed: '2026-07-27'
        observed_incident_count: 50
        note: >-
          Verbatim response not stored as an example — the observed payload was ~208 KB of incident
          history. Shape is identical to the unresolved-incidents example.
  /incidents/unresolved.json:
    get:
      operationId: getUnresolvedIncidents
      summary: List unresolved incidents
      description: Returns only the incidents that are not yet resolved. Empty array when all systems are operational.
      tags: [Incidents]
      security: []
      responses:
        '200':
          description: Unresolved incidents.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncidentsResponse'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        url: https://status.utilita.co.uk/api/v2/incidents/unresolved.json
        http_status: 200
        content_type: application/json; charset=utf-8
        probed: '2026-07-27'
        example: examples/utilita-status-unresolved-incidents.json
  /scheduled-maintenances.json:
    get:
      operationId: getScheduledMaintenances
      summary: List scheduled maintenances
      description: Returns the most recent scheduled maintenance windows, past and future, with their update timelines.
      tags: [Scheduled Maintenance]
      security: []
      responses:
        '200':
          description: Scheduled maintenances.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduledMaintenancesResponse'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        url: https://status.utilita.co.uk/api/v2/scheduled-maintenances.json
        http_status: 200
        content_type: application/json; charset=utf-8
        probed: '2026-07-27'
        note: >-
          Verbatim response not stored as an example — the observed payload was ~467 KB of
          maintenance history. Shape is identical to the upcoming-maintenances example.
  /scheduled-maintenances/upcoming.json:
    get:
      operationId: getUpcomingScheduledMaintenances
      summary: List upcoming scheduled maintenances
      description: Returns only maintenance windows scheduled in the future.
      tags: [Scheduled Maintenance]
      security: []
      responses:
        '200':
          description: Upcoming scheduled maintenances.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduledMaintenancesResponse'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        url: https://status.utilita.co.uk/api/v2/scheduled-maintenances/upcoming.json
        http_status: 200
        content_type: application/json; charset=utf-8
        probed: '2026-07-27'
        example: examples/utilita-status-upcoming-maintenances.json
  /scheduled-maintenances/active.json:
    get:
      operationId: getActiveScheduledMaintenances
      summary: List active scheduled maintenances
      description: Returns only maintenance windows that are in progress right now. Empty array when none are running.
      tags: [Scheduled Maintenance]
      security: []
      responses:
        '200':
          description: Active scheduled maintenances.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduledMaintenancesResponse'
        '404':
          $ref: '#/components/responses/NotFound'
      x-evidence:
        url: https://status.utilita.co.uk/api/v2/scheduled-maintenances/active.json
        http_status: 200
        content_type: application/json; charset=utf-8
        probed: '2026-07-27'
        example: examples/utilita-status-active-maintenances.json
components:
  responses:
    NotFound:
      description: The requested resource could not be found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errors:
            - The requested resource could not be found.
  schemas:
    Page:
      type: object
      description: Identity of the Utilita status page the response came from.
      properties:
        id:
          type: string
          description: Statuspage page identifier.
          example: lgm23svnh0xr
        name:
          type: string
          example: Utilita Status Page
        url:
          type: string
          format: uri
          example: https://status.utilita.co.uk
        time_zone:
          type: string
          example: Europe/London
        updated_at:
          type: string
          format: date-time
      required: [id, name, url, updated_at]
    StatusIndicator:
      type: object
      description: Rolled-up status of the whole page.
      properties:
        indicator:
          type: string
          description: Severity indicator observed on this page.
          enum: [none, minor, major, critical, maintenance]
          example: none
        description:
          type: string
          example: All Systems Operational
      required: [indicator, description]
    Component:
      type: object
      description: A single Utilita service tracked on the status page.
      properties:
        id:
          type: string
          example: y54fk6gsgfjr
        name:
          type: string
          example: SMETS1 Smart Meters
        description:
          type: [string, 'null']
        status:
          type: string
          enum: [operational, degraded_performance, partial_outage, major_outage, under_maintenance]
          example: operational
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        position:
          type: integer
        page_id:
          type: string
        group:
          type: boolean
          description: True when this component is a group containing other components.
        group_id:
          type: [string, 'null']
          description: Identifier of the parent group component, when this component belongs to one.
        only_show_if_degraded:
          type: boolean
        showcase:
          type: boolean
        start_date:
          type: [string, 'null']
          format: date
      required: [id, name, status]
    AffectedComponent:
      type: object
      description: A component touched by an incident update, with its status transition.
      properties:
        code:
          type: string
          description: Component id.
        name:
          type: string
        old_status:
          type: string
        new_status:
          type: string
    IncidentUpdate:
      type: object
      description: One entry in an incident's update timeline.
      properties:
        id:
          type: string
        status:
          type: string
          enum: [investigating, identified, monitoring, resolved, postmortem, scheduled, in_progress, verifying, completed]
        body:
          type: string
        incident_id:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        display_at:
          type: string
          format: date-time
        affected_components:
          type: [array, 'null']
          items:
            $ref: '#/components/schemas/AffectedComponent'
        deliver_notifications:
          type: boolean
        custom_tweet:
          type: [string, 'null']
        tweet_id:
          type: [string, 'null']
      required: [id, status, body, incident_id]
    Incident:
      type: object
      description: An unplanned service incident.
      properties:
        id:
          type: string
          example: z7l2g8m2n80d
        name:
          type: string
          example: Card Payments Authorisation Issue
        status:
          type: string
          enum: [investigating, identified, monitoring, resolved, postmortem]
        impact:
          type: string
          enum: [none, minor, major, critical]
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        monitoring_at:
          type: [string, 'null']
          format: date-time
        resolved_at:
          type: [string, 'null']
          format: date-time
        started_at:
          type: string
          format: date-time
        shortlink:
          type: string
          format: uri
        page_id:
          type: string
        incident_updates:
          type: array
          items:
            $ref: '#/components/schemas/IncidentUpdate'
        components:
          type: array
          items:
            $ref: '#/components/schemas/Component'
      required: [id, name, status, impact]
    ScheduledMaintenance:
      type: object
      description: A planned maintenance window.
      properties:
        id:
          type: string
        name:
          type: string
        status:
          type: string
          enum: [scheduled, in_progress, verifying, completed]
        impact:
          type: string
          enum: [none, minor, major, critical, maintenance]
        scheduled_for:
          type: string
          format: date-time
        scheduled_until:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        monitoring_at:
          type: [string, 'null']
          format: date-time
        resolved_at:
          type: [string, 'null']
          format: date-time
        started_at:
          type: string
          format: date-time
        shortlink:
          type: string
          format: uri
        page_id:
          type: string
        incident_updates:
          type: array
          items:
            $ref: '#/components/schemas/IncidentUpdate'
        components:
          type: array
          items:
            $ref: '#/components/schemas/Component'
      required: [id, name, status, scheduled_for, scheduled_until]
    StatusResponse:
      type: object
      properties:
        page:
          $ref: '#/components/schemas/Page'
        status:
          $ref: '#/components/schemas/StatusIndicator'
      required: [page, status]
    ComponentsResponse:
      type: object
      properties:
        page:
          $ref: '#/components/schemas/Page'
        components:
          type: array
          items:
            $ref: '#/components/schemas/Component'
      required: [page, components]
    IncidentsResponse:
      type: object
      properties:
        page:
          $ref: '#/components/schemas/Page'
        incidents:
          type: array
          items:
            $ref: '#/components/schemas/Incident'
      required: [page, incidents]
    ScheduledMaintenancesResponse:
      type: object
      properties:
        page:
          $ref: '#/components/schemas/Page'
        scheduled_maintenances:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledMaintenance'
      required: [page, scheduled_maintenances]
    Summary:
      type: object
      properties:
        page:
          $ref: '#/components/schemas/Page'
        status:
          $ref: '#/components/schemas/StatusIndicator'
        components:
          type: array
          items:
            $ref: '#/components/schemas/Component'
        incidents:
          type: array
          items:
            $ref: '#/components/schemas/Incident'
        scheduled_maintenances:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledMaintenance'
      required: [page, status, components, incidents, scheduled_maintenances]
    Error:
      type: object
      description: >-
        Error envelope observed on this API. Not RFC 9457 problem+json — a plain JSON object with an
        `errors` array of human-readable strings, served as application/json.
      properties:
        errors:
          type: array
          items:
            type: string
      required: [errors]