Skip to main content
You can put a candlestick chart for any SODAX-supported asset into your product with one HTTP request. The Oracle candles API returns USD OHLC candles at four intervals, needs no API key and costs nothing to call. No data vendor, no signup, no SDK required. The prices come from SODAX itself: the same USD prices SODAX uses across the protocol. A chart built on this API shows your users the market SODAX actually trades on, so what they see on the chart lines up with what they get when they swap. Two endpoints cover the whole surface:

Built for Bound Exchange

The candles endpoint started with a partner request. Bound Exchange wanted candle charts in its trading interface and asked for a chart data source its UI could call directly. SODAX shipped it as a public endpoint rather than a private integration, so every builder on SODAX gets the same chart data Bound does.

Discover what is available

Start with the markets endpoint. It tells you which symbols and intervals exist, so your symbol picker and interval switcher never need a hardcoded list.
On 1 October 2026 the list held 137 symbols. It spans majors such as BTC, ETH, SOL and XRP, stablecoins such as USDC, USDT and bnUSD, liquid staking tokens such as JitoSOL and wstETH, gold tokens such as PAXG and XAUt, tokenized equities such as NVDA and TSLAx, and SODAX assets including SODA. The list changes as coverage grows, so read it at startup instead of copying it.

Fetch candles

The candles endpoint takes four required query parameters: Here is a request for the last few hours of hourly ETH candles:
Trimmed to the first and last candle, the live response looked like this:
A few conventions keep chart code simple:
  • timestamp is the bucket start in UNIX seconds. A 1h candle at T covers T up to T + 3600.
  • Symbols are network-agnostic. BTC is one price for Bitcoin, whichever network or wrapped form your user holds it in. Ask for the asset, not the token address.
  • Prices are decimal strings, so no precision is lost in transit. Convert at the edge of your app.
  • final: false marks the candle still forming. Closed candles omit the field. Re-poll while the last candle is open to keep it current.
  • Candles are price only. There is no volume field.
  • Up to 5000 candles per request. Wider ranges return 400, so page through long histories.
  • Empty ranges return 200 with "candles": []. An unknown symbol does the same, which is another reason to validate against /oracle/markets first.
  • Responses are cached for about 10 seconds, which makes browser polling at chart refresh rates comfortable.

Call it from TypeScript

@sodax/sdk wraps both endpoints on sodax.backendApi, returning the same payloads as a schema-validated Result:
getOracleMarkets and getOracleCandles ship in the release candidate line of @sodax/sdk (2.2.0-rc.8 on the rc tag at the time of writing). The current stable latest release, 2.1.0, does not include them. Install with npm install @sodax/sdk@rc to use the methods today, or call the REST endpoints with fetch, which work the same from any language.

Draw the chart

The response maps almost directly onto the { time, open, high, low, close } shape most candlestick libraries accept. With TradingView Lightweight Charts v5 the whole integration fits in a few lines:
From there, a symbol dropdown fed by /oracle/markets and an interval toggle fed by its intervals array give you a full chart panel. Poll the latest bucket on a timer and call series.update() with the newest candle to keep it moving.

Start building