REST API

Derivatives

Futures positioning: how much capital is committed, at what cost, in which direction, and at what price relative to spot. All these metrics are composites, and the weighting used is stated for each one.

#Open interest

GET/v1/raw/oidata_type · raw_oi

Total open interest, summed across all venues, in one-minute windows. Each venue keeps its last known value when its refresh skips a minute, and a minute is served only if every venue is represented in it: without that, the total would swing artificially.

ParameterTypeDefaultDescription
symbolstringrequiredThe asset.
limitinteger30Number of minutes, from 1 to 1000.
FieldTypeDescription
timestampstringStart of the minute.
oi_totalfloatSummed open interest. The name says the aggregate: it is not the value of a single venue.
GET/v1/oi/deltadata_type · oi_delta
GET/v1/oi/delta/historydata_type · oi_delta_history

The change in open interest: capital coming in or going out. The percentage is recomputed from the aggregated totals, to stay consistent with the sum.

FieldTypeDescription
oi_currentfloatCurrent cumulative open interest.
oi_previousfloatThe previous one.
deltafloatThe difference.
delta_pctfloat | nullThe change in percent.
timestampstringTimestamp of the computation.

#Funding

Three readings of the same phenomenon: the last rate applied, the next estimated one, and the cumulative total over the last twenty-four hours. All are composites weighted by open interest (the venue carrying the most positions weighs the most) and normalised to an eight-hour base before weighting, since some pairs settle every four hours or every hour.

GET/v1/funding/ratedata_type · funding_rate_8h
GET/v1/funding/rate/historydata_type · funding_rate_8h_history
FieldTypeDescription
bucketstringStart of the 8 h window, aligned on 00:00, 08:00 and 16:00 UTC.
ratefloatThe composite rate over the window, in 8 h equivalent.
aprfloatThe annualised rate: rate × 1095, i.e. 1095 settlements of 8 h per year. Absent from the history.
exchange_countintegerNumber of venues aggregated over the window.
GET/v1/funding/nextdata_type · funding_next_estimated
FieldTypeDescription
estimated_ratefloatThe estimated rate, in 8 h equivalent.
settlement_atstringMost recent known settlement timestamp.
is_pastbooleanTrue if that settlement has already passed.
aprfloatAnnualised.
exchange_countintegerNumber of venues aggregated.
GET/v1/funding/cumulativedata_type · funding_cumulative_24h
GET/v1/funding/cumulative/historydata_type · funding_cumulative_24h_history
curl
curl -H "X-API-KEY: $BYTNODE_KEY" \
  "https://api.bytnode.com/v1/funding/cumulative?symbol=BTCUSDT"
FieldTypeDescription
timestampstringBucket of the most recent 8 h window.
cumulative_ratefloatSum of the 8 h composites over the range.
aprfloatAnnualised over the number of windows actually summed, which stays exact even when one is missing.
window_countintegerNumber of 8 h windows actually summed, at most three.

#Liquidations

GET/v1/raw/liquidationsdata_type · raw_liquidations

Individual liquidations, all venues combined. Coverage here is structurally lower than on trades: not every venue publishes a public liquidation stream.

ParameterTypeDefaultDescription
symbolstringrequiredThe asset.
limitinteger30Number of events, from 1 to 1000.
min_usdfloat—Optional filter on the dollar value.
FieldTypeDescription
timestampstringTimestamp.
sidestringlong or short: the side of the liquidated position, not that of the order. The convention is normalised across venues.
pricefloatLiquidation price.
quantityfloatSize in units of the base asset.
usd_valuefloatValue in dollars.
GET/v1/liquidations/cumulativedata_type · liquidations_cumulative
GET/v1/liquidations/cumulative/historydata_type · liquidations_cumulative_history
FieldTypeDescription
timestampstringTimestamp of the computation.
long_usdfloatDollars of long positions liquidated.
short_usdfloatDollars of short positions liquidated.
total_usdfloatThe total.
GET/v1/liquidations/ratiodata_type · liquidation_ratio
GET/v1/liquidations/ratio/historydata_type · liquidation_ratio_history

