Markets
Public market data over HTTPS. Tickers and OHLCV candles for every supported pair. Backed by the same multi-source price oracle (CoinGecko + Paprika + Binance) that powers the dashboard, with OKX for candles.
Authentication
Market endpoints are public — you do not need an API key. If you do attach one, the request still counts against your read bucket, so prefer caching responses client-side for repeated reads.
All responses are JSON. Numeric fields (price, volume24h, OHLCV values) are returned as strings to avoid floating-point precision loss.change24h is a decimal fraction (0.0234 = +2.34%). Timestamps are ISO 8601 UTC.
List tickers GET /api/v1/markets/tickers
Returns the current ticker for every supported pair in one call. Edge-cached for 30 seconds.
Single ticker GET /api/v1/markets/{symbol}
Returns a single pair. Symbol is case-insensitive. Returns404 if the symbol isn't in our supported set.
OHLCV candles GET /api/v1/markets/{symbol}/candles
Historical candles, sourced from OKX. Query parameters:
interval— one of1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d, 1w, 1M. Default1h.limit— 1 to 1000. Default 500.
Degraded responses
Market data must never hard-fail — a transient upstream blip would otherwise paint your whole UI red. If every price source is unreachable, ticker endpoints return a 200with a degraded: true flag and conservative static fallback prices. Check the flag in production code and consider greying out the value until the next poll.
Candles do return 502 on upstream failure since there's no sensible static fallback for time-series data.