Cernion Renewable Energy Forecasting API
The Renewable Energy Forecasting API from Cernion — 1 operation(s) for renewable energy forecasting.
The Renewable Energy Forecasting API from Cernion — 1 operation(s) for renewable energy forecasting.
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/cernion-de:cernion-de-renewable-energy-forecasting-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: Cernion Energy Tools Renewable Energy Forecasting API
version: 0.99.22
description: 'MicroService Agent System for Energy Markets - REST API with AI integration.
CERNION_TOKEN: request at https://cernion.de/ or by email: dev@stromdao.com.
For the public instance at https://api.cernion.de/, create your token at https://cernion.de/cet-token/.'
servers:
- url: https://api.cernion.de
description: API Server
tags:
- name: Renewable Energy Forecasting
paths:
/api/forecast/generation-forecast:
post:
summary: Weather-based renewable energy generation forecast
tags:
- Renewable Energy Forecasting
operationId: forecast_generationForecast
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Forecast generated successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
summary:
type: object
properties:
location:
type: string
example: Netzgebiet SNB935578300972
type:
type: string
example: all
totalCapacityMW:
type: number
example: 25.77
installationCount:
type: number
example: 2756
isHistorical:
type: boolean
description: true when startDate is in the past (observed weather data used)
example: false
dataMode:
type: string
enum:
- weather_forecast
- historical_observation
description: '"weather_forecast" for future dates, "historical_observation" for past dates'
example: weather_forecast
forecastPeriod:
type: object
properties:
start:
type: string
format: date-time
end:
type: string
format: date-time
forecasts:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
generationMW:
type: number
description: Forecasted generation in MW
capacityFactor:
type:
- number
- 'null'
description: Capacity factor (0-1)
weather:
type: object
properties:
temperature:
type: number
description: Temperature in °C
windSpeed:
type: number
description: Wind speed in m/s
solarIrradiance:
type: number
description: Solar irradiance in W/m²
cloudCover:
type: number
description: Cloud cover in %
metadata:
type: object
properties:
toolName:
type: string
example: mastr_generation_forecast
timestamp:
type: string
format: date-time
weatherDataSource:
type: string
example: Visual Crossing
iecStandardApplied:
type: string
example: IEC 61853
description: IEC 61853 for solar, IEC 61400 for wind
cachingEnabled:
type: boolean
example: true
apiCallsUsed:
type: number
example: 1
orientationCorrectionApplied:
type: boolean
example: true
portfolioOrientationFactor:
type: number
example: 0.9712
description: Capacity-weighted azimuth+tilt factor from MaStR Hauptausrichtung
orientationDataCoverage:
type: number
example: 0.8341
description: Fraction of installations with MaStR orientation data
examples:
gridOperatorForecast:
summary: All EE generation for SNB935578300972
value:
success: true
summary:
location: Netzgebiet SNB935578300972
type: all
totalCapacityMW: 25.77
installationCount: 2756
forecastPeriod:
start: '2026-02-19T00:00:00.000Z'
end: '2026-02-26T00:00:00.000Z'
forecasts:
- timestamp: '2026-02-19T00:00:00.000Z'
generationMW: 0.01
capacityFactor: null
weather:
temperature: 4.3
windSpeed: 12.2
solarIrradiance: 30.8
cloudCover: 100
metadata:
toolName: mastr_generation_forecast
timestamp: '2026-02-18T23:21:46.848Z'
text/csv:
description: CSV format with metadata comments (when format=csv)
example: '# Renewable Energy Generation Forecast
# Location: Netzgebiet SNB935578300972
# Total Capacity: 25.77 MW
# Installation Count: 2756
Timestamp,Generation (MW),Capacity Factor,Temperature (°C),Wind Speed (m/s),Solar Irradiance (W/m²),Cloud Cover (%)
2026-02-19T00:00:00.000Z,0.01,,4.3,12.2,30.8,100'
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
description: Excel XLSX with Forecast sheet (daily data + weather) and Metadata sheet
schema:
type: string
format: binary
'400':
description: Invalid request parameters
content:
application/json:
example:
success: false
error:
code: VALIDATION_ERROR
message: 'Invalid forecastDays: must be between 1 and 14'
'500':
description: Server error during forecast generation
content:
application/json:
example:
success: false
error:
code: FORECAST_ERROR
message: Weather API unavailable
description: 'Regional Solar/Wind generation forecast based on ACTUAL installed capacity from MaStR, combined with weather forecasts from Visual Crossing API.
**How it works:**
1. Queries MaStR database for ALL installed solar/wind capacity in the specified area
2. Fetches weather forecast from Visual Crossing API (24h cache, IEC-compliant)
3. Calculates expected generation using IEC 61853 (solar) / IEC 61400 (wind) standards
4. Returns daily MW forecast + weather conditions for up to 14 days
**Key Features:**
- Real installation data from German MaStR registry (3.7M+ installations)
- IEC standard compliance (IEC 61853 for solar, IEC 61400 for wind)
- Daily forecasts up to 14 days
- Filter by grid operator (MaStR ID), federal state, district, municipality, or postal code
- Optional cross-validation with SMARD data
**Use Cases:**
- **Grid Operators (VNB/GNB)**: Anticipate feed-in volumes and plan redispatch measures
- **Energy Suppliers (Stadtwerke)**: Optimize procurement by forecasting local renewable generation
- **Virtual Power Plants (VPP)**: Aggregate forecasts for trading and balancing markets
- **Energy Trading**: Intraday and day-ahead market positioning
**Parameters:**
- **installationType**: "solar" (default), "wind", or "all" (combined solar+wind)
- **forecastDays**: Forecast period 1-14 days (default: 7)
- **resolution**: Time resolution — `"daily"` (1 point/day, default), `"hourly"` (24 pts/day, intraday trading), `"15min"` (96 pts/day, §12 StromNZV balancing/scheduling)
- **gridOperatorMastrId**: MaStR Netzbetreiber-ID (SNB/GNB...) — use cernion_vnb_lookup to resolve BDEW→MaStR
- **bundesland**: German federal state (e.g., "Bayern", "Baden-Württemberg")
- **landkreis**: District/Landkreis name
- **gemeinde**: Municipality/Gemeinde name
- **postleitzahl**: 5-digit postal code (e.g., "69115")
- **latitude/longitude**: Coordinates for precise weather data
- **startDate**: Optional start date (`YYYY-MM-DD`). Omit for default tomorrow behaviour (no breaking change). Past dates retrieve **observed weather data** (Visual Crossing historical observations) — identical IEC calculation, 30-day cache. Response gains `summary.isHistorical` and `summary.dataMode` fields.
- **includeValidation**: Cross-validate with SMARD data (default: false)
- **installationMastrNummer**: Single-installation forecast by MaStR unit ID (SEE…=solar, SWE…=wind). **Highest priority** — overrides all regional filters. installationType is auto-derived from prefix.
- **messlokationId**: Single-installation forecast via Metering Location ID (MeLo, 33 chars, starts with DE). Resolved via NAP table. Priority: installationMastrNummer > messlokationId > gridOperatorMastrId > location.'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
installationType:
type: string
enum:
- solar
- wind
- all
default: solar
description: Installation type to forecast
example: all
forecastDays:
type: number
minimum: 1
maximum: 14
default: 7
description: Number of days to forecast (1-14)
example: 7
resolution:
type: string
enum:
- daily
- hourly
- 15min
default: daily
description: Time resolution of forecast output. "daily" = 1 pt/day (default); "hourly" = 24 pts/day (intraday dispatch/trading); "15min" = 96 pts/day (§12 StromNZV balancing/scheduling, linear interpolation between hourly values)
example: daily
gridOperatorMastrId:
type: string
description: MaStR Netzbetreiber-ID (SNB/GNB...). Use cernion_vnb_lookup to resolve BDEW → MaStR ID.
example: SNB935578300972
installationMastrNummer:
type: string
description: MaStR unit ID for single-installation forecast (SEE…=solar, SWE…=wind). Highest priority — overrides all regional filters. installationType is auto-derived from prefix.
example: SEE984033548619
messlokationId:
type: string
description: 'Metering location ID (MeLo, 33 chars, starts with DE). Resolved via NAP table. Priority: installationMastrNummer > messlokationId > gridOperatorMastrId > location.'
example: DE0010107352900000000000000336372
bundesland:
type: string
description: German federal state
example: Bayern
landkreis:
type: string
description: District/Landkreis name
example: Rhein-Neckar-Kreis
gemeinde:
type: string
description: Municipality/Gemeinde name
example: Heidelberg
postleitzahl:
type: string
pattern: ^[0-9]{5}$
description: 5-digit postal code
example: '69115'
latitude:
type: number
description: Latitude for precise weather data
example: 49.3988
longitude:
type: number
description: Longitude for precise weather data
example: 8.6724
startDate:
type: string
pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
description: Optional start date (YYYY-MM-DD). Omit for default tomorrow behaviour. Past dates switch to historical observation mode (30-day cache, observed weather instead of forecast).
example: '2026-01-15'
includeValidation:
type: boolean
default: false
description: Cross-validate forecast with SMARD data
example: false
format:
type: string
enum:
- json
- csv
- xlsx
default: json
description: Output format
example: json
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
examples:
gridOperatorForecast:
summary: Daily EE generation for a grid operator network
value:
gridOperatorMastrId: SNB935578300972
installationType: all
forecastDays: 7
resolution: daily
hourlyIntraday:
summary: Hourly Solar+Wind forecast for Bavaria (intraday trading)
value:
bundesland: Bayern
installationType: all
forecastDays: 3
resolution: hourly
quarterHourlyBalancing:
summary: 15-min forecast for §12 StromNZV balancing/scheduling
value:
postleitzahl: '67063'
installationType: solar
forecastDays: 2
resolution: 15min
solarByPostalCode:
summary: Solar forecast for a specific postal code
value:
postleitzahl: '69115'
installationType: solar
forecastDays: 3
windBayern:
summary: Wind forecast for Bavaria (14 days)
value:
bundesland: Bayern
installationType: wind
forecastDays: 14
csvExport:
summary: Download hourly forecast as CSV
value:
gridOperatorMastrId: SNB935578300972
installationType: all
forecastDays: 3
resolution: hourly
format: csv
xlsxExport:
summary: Download 15-min forecast as Excel (XLSX)
value:
bundesland: Bayern
installationType: solar
forecastDays: 7
resolution: 15min
format: xlsx
singleInstallationMastrNr:
summary: Single PV installation forecast via MaStR-ID
value:
installationMastrNummer: SEE984033548619
forecastDays: 3
resolution: hourly
singleInstallationMeLo:
summary: Single installation forecast via Messlokation (MeLo)
value:
messlokationId: DE0010107352900000000000000336372
forecastDays: 1
resolution: 15min
historicalForecast:
summary: Historical generation analysis (past date, observed weather)
value:
gridOperatorMastrId: SNB935578300972
installationType: all
startDate: '2026-01-15'
forecastDays: 7
resolution: daily
components:
parameters:
TokenQuery:
name: token
in: query
required: false
schema:
type: string
description: Optional Cernion MCP token as URL query parameter. If provided, it overrides CERNION_TOKEN for this request. Prefer Authorization Bearer header in production to reduce token exposure in URLs/logs.
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Optional Cernion MCP token. If not provided, falls back to CERNION_TOKEN from environment. Request token at https://cernion.de/ or by email: dev@stromdao.com.'