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.

Each candle carries t (bucket start, unix seconds), openMicro, highMicro, lowMicro, closeMicro, priceMicro, volumeSharesMicro, volumeNotionalMicro, tradeCount and synthetic. Buckets without a trade are not omitted: the endpoint fills them with synthetic: true candles that repeat the last price with tradeCount: 0 and zero volume, so the series is continuous but synthetic candles must not be counted as activity. The envelope also carries stateVersion, windowStartTs, windowEndTs and hasMoreBefore for paging further back.

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.