Live USD reference values for Kalshi crypto markets, including BTC, ETH, SOL, XRP, and DOGE indices. These are underlying index values, separate from YES contract prices.
Overview
Use case: Compare a live reference value with a market's target while tracking contract quotes on kalshi_prices.
Requirements
- Uses your existing prices entitlement on Dev, Pro, and Enterprise. Subscribe once with no market_ids, group_ids, event_ids, or index_ids. Each update identifies its index_id; filter locally for the indices you need. Market ticker rollover requires no new reference subscription.
- Each index can update up to five times per second. This is an event-driven feed, not a fixed 200 ms timer; do not interpolate missing values or assume every interval produces a tick. Other indices may publish less often.
- Wait for KALSHI_STREAM_READY, then use the next index_value. KALSHI_STREAM_INTERRUPTED means the previous value is stale. Updates are live only; there is no initial snapshot or replay.
- The value is a decimal string in USD, not a contract probability. source_ts_ms is the index timestamp; the outer ts is Prediction Hunt delivery time. Compare source timestamps to reject older values.
- A slow consumer is disconnected with code 1013. Reconnect and resubscribe, then wait for a fresh value. Unsubscribe with no IDs to stop the feed.
Send
| Field | Type | Required | Notes |
|---|---|---|---|
| action | string | yes | Must be "subscribe" for this section. |
| channel | string | yes | Must be "kalshi_reference". |
| market_ids | string[] | unsupported | Do not send. Filter index_id in received messages. |
| group_ids | number[] | unsupported | Do not send. |
| event_ids | number[] | unsupported | Do not send. |
| wildcard | behavior | fixed | No IDs: receive all available reference index values. |
Receive
Data messages use the standard envelope: channel, type, ts, data. Types for this channel include: index_value.
Subscribe with {"action":"subscribe","channel":"kalshi_reference"}. Keep your separate kalshi_prices subscription for the contract's YES bid, ask, and last trade. The Kalshi markets API supplies the market's floor_strike target (TO BEAT). For BTC, filter reference updates to index_id=BRTI for the changing NOW value. These values have different meanings and units from contract quotes.
Data fields (inside data)
| Field | Type | Description |
|---|---|---|
| type | string | index_value |
| index_id | string | Reference index ID, for example BRTI, ETHUSD_RTI, SOLUSD_RTI, XRPUSD_RTI, or DOGEUSD_RTI. |
| value_usd | string | Current reference value in USD as a decimal string. |
| source_ts_ms | integer | Index value timestamp in Unix milliseconds. |
| source | string | cf_benchmarks |
