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:
- Core public REST (live today on
api.sentico-labs.xyz) — candles computed by the exchange node itself. - 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.
| Timeframe | UDF resolution | Bucket |
|---|---|---|
1m | 1 | 60 s |
5m | 5 | 300 s |
15m | 15 | 900 s |
1h | 60 | 3 600 s |
4h | 240 | 14 400 s |
1d | 1D | 86 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
| Method | Path | Purpose |
|---|---|---|
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/candles | WebSocket 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 | /health | Liveness + 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).
| Method | Path | Purpose |
|---|---|---|
GET | /udf/config | Capabilities + supported resolutions (1, 5, 15, 60, 240, 1D). |
GET | /udf/time | Server 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.