API

Versioning and migration

How the contract is numbered, how your code can tell that it moved, and every name retired since 2026-10-09 with what replaces it — generated from the contract itself, so this page cannot forget one.

#Version numbers

The URL prefix /v1 is the generation of the API. The contract version is the info.version of openapi.json, in semantic versioning: a minor increment adds (a route, a field, a parameter, an accepted value), a major increment removes, renames or changes a meaning. The current contract is 2.0.0.

Adding routes, fields or parameters is not a breaking change: write your client so that it ignores unknown fields. What counts as breaking, and the notice by plan before it takes effect, is on the Changelog.

#Detecting a change

  • Every response carries the contract version in the BytNode-Contract-Version header, and GET https://api.bytnode.com/ in contract_version: compare it with the version your client was written for.
  • The contract lists every retired name with its replacement in x-renamed, and the date each route, parameter and snapshot field was removed in x-removed-on: both are machine-readable.
  • A retired name never fails silently: the route answers 404, the parameter or snapshot field 422, the WebSocket channel an op: error — each with a message that names the replacement and the date.

#Moving to contract 2.0.0

Contract 2.0.0 (2026-10-12) numbers the renamings published from 2026-10-09 to 2026-10-12 under 1.2.0. The tables below are read from the contract; the left column is the old name, the right one what to use now (— = removed without replacement).

Retired routes

OldNowRemoved on
/v1/ls-ratio—2026-10-01
/v1/ls-ratio/history—2026-10-01
/v1/options/iv/history/v1/options/iv/klines2026-10-11
/v1/orderbook/aggregated/v1/orderbook2026-10-12
/v1/orderbook/aggregated/history/v1/orderbook/history2026-10-12
/v1/raw/futures-ticks/v1/trades/futures2026-10-11
/v1/raw/klines/v1/klines?timeframe=1m2026-10-11
/v1/raw/klines/15m/v1/klines?timeframe=15m2026-10-11
/v1/raw/klines/1d/v1/klines?timeframe=1d2026-10-11
/v1/raw/klines/1h/v1/klines?timeframe=1h2026-10-11
/v1/raw/klines/1m/v1/klines?timeframe=1m2026-10-11
/v1/raw/klines/1w/v1/klines?timeframe=1w2026-10-11
/v1/raw/klines/30m/v1/klines?timeframe=30m2026-10-11
/v1/raw/klines/4h/v1/klines?timeframe=4h2026-10-11
/v1/raw/klines/5m/v1/klines?timeframe=5m2026-10-11
/v1/raw/liquidations/v1/liquidations/events2026-10-11
/v1/raw/oi/v1/oi/history?timeframe=1m2026-10-11
/v1/raw/orderbook/v1/orderbook/futures?timeframe=1m2026-10-10
/v1/raw/spot-ticks/v1/trades/spot2026-10-11
/v1/raw/taker-combined/v1/cvd/futures/history2026-10-10
/v1/raw/taker-futures/v1/cvd/futures/history2026-10-11
/v1/raw/trades/v1/trades-kline/futures/seconds2026-10-11
/v1/raw/trades/large/v1/trades/large2026-10-11
/v1/ticks/futures/v1/trades/futures2026-10-12
/v1/ticks/large/v1/trades/large2026-10-12
/v1/ticks/spot/v1/trades/spot2026-10-12
/v1/trades/v1/trades-kline2026-10-12
/v1/trades/future/v1/trades-kline/futures2026-10-09
/v1/trades/future/history/v1/trades-kline/futures/history2026-10-09
/v1/trades/futures/history/v1/trades-kline/futures/history2026-10-12
/v1/trades/futures/seconds/v1/trades-kline/futures/seconds2026-10-12
/v1/trades/history/v1/trades-kline/history2026-10-12
/v1/trades/spot/history/v1/trades-kline/spot/history2026-10-12
/v1/vwap—2026-10-11
/v1/vwap/history—2026-10-11
/v1/vwap/window—2026-10-11
/v1/vwap/window/history—2026-10-11

Retired parameters

OldNowRemoved on
marketmoved to the path on 2026-10-12: /v1/cvd/spot, /v1/cvd/futures, and /v1/cvd (no suffix) for all markets combined; the same for /v1/buysell/ratio, /v1/trades/avg-size and /v1/orderbook2026-10-12
timePeriodwas removed on 2026-10-11: bound the history with since_ms / until_ms (epoch milliseconds) and limit, like every other history2026-10-11

Renamed snapshot fields

