Skip to content

Price API: support PT15M (15-minute) resolution on the Electricity Prices endpoint #30

Description

@HuggeK

Summary

Add support for PT15M (15-minute) resolution to the Electricity Prices API (/services/price/electricity/{area}), in addition to the current hourly PT60M.

Background

The Price API docs currently specify Hourly (PT60M) as the only resolution, with no resolution parameter exposed:
https://developer.sourceful.energy/docs/api/price-api

The upstream data source (ENTSO-E Transparency Platform) now publishes 15-minute MTU data for a growing number of European bidding zones, driven by the EU move to a 15-minute imbalance settlement period. So the raw PT15M data already exists upstream — it's just not surfaced through Nova Core.

Motivation

Sourceful's Price API is valuable specifically because it proxies ENTSO-E and avoids hitting ENTSO-E directly. Calling ENTSO-E from browser/frontend projects runs into CORS restrictions (no permissive CORS headers) plus API-key/token handling — so a hosted, CORS-friendly proxy is the practical way to consume this data client-side.

We'd like to use 15-minute prices in:

  • srcfl/negative-price-calc (the negative-price project) — finer granularity matters for spotting and acting on negative-price windows that an hourly average can mask.
  • Other downstream projects that consume the Price API client-side and can't call ENTSO-E directly due to CORS.

Proposed change

Expose an optional resolution selector on the electricity prices endpoint, e.g.:

GET /services/price/electricity/{area}?resolution=PT15M
  • Default remains PT60M for backward compatibility.
  • Accept PT15M (and ideally PT60M) explicitly.
  • For areas/dates where 15-minute data isn't available upstream, fall back to PT60M (or return a clear indicator of the resolution actually served).
  • Document the supported resolutions and per-area availability.

Acceptance criteria

  • resolution=PT15M returns 15-minute price points for supported bidding zones.
  • Each price point / response indicates the resolution actually served.
  • Docs updated to describe the parameter and area coverage.
  • Existing callers (no parameter) keep getting PT60M unchanged.

Thanks! Happy to test against negative-price-calc once it's available.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions