Elexon Generation API
GB electricity generation output, including historic.
GB electricity generation output, including historic.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/elexon:elexon-generation-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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: 3.2.0
info:
title: Insights.Api Generation API
version: '1.0'
description: GB electricity generation output, including historic.
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.
Depending on the quantity of data requested, data returned may be averaged hourly, daily,
weekly or monthly. Quantities are rounded to the nearest MWh.
Use /datasets/AGPT for full access.
This endpoint provides actual aggregated generation data per Power System Resource type
(Fuel Type categories as defined by Commission Regulation (EU) No 543/2013).
This 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'
operationId: getGenerationActualPerType
x-operation-id-source: derived
/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
operationId: getGenerationActualPerTypeDayTotal
x-operation-id-source: derived
/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
per settlement period. It returns generation with Power System Resource type
Solar, Wind Onshore or Wind Offshore (Fuel Type categories as defined by
Commission Regulation (EU) No 543/2013).
This 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
operationId: getGenerationActualPerTypeWindAndSolar
x-operation-id-source: derived
/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)
data and shows both interconnector imports and exports; the data is updated every five minutes.
Settlement 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'
operationId: getGenerationOutturnInterconnectors
x-operation-id-source: derived
/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'
operationId: getGenerationOutturnCurrent
x-operation-id-source: derived
/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'
operationId: getGenerationOutturnSummary
x-operation-id-source: derived
/generation/outturn/halfHourlyInterconnector:
get:
tags:
- Generation
summary: This endpoint is obsolete, and this location may be removed with no further…
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
operationId: getGenerationOutturnHalfHourlyInterconnector
x-operation-id-source: derived
/generation/outturn/FUELINSTHHCUR:
get:
tags:
- Generation
summary: This endpoint is obsolete, and this location may be removed with no further…
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
operationId: getGenerationOutturnFUELINSTHHCUR
x-operation-id-source: derived
/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
of all categories from the Generation by Fuel Type report.
This 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
operationId: getGenerationOutturn
x-operation-id-source: derived
components:
schemas:
Insights.Api.Models.Responses.Generation.OutturnGenerationValue:
type: object
properties:
fuelType:
type:
- string
- 'null'
generation:
type: integer
format: int64
additionalProperties: false
Insights.Api.Models.Responses.Transparency.ActualGenerationValue:
type: object
properties:
businessType:
type:
- string
- 'null'
example: Solar generation
psrType:
type:
- string
- 'null'
example: Solar
quantity:
type: number
format: double
example: 1829
additionalProperties: false
Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar:
type: object
properties:
data:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.ActualGenerationWindSolar'
metadata:
$ref: '#/components/schemas/Insights.Api.Models.Metadata.ApiResponseSourceMetadata'
additionalProperties: false
Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn:
type: object
properties:
dataset:
type:
- string
- 'null'
readOnly: true
publishTime:
type:
- string
- 'null'
format: date-time
startTime:
type:
- string
- 'null'
format: date-time
settlementDate:
type: string
format: date
settlementDateTimezone:
type:
- string
- 'null'
readOnly: true
settlementPeriod:
type:
- integer
- 'null'
format: int32
interconnectorName:
type:
- string
- 'null'
generation:
type:
- integer
- 'null'
format: int64
additionalProperties: false
Insights.Api.Models.Responses.Transparency.AgptSummaryData:
type: object
properties:
psrType:
type:
- string
- 'null'
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.Generation.HalfHourlyInterconnectorOutturn
: type: object
properties:
data:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.HalfHourlyInterconnectorOutturn'
metadata:
$ref: '#/components/schemas/Insights.Api.Models.Metadata.ApiResponseSourceMetadata'
additionalProperties: false
Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand:
type: object
properties:
data:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand'
metadata:
$ref: '#/components/schemas/Insights.Api.Models.Metadata.ApiResponseSourceMetadata'
additionalProperties: false
? Insights.Api.Models.Responses.ResponseWithMetadata-1_Insights.Api.Models.Responses.Transparency.ActualGenerationBySettlementPeriod
: type: object
properties:
data:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.ActualGenerationBySettlementPeriod'
metadata:
$ref: '#/components/schemas/Insights.Api.Models.Metadata.ApiResponseSourceMetadata'
additionalProperties: false
Insights.Api.Models.Responses.DemandOutturn.RollingSystemDemand:
type: object
properties:
recordType:
type:
- string
- 'null'
startTime:
type:
- string
- 'null'
format: date-time
demand:
type:
- integer
- 'null'
format: int64
additionalProperties: false
Insights.Api.Models.Responses.Generation.GenerationByFuelType:
type: object
properties:
dataset:
type:
- string
- 'null'
readOnly: true
fuelType:
type:
- string
- 'null'
currentUsage:
type:
- integer
- 'null'
format: int64
currentPercentage:
type: number
format: double
halfHourUsage:
type:
- integer
- 'null'
format: int64
halfHourPercentage:
type: number
format: double
twentyFourHourUsage:
type:
- integer
- 'null'
format: int64
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
- 'null'
example: Solar generation
psrType:
type:
- string
- 'null'
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.OutturnGenerationBySettlementPeriod:
type: object
properties:
startTime:
type:
- string
- 'null'
format: date-time
settlementPeriod:
type:
- integer
- 'null'
format: int32
data:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Generation.OutturnGenerationValue'
additionalProperties: false
Insights.Api.Models.Metadata.ApiResponseSourceMetadata:
type: object
properties:
datasets:
type:
- array
- 'null'
items:
type: string
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
- 'null'
items:
$ref: '#/components/schemas/Insights.Api.Models.Responses.Transparency.ActualGenerationValue'
additionalProperties: false
x-provenance:
method: harvested
publisher: Elexon
source: https://data.elexon.co.uk/swagger/v1/swagger.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)