{"openapi":"3.1.0","info":{"title":"Vatio API","description":"\nClean **US grid data** over one simple API — normalized across every ISO (CAISO,\nERCOT, PJM, MISO, NYISO, ISO-NE, SPP) and served from our own store, so you never\ntouch the raw operator feeds yourself.\n\nCoverage & cadence:\n- **Prices (LMP)** — real-time, 5-minute. Live for **CAISO and NYISO** today; more\n  ISOs rolling out (price endpoints return `404` for grids not yet wired).\n- **Demand (load)** — 5-minute for CAISO (native feed); hourly for the other ISOs\n  (EIA-930).\n- **Generation fuel mix** — hourly for every ISO (EIA-930).\n\nEndpoints are uniform across grids: `/v1/{iso}/lmp/realtime`,\n`/v1/{iso}/load/realtime`, `/v1/{iso}/generation/realtime`, and history variants.\n\n**Get started:** `POST /v1/auth/signup` with your email to get a free API key,\nthen send it as the `X-API-Key` header.\n","version":"0.1.0"},"paths":{"/v1/{iso}/lmp/realtime":{"get":{"tags":["Grid data"],"summary":"Latest real-time LMP for a hub","operationId":"lmp_realtime_v1__iso__lmp_realtime_get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"type":"string","title":"Iso"}},{"name":"hub","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hub name; defaults to the ISO's primary hub","examples":["SP15"],"title":"Hub"},"description":"Hub name; defaults to the ISO's primary hub"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpReadingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/{iso}/lmp/history":{"get":{"tags":["Grid data"],"summary":"Historical LMP series for a hub","operationId":"lmp_history_v1__iso__lmp_history_get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"type":"string","title":"Iso"}},{"name":"hub","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["SP15"],"title":"Hub"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"ISO8601; defaults to 24h before end","title":"Start"},"description":"ISO8601; defaults to 24h before end"},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"ISO8601; defaults to now (minus plan delay)","title":"End"},"description":"ISO8601; defaults to now (minus plan delay)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","description":"json (default) or csv","default":"json","title":"Format"},"description":"json (default) or csv"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LmpSeries"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/{iso}/load/realtime":{"get":{"tags":["Grid data"],"summary":"Latest system demand","operationId":"load_realtime_v1__iso__load_realtime_get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"type":"string","title":"Iso"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoadReadingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/{iso}/load/history":{"get":{"tags":["Grid data"],"summary":"Historical demand series","operationId":"load_history_v1__iso__load_history_get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"type":"string","title":"Iso"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","description":"json (default) or csv","default":"json","title":"Format"},"description":"json (default) or csv"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoadSeries"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/{iso}/generation/realtime":{"get":{"tags":["Grid data"],"summary":"Latest generation by fuel","operationId":"generation_realtime_v1__iso__generation_realtime_get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"type":"string","title":"Iso"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationReadingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/{iso}/generation/history":{"get":{"tags":["Grid data"],"summary":"Historical generation-by-fuel series","operationId":"generation_history_v1__iso__generation_history_get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"type":"string","title":"Iso"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","description":"json (default) or csv","default":"json","title":"Format"},"description":"json (default) or csv"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationSeries"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/{iso}/renewables/realtime":{"get":{"tags":["Grid data"],"summary":"Latest solar + wind output","operationId":"renewables_realtime_v1__iso__renewables_realtime_get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"type":"string","title":"Iso"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenewableReadingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/{iso}/renewables/history":{"get":{"tags":["Grid data"],"summary":"Historical solar + wind series","operationId":"renewables_history_v1__iso__renewables_history_get","parameters":[{"name":"iso","in":"path","required":true,"schema":{"type":"string","title":"Iso"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","description":"json (default) or csv","default":"json","title":"Format"},"description":"json (default) or csv"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenewableSeries"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sample":{"get":{"tags":["public"],"summary":"Demo snapshot (15-min delayed) — powers the landing demo","operationId":"sample_v1_sample_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/sample/series":{"get":{"tags":["public"],"summary":"SP15 price series (15-min delayed) — landing chart","operationId":"sample_series_v1_sample_series_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"Window length, 1h–7d","default":24,"title":"Hours"},"description":"Window length, 1h–7d"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/isos":{"get":{"tags":["public"],"summary":"ISO catalog for the dashboard picker","operationId":"public_isos_v1_public_isos_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/public/dashboard":{"get":{"tags":["public"],"summary":"Public live dashboard — snapshot + 24h series for an ISO (15-min delayed)","operationId":"public_dashboard_v1_public_dashboard_get","parameters":[{"name":"iso","in":"query","required":false,"schema":{"type":"string","description":"ISO slug, e.g. caiso, ercot, pjm","default":"caiso","title":"Iso"},"description":"ISO slug, e.g. caiso, ercot, pjm"},{"name":"hub","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hub for the price chart; defaults to the ISO's primary hub","title":"Hub"},"description":"Hub for the price chart; defaults to the ISO's primary hub"},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"Series window, 1h–7d","default":24,"title":"Hours"},"description":"Series window, 1h–7d"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/compare":{"get":{"tags":["public"],"summary":"One metric across every ISO (15-min delayed)","operationId":"public_compare_v1_public_compare_get","parameters":[{"name":"metric","in":"query","required":false,"schema":{"type":"string","pattern":"^(demand|price)$","default":"demand","title":"Metric"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"default":24,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/status":{"get":{"tags":["meta"],"summary":"Data-freshness status per grid","operationId":"status_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/healthz":{"get":{"tags":["meta"],"summary":"Health check","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"GenerationPoint":{"properties":{"interval_start":{"type":"string","format":"date-time","title":"Interval Start"},"mix":{"additionalProperties":{"type":"number"},"type":"object","title":"Mix"},"renewable_mw":{"type":"number","title":"Renewable Mw","default":0.0},"carbon_intensity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Carbon Intensity"},"net_load_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Load Mw"}},"type":"object","required":["interval_start","mix"],"title":"GenerationPoint"},"GenerationReadingOut":{"properties":{"iso":{"type":"string","title":"Iso"},"interval_start":{"type":"string","format":"date-time","title":"Interval Start"},"mix":{"additionalProperties":{"type":"number"},"type":"object","title":"Mix","description":"MW by fuel type"},"total_mw":{"type":"number","title":"Total Mw"},"renewable_mw":{"type":"number","title":"Renewable Mw","description":"Solar + wind, MW"},"renewable_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Renewable Pct","description":"Solar+wind share of generation, %"},"carbon_intensity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Carbon Intensity","description":"Direct fossil-combustion CO₂ intensity, gCO₂/kWh"},"net_load_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Load Mw","description":"Demand − (solar + wind) at this interval, MW"},"unit":{"type":"string","title":"Unit","default":"MW"}},"type":"object","required":["iso","interval_start","mix","total_mw","renewable_mw"],"title":"GenerationReadingOut"},"GenerationSeries":{"properties":{"iso":{"type":"string","title":"Iso"},"fuels":{"items":{"type":"string"},"type":"array","title":"Fuels","description":"Fuel types present, in stack order"},"unit":{"type":"string","title":"Unit","default":"MW"},"delayed_minutes":{"type":"integer","title":"Delayed Minutes"},"count":{"type":"integer","title":"Count"},"data":{"items":{"$ref":"#/components/schemas/GenerationPoint"},"type":"array","title":"Data"}},"type":"object","required":["iso","fuels","delayed_minutes","count","data"],"title":"GenerationSeries"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LmpPoint":{"properties":{"interval_start":{"type":"string","format":"date-time","title":"Interval Start"},"price":{"type":"number","title":"Price"}},"type":"object","required":["interval_start","price"],"title":"LmpPoint"},"LmpReadingOut":{"properties":{"iso":{"type":"string","title":"Iso"},"hub":{"type":"string","title":"Hub"},"market":{"type":"string","title":"Market"},"interval_start":{"type":"string","format":"date-time","title":"Interval Start"},"price":{"type":"number","title":"Price"},"unit":{"type":"string","title":"Unit","default":"$/MWh"}},"type":"object","required":["iso","hub","market","interval_start","price"],"title":"LmpReadingOut"},"LmpSeries":{"properties":{"iso":{"type":"string","title":"Iso"},"hub":{"type":"string","title":"Hub"},"market":{"type":"string","title":"Market"},"unit":{"type":"string","title":"Unit","default":"$/MWh"},"delayed_minutes":{"type":"integer","title":"Delayed Minutes"},"count":{"type":"integer","title":"Count"},"data":{"items":{"$ref":"#/components/schemas/LmpPoint"},"type":"array","title":"Data"}},"type":"object","required":["iso","hub","market","delayed_minutes","count","data"],"title":"LmpSeries"},"LoadPoint":{"properties":{"interval_start":{"type":"string","format":"date-time","title":"Interval Start"},"actual_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Actual Mw"},"forecast_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Forecast Mw"},"interchange_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Interchange Mw"}},"type":"object","required":["interval_start","actual_mw","forecast_mw"],"title":"LoadPoint"},"LoadReadingOut":{"properties":{"iso":{"type":"string","title":"Iso"},"interval_start":{"type":"string","format":"date-time","title":"Interval Start"},"actual_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Actual Mw"},"forecast_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Forecast Mw"},"interchange_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Interchange Mw","description":"Net interchange, MW (EIA sign: + = net exports, − = net imports)"},"unit":{"type":"string","title":"Unit","default":"MW"}},"type":"object","required":["iso","interval_start","actual_mw","forecast_mw"],"title":"LoadReadingOut"},"LoadSeries":{"properties":{"iso":{"type":"string","title":"Iso"},"unit":{"type":"string","title":"Unit","default":"MW"},"delayed_minutes":{"type":"integer","title":"Delayed Minutes"},"count":{"type":"integer","title":"Count"},"data":{"items":{"$ref":"#/components/schemas/LoadPoint"},"type":"array","title":"Data"}},"type":"object","required":["iso","delayed_minutes","count","data"],"title":"LoadSeries"},"RenewablePoint":{"properties":{"interval_start":{"type":"string","format":"date-time","title":"Interval Start"},"solar_mw":{"type":"number","title":"Solar Mw"},"wind_mw":{"type":"number","title":"Wind Mw"}},"type":"object","required":["interval_start","solar_mw","wind_mw"],"title":"RenewablePoint"},"RenewableReadingOut":{"properties":{"iso":{"type":"string","title":"Iso"},"interval_start":{"type":"string","format":"date-time","title":"Interval Start"},"solar_mw":{"type":"number","title":"Solar Mw"},"wind_mw":{"type":"number","title":"Wind Mw"},"unit":{"type":"string","title":"Unit","default":"MW"}},"type":"object","required":["iso","interval_start","solar_mw","wind_mw"],"title":"RenewableReadingOut"},"RenewableSeries":{"properties":{"iso":{"type":"string","title":"Iso"},"unit":{"type":"string","title":"Unit","default":"MW"},"delayed_minutes":{"type":"integer","title":"Delayed Minutes"},"count":{"type":"integer","title":"Count"},"data":{"items":{"$ref":"#/components/schemas/RenewablePoint"},"type":"array","title":"Data"}},"type":"object","required":["iso","delayed_minutes","count","data"],"title":"RenewableSeries"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}