For the complete documentation index, see llms.txt. This page is also available as Markdown.

Power Forecast

Query power generation forecast data for renewable energy sources (Solar, Wind, etc.).

Query power forecast data

post

Query power forecast prediction data for renewable energy generation (Solar, Wind, etc.) and electricity demand (Load).

Dimensions:

  • zone_key: Country/region code (e.g. "DE")

  • psr_type: Generation source type (e.g. "Solar", "Wind Onshore") or "Load" for electricity demand. Load is currently available for Germany ("DE") only.

Query Modes (mutually exclusive):

  1. Horizon mode (init_time-centric):

    • init_time: Specific init time(s) or relative tokens (latest, latest-N)

    • max_prediction_timedelta: Limit forecast horizon (minutes)

  2. Time range mode (time-centric):

    • start_time / end_time: Filter by computed forecast time

Model version:

  • Omit version (or version: "stable") to follow the packaged stable pointer — this moves when Jua promotes a new checkpoint.

  • To freeze today's stable (safe across promotes): call GET /versions, take the row with is_stable: true, then pass that run id as version (or in version_pins). You stay on that checkpoint until you change the pin yourself.

  • version: "latest" follows the packaged latest pointer.

  • version_pins overrides specific (zone, psr) cells in one request.

Response Formats:

  • json: Columnar JSON format {column: [values], ...}

  • arrow: Apache Arrow IPC stream for efficient processing

Authentication: Requires API key.

Authorizations
Query parameters
formatstring · enumOptional

Response format: 'json' or 'arrow'

Default: jsonPossible values:
include_unitsbooleanOptional

When true, JSON responses are wrapped in {data, units}. Units are always sent via X-Variable-Units header regardless.

Default: false
Body

Query parameters for power forecast data.

Supports two mutually exclusive query modes:

Horizon mode (init_time-centric): - Specify init_time as datetime(s) or relative tokens (latest/latest-N) - Optionally limit by max_prediction_timedelta

Time range mode (time-centric): - Specify start_time / end_time - Computed time = init_time + prediction_timedelta * 60s

Common filters: - zone_keys: List of zone codes (e.g. ["DE", "FR"]) - psr_types: List of generation types (e.g. ["Solar", "Wind Onshore"])

Version selection: - version is the default for every (zone, psr) cell - version_pins overrides specific cells so one request can mix e.g. DE Solar pinned + FR Wind on stable

zone_keysstring[] · nullableOptional

List of zone codes (e.g. ['DE', 'FR'])

Example: ["DE"]
psr_typesstring[] · nullableOptional

List of PSR types (e.g. ['Solar', 'Wind Onshore'])

Example: ["Solar","Wind Onshore"]
versionstring · nullableOptional

Default model version for all (zone, psr) cells: 'stable' (default), 'latest', or a run id from GET /versions. Overridden per cell by version_pins.

Example: stable
init_timeany of · nullableOptional

Init time selection for horizon mode. Accepts datetime(s), 'latest', or 'latest-N'.

Example: latest
integerOptional

Offset from latest forecast (0 = latest, 1 = second latest, etc.)

or
string · date-timeOptional
or
max_prediction_timedeltainteger · max: 18446744073709552000 · nullableOptional

Maximum prediction horizon in minutes (horizon mode)

start_timestring · date-time · nullableOptional

Start of time range (inclusive, time range mode)

Example: 2025-12-01T00:00:00Z
end_timestring · date-time · nullableOptional

End of time range (exclusive, time range mode)

Example: 2025-12-07T00:00:00Z
aggregation_periodstring · enum · nullableOptional

Temporal aggregation for returned rows. None and native return raw 15-minute rows; hourly/daily/weekly average value within buckets. init_time stays a group key so multi-run comparisons remain separated.

Example: nativePossible values:
time_zonestring · nullableOptional

IANA time zone name for time formatting (e.g. 'Europe/Berlin'). When aggregation_period is daily or weekly, also sets the bucket boundary timezone (hourly aggregation ignores this).

Example: UTC
debiasbooleanOptional

Apply leakage-safe walk-forward additive MW debias. Wind uses an eight-week fitting window, solar uses four weeks, and both retain a seven-day exclusion gap. Opt in explicitly; raw predictions remain the API default.

Default: false
Responses
200

Successfully retrieved power forecast data

anyOptional
post/v1/power-forecast/data

List available power forecast zones

get

Get a list of available zone codes that have power forecast data.

This is a metadata endpoint and does not require authentication.

Responses
200

Successfully retrieved zone list

application/json

Result for available zones query.

zonesstring[]Required
get/v1/power-forecast/zones

List available PSR types

get

Get a list of available PSR (Production Source) types for power forecasts.

This is a metadata endpoint and does not require authentication.

Query parameters
zone_keyany of · nullableOptional

Optional zone key(s) to filter PSR types by

stringOptional
or
string[]Optional
strictbooleanOptional

When true, return only PSR types produced in every given zone (intersection). Default returns the union across zones.

Default: false
Responses
200

Successfully retrieved PSR type list

application/json

Result for available PSR types query.

psr_typesstring[]Required
get/v1/power-forecast/psr-types

List available model versions

get

