Skip to main content

Charting Data

Senticore serves OHLCV candle data for every listed market: spot markets chart the trade price, binary/prediction markets chart the YES-side price (the NO side is 1 - yes and derived client-side).

There are two surfaces:

  1. Core public REST (live today on api.sentico-labs.xyz) — candles computed by the exchange node itself.
  2. Dedicated chart service — a purpose-built candle backend with precomputed multi-timeframe rollups, a live WebSocket push, and a TradingView UDF datafeed surface. It feeds the Sentico web app's own candlestick chart (REST + WebSocket); the UDF surface exists for third-party integrators who want to plug the data into TradingView tooling. A public host has not been announced yet; the protocol below is stable and will not change when it is.

Timeframes

Both surfaces serve the same resolutions. The 1-minute series is the base; every coarser timeframe is a deterministic rollup of it.

TimeframeUDF resolutionBucket
1m160 s
5m5300 s
15m15900 s
1h603 600 s
4h24014 400 s
1d1D86 400 s

Core REST candles (live)

GET https://api.sentico-labs.xyz/api/v1/public/markets/{market_id}/candles?tf=1m&count_back=500

Spot markets return series.spot[]; binary/prediction markets return series.yes[] and series.no[]. All prices and volumes are integer micro-units as strings (1_000_000 micro = 1.0). See the API reference for the full schema.

Chart service — native surface

MethodPathPurpose
GET/v1/markets/{market_id}/candles?tf=&countBack=&beforeTs=Candle history, response-compatible with the core candles endpoint (series.spot[], micro-unit strings).
GET/v1/markets/{market_id}/line?tf=&countBack=&maxPoints=Close-price line series, LTTB-downsampled to maxPoints.
GET/v1/ws/candlesWebSocket live push. Subscribe with {"type":"subscribe","marketId":1,"tf":"1m"}; frames are {"type":"candle","marketId":…,"tf":"…","closed":…,"candle":{…}}. A closed: true frame seals the bucket.
GET/healthLiveness + tracked market ids.

Markets are discovered automatically from the public market catalog (refreshed every 60 s), so newly listed markets chart without operator action.

Chart service — TradingView UDF datafeed

The chart service also speaks the TradingView UDF datafeed protocol, so a TradingView Advanced Charts / Trading Platform integration can point at it without an adapter. Prices on this surface are decimal (micro / 1e6).

MethodPathPurpose
GET/udf/configCapabilities + supported resolutions (1, 5, 15, 60, 240, 1D).
GET/udf/timeServer time, unix seconds, plain text.
GET/udf/symbols?symbol={id|symbol}Symbol metadata. Resolves a numeric market id, canonical symbol (SPOT:WETH-USDC), or display symbol. ticker is always the market id.
GET/udf/search?query=&type=&limit=Symbol search over the catalog. type filters spot / prediction.
GET/udf/history?symbol=&resolution=&from=&to=&countback=OHLCV bars: { "s": "ok", "t": [...], "o": [...], "h": [...], "l": [...], "c": [...], "v": [...] }, or { "s": "no_data", "nextTime": … } past the start of history.

Symbol type is spot or prediction. Prediction symbols chart the YES probability in [0, 1] — render as a percentage.

Which surface should I use?

  • Third-party integrators today: the core REST endpoint above — it is public, stable, and covers every market.
  • TradingView-style charting (own frontends): the chart service's UDF + WebSocket surface; the Sentico web app ships a datafeed adapter shaped like the TradingView Datafeed API on top of it, with the core REST endpoint as automatic fallback.