API Reference · v1

Zephyr API

Programmatic access to GB power market intelligence. Available on the Team plan.

5 endpoints live120 req/min rate limit

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

Live

Returns 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

Live

Query 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

Live

Returns 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

Live

Query 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

Live

Returns 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

401Missing or invalid API key
403Plan does not include API access
429Rate limit exceeded (120 requests per minute)
500Internal 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.