Quickstart
No API key required. The API is public and read-only.
Check the API is up
Section titled “Check the API is up”curl https://api.mostlyright.xyz/health{"status":"ok","duckdb":"ok","supabase":"ok","sync":{"last_sync":"2026-03-20T16:20:24Z","file_count":548,"is_stale":false}}Get recent candles for a market
Section titled “Get recent candles for a market”curl "https://api.mostlyright.xyz/api/v1/candles?market=KXHIGHNY-26MAR20-T50&interval=1&fill=false&limit=5"Get NYC weather observations in metric
Section titled “Get NYC weather observations in metric”curl "https://api.mostlyright.xyz/api/v1/observations?station=NYC&units=metric&limit=3"Get 1-minute ASOS observations
Section titled “Get 1-minute ASOS observations”curl "https://api.mostlyright.xyz/api/v1/observations?station=LAX&resolution=1min&limit=3"Get daily climate reports
Section titled “Get daily climate reports”curl "https://api.mostlyright.xyz/api/v1/climate?station=NYC&from=2026-03-15&to=2026-03-20"Download a parquet file
Section titled “Download a parquet file”# Get a presigned URLcurl "https://api.mostlyright.xyz/api/v1/download/observations?station=NYC&year=2024"
# Response contains a 5-minute presigned R2 URL — download it directlyUsing the Python SDK
Section titled “Using the Python SDK”pip install therminal-pyfrom therminal.weather import WeatherHistory, WeatherLivefrom therminal.markets import MarketsClient
# Historical data (via API)weather = WeatherHistory()obs = weather.observations(station="NYC", units="metric")
# Live METAR (direct from AWC — same schema as historical)live = WeatherLive()current = live.current(["NYC", "ATL", "MDW"])
# Market datamarkets = MarketsClient()candles = markets.candles(market="KXHIGHNY-26MAR20-T50", from_date="2026-03-01")from therminal import TherminalClient still works for backward compatibility.
See the Python SDK page for full documentation.