Catalog of pin-able run ids per zone/PSR.

description is packaged metadata for a known run id. Historical versions without retained metadata return null.

Freeze today's stable (recommended for promote-safety):

  1. Call this endpoint (optionally filter with zone_key / psr_type).

  2. For each cell you care about, take model_version where is_stable is true.

  3. Pass that run id as version on POST /power-forecast/data (whole request) or in version_pins (per cell).

version: "stable" follows live promotes. A concrete run id does not.

is_latest marks the preview alias (version=latest).

Requires power-forecast model entitlement (same as POST /data): the catalog exposes internal checkpoint / WandB run ids used for pinning.

Authorizations
Query parameters
zone_keyany of · nullableOptional

Optional zone key(s) to filter versions by

stringOptional
or
string[]Optional
psr_typestring[] · nullableOptional

Optional PSR type(s) to filter versions by

Responses
200

Successfully retrieved version catalog

application/json

Catalog of pin-able model versions, optionally filtered by zone/PSR.

get/v1/power-forecast/versions

Check if latest forecast uses fallback initial conditions

get

Check whether the most recent power forecast was generated using fallback initial conditions (i.e. ENTSO-E source data was unavailable).

Returns {"is_fallback": true} when the latest forecast used synthetic history, and {"is_fallback": false} otherwise.

This is a metadata endpoint and does not require authentication.

Query parameters
zone_keystring · nullableOptional

Optional zone key to check (e.g. 'DE'). If omitted, checks across all zones.

Responses
200

Fallback status

application/json
anyOptional
get/v1/power-forecast/fallback-status

List init times that used fallback initial conditions

get

Return init times whose forecasts were generated with fallback (estimated) initial conditions. The frontend uses this to flag specific model runs in the chart legend as potentially degraded.

This is a metadata endpoint and does not require authentication.

Query parameters
zone_keystring · nullableOptional

Optional zone key to filter by (e.g. 'DE'). If omitted, returns fallback init times across all zones.

Responses
200

List of fallback init times

application/json
anyOptional
get/v1/power-forecast/fallback-init-times

List available init times

get

Get available forecast init times with their max prediction horizon.

Used by the dashboard to populate the init_time dropdown when creating a power forecast data source. Results are ordered newest-first.

When include_availability=true is passed along with zone_key and psr_type filters, the response includes an availability_by_init_time field that maps each init_time to the list of (zone_key, psr_type) combinations that are available for it. This allows determining which specific combinations are missing for excluded init times without additional API calls.

This is a metadata endpoint and does not require authentication.

Query parameters
zone_keyany of · nullableOptional

Zone key(s) to filter init times by

stringOptional
or
string[]Optional
psr_typestring[] · nullableOptional

PSR type(s) to filter by. When multiple are given, only init_times available for ALL of them are returned.

limitinteger · min: 1 · max: 1000Optional

Maximum number of init times to return. Ignored only when BOTH start_time and end_time are provided (the closed window then bounds the listing instead of the row count). With a single bound the limit still applies, since the other side is open.

Default: 192
orderstring · enumOptional

Sort direction for init_time: 'desc' (newest first, default) or 'asc' (oldest first)

Default: descPossible values:
start_timestring · date-time · nullableOptional

Inclusive lower bound on init_time (ISO-8601, UTC). When set together with end_time, all init_times in the closed window are returned regardless of the limit/1000 row cap; on its own the limit still applies.

end_timestring · date-time · nullableOptional

Exclusive upper bound on init_time (ISO-8601, UTC): init_time < end_time. On its own the limit still applies (the lower side is unbounded).

include_availabilitybooleanOptional

When true and zone_key/psr_type are provided, include per-init-time availability breakdown showing which zone/PSR combinations are available for each init_time.

Default: false
versionstring · nullableOptional

Model version: 'stable' (default), 'latest', or a run id from GET /versions. Same semantics as POST /data.

Responses
200

Successfully retrieved init times

application/json

Result for available init times query.

total_countinteger · nullableOptional
archive_earliest_init_timestring · date-time · nullableOptional
archive_latest_init_timestring · date-time · nullableOptional
get/v1/power-forecast/init-times

Power forecast dissemination delay metrics

get

Per-(zone, psr_type, init_time) dissemination delay relative to ZONE_SCHEDULES publication time (completed_at - (init_time + entsoe_lag + inference_overhead)). Used by admin-panel monitoring.

Authorizations
Query parameters
sincestring · date-time · nullableOptional

Only include init_times on/after this datetime

untilstring · date-time · nullableOptional

Only include init_times before this datetime

zone_keysstring[] · nullableOptional

Optional zone filter (defaults to ZONE_SCHEDULES)

Responses
200

Successful Response

application/json
sincestring · date-timeRequired
untilstring · date-timeRequired
fleet_on_time_pctnumber · nullableOptional
worst_zone_p95_minnumber · nullableOptional
worst_zone_keystring · nullableOptional
missing_runsintegerOptional

Sum of missing_count across all zone/psr pairs

Default: 0
fallback_runsintegerOptional

Sum of fallback_count across all zone/psr pairs

Default: 0
get/v1/power-forecast/dissemination-metrics

Last updated