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

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/utilita-status-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

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]