{
"type": "cfbenchmarks_value",
"sending_ts_ms": 1669149841234,
"sid": 1,
"seq": 42,
"msg": {
"index_id": "BRTI",
"received_at": 1710000000123,
"data": "{\"type\":\"value\",\"id\":\"BRTI\",\"time\":1710000000123,\"value\":\"68000.12\"}",
"avg_60s_data": {
"value": "68000.12000000",
"window_size": 3,
"window_start_ts_ms": 1709999940123,
"window_end_ts_exclusive": 1710000000123
},
"last_60s_windowed_average_15min": {
"value": "68000.23000000",
"window_size": 14,
"window_start_ts_ms": 1709999980000,
"window_end_ts_exclusive": 1710000000123
}
}
}{
"type": "cfbenchmarks_value_indexlist",
"sending_ts_ms": 1669149841234,
"id": 2,
"sid": 1,
"seq": 1,
"msg": {
"index_ids": [
"BRTI",
"ETHUSD_RTI"
]
}
}CF Benchmarks Value Feed
Real-time CF Benchmarks index value updates, each carrying the raw upstream frame plus trailing 60-second and quarter-hour final-minute averages. Requires authentication.
Coins and index IDs
Use the following CF Benchmarks index IDs to request coin data on this channel or through the REST passthrough. The BTC and ETH examples on this page are illustrative; they are not the full list of coins.
| Coin | CF Benchmarks index ID |
|---|---|
| AAVE | AAVEUSD_RTI |
| ADA | ADAUSD_RTI |
| BCH | BCHUSD_RTI |
| BNB | BNBUSD_RTI |
| BTC | BRTI |
| DOGE | DOGEUSD_RTI |
| DOT | DOTUSD_RTI |
| ETH | ETHUSD_RTI |
| HBAR | HBARUSD_RTI |
| HYPE | HYPEUSD_RTI |
| LINK | LINKUSD_RTI |
| LTC | LTCUSD_RTI |
| NEAR | NEARUSD_RTI |
| SHIB / kSHIB | SHIBUSD_RTI |
| SOL | SOLUSD_RTI |
| SUI | SUIUSD_RTI |
| VVV | VVVUSD_RTI |
| WLD | WLDUSD_RTI |
| XLM | XLMUSD_RTI |
| XRP | XRPUSD_RTI |
| ZEC | ZECUSD_RTI |
Pass the index ID exactly as shown, rather than a coin symbol or Kalshi market ticker. For kSHIB, request SHIBUSD_RTI: values are USD per SHIB and are not scaled to kSHIB or a perpetual contract size.
Use the indexlist action below to check the index IDs available on your WebSocket connection. Availability can change; this table is a coin-to-index reference, not a guarantee that every index is streaming in every environment.
The 5Hz feed has a smaller coin set: BTC, ETH, SOL, XRP, and DOGE. Use cfbenchmarks_value for the other coins above.
Requirements
- Authentication required
- Index specification via
index_ids(array of CF Benchmarks index IDs, for example["BRTI", "ETHUSD_RTI"]) market_ticker/market_tickers/market_id/market_idsare not supported for this channel- You can seed
index_idsin the initial subscribe, or subscribe first and add indices later - Use
index_ids: ["all"]to receive every available index - Supports
update_subscriptionwithsubscribe_indices/unsubscribe_indices/indexlistactions indexlistreturns the available index IDs (as acfbenchmarks_value_indexlistmessage) without modifying the subscription- Ticks are emitted roughly once per second; duplicate or out-of-order upstream source timestamps are ignored. For up to 5 updates per second on supported indices, see the CF Benchmarks 5Hz Value Feed sibling channel
Use case: Consuming CF Benchmarks reference index values and their short-window averages
Subscription workflow
- Subscribe to
cfbenchmarks_value(optionally seedingindex_ids). A successful subscribe returns asubscribedresponse with the assignedsid. - Discover available index IDs with the
indexlistaction; the server replies with acfbenchmarks_value_indexlistmessage. - Add or remove tracked index IDs with
subscribe_indices/unsubscribe_indices, or useindex_ids: ["all"]to track everything.
For example, subscribe to BNB, HYPE, and SHIB values:
{
"id": 1,
"cmd": "subscribe",
"params": {
"channels": ["cfbenchmarks_value"],
"index_ids": ["BNBUSD_RTI", "HYPEUSD_RTI", "SHIBUSD_RTI"]
}
}
To discover the available indices, send the following after the subscribed response. Replace sid: 1 with the subscription ID returned by the server:
{
"id": 2,
"cmd": "update_subscription",
"params": {
"sid": 1,
"action": "indexlist"
}
}
Read the available IDs from msg.index_ids in the cfbenchmarks_value_indexlist response. This lists the channel’s available indices without changing which ones you subscribe to. A successful subscribe response alone does not confirm that a requested index is available.
Averaging semantics
avg_60s_data (always present):
- Window is trailing and per tick:
[source_ts_ms - 60000, source_ts_ms) window_sizecounts prior ticks only- If there are no prior ticks in the trailing window, the average falls back to the current tick value
last_60s_windowed_average_15min (present only in the final minute before quarter-hour close: :00, :15, :30, :45):
- Active accumulation window is
(quarter_close_ts_ms - 60000, quarter_close_ts_ms] - The start-boundary tick is excluded and the close tick is included
- This produces second-indexed counts:
:01 -> 1,:14 -> 14,:59 -> 59, close tick (:00/:15/:30/:45) ->60 - The field is omitted outside that final-minute window
Integration notes
- If you subscribe without any
index_ids, no value events flow until you add indices or switch to["all"] sididentifies the subscription stream; use it forupdate_subscriptionandunsubscribe- Missing
index_idsforsubscribe_indices/unsubscribe_indicesreturns anerrorwithcode: 24(“Index IDs required”); unsupported actions return a standard websocketerror - This channel is real-time only. Historical index values — including intra-second granularity on some indices — are available over REST via the CF Benchmarks REST Passthrough; live intra-second updates are available on the
cfbenchmarks_value_5hzchannel
{
"type": "cfbenchmarks_value",
"sending_ts_ms": 1669149841234,
"sid": 1,
"seq": 42,
"msg": {
"index_id": "BRTI",
"received_at": 1710000000123,
"data": "{\"type\":\"value\",\"id\":\"BRTI\",\"time\":1710000000123,\"value\":\"68000.12\"}",
"avg_60s_data": {
"value": "68000.12000000",
"window_size": 3,
"window_start_ts_ms": 1709999940123,
"window_end_ts_exclusive": 1710000000123
},
"last_60s_windowed_average_15min": {
"value": "68000.23000000",
"window_size": 14,
"window_start_ts_ms": 1709999980000,
"window_end_ts_exclusive": 1710000000123
}
}
}{
"type": "cfbenchmarks_value_indexlist",
"sending_ts_ms": 1669149841234,
"id": 2,
"sid": 1,
"seq": 1,
"msg": {
"index_ids": [
"BRTI",
"ETHUSD_RTI"
]
}
}API key authentication required for WebSocket connections. The API key should be provided during the WebSocket handshake.
Real-time CF Benchmarks index value with trailing 60-second and quarter-hour averages
The set of available CF Benchmarks index IDs, sent in response to an indexlist action