Voltstack Data API
Data API v1
A read-only REST API over the same feed layer the product runs on. Key every request: the data API key goes in the X-API-Key header, and you can request one at research@voltstack.energy. As at 22 September 2026 a keyed request is answered at full depth on every path below, and a request carrying no key is answered as a labelled sample: the envelope gains a sample block, current feeds serve their usual recent window, and history is limited to the most recent 30 days. Build every integration keyed: a keyed call is never narrowed or labelled, whatever happens to anonymous access. Responses are JSON with a live flag and a data-age timestamp, so you can tell exactly what you are looking at, the same honesty rule as /status.
Base URL
https://api.voltstack.energy/v1
Try it (bring a key)
curl -H "X-API-Key: YOUR_KEY" \ https://api.voltstack.energy/v1/power/day-ahead
History, with its required window
curl -H "X-API-Key: YOUR_KEY" \ "https://api.voltstack.energy/v1/history/day-ahead?zone=DE_LU&from=2026-01-01&to=2026-07-01"
With no key, as at 22 September 2026: a labelled sample
HTTP 200, the same envelope plus:
"sample":{"sample":true,"window":"recent","detail":"Anonymous sample tier. Full depth requires a data API key …"}With no key, as at 22 September 2026: history before the 30-day window
HTTP 401
{"error":"api-key-required","detail":"Anonymous access is limited to a 30-day sample window. Full-depth history requires a data API key in the X-API-Key header. Request one at research@voltstack.energy."}PAUSEDAs at 24 September 2026 the endpoints that carry JAO, Nord Pool N2EX or netztransparenz.de data are paused while we confirm redistribution rights with those publishers, so they are not listed below. Each answers HTTP 451 to every request, keyed or not, with {"error":"unavailable","reason":"This dataset is paused while we confirm redistribution rights with its publisher."}
API KEYAs at 22 September 2026 this applies to every endpoint listed below, current feeds included: a key is what moves each of them from the labelled sample to full depth, and no endpoint answers an unkeyed request more fully than another. The badges on individual rows flag the other things a call needs, not the key.
Power
Day-ahead auction prices for the 12 configured European bidding zones, via ENTSO-E. ENTSO-E carries no GB price, so the payload holds 11.
Cross-border physical flows on the major interconnectors.
Generation mix by fuel type. GB is served from Elexon; other zones from ENTSO-E.
Merit-order curve snapshot for a zone.
Imbalance prices (ENTSO-E, dual-price zones included). The German control-area rows are withheld while netztransparenz.de confirms redistribution rights.
REMIT urgent market messages (outages and capacity events).
French nuclear fleet availability.
French wind and solar generation forecasts and RTE's purchase-obligation aggregate, in MW by horizon, as RTE publishes them (Source: RTE).
Nordic hydro reservoir levels.
GB balancing mechanism: accepted offers/bids vs MID (Elexon BOD/BOALF).
Gas
EU gas storage levels and flows (GIE AGSI+).
LNG terminal inventories and sendout (GIE ALSI+).
Cross-border pipeline flows (ENTSOG).
GB gas system: demand, supply mix, linepack (National Gas).
Norwegian gas system events: field and terminal unavailability as Gassco REMIT urgent market messages. Events, not flows.
Carbon
EU Allowance primary auction results by auctioning entity: clearing price, volume, cover ratio and bidders (Source: EEX). No spot or futures prices.
Weather
10-day temperature and wind forecasts by market region (Open-Meteo).
Forecast-error risk: run-to-run drift on wind and demand.
History
Historical day-ahead prices by zone.
Realized volatility computed from settled prices.
Historical EU storage levels.
Historical LNG terminal data.
Commodity reference series (FRED).
Benchmarks
DE battery storage revenue benchmark (reference configuration).
Benchmark for your own storage configuration.
Health
Nightly cross-validation of our series against independent sources, with per-series pass/fail.
Documentation
- API specification — full request/response shapes for every endpoint.
- Data dictionary — every field, unit, and zone code.
- Methodology guide — where each series comes from and how derived values are computed.
Provenance
Every series is fetched from its primary source (ENTSO-E, GIE, ENTSOG, Elexon, National Gas, JAO, netztransparenz.de, Open-Meteo, FRED) by a background worker and cross-validated nightly against independent references. The current result is served at /v1/health/cross-checks: key that request like any other. Feed-level freshness and completeness are on /status.