Both are unauthenticated
GETs. Quote currency for candles is always USD. Prices in candle responses are decimal strings.
TypeScript consumers can call the candle endpoints through @sodax/sdk instead of fetch — sodax.backendApi.getOracleMarkets() and sodax.backendApi.getOracleCandles({ symbol, interval, from, to }) return the same payloads, Result-wrapped and schema-validated. The solver oracle has no SDK wrapper.
Base URL
https://canary-api.sodax.com/v1/be (oracle reads are served from the same production candle store).
Discover markets
Use this to populate a symbol picker and interval switcher.
Fetch candles
to is exclusive: range [from, to) returns buckets whose start falls inside the half-open interval.
Conventions
- Candles are ordered oldest first.
- The last candle may still be forming — re-poll while
"final": false. - No volume — candles are sampled from the SODAX price feed, not trade flow.
- A valid range with no stored candles returns
200with"candles": []. Render gaps gracefully. - An unknown symbol also currently returns
200with"candles": []rather than404. Use/oracle/marketswhen you need to validate the symbol first. - Max 5000 candles per request; wider ranges return
400. - Responses are cached ~10 seconds.
Chart adapter (JavaScript)
Solver oracle (live prices)
Live USD marks used by the solver, keyed by token address and chain id.
When to use which
Quotes for swaps should go through the Swaps API or the SDK. The solver oracle is for display, sanity checks, and tooling — not a substitute for a firm quote.