The ratio between large liquidations (at least $100,000) and small ones. It tells a flush of large accounts from a cascade of small holders.

FieldTypeDescription
big_count / big_usdinteger / floatLiquidations of at least $100,000.
small_count / small_usdinteger / floatThose below.
ratiofloat | nullbig_usd divided by small_usd. null if the denominator is zero.
timestampstringTimestamp of the computation.

#Long/short ratio

GET/v1/ls-ratiodata_type · ls_ratio_composite
GET/v1/ls-ratio/historydata_type · ls_ratio_composite_history

The share of accounts positioned long, in the global account flavour, composited over the venues that publish it and weighted by open interest. At least two venues are required over a window, otherwise the response is null.

ParameterTypeDefaultDescription
symbolstringrequiredThe asset.
timeframestringrequired5m, 15m, 30m, 1h, 4h, 1d. The 1m timeframe is refused: no venue publishes at that cadence.
livebooleanfalseExposes the window in progress.
limitinteger30On the history, from 1 to 500.
FieldTypeDescription
timestampstringStart of the window.
timeframestringThe timeframe requested.
part_longfloatShare of long accounts, strictly between 0 and 1.
ratiofloatLongs divided by shorts.
venue_countintegerNumber of venues aggregated, at least two.
weightingstringoi when weighting by open interest could be applied, geomean as the fallback.
is_closedbooleanFalse only with live=1.

#Basis

GET/v1/basisdata_type · basis
GET/v1/basis/historydata_type · basis_history

The gap between the futures price and the spot price, an open-interest-weighted average over the venues that carry both markets. The two prices are weighted the same way, which guarantees that basis_value = futures_price − spot_price stays true.

FieldTypeDescription
basis_valuefloatThe gap in dollars.
basis_pctfloatThe gap in percent.
futures_pricefloatComposite futures price.
spot_pricefloatComposite spot price.
timestampstringTimestamp of the computation.

Default window of the history

Without since_ms or until_ms, the search goes back limit minutes. With an explicit window, that window applies.

#Cross-venue spreads

GET/v1/spread/interexchangedata_type · spread_interexchange_<tf>
GET/v1/spread/interexchange/historydata_type · spread_interexchange_<tf>_history

The only surface of the API that names the trading venues, since a spread makes no sense without them. The model is a premium per venue: a cross-venue reference price, then the gap of each venue to that reference. Any given pair is derived client-side, by the difference of two premiums.

ParameterTypeDefaultDescription
symbolstringrequiredThe asset.
timeframestringrequired1m, 5m, 15m, 30m, 1h, 4h, 1d.
livebooleanfalseExposes the window in progress.
limitinteger30On the history, from 1 to 500. No dated window.
Response
{
  "status": "ok",
  "data_type": "spread_interexchange_1m",
  "data": {
    "timestamp": "2026-08-29T11:38:00+00:00",
    "timeframe": "1m",
    "is_closed": true,
    "ref_price": 71420.83,
    "weighting": "volume",
    "max_spread_bps": 5.4,
    "max_spread_pct": 0.054,
    "high": { "exchange": "venue_a", "price": 71423.10 },
    "low":  { "exchange": "venue_b", "price": 71414.55 },
    "venue_count": 2,
    "venues": [
      { "exchange": "venue_a", "price": 71423.10, "premium_bps":  3.2 },
      { "exchange": "venue_b", "price": 71414.55, "premium_bps": -2.2 }
    ]
  }
}
FieldTypeDescription
ref_pricefloatCross-venue reference price.
weightingstringvolume in the nominal regime, mean as the fallback when volume is missing.
max_spread_bps / max_spread_pctfloatThe amplitude between the highest and the lowest venue.
high / lowobjectThe extreme venue and its price.
venue_countintegerNumber of venues over the window, at least two.
venuesarrayOne entry per venue: exchange, price, premium_bps. Sorted by decreasing premium.
is_closedbooleanFalse only with live=1.