API reference

Quickstart

The Vatio API is REST over HTTPS; every response is JSON (CSV on history endpoints). One uniform shape covers all seven US grids — swap the {iso} path segment. The base URL is http://localhost:8000. Grab your API key from the dashboard, then send it on every request as the X-API-Key header.

Your first request
bash
# get your free key from the dashboard, then pull the latest SP15 price
$ curl http://localhost:8000/v1/caiso/lmp/realtime?hub=SP15 \
    -H "X-API-Key: vt_live_…"

The machine-readable schema is at /openapi.json.

Authentication

Every request is authenticated with your secret API key, sent as the X-API-Key header:

http
X-API-Key: vt_live_…

Create, reveal and revoke keys in your dashboard — each key is shown once, so store it securely. Keep it secret: anyone with your key can spend your quota.

Plans & limits

Your plan controls four things: how many calls per month, requests per second, how fresh the data is (free is 15-minutes delayed; paid is live), and how far back history goes. See pricing.

PlanPriceCalls / moRateDataHistory
free$01,0001 / s15-min delayed7 days
indie$2950,0005 / sLive90 days
business$99500,00020 / sLive + websocket2 years
scaleContactCustom100 / sLive + websocket10 years

Track your month-to-date usage any time in your dashboard.

Errors & rate limits

Standard HTTP status codes; the body is always {"detail": "…"}. Exceed your per-second rate and you'll get 429 — back off and retry.

CodeMeaning
400Bad request — e.g. an unknown hub.
401Missing or invalid API key / session token.
404No data available yet for that query.
422Invalid parameters (e.g. password under 8 chars).
429Rate limit exceeded for your plan.
503Billing not configured (Stripe keys absent).

Grids & coverage

Every data endpoint is the same shape across grids — just swap the {iso} path segment. Authenticate with your API key (X-API-Key). Timestamps are UTC; prices are $/MWh, power is MW. Free callers see data ≥ 15 min old.

{iso}OperatorPrices (LMP)DemandFuel mix
caisoCalifornia ISO✅ live
ercotERCOT (Texas)rolling out
pjmPJMrolling out
misoMidcontinent ISOrolling out
nyisoNew York ISOrolling out
isoneISO New Englandrolling out
sppSouthwest Power Poolrolling out

Demand and the full fuel mix are live for all seven grids (hourly, via EIA-930). Prices are CAISO-only today (5-minute, via OASIS) and roll out to the other grids one at a time — price endpoints return 404 for grids that aren't wired yet. Hubs per grid are listed by /v1/public/isos.

Prices (LMP)

get/v1/{iso}/lmp/realtimeAPI key

Latest real-time price (RTD LMP) for a hub.

Query
ParamTypeNotes
hubstringDefaults to the ISO's primary hub. CAISO: NP15, SP15, ZP26.
Request
bash
$ curl http://localhost:8000/v1/caiso/lmp/realtime?hub=SP15 \
    -H "X-API-Key: vt_live_…"
Response 200
{ "iso": "caiso", "hub": "SP15", "market": "RTD", "interval_start": "2026-06-27T18:05:00Z", "price": -15.63, "unit": "$/MWh" }
get/v1/{iso}/lmp/historyAPI key

Historical price series for a hub, oldest-first. Window is clamped to your plan's history depth.

Query
ParamTypeNotes
hubstringDefaults to the ISO's primary hub.
startISO-8601Default: 24h before end.
endISO-8601Default: now (minus plan delay).
limitint1–5000, default 500.
formatstringjson (default) or csv.
Response 200
{ "iso": "caiso", "hub": "SP15", "market": "RTD", "unit": "$/MWh", "delayed_minutes": 0, "count": 2,
  "data": [
    { "interval_start": "2026-06-27T18:20:00Z", "price": -16.71 },
    { "interval_start": "2026-06-27T18:25:00Z", "price": -17.04 }
  ] }

Demand

get/v1/{iso}/load/realtimeAPI key

Latest system demand (actual + forecast), in MW.

Response 200
{ "iso": "ercot", "interval_start": "2026-06-27T18:00:00Z", "actual_mw": 67160.0, "forecast_mw": 66890.0, "unit": "MW" }
get/v1/{iso}/load/historyAPI key

Historical demand series. Same start / end / limit / format params as /lmp/history.

Response 200
{ "iso": "ercot", "unit": "MW", "delayed_minutes": 0, "count": 168,
  "data": [ { "interval_start": "2026-06-27T17:00:00Z", "actual_mw": 66740.0, "forecast_mw": 66510.0 } ] }

Generation (fuel mix)

Generation by fuel type, in MW — the full mix (gas, nuclear, coal, hydro, wind, solar, battery, oil, other). Hourly for every grid.

get/v1/{iso}/generation/realtimeAPI key

Latest generation mix for a grid.

Response 200
{ "iso": "ercot", "interval_start": "2026-06-27T16:00:00Z",
  "mix": { "nuclear": 4900, "coal": 8200, "gas": 38000, "wind": 9100, "solar": 14500, "battery": 1200, "other": 600 },
  "total_mw": 76500, "unit": "MW" }
get/v1/{iso}/generation/historyAPI key

Historical fuel-mix series. Accepts start / end / limit / format=csv (one column per fuel).

Response 200
{ "iso": "ercot", "fuels": ["nuclear","coal","gas","wind","solar","battery","other"], "unit": "MW", "delayed_minutes": 0, "count": 24,
  "data": [ { "interval_start": "2026-06-27T15:00:00Z", "mix": { "gas": 37500, "wind": 9400, "solar": 15200 } } ] }

Renewables (solar + wind)

A convenience view of the two variable renewables, derived from the fuel mix.

get/v1/{iso}/renewables/realtimeAPI key
Response 200
{ "iso": "caiso", "interval_start": "2026-06-27T18:05:00Z", "solar_mw": 19672.0, "wind_mw": 3261.0, "unit": "MW" }
get/v1/{iso}/renewables/historyAPI key

Historical solar + wind series. Same params as /lmp/history (incl. format=csv).

Output formats

All responses are JSON by default. Every */history endpoint also accepts ?format=csv for a download that drops straight into pandas or a spreadsheet:

bash
$ curl http://localhost:8000/v1/ercot/generation/history?format=csv \
    -H "X-API-Key: vt_live_…" -o ercot_generation.csv

CSV columns mirror the JSON fields (for fuel mix, one column per fuel).

Preview endpoints (no key)

These power the public live dashboard and landing demo. They're 15-minute delayed and need no key — handy for a quick look before you sign up.

get/v1/public/isosno auth

Catalog of grids for the dashboard picker — slug, code, hubs, and whether prices are live.

get/v1/public/dashboard?iso=caiso&hours=24no auth

Snapshot plus series for prices, demand and the fuel mix for one grid, in a single call. iso = any slug, hours = 1–168.

get/v1/public/compare?metric=demandno auth

One metric (demand or price) across every grid, for the compare chart.

get/v1/sampleno auth

CAISO landing snapshot: hub prices plus demand, solar and wind.

Get your free key →

Vatio · real-time US grid data · API reference · status
Data: U.S. Energy Information Administration (EIA) & CAISO OASIS · not affiliated with or endorsed by either.
Live gridTermsPrivacyOpenAPI