Elexon BMRS Datasets API

Raw datasets as received from the National Grid, with associated metadata. The output in JSON format matches IRIS, and can be used interchangeably with IRIS output.

Operations 158

GET /datasets/NONBM Non-BM STOR (NONBM)
GET /datasets/NONBM/stream Non-BM STOR (NONBM) stream
GET /datasets/PN Physical Notifications (PN)
GET /datasets/PN/stream Physical Notifications (PN) stream
GET /datasets/QPN Quiescent Physical Notifications (QPN)
GET /datasets/QPN/stream Quiescent Physical Notifications (QPN) stream
GET /datasets/MELS Maximum Export Limit (MELS)
GET /datasets/MELS/stream Maximum Export Limit (MELS) stream
GET /datasets/MILS Maximum Import Limit (MILS)
GET /datasets/MILS/stream Maximum Import Limit (MILS) stream
GET /datasets/QAS Balancing Services Volume (QAS)
GET /datasets/QAS/stream Balancing Services Volume (QAS) stream
GET /datasets/NETBSAD Net Balancing Services Adjustment Data (NETBSAD)
GET /datasets/NETBSAD/stream Net Balancing Services Adjustment Data (NETBSAD)
GET /datasets/DISBSAD Disaggregated Balancing Services Adjustment Data (DISBSAD)
GET /datasets/DISBSAD/stream Disaggregated Balancing Services Adjustment Data (DISBSAD) stream
GET /datasets/BOD Bid Offer Data (BOD)
GET /datasets/BOD/stream Bid-Offer Data (BOD) stream
GET /datasets/BOALF Bid Offer Acceptance Level Flagged (BOALF)
GET /datasets/BOALF/stream Bid Offer Acceptance Level Flagged (BOALF) stream
GET /datasets/MID Market Index Data (MID)
GET /datasets/MID/stream Market Index Data (MID) stream
GET /datasets/FUELHH Half-hourly generation outturn by fuel type (FUELHH)
GET /datasets/FUELHH/stream Half-hourly generation outturn by fuel type (FUELHH) stream
GET /datasets/FUELINST Instantaneous generation outturn by fuel type (FUELINST)
GET /datasets/FUELINST/stream Instantaneous generation outturn by fuel type (FUELINST) stream
GET /datasets/UOU2T14D 2 to 14 days ahead generation availability aggregated by Balancing Mechanism Units (UOU2T14D)
GET /datasets/UOU2T14D/stream 2 to 14 days ahead generation availability aggregated by Balancing Mechanism Units (UOU2T14D) stream
GET /datasets/UOU2T3YW 2 to 156 weeks ahead generation availability aggregated by Balancing Mechanism Units (UOU2T3YW)
GET /datasets/UOU2T3YW/stream 2 to 156 weeks ahead generation availability aggregated by Balancing Mechanism Units (UOU2T3YW) stream
GET /datasets/FOU2T14D 2 to 14 days ahead generation availability aggregated by fuel type (FOU2T14D)
GET /datasets/FOU2T3YW 2 to 156 weeks ahead generation availability aggregated by fuel type (FOU2T3YW)
GET /datasets/NOU2T14D 2 to 14 days ahead generation availability aggregated data (NOU2T14D)
GET /datasets/NOU2T3YW 2 to 156 weeks ahead generation availability aggregated data (NOU2T3YW)
GET /datasets/TEMP Temperature data (TEMP)
GET /datasets/INDGEN Day and day-ahead indicated generation (INDGEN)
GET /datasets/INDGEN/stream Day and day-ahead indicated generation (INDGEN) stream
GET /datasets/INDDEM Day and day-ahead indicated demand (INDDEM)
GET /datasets/INDDEM/stream Day and day-ahead indicated demand (INDDEM) stream
GET /datasets/MELNGC Day and day-ahead indicated margin (MELNGC)
GET /datasets/MELNGC/stream Day and day-ahead indicated margin (MELNGC) stream
GET /datasets/IMBALNGC Day and day-ahead indicated imbalance (IMBALNGC)
GET /datasets/IMBALNGC/stream Day and day-ahead indicated imbalance (IMBALNGC) stream
GET /datasets/NDF Day and day-ahead National Demand forecast (NDF)
GET /datasets/NDF/stream Day and day-ahead National Demand forecast (NDF) stream
GET /datasets/TSDF Day and day-ahead Transmission System Demand forecast (TSDF)
GET /datasets/TSDF/stream Day and day-ahead Transmission System Demand forecast (TSDF) stream
GET /datasets/WINDFOR Wind generation forecast (WINDFOR)
GET /datasets/WINDFOR/stream Wind generation forecast (WINDFOR) stream
GET /datasets/INDO Initial National Demand outturn (INDO)
GET /datasets/INDOD Initial National Demand outturn daily (INDOD)
GET /datasets/INDOD/stream Initial National Demand outturn daily (INDOD) stream
GET /datasets/ITSDO Initial Transmission System Demand outturn (ITSDO)
GET /datasets/NDFD 2-14 days ahead National Demand and surplus forecast (NDFD)
GET /datasets/NDFD/stream 2-14 days ahead National Demand and surplus forecast (NDFD) stream
GET /datasets/TSDFD 2-14 days ahead Transmission System Demand and surplus forecast (TSDFD)
GET /datasets/TSDFD/stream 2-14 days ahead Transmission System Demand and surplus forecast (TSDFD) stream
GET /datasets/NDFW 2-52 weeks ahead National Demand and surplus forecast (NDFW)
GET /datasets/NDFW/stream 2-52 weeks ahead National Demand and surplus forecast (NDFW) stream
GET /datasets/TSDFW 2-52 weeks ahead Transmission System Demand and surplus forecast (TSDFW)
GET /datasets/TSDFW/stream 2-52 weeks ahead Transmission System Demand and surplus forecast (TSDFW) stream
GET /datasets/FREQ System frequency (FREQ)
GET /datasets/FREQ/stream System frequency (FREQ) stream
GET /datasets/OCNMFD 2-14 days ahead demand surplus forecast (OCNMFD)
GET /datasets/OCNMFD/stream 2-14 days ahead demand surplus forecast (OCNMFD) stream
GET /datasets/OCNMFD2 2-14 days ahead demand margin forecast (OCNMFD2)
GET /datasets/OCNMFD2/stream 2-14 days ahead demand margin forecast (OCNMFD2) stream
GET /datasets/OCNMF3Y 2-156 weeks ahead demand surplus forecast (OCNMF3Y)
GET /datasets/OCNMF3Y/stream 2-156 weeks ahead demand surplus forecast (OCNMF3Y) stream
GET /datasets/OCNMF3Y2 2-156 weeks ahead demand margin forecast (OCNMF3Y2)
GET /datasets/OCNMF3Y2/stream 2-156 weeks ahead demand margin forecast (OCNMF3Y2) stream
GET /datasets/metadata/latest Returns the time when each dataset was last updated
GET /datasets/LOLPDRM Loss of load probability and de-rated margin (LOLPDRM)
GET /datasets/LOLPDRM/stream Loss of load probability and de-rated margin (LOLPDRM)
GET /datasets/CDN Credit default notices (CDN)
GET /datasets/CDN/stream Credit default notices (CDN) stream
GET /datasets/SYSWARN System warnings (SYSWARN)
GET /datasets/SYSWARN/stream System warnings (SYSWARN) stream
GET /datasets/DCI Demand control instructions (DCI)
GET /datasets/DCI/stream Demand control instructions (DCI) stream
GET /datasets/SOSO SO-SO prices (SOSO)
GET /datasets/SOSO/stream SO-SO prices (SOSO) stream
GET /datasets/TUDM Trading unit data (S0491_TUDM)
GET /datasets/TUDM/stream Trading unit data (S0491_TUDM) stream
GET /datasets/RZDF Restoration Region Demand Forecast (RZDF)
GET /datasets/RZDF/stream Restoration Region Demand Forecast (RZDF) stream
GET /datasets/RZDR Restoration Region Demand Restored (RZDR)
GET /datasets/RZDR/stream Restoration Region Demand Restored (RZDR) Stream
GET /datasets/SIL Stable Import Limit (SIL)
GET /datasets/SIL/stream Stable Import Limit (SIL) stream
GET /datasets/SEL Stable Export Limit (SEL)
GET /datasets/SEL/stream Stable Export Limit (SEL) stream
GET /datasets/MZT Minimum Zero Time (MZT)
GET /datasets/MZT/stream Minimum Zero Time (MZT) stream
GET /datasets/MNZT Minimum Non-Zero Time (MNZT)
GET /datasets/MNZT/stream Minimum Non-Zero Time (MNZT) stream
GET /datasets/MDV Maximum Delivery Volume (MDV)
GET /datasets/MDV/stream Maximum Delivery Volume (MDV) stream
GET /datasets/MDP Maximum Delivery Period (MDP)
GET /datasets/MDP/stream Maximum Delivery Period (MDP) stream
GET /datasets/NTB Notice to Deliver Bids (NTB)
GET /datasets/NTB/stream Notice to Deliver Bids (NTB) stream
GET /datasets/NTO Notice to Deliver Offers (NTO)
GET /datasets/NTO/stream Notice to Deliver Offers (NTO) stream
GET /datasets/NDZ Notice to Deviate from Zero (NDZ)
GET /datasets/NDZ/stream Notice to Deviate from Zero (NDZ) stream
GET /datasets/RURE Run Up Rate Export (RURE)
GET /datasets/RURE/stream Run Up Rate Export (RURE) stream
GET /datasets/RDRE Run Down Rate Export (RDRE)
GET /datasets/RDRE/stream Run Down Rate Export (RDRE) stream
GET /datasets/RURI Run Up Rate Import (RURI)
GET /datasets/RURI/stream Run Up Rate Import (RURI) stream
GET /datasets/RDRI Run Down Rate Import (RDRI)
GET /datasets/RDRI/stream Run Down Rate Import (RDRI) stream
GET /datasets/REMIT The Regulation on Wholesale Energy Markets Integrity and Transparency (REMIT)
GET /datasets/REMIT/stream The Regulation on Wholesale Energy Markets Integrity and Transparency (REMIT) stream
GET /datasets/AGWS Actual Or Estimated Wind And Solar Power Generation (AGWS / B1630)
GET /datasets/AGWS/stream Actual Or Estimated Wind And Solar Power Generation (AGWS / B1630) stream
GET /datasets/DGWS Day-Ahead Generation For Wind And Solar (DGWS / B1440)
GET /datasets/DGWS/stream Day-Ahead Generation For Wind And Solar (DGWS / B1440) stream
GET /datasets/AGPT Actual Aggregated Generation Per Type (AGPT / B1620)
GET /datasets/AGPT/stream Actual Aggregated Generation Per Type (AGPT / B1620) stream
GET /datasets/B1610 Actual Generation Output Per Generation Unit (B1610)
GET /datasets/B1610/stream Actual Generation Output Per Generation Unit (B1610) stream
GET /datasets/IGCA Installed Generation Capacity Aggregated (IGCA / B1410)
GET /datasets/IGCA/stream Installed Generation Capacity Aggregated (IGCA / B1410) stream
GET /datasets/IGCPU Installed Generation Capacity per Unit (IGCPU / B1420)
GET /datasets/IGCPU/stream Installed Generation Capacity per Unit (IGCPU / B1420) stream
GET /datasets/ATL Actual Total Load Per Bidding Zone (ATL / B0610)
GET /datasets/ATL/stream Actual Total Load Per Bidding Zone (ATL / B0610) stream
GET /datasets/DATL Day-Ahead Total Load Forecast Per Bidding Zone (DATL / B0620)
GET /datasets/DATL/stream Day-Ahead Total Load Forecast Per Bidding Zone (DATL / B0620) stream
GET /datasets/WATL Week-Ahead Total Load Forecast Per Bidding Zone (WATL / B0630)
GET /datasets/WATL/stream Week-Ahead Total Load Forecast Per Bidding Zone (WATL / B0630) stream
GET /datasets/DAG Day-Ahead Aggregated Generation (DAG / B1430)
GET /datasets/DAG/stream Day-Ahead Aggregated Generation (DAG / B1430) stream
GET /datasets/MATL Month-Ahead Total Load Forecast Per Bidding Zone (MATL / B0640)
GET /datasets/MATL/stream Month-Ahead Total Load Forecast Per Bidding Zone (MATL / B0640) stream
GET /datasets/YATL Year-Ahead Total Load Forecast Per Bidding Zone (YATL / B0650)
GET /datasets/YATL/stream Year-Ahead Total Load Forecast Per Bidding Zone (YATL / B0650) stream
GET /datasets/CCM Cost of Congestion Management (CCM / B1330)
GET /datasets/CCM/stream Cost of Congestion Management (CCM / B1330) stream
GET /datasets/YAFM Year Ahead Forecast Margin (YAFM / B0810)
GET /datasets/YAFM/stream Year Ahead Forecast Margin (YAFM / B0810) stream
GET /datasets/ABUC Amount Of Balancing Reserves Under Contract (ABUC / B1720)
GET /datasets/ABUC/stream Amount Of Balancing Reserves Under Contract (ABUC / B1720) stream
GET /datasets/PPBR Prices Of Procured Balancing Reserves (PPBR / B1730)
GET /datasets/PPBR/stream Prices Of Procured Balancing Reserves (PPBR / B1730) stream
GET /datasets/FEIB Financial Expenses and Income for Balancing (FEIB / B1790)
GET /datasets/FEIB/stream Financial Expenses and Income for Balancing (FEIB / B1790) stream
GET /datasets/AOBE Accepted Offered Balancing Energy (AOBE)
GET /datasets/AOBE/stream Accepted Offered Balancing Energy (AOBE) stream
GET /datasets/BEB Balancing Energy Bids (BEB)
GET /datasets/BEB/stream Balancing Energy Bids (BEB) stream
GET /datasets/CBS Current Balancing State (CBS)
GET /datasets/CBS/stream Current Balancing State (CBS) stream
GET /datasets/PBC Procured Balancing Capacity (PBC)
GET /datasets/PBC/stream Procured Balancing Capacity (PBC) stream

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/elexon-bmrs-datasets-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

