Elexon Generation API
GB electricity generation output, including historic.
Documentation
Documentation
https://developer.data.elexon.co.uk/
Documentation
https://bmrs.elexon.co.uk/api-documentation/guidance
GB electricity generation output, including historic.
openapi: 3.0.4
info:
title: Insights.Api Balancing Mechanism Dynamic Generation API
version: '1.0'
description: Dynamic data.
servers:
- url: https://data.elexon.co.uk/bmrs/api/v1
tags:
- name: Generation
description: GB electricity generation output, including historic.
paths:
/generation/actual/per-type:
get:
tags:
- Generation
summary: Historic actual generation automatically down-sampled (AGPT/B1620)
description: "⚠ This endpoint provides a down-sampled data summary intended for visualisation purposes.\nDepending on the quantity of data requested, data returned may be averaged hourly, daily,\nweekly or monthly. Quantities are rounded to the nearest MWh.\nUse /datasets/AGPT for full access.\n \nThis endpoint provides actual aggregated generation data per Power System Resource type \n(Fuel Type categories as defined by Commission Regulation (EU) No 543/2013).\n\nThis endpoint filters by startTime, and groups results by settlement period."
parameters:
- name: from
in: query
required: true
schema:
type: string
format: date-time
example: '2023-07-20'
example: '2023-07-20'
- name: to
in: query
required: true
schema:
type: string
format: date-time
example: '2023-07-22'
example: '2023-07-22'
- name: settlementPeriodFrom
in: query
schema:
type: integer
format: int32
example: 13
example: 13
- name: settlementPeriodTo
in: query
schema:
type: integer
format: int32
example: 19
example: 19
- name: format
in: query
description: Response data format. Use json/xml to include metadata.
schema:
enum:
- json
- xml
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationBySettlementPeriod'
application/xml:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationBySettlementPeriod'
/generation/actual/per-type/day-total:
get:
tags:
- Generation
summary: Current snapshot of actual generation by fuel type categories (AGPT/B1620)
description: 'This endpoint provides aggregated AGPT (B1620) data. It returns totals and percentages
for the last half hour and 24 hours for each generation type.'
parameters:
- 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:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.AgptSummaryData'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.AgptSummaryData'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.AgptSummaryData'
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.AgptSummaryData'
text/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.AgptSummaryData'
text/csv:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.AgptSummaryData'
'429':
description: Too many requests
'500':
description: Server error - please try again later
/generation/actual/per-type/wind-and-solar:
get:
tags:
- Generation
summary: Historic actual or estimated wind and solar power generation (AGWS/B1630)
description: "This endpoint provides actual or estimated wind and solar power generation\nper settlement period. It returns generation with Power System Resource type\nSolar, Wind Onshore or Wind Offshore (Fuel Type categories as defined by\nCommission Regulation (EU) No 543/2013).\n \nThis endpoint filters by startTime and provides a maximum data output range of 7 days."
parameters:
- name: from
in: query
required: true
schema:
type: string
format: date-time
example: '2023-07-18'
example: '2023-07-18'
- name: to
in: query
required: true
schema:
type: string
format: date-time
example: '2023-07-21'
example: '2023-07-21'
- name: settlementPeriodFrom
in: query
schema:
type: integer
format: int32
example: 36
example: 36
- name: settlementPeriodTo
in: query
schema:
type: integer
format: int32
example: 12
example: 12
- 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.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar'
application/json:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar'
text/json:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar'
application/xml:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar'
text/xml:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar'
text/csv:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar'
'429':
description: Too many requests
'400':
description: Error with query parameters - see response for details
'500':
description: Server error - please try again later
/generation/outturn/interconnectors:
get:
tags:
- Generation
summary: Historic half-hourly interconnector flows (FUELINST)
description: "This endpoint provides the interconnector flows report derived from the Generation by Fuel Type (FUELINST)\ndata and shows both interconnector imports and exports; the data is updated every five minutes.\n \nSettlement date parameters must be provided in the exact format yyyy-MM-dd."
parameters:
- name: publishDateTimeFrom
in: query
schema:
type: string
format: date-time
- name: publishDateTimeTo
in: query
schema:
type: string
format: date-time
- name: settlementDateFrom
in: query
description: The settlement date from filter. This must be in the format yyyy-MM-dd.
schema:
type: string
format: date
example: '2022-09-20'
example: '2022-09-20'
- name: settlementDateTo
in: query
description: The settlement date to filter. This must be in the format yyyy-MM-dd.
schema:
type: string
format: date
example: '2022-09-21'
example: '2022-09-21'
- name: settlementPeriod
in: query
schema:
uniqueItems: true
type: array
items:
type: integer
format: int32
- name: interconnectorName
in: query
schema:
type: array
items:
type: string
- name: format
in: query
description: Response data format. Use json/xml to include metadata.
schema:
enum:
- json
- xml
- csv
type: string
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn'
application/json:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn'
text/json:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn'
application/xml:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn'
text/xml:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn'
text/csv:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn'
/generation/outturn/current:
get:
tags:
- Generation
summary: Current snapshot of generation by fuel type categories (FUELINST, FUELHH)
description: This endpoint provides a snapshot view of the last 24 hours generation by individual fuel type categories including interconnector.
parameters:
- name: fuelType
in: query
schema:
type: array
items:
type: string
- name: format
in: query
description: Response data format. Use json/xml to include metadata.
schema:
enum:
- json
- xml
- csv
type: string
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.GenerationByFuelType'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.GenerationByFuelType'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.GenerationByFuelType'
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.GenerationByFuelType'
text/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.GenerationByFuelType'
text/csv:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.GenerationByFuelType'
/generation/outturn/summary:
get:
tags:
- Generation
summary: Historic generation automatically down-sampled (FUELINST)
description: '⚠ This endpoint provides a down-sampled data summary intended for visualisation purposes.
Use raw dataset endpoints under /datasets for full access.'
parameters:
- name: startTime
in: query
schema:
type: string
format: date-time
- name: endTime
in: query
schema:
type: string
format: date-time
- name: includeNegativeGeneration
in: query
schema:
type: boolean
- name: format
in: query
description: Response data format. Use json/xml to include metadata.
schema:
enum:
- json
- xml
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.OutturnGenerationBySettlementPeriod'
application/xml:
schema:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.OutturnGenerationBySettlementPeriod'
/generation/outturn/halfHourlyInterconnector:
get:
tags:
- Generation
summary: 'This endpoint is obsolete, and this location may be removed with no further notice. '
description: This endpoint has been moved to generation/outturn/interconnectors.
parameters:
- name: format
in: query
description: Response data format. Use json/xml to include metadata.
schema:
enum:
- json
- xml
- csv
type: string
responses:
'200':
description: OK
deprecated: true
/generation/outturn/FUELINSTHHCUR:
get:
tags:
- Generation
summary: 'This endpoint is obsolete, and this location may be removed with no further notice. '
description: This endpoint has been moved to generation/outturn/current.
parameters:
- name: format
in: query
description: Response data format. Use json/xml to include metadata.
schema:
enum:
- json
- xml
- csv
type: string
responses:
'200':
description: OK
deprecated: true
/generation/outturn:
get:
tags:
- Generation
summary: Total generation outturn (FUELINST)
description: "This endpoint provides the total generation outturn across all fuel types, derived by summing generation\nof all categories from the Generation by Fuel Type report.\n \nThis data can be used as a proxy for rolling system demand."
parameters:
- name: from
in: query
schema:
type: string
format: date-time
- name: to
in: query
schema:
type: string
format: date-time
- 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.ResponseWithMetadata-1_Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand'
application/json:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand'
text/json:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand'
application/xml:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand'
text/xml:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand'
text/csv:
schema:
$ref: '#/components/schemas/Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand'
'429':
description: Too many requests
'400':
description: Error with query parameters - see response for details
'500':
description: Server error - please try again later
components:
schemas:
Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar'
nullable: true
metadata:
$ref: '#/components/schemas/Insights.Api.Models.Metadata.ApiResponseSourceMetadata'
additionalProperties: false
Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn:
type: object
properties:
dataset:
type: string
nullable: true
readOnly: true
publishTime:
type: string
format: date-time
nullable: true
startTime:
type: string
format: date-time
nullable: true
settlementDate:
type: string
format: date
settlementDateTimezone:
type: string
nullable: true
readOnly: true
settlementPeriod:
type: integer
format: int32
nullable: true
interconnectorName:
type: string
nullable: true
generation:
type: integer
format: int64
nullable: true
additionalProperties: false
Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand:
type: object
properties:
recordType:
type: string
nullable: true
startTime:
type: string
format: date-time
nullable: true
demand:
type: integer
format: int64
nullable: true
additionalProperties: false
Insights.Api.Models.Responses.Generation.GenerationByFuelType:
type: object
properties:
dataset:
type: string
nullable: true
readOnly: true
fuelType:
type: string
nullable: true
currentUsage:
type: integer
format: int64
nullable: true
currentPercentage:
type: number
format: double
halfHourUsage:
type: integer
format: int64
nullable: true
halfHourPercentage:
type: number
format: double
twentyFourHourUsage:
type: integer
format: int64
nullable: true
twentyFourHourPercentage:
type: number
format: double
additionalProperties: false
Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar:
type: object
properties:
publishTime:
type: string
format: date-time
example: '2023-07-12 05:00:00Z'
businessType:
type: string
nullable: true
example: Solar generation
psrType:
type: string
nullable: true
example: Solar
quantity:
type: number
format: double
example: 1829
startTime:
type: string
format: date-time
example: '2023-07-12 06:30:00Z'
settlementDate:
type: string
format: date
example: '2022-07-12'
settlementPeriod:
type: integer
format: int32
example: 16
additionalProperties: false
Insights.Api.Models.Responses.Generation.OutturnGenerationValue:
type: object
properties:
fuelType:
type: string
nullable: true
generation:
type: integer
format: int64
additionalProperties: false
Insights.Api.Models.Metadata.ApiResponseSourceMetadata:
type: object
properties:
datasets:
type: array
items:
type: string
nullable: true
example:
- DATASET
additionalProperties: false
Insights.Api.Models.Responses.Transparency.ActualGenerationBySettlementPeriod:
type: object
properties:
startTime:
type: string
format: date-time
example: '2023-07-12 06:30:00Z'
settlementPeriod:
type: integer
format: int32
example: 16
data:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.ActualGenerationValue'
nullable: true
additionalProperties: false
? Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationBySettlementPeriod
: type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.ActualGenerationBySettlementPeriod'
nullable: true
metadata:
$ref: '#/components/schemas/Insights.Api.Models.Metadata.ApiResponseSourceMetadata'
additionalProperties: false
Insights.Api.Models.Responses.Transparency.AgptSummaryData:
type: object
properties:
psrType:
type: string
nullable: true
halfHourUsage:
type: number
format: double
halfHourPercentage:
type: number
format: double
twentyFourHourUsage:
type: number
format: double
twentyFourHourPercentage:
type: number
format: double
additionalProperties: false
Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand'
nullable: true
metadata:
$ref: '#/components/schemas/Insights.Api.Models.Metadata.ApiResponseSourceMetadata'
additionalProperties: false
Insights.Api.Models.Responses.Transparency.ActualGenerationValue:
type: object
properties:
businessType:
type: string
nullable: true
example: Solar generation
psrType:
type: string
nullable: true
example: Solar
quantity:
type: number
format: double
example: 1829
additionalProperties: false
? Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn
: type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn'
nullable: true
metadata:
$ref: '#/components/schemas/Insights.Api.Models.Metadata.ApiResponseSourceMetadata'
additionalProperties: false
Insights.Api.Models.Responses.Generation.OutturnGenerationBySettlementPeriod:
type: object
properties:
startTime:
type: string
format: date-time
nullable: true
settlementPeriod:
type: integer
format: int32
nullable: true
data:
type: array
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.OutturnGenerationValue'
nullable: true
additionalProperties: false