Skip to main content
Two complementary price surfaces: 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 fetchsodax.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

Canary host: https://canary-api.sodax.com/v1/be (oracle reads are served from the same production candle store).

Discover markets

Example response
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.
Example response

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 200 with "candles": []. Render gaps gracefully.
  • An unknown symbol also currently returns 200 with "candles": [] rather than 404. Use /oracle/markets when 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.
Example item
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.

Errors