elexon-bmrs-datasets-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Insights.Api Balancing Mechanism Dynamic BMRS Datasets API
  version: '1.0'
  description: Dynamic data.
servers:
- url: https://data.elexon.co.uk/bmrs/api/v1
tags:
- name: BMRS Datasets
  description: Raw datasets as received from the National Grid, with associated metadata. The output in JSON format matches IRIS, and can be used interchangeably with IRIS output.
paths:
  /datasets/NONBM:
    get:
      tags:
      - BMRS Datasets
      summary: Non-BM STOR (NONBM)
      description: "This endpoint provides data about the Short Term Operating Reserves (STOR) that have been made use of\nby NGESO. This is activity that is outside of the Balancing Mechanism and takes place to meet the need to\nincrease generation or decrease demand.\n            \nTo retrieve data from a particular time window, use the optional start and end time parameters.\nThese times should be expressed as defined within\n<a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.\nIf no time window is chosen, the default output will be the latest published data."
      parameters:
      - name: from
        in: query
        description: The start of the data publish time window.
        schema:
          type: string
          format: date-time
          example: 2022-06-25T13:15Z
        example: 2022-06-25T13:15Z
      - name: to
        in: query
        description: The end of the data publish time window.
        schema:
          type: string
          format: date-time
          example: 2022-06-27T19:45Z
        example: 2022-06-27T19:45Z
      - name: format
        in: query
        description: Response data format. Use json/xml to include metadata.
        schema:
          enum:
          - json
          - xml
          - csv
          type: string
      responses:
        '200':
          description: Data retrieved
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Generation.DatasetRows.NonBmStorData'
            application/json:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Generation.DatasetRows.NonBmStorData'
            text/json:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Generation.DatasetRows.NonBmStorData'
            application/xml:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Generation.DatasetRows.NonBmStorData'
            text/xml:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Generation.DatasetRows.NonBmStorData'
            text/csv:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Generation.DatasetRows.NonBmStorData'
        '429':
          description: Too many requests
        '400':
          description: Error with query parameters - see response for details
        '500':
          description: Server error - please try again later
  /datasets/NONBM/stream:
    get:
      tags:
      - BMRS Datasets
      summary: Non-BM STOR (NONBM) stream
      description: "This endpoint provides data about the Short Term Operating Reserves (STOR) that have been made use of\nby NGESO. This is activity that is outside of the Balancing Mechanism and takes place to meet the need to\nincrease generation or decrease demand.\n            \nTo retrieve data from a particular time window, use the optional start and end time parameters.\nThese times should be expressed as defined within\n<a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.\nIf no time window is chosen, the default output will be the latest published data.\n            \nThis endpoint has an optimised JSON payload and is aimed at frequent requests for the Non-BM STOR data."
      parameters:
      - name: from
        in: query
        description: The start of the data publish time window.
        schema:
          type: string
          format: date-time
          example: 2022-06-25T13:15Z
        example: 2022-06-25T13:15Z
      - name: to
        in: query
        description: The end of the data publish time window.
        schema:
          type: string
          format: date-time
          example: 2022-06-27T19:45Z
        example: 2022-06-27T19:45Z
      responses:
        '200':
          description: Data retrieved
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.DatasetRows.NonBmStorData'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.DatasetRows.NonBmStorData'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.DatasetRows.NonBmStorData'
        '429':
          description: Too many requests
        '400':
          description: Error with query parameters - see response for details
        '500':
          description: Server error - please try again later
  /datasets/PN:
    get:
      tags:
      - BMRS Datasets
      summary: Physical Notifications (PN)
      description: "This endpoint provides Physical Notification data received from NGESO. It returns the data valid for a single settlement period.\nA Physical Notification is the best estimate of the level of generation or demand that a participant in the BM expects a BM Unit to export or import, respectively, in a Settlement Period.\n            \nPhysical Notifications are submitted as a series of point MW values.\n            \nThe settlement period to query must be specified as a date and settlement period. The date should be provided in the format yyyy-MM-dd."
      parameters:
      - name: settlementDate
        in: query
        description: The settlement date to query. This must be in the format yyyy-MM-dd.
        required: true
        schema:
          type: string
          format: date
          example: '2022-07-01'
        example: '2022-07-01'
      - name: settlementPeriod
        in: query
        description: The settlement period to query. This should be an integer from 1-50 inclusive.
        required: true
        schema:
          type: integer
          format: int32
          example: 5
        example: 5
      - name: bmUnit
        in: query
        description: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        schema:
          type: array
          items:
            type: string
          example:
          - T_ABRBO-1
        example:
        - T_ABRBO-1
      - name: format
        in: query
        description: Response data format. Use json/xml to include metadata.
        schema:
          enum:
          - json
          - xml
          - csv
          type: string
      responses:
        '200':
          description: Data retrieved
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            application/json:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            text/json:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            application/xml:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            text/xml:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            text/csv:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
        '429':
          description: Too many requests
        '400':
          description: Error with query parameters - see response for details
        '500':
          description: Server error - please try again later
  /datasets/PN/stream:
    get:
      tags:
      - BMRS Datasets
      summary: Physical Notifications (PN) stream
      description: "This endpoint provides Physical Notification data received from NGESO.\nA Physical Notification is the best estimate of the level of generation or demand that a participant in the BM expects a BM Unit to export or import, respectively, in a Settlement Period.\n            \nPhysical Notifications are submitted as a series of point MW values.\n            \nThe settlement period to query can be specified as a date and settlement period, or as a datetime\nwhich will resolve to the settlement period that time falls within.\nIf a settlement period is provided, it will take precedence over the time portion of the datetime.\n\nSome examples of date parameter combinations are shown below.\n            \nFiltering from settlement datetime to settlement datetime:\n            \n     /datasets/PN/stream?from=2022-07-01T00:00Z&to=2022-07-03T06:00Z\n            \nFiltering from settlement datetime to settlement date and period:\n            \n     /datasets/PN/stream?from=2022-07-01T00:00Z&to=2022-07-03&settlementPeriodTo=15\n            \nFiltering from settlement date and period to settlement datetime:\n            \n     /datasets/PN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03T06:00Z\n            \nFiltering from settlement date and period to settlement date and period:\n            \n    /datasets/PN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03&settlementPeriodTo=15\n\nThis endpoint has an optimised JSON payload and is aimed at frequent requests for PN data."
      parameters:
      - name: from
        in: query
        description: The settlement date to query from.
        required: true
        schema:
          type: string
          format: date-time
          example: '2022-07-01'
        example: '2022-07-01'
      - name: to
        in: query
        description: The settlement date to query up to.
        required: true
        schema:
          type: string
          format: date-time
          example: '2022-07-03'
        example: '2022-07-03'
      - name: settlementPeriodFrom
        in: query
        description: The "from" settlement period for the filter. This should be an integer from 1-50 inclusive.
        schema:
          type: integer
          format: int32
          example: 3
        example: 3
      - name: settlementPeriodTo
        in: query
        description: The "to" settlement period for the filter. This should be an integer from 1-50 inclusive.
        schema:
          type: integer
          format: int32
          example: 15
        example: 15
      - name: bmUnit
        in: query
        description: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        schema:
          type: array
          items:
            type: string
          example:
          - T_ABRBO-1
        example:
        - T_ABRBO-1
      responses:
        '200':
          description: Data retrieved
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
        '429':
          description: Too many requests
        '400':
          description: Error with query parameters - see response for details
        '500':
          description: Server error - please try again later
  /datasets/QPN:
    get:
      tags:
      - BMRS Datasets
      summary: Quiescent Physical Notifications (QPN)
      description: "This endpoint provides Quiescent Physical Notification data received from NGESO. It returns the data valid for a single settlement period.\nQuiescent Physical Notifications describe the MW levels to be deducted from the Physical Notification of a BM Unit to determine a resultant operating level.\n            \nThe settlement period to query must be specified as a date and settlement period. The date should be provided in the format yyyy-MM-dd."
      parameters:
      - name: settlementDate
        in: query
        description: The settlement date to query. This must be in the format yyyy-MM-dd.
        required: true
        schema:
          type: string
          format: date
          example: '2022-07-01'
        example: '2022-07-01'
      - name: settlementPeriod
        in: query
        description: The settlement period to query. This should be an integer from 1-50 inclusive.
        required: true
        schema:
          type: integer
          format: int32
          example: 5
        example: 5
      - name: bmUnit
        in: query
        description: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        schema:
          type: array
          items:
            type: string
          example:
          - T_ABRBO-1
        example:
        - T_ABRBO-1
      - name: format
        in: query
        description: Response data format. Use json/xml to include metadata.
        schema:
          enum:
          - json
          - xml
          - csv
          type: string
      responses:
        '200':
          description: Data retrieved
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            application/json:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            text/json:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            application/xml:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            text/xml:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            text/csv:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
        '429':
          description: Too many requests
        '400':
          description: Error with query parameters - see response for details
        '500':
          description: Server error - please try again later
  /datasets/QPN/stream:
    get:
      tags:
      - BMRS Datasets
      summary: Quiescent Physical Notifications (QPN) stream
      description: "This endpoint provides Quiescent Physical Notification data received from NGESO.\nQuiescent Physical Notifications describe the MW levels to be deducted from the Physical Notification of a BM Unit to determine a resultant operating level.\n            \nThe settlement period to query can be specified as a date and settlement period, or as a datetime\nwhich will resolve to the settlement period that time falls within.\nIf a settlement period is provided, it will take precedence over the time portion of the datetime.\n\nSome examples of date parameter combinations are shown below.\n            \nFiltering from settlement datetime to settlement datetime:\n            \n     /datasets/QPN/stream?from=2022-07-01T00:00Z&to=2022-07-03T06:00Z\n            \nFiltering from settlement datetime to settlement date and period:\n            \n     /datasets/QPN/stream?from=2022-07-01T00:00Z&to=2022-07-03&settlementPeriodTo=15\n            \nFiltering from settlement date and period to settlement datetime:\n            \n     /datasets/QPN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03T06:00Z\n            \nFiltering from settlement date and period to settlement date and period:\n            \n    /datasets/QPN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03&settlementPeriodTo=15\n\nThis endpoint has an optimised JSON payload and is aimed at frequent requests for QPN data."
      parameters:
      - name: from
        in: query
        description: The settlement date to query from.
        required: true
        schema:
          type: string
          format: date-time
          example: '2022-07-01'
        example: '2022-07-01'
      - name: to
        in: query
        description: The settlement date to query up to.
        required: true
        schema:
          type: string
          format: date-time
          example: '2022-07-03'
        example: '2022-07-03'
      - name: settlementPeriodFrom
        in: query
        description: The "from" settlement period for the filter. This should be an integer from 1-50 inclusive.
        schema:
          type: integer
          format: int32
          example: 3
        example: 3
      - name: settlementPeriodTo
        in: query
        description: The "to" settlement period for the filter. This should be an integer from 1-50 inclusive.
        schema:
          type: integer
          format: int32
          example: 15
        example: 15
      - name: bmUnit
        in: query
        description: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        schema:
          type: array
          items:
            type: string
          example:
          - T_ABRBO-1
        example:
        - T_ABRBO-1
      responses:
        '200':
          description: Data retrieved
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.PhysicalNotificationData'
        '429':
          description: Too many requests
        '400':
          description: Error with query parameters - see response for details
        '500':
          description: Server error - please try again later
  /datasets/MELS:
    get:
      tags:
      - BMRS Datasets
      summary: Maximum Export Limit (MELS)
      description: "This endpoint provides Maximum Export Limit data received from NGESO.\n\nThe Maximum Export Limit is the maximum power export level of a particular BM Unit at a particular time.\nThe data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.\nMELs are submitted as a series of MW values and associated times in UTC.\n\nBy default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or\nsettlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement\ndate, allowing for searching by a combination of time and/or settlement date & settlement period.\nNote: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For\nexample, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.\n            \nAll Dates and DateTimes should be expressed as defined within\n<a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.\n            \nSome examples of date parameter combinations are shown below.\n            \nFiltering from start time to start time:\n            \n    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z\n            \nFiltering from start time to settlement date and period:\n            \n    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1\n            \nFiltering from settlement date and period to start time:\n            \n    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1\n            \nFiltering from settlement date and period to settlement date and period:\n            \n    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1"
      parameters:
      - name: from
        in: query
        description: The "from" start time or settlement date for the filter.
        required: true
        schema:
          type: string
          format: date-time
          example: 2022-10-12T00:00Z
        example: 2022-10-12T00:00Z
      - name: to
        in: query
        description: The "to" start time or settlement date for the filter.
        required: true
        schema:
          type: string
          format: date-time
          example: 2022-10-12T01:00Z
        example: 2022-10-12T01:00Z
      - name: settlementPeriodFrom
        in: query
        description: The "from" settlement period for the filter. This should be an integer from 1-50 inclusive.
        schema:
          type: integer
          format: int32
      - name: settlementPeriodTo
        in: query
        description: The "to" settlement period for the filter. This should be an integer from 1-50 inclusive.
        schema:
          type: integer
          format: int32
      - name: bmUnit
        in: query
        description: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        schema:
          type: array
          items:
            type: string
          example:
          - T_DRAXX-1
        example:
        - T_DRAXX-1
      - name: format
        in: query
        description: Response data format. Use json/xml to include metadata.
        schema:
          enum:
          - json
          - xml
          - csv
          type: string
      responses:
        '200':
          description: Data retrieved
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.DeliveryLimitMaxData'
            application/json:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.DeliveryLimitMaxData'
            text/json:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.DeliveryLimitMaxData'
            application/xml:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.DeliveryLimitMaxData'
            text/xml:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.DeliveryLimitMaxData'
            text/csv:
              schema:
                $ref: '#/components/schemas/Insights.Api.Models.Responses.DatasetResponse-1_Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.DeliveryLimitMaxData'
        '429':
          description: Too many requests
        '400':
          description: Error with query parameters - see response for details
        '500':
          description: Server error - please try again later
  /datasets/MELS/stream:
    get:
      tags:
      - BMRS Datasets
      summary: Maximum Export Limit (MELS) stream
      description: "This endpoint provides Maximum Export Limit data received from NGESO.\n\nThe Maximum Export Limit is the maximum power export level of a particular BM Unit at a particular time.\nThe data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.\nMELs are submitted as a series of MW values and associated times in UTC.\n\nBy default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or\nsettlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement\ndate, allowing for searching by a combination of time and/or settlement date & settlement period.\nNote: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For\nexample, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.\n            \nAll Dates and DateTimes should be expressed as defined within\n<a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.\n            \nSome examples of date parameter combinations are shown below.\n            \nFiltering from start time to start time:\n            \n    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z\n            \nFiltering from start time to settlement date and period:\n            \n    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1\n            \nFiltering from settlement date and period to start time:\n            \n    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1\n            \nFiltering from settlement date and period to settlement date and period:\n            \n    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1\nThis endpoint has an optimised JSON payload and is aimed at frequent requests for MELS data."
      parameters:
      - name: from
        in: query
        description: The "from" start time or settlement date for the filter.
        required: true
        schema:
          type: string
          format: date-time
          example: 2022-10-12T00:00Z
        example: 2022-10-12T00:00Z
      - name: to
        in: query
        description: The "to" start time or settlement date for the filter.
        required: true
        schema:
          type: string
          format: date-time
          example: 2022-10-12T01:00Z
        example: 2022-10-12T01:00Z
      - name: settlementPeriodFrom
        in: query
        description: The "from" settlement period for the filter. This should be an integer from 1-50 inclusive.
        schema:
          type: integer
          format: int32
      - name: settlementPeriodTo
        in: query
        description: The "to" settlement period for the filter. This should be an integer from 1-50 inclusive.
        schema:
          type: integer
          format: int32
      - name: bmUnit
        in: query
        description: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        schema:
          type: array
          items:
            type: string
          example:
          - T_DRAXX-1
        example:
        - T_DRAXX-1
      responses:
        '200':
          description: Data retrieved
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.DeliveryLimitMaxData'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.DeliveryLimitMaxData'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insights.Api.Models.Responses.Balancing.Physical.DatasetRows.DeliveryLimitMaxData'
        '429':
          description: Too many requests
        '400':
          description: Error with query parameters - see response for details
        '500':
          description: Server error - please try again later
  /datasets/MILS:
    get:
      tags:
      - BMRS Datasets
      summary: Maximum Import Limit (MILS)
      description: "This endpoint provides Maximum Import Limit data received from NGESO.\n\nThe maximum power import level of a particular BM Unit at a particular time.\nThe data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.\nMILs are submitted as a series of MW values and associated times in UTC.\n\nBy default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or\nsettlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement\ndate, allowing for searching by a combination of time and/or settlement date & settlement period.\nNote: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For\nexample, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.\n            \nAll Dates and DateTimes should be expressed as defined within\n<a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.\n            \nSome examples of date parameter combinations are shown below.\n            \nFiltering from start time to start time:\n            \n    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z\n            \nFiltering from start time to settlement date and period:\n            \n    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1\n            \nFiltering from settlement date and period to start time:\n            \n    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1\n            \nFiltering from settlement date and period to settlement date and period:\n            \n    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1"
      parameters:
      - name: from
        in: query
        description: The "from" start time or settlement date for the filter.
        required: true
        schema:
          type: string
          format: date-time
          example: 2022-10-12T00:00Z
        example: 2022-10-12T00:00Z
      - name: to
        in: query
        description: The "to" start time or settlement date for the filter.
        required: true
        schema:
          type: string
          format: date-time
          example: 2022-10-12T01:00Z
        example: 2022-10-12T01:00Z
      - name: settlementPeriodFrom
        in: query
        description: The "from" settlement period for the filter. This should be an integer fro

# --- truncated at 32 KB (570 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elexon/refs/heads/main/openapi/elexon-bmrs-datasets-api-openapi.yml