OldNowRemoved on
funding_rate_8hfunding_rate
futures_tickstrades_futures2026-10-11
global_marketglobal2026-10-12
heatmapheatmap_clusters
klines_15mklines@15m2026-10-11
klines_1dklines@1d2026-10-11
klines_1hklines@1h2026-10-11
klines_1mklines@1m2026-10-11
klines_1wklines@1w2026-10-11
klines_30mklines@30m2026-10-11
klines_4hklines@4h2026-10-11
klines_5mklines@5m2026-10-11
liq_cumulativeliquidations_cumulative
liq_ratioliquidations_ratio
liquidationsliquidations_events2026-10-11
net_liquiditymacro_net_liquidity
oi_snapshots—
optionsoptions_summary
orderbook_aggregatedorderbook2026-10-12
raw_tradestrades_kline_futures_seconds2026-10-11
spot_tickstrades_spot2026-10-11
taker_futures—
ticks_futurestrades_futures2026-10-12
ticks_spottrades_spot2026-10-12
tradetrades_kline
trade_futurestrades_kline_futures
trade_sizetrades_avg_size
trade_spottrades_kline_spot
tradestrades_kline2026-10-12
trades_futures_secondstrades_kline_futures_seconds2026-10-12
trades_rawtrades_kline_futures_seconds
vwap—
vwap_window—

Renamed response fields

Response fields were renamed between 2026-10-09 and 2026-10-12, without one date per field. A field renamed on some routes only is listed with its route in x-renamed.fields_by_route.

OldNow
active_cryptocurrenciesactive_cryptocurrency_count
age_secondsage_s
asks_qtyasks_quantity
available_signalsavailable_signal_count
avg_30dactive_addresses_sma_30d
avg_7dactive_addresses_sma_7d
avg_sizeavg_trade_size
bids_qtybids_quantity
call_coinoi_call
call_oi_usdoi_call_usd
congestionlabel
cumulative_rate_pctrolling_24h_rate_pct
delta_call_usdoi_change_call_usd
delta_put_usdoi_change_put_usd
delta_total_usdoi_change_total_usd
depth_starthistory_start_date
dist_downdist_down_ratio
dist_updist_up_ratio
estimated_retargetestimated_retarget_at
eth_btc_ratioeth_price_btc
exchange_count—
expected_interval_secondsexpected_interval_s
fdvfdv_usd
feeds_checkedfeed_count
feeds_in_errorerror_feed_count
feeds_stalestale_feed_count
filedfiled_date
gas_ma30_gweigas_sma_30d_gwei
gas_ma7_gweigas_sma_7d_gwei
gold_7d_agogold_7d_ago_usd
holdings_estimatedis_holdings_estimated
imbalanceimbalance_ratio
last_candlelast_candle_at
market_capmarket_cap_usd
max_age_secondsmax_age_s
max_pain_strikemax_pain_strike_usd
momentum_30d_pctchange_30d_pct
momentum_7d_pctchange_7d_pct
nav_per_sharenav_per_share_usd
net_deltanet_volume
oi_currentoi
oi_totaloi
pc_labelput_call_label
pc_ratioput_call_ratio
pc_signalput_call_label
pointssample_count
points_countsample_count
price_timepriced_at
put_coinoi_put
put_oi_usdoi_put_usd
regimelabel
remaining_blocksremaining_block_count
remaining_time_msremaining_s
revenue_per_difficulty_ma30_usdrevenue_per_difficulty_sma_30d_usd
risk_onis_risk_on
risk_on_signalsrisk_on_signal_count
roc_pctchange_pct
sources_active—
sp500_sma50sp500_sma_50d
stale_venuesstale_venue_count
strikestrike_usd
taker_buybuy_volume
taker_buy_volbuy_volume
taker_buy_volumebuy_volume
taker_sellsell_volume
taker_sell_volsell_volume
taker_sell_volumesell_volume
threshold_secondsthreshold_s
top_call_striketop_call_strike_usd
top_put_striketop_put_strike_usd
total_signalssignal_count
total_volumevolume
trade_volumevolume
trade_volume_buybuy_volume
trade_volume_sellsell_volume
trades_avgavg_trade_size
trades_counttrade_count
trend_30d_pctdefi_health_change_30d_pct
underlying_priceunderlying_price_usd
usd_valuevalue_usd
value_classificationlabel
venue_count—
venues_expected—
volume_combinedvolume
volume_deltanet_volume
volume_estimatedis_volume_estimated
volume_futures_estimatedis_volume_futures_estimated
volume_totalvolume
window_countsample_count
yield_curve_10y2yyield_curve_10y2y_pp
zonelabel

WebSocket

OldNow
book.perp.<SYMBOL>book.futures.<SYMBOL>
spread_bps_avgavg_spread_bps
time (frame root)server_time
usd_valuevalue_usd

Envelope and error body

OldNowRemoved on
detailerror.message2026-10-11
timestampserver_time2026-10-11

Time key of the rows

OldNowRemoved on
buckettime2026-10-09
timestamptime2026-10-09