API Reference · v1
Zephyr API
Programmatic access to GB power market intelligence. Available on the Team plan.
Authentication
All requests require an API key passed as a request header. Generate your key from the Settings page under Plan & API.
X-API-Key: zk_live_your_key_here
Keys are shown once on generation. Store them securely. Revoke and regenerate from Settings at any time.
GET /api/v1/premium
LiveReturns the latest physical premium score, SRMC-implied price, and market conditions. Updated every 5 minutes.
Example request
curl -H "X-API-Key: zk_live_..." https://zephyr.markets/api/v1/premium
Example response
{
"data": {
"premium_score": -4.9,
"direction": "SOFTENING",
"implied_price_gbp_mwh": 78.19,
"market_price_gbp_mwh": 94.27,
"srmc_gbp_mwh": 99.97,
"wind_gw": 6.71,
"solar_gw": 0.0,
"residual_demand_gw": 15.79,
"regime": "transitional",
"calculated_at": "2026-04-19T01:58:47Z"
},
"meta": {
"model_version": "1.2.0",
"generated_at": "2026-04-19T02:01:44Z",
"endpoint": "/api/v1/premium"
}
}GET /api/v1/signals
LiveQuery params: limit (integer, 1–50, default 10)
Returns the latest REMIT signals scored by Zephyr. Each signal represents a generation or interconnector outage with direction and confidence scoring.
Example request
curl -H "X-API-Key: zk_live_..." https://zephyr.markets/api/v1/signals?limit=3
Example response
{
"data": [
{
"id": "e1e21761-97a5-418c-b002-6a583d4d5ccf",
"type": "remit",
"title": "DRAXX-2 — Generation Outage",
"description": "DRAXX-2 derated by 645.0MW (645.0MW normal). Unplanned outage from 00:58 UTC 19 Apr to 13:01 UTC 20 Apr.",
"direction": "bear",
"source": "Elexon BMRS",
"confidence": "HIGH",
"created_at": "2026-04-19T00:26:34Z"
}
],
"meta": {
"count": 1,
"generated_at": "2026-04-19T02:08:05Z",
"endpoint": "/api/v1/signals"
}
}GET /api/v1/markets
LiveReturns the latest snapshot of key market prices across GB power, European gas, carbon, and FX.
Example request
curl -H "X-API-Key: zk_live_..." https://zephyr.markets/api/v1/markets
Example response
{
"data": {
"n2ex_gbp_mwh": 94.27,
"ttf_eur_mwh": 42.05,
"nbp_pence_therm": 95.10,
"uka_gbp_t": 48.66,
"eua_eur_t": 76.47,
"gbp_eur": 0.8717,
"as_of": "2026-04-19T02:06:30Z"
},
"meta": {
"generated_at": "2026-04-19T02:12:18Z",
"endpoint": "/api/v1/markets"
}
}GET /api/v1/weather
LiveQuery params: hours (integer, 1–168, default 48)
Returns hourly GB weather forecasts with implied wind and solar generation. Useful for anticipating residual demand and regime transitions.
Example request
curl -H "X-API-Key: zk_live_..." https://zephyr.markets/api/v1/weather?hours=3
Example response
{
"data": [
{
"forecast_time": "2026-04-19T12:00:00Z",
"wind_speed_100m_ms": 4.19,
"wind_speed_10m_ms": 3.80,
"wind_implied_gw": 8.90,
"solar_radiation_wm2": 429.00,
"solar_implied_gw": 7.16,
"temperature_c": 8.30,
"residual_demand_gw": 19.93
}
],
"meta": {
"source": "Open-Meteo ECMWF",
"hours": 3,
"generated_at": "2026-04-19T11:24:06Z",
"endpoint": "/api/v1/weather"
}
}GET /api/v1/storage
LiveReturns the latest EU gas storage fill levels by country. Updated daily from GIE AGSI.
Example request
curl -H "X-API-Key: zk_live_..." https://zephyr.markets/api/v1/storage
Example response
{
"data": [
{ "location": "DE", "full_pct": 23.42, "report_date": "2026-04-18" },
{ "location": "FR", "full_pct": 27.50, "report_date": "2026-04-18" },
{ "location": "IT", "full_pct": 45.91, "report_date": "2026-04-18" },
{ "location": "NL", "full_pct": 7.39, "report_date": "2026-04-18" },
{ "location": "AT", "full_pct": 36.06, "report_date": "2026-04-18" }
],
"meta": {
"source": "GIE AGSI",
"generated_at": "2026-04-19T11:24:14Z",
"endpoint": "/api/v1/storage"
}
}Errors
| 401 | Missing or invalid API key |
|---|---|
| 403 | Plan does not include API access |
| 429 | Rate limit exceeded (120 requests per minute) |
| 500 | Internal server error |
Rate limits
Team plan keys are limited to 120 requests per minute. Exceeding this returns a 429 response. The limit resets on a rolling 60-second window.