Données de marché

API de dérivés crypto

Les données de dérivés crypto dans une seule API : open interest, taux de funding, liquidations, base et écarts entre places. BytNode agrège les places de perpétuels et de futures qu’il couvre et normalise leurs formats : vous comparez les marchés sans brancher chaque exchange ni retraiter ses données.

Le positionnement sur les futures : combien de capital est engagé, à quel coût, dans quel sens, et à quel prix par rapport au spot. Toutes ces métriques sont des composites, et la pondération utilisée est indiquée pour chacune.

#Données de dérivés crypto pour agents IA et LLM

« Le funding de BTC est-il positif ? », « Combien d’open interest ETH a-t-il pris aujourd’hui ? », « Quel côté a été liquidé dans l’heure ? » : un agent IA branché par MCP répond avec cette famille, pour une paire ou jusqu’à dix comparées, par l’outil get_pair_data.

MCP tools/call
Funding, open interest et liquidations de BTC et ETH en un appel MCP : chaque clé revient sous la forme paire/champ.
{
  "name": "get_pair_data",
  "arguments": {
    "symbol": ["BTCUSDT", "ETHUSDT"],
    "fields": ["funding_next", "oi", "liquidations_cumulative"],
    "timeframe": "1h"
  }
}
  • Pour le LLM : un rate_pct de funding est un pourcentage pour une fenêtre de huit heures, pas un taux annuel ; apr_pct l’annualise. Le citer comme un rendement annuel est le contresens classique.
  • Pour les développeurs : dans votre propre agent IA, /v1/funding/rate et /v1/oi font deux outils simples pour le tool calling ; le serveur MCP les expose déjà, sous les mêmes noms et unités.
  • Où ça tourne : Claude, ChatGPT, Cursor et tout client MCP, y compris les frameworks d’agents qui parlent MCP, comme LangChain ou n8n.

Branchez votre agent IA avec le guide du serveur MCP, ou apprenez-lui BytNode avec les Agent Skills open source.

#Intérêt ouvert

GET/v1/oi/historydata_type · oi_historyRéférence complète
Les 4 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket the row covers: a 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
oibase asset quantity (BTC for BTCUSDT)Total open interest across venues, base asset units. On a bucketed row, the value at the END of the bucket (like a close); on `/v1/oi/change`, the latest measurement.
sample_countcountNumber of source points in the bucket (one-minute points with data). For a state (basis, open interest) the value is the LAST of them — the bucket's close —; for a flow it is their total.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.

L’intérêt ouvert total, additionné sur toutes les places, une ligne par intervalle clos de timeframe (obligatoire, 1m à 1d) : pour chaque place sa dernière valeur dans l’intervalle, comme une clôture. La valeur courante est /v1/oi.

ParamètreTypeDéfautDescription
symbolstringobligatoireL’actif.
timeframestringobligatoireTaille de l’intervalle : 1m, 5m, 15m, 30m, 1h, 4h ou 1d.
limitinteger100Nombre d’intervalles de timeframe, de 1 à 1000.
ChampTypeDescription
timestringDébut de l’intervalle.
oifloatIntérêt ouvert additionné sur les places, en unités de l’actif de base, à la FIN du bucket (comme une clôture). La même grandeur, sous le même nom, que `oi` sur /v1/oi/change.
GET/v1/oi/changedata_type · oi_changeRéférence complète
Les 7 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the measurement; the change covers the minute before it.
oibase asset quantity (BTC for BTCUSDT)Total open interest across venues, base asset units. On a bucketed row, the value at the END of the bucket (like a close); on `/v1/oi/change`, the latest measurement.
previous_oibase asset quantity (BTC for BTCUSDT)Total open interest at the start of the window (`window_start_at`).
oi_changebase asset quantity (BTC for BTCUSDT)oi - previous_oi, base asset units.
oi_change_pctpercent (58.5 = 58.5 %)Relative open interest change, percent.
window_start_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the ROLLING window the value covers (inclusive). Only rolling-window values carry it, and their `time` is always the END of the window; a bucket row has no window fields (its span is the envelope's `step`).
window_ssecondsLength of that rolling window, in whole seconds: it runs from `window_start_at` to `time` (excluded).
GET/v1/oi/change/historydata_type · oi_change_historyRéférence complète
Les 7 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket of `timeframe`, the value aggregating the bucket's minutes; the row covers `time` to `time` + the envelope's `step` (excluded).
oibase asset quantity (BTC for BTCUSDT)Total open interest across venues, base asset units. On a bucketed row, the value at the END of the bucket (like a close); on `/v1/oi/change`, the latest measurement.
previous_oibase asset quantity (BTC for BTCUSDT)Total open interest at the start of the window (`window_start_at`).
oi_changebase asset quantity (BTC for BTCUSDT)oi - previous_oi, base asset units.
oi_change_pctpercent (58.5 = 58.5 %)Relative open interest change, percent.
sample_countcountNumber of source points in the bucket (one-minute points with data). For a state (basis, open interest) the value is the LAST of them — the bucket's close —; for a flow it is their total.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.

La variation de l’intérêt ouvert : le capital qui entre ou qui sort. Le pourcentage est recalculé à partir des totaux agrégés, pour rester cohérent avec la somme.

ChampTypeDescription
oifloatIntérêt ouvert actuel, additionné sur les places (unités de l’actif de base).
previous_oifloatLe précédent.
oi_changefloatLa différence.
oi_change_pctfloat | nullLa variation en pourcentage.
timestringHorodatage du calcul.
window_start_atstringDébut de la fenêtre que couvre la valeur (inclus).
window_sintegerDurée de la fenêtre, en secondes : elle va de window_start_at à window_start_at + window_s.

#Funding

Trois lectures du même phénomène : le dernier taux appliqué, le prochain estimé, et le total cumulé sur les dernières vingt-quatre heures. Tous sont des composites pondérés par l’intérêt ouvert (la place qui porte le plus de positions pèse le plus) et ramenés à une base de huit heures avant pondération, car certaines paires règlent toutes les quatre heures ou toutes les heures.

GET/v1/funding/ratedata_type · funding_rateRéférence complète
Les 6 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the 8-hour funding period. The window is PAID by the settlement at its end: read `period_end_at` / `settled_at` for when it was settled.
period_end_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)End of the 8-hour funding period (exclusive): the instant of the settlement that pays it.
settled_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Instant of the last settlement counted in the window: `period_end_at` for a complete settled window; `null` for the window in progress (`?live=1`), which is not settled yet.
rate_pctpercent (58.5 = 58.5 %)Settled funding rate of the 8-hour period, in percent (0.01 = 0.01 % per 8 h), normalised to 8 h and open-interest weighted across venues.
apr_pctpercent (58.5 = 58.5 %)Annualised rate in percent.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.
GET/v1/funding/rate/historydata_type · funding_rate_historyRéférence complète
Les 6 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the 8-hour funding period. The window is PAID by the settlement at its end: read `period_end_at` / `settled_at` for when it was settled.
period_end_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)End of the 8-hour funding period (exclusive): the instant of the settlement that pays it.
settled_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Instant of the last settlement counted in the window: `period_end_at` for a complete settled window; `null` for the window in progress (`?live=1`), which is not settled yet.
rate_pctpercent (58.5 = 58.5 %)Settled funding rate of the 8-hour period, in percent (0.01 = 0.01 % per 8 h), normalised to 8 h and open-interest weighted across venues.
apr_pctpercent (58.5 = 58.5 %)Annualised rate in percent.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.
ChampTypeDescription
timestringDébut de la fenêtre de 8 h, alignée sur 00:00, 08:00 et 16:00 UTC.
rate_pctfloatLe taux composite de la fenêtre, en pourcentage (équivalent 8 h).
apr_pctfloatLe taux annualisé, en pourcentage : apr_pct = rate_pct × 1095, soit 1095 règlements de 8 h par an. 8.98 signifie 8,98 % par an. Sur la dernière valeur et sur chaque ligne d’historique.
GET/v1/funding/nextdata_type · funding_nextRéférence complète
Les 4 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the next funding settlement the forecast is for.
estimated_rate_pctpercent (58.5 = 58.5 %)Venue forecast of the NEXT funding settlement, in percent per 8 h (0.01 = 0.01 %), normalised to 8 h, OI-weighted.
apr_pctpercent (58.5 = 58.5 %)Annualised rate in percent.
is_past`true` if the forecast settlement instant is already past (the next forecast is not published yet).
ChampTypeDescription
timestringInstant du prochain règlement que la prévision concerne.
estimated_rate_pctfloatLe taux estimé, en pourcentage (équivalent 8 h).
is_pastbooleanVrai si ce règlement est déjà passé.
apr_pctfloatAnnualisé, en pourcentage.
GET/v1/funding/cumulativedata_type · funding_cumulativeRéférence complète
Les 6 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value over a rolling window: the END of the 24-hour window, i.e. the settlement that closes the last 8-hour period summed. The window starts at `window_start_at` and lasts `window_s`.
window_start_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the 24-hour window summed (inclusive).
window_ssecondsLength of the window, in seconds (86400 = 24 hours).
rolling_24h_rate_pctpercent (58.5 = 58.5 %)Sum of the last three settled 8-hour funding rates — a ROLLING 24-hour window — in percent. A row is published every 8 hours and covers 24: consecutive rows OVERLAP by 16 hours, so never add them up (sum `rate_pct` of `/v1/funding/rate/history` instead).
apr_pctpercent (58.5 = 58.5 %)Annualised rate in percent.
sample_countcountNumber of 8-hour funding windows summed.
GET/v1/funding/cumulative/historydata_type · funding_cumulative_historyRéférence complète
Les 7 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)END of each 24-hour window (the settlement that closes its last 8-hour period). The window starts at `window_start_at` and lasts `window_s`.
window_start_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the 24-hour window summed (inclusive).
window_ssecondsLength of the window, in seconds (86400 = 24 hours).
rolling_24h_rate_pctpercent (58.5 = 58.5 %)Sum of the last three settled 8-hour funding rates — a ROLLING 24-hour window — in percent. A row is published every 8 hours and covers 24: consecutive rows OVERLAP by 16 hours, so never add them up (sum `rate_pct` of `/v1/funding/rate/history` instead).
apr_pctpercent (58.5 = 58.5 %)Annualised rate in percent.
sample_countcountNumber of 8-hour funding windows summed.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.
curl
curl -H "X-API-KEY: $BYTNODE_API_KEY" \
  "https://api.bytnode.com/v1/funding/cumulative?symbol=BTCUSDT"
ChampTypeDescription
timestringFin de la fenêtre de 24 h : le règlement qui clôt la dernière fenêtre de 8 h sommée.
window_start_atstringDébut de la fenêtre de 24 h sommée.
window_sintegerDurée de la fenêtre, en secondes (86400).
rolling_24h_rate_pctfloatSomme des trois derniers taux 8 h réglés — une fenêtre GLISSANTE de 24 heures — en pourcentage. Une ligne toutes les 8 h, chacune couvrant 24 h : les lignes se chevauchent, ne les additionnez jamais (pour un total, sommez rate_pct de /v1/funding/rate/history).
apr_pctfloatAnnualisé en pourcentage, sur le nombre de fenêtres réellement additionnées, ce qui reste exact même quand l’une manque.
sample_countintegerNombre de fenêtres de 8 h réellement additionnées, trois au plus.

#Liquidations

GET/v1/liquidations/eventsdata_type · liquidations_eventsRéférence complète
Les 6 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Instant of the liquidation, as stated by the venue (milliseconds).
side`long` (a long position was liquidated: forced sell) or `short` (forced buy).
pricequote currency (USDT for BTCUSDT)Price.
quantitybase asset quantity (BTC for BTCUSDT)Quantity traded or liquidated, in base asset units.
value_usdUSDNotional value: price × quantity, in the pair's quote currency (USDT for BTCUSDT), taken as USD.
venueVenue where the liquidation happened (liquidations name their venues).

Les liquidations individuelles, toutes places confondues. La couverture est ici structurellement plus faible que sur les transactions : toutes les places ne publient pas de flux public de liquidations.

ParamètreTypeDéfautDescription
symbolstringobligatoireL’actif.
limitinteger100Nombre d’événements, de 1 à 10 000.
min_usdfloat—Filtre facultatif sur la valeur en dollars.
ChampTypeDescription
timestringInstant de la liquidation.
sidestringlong ou short : le côté de la position liquidée, pas celui de l’ordre. La convention est normalisée entre les places.
pricefloatPrix de liquidation.
quantityfloatTaille en unités de l’actif de base.
value_usdfloatValeur en dollars.
GET/v1/liquidations/cumulativedata_type · liquidations_cumulativeRéférence complète
Les 7 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value over a rolling window: the END of the 5-minute window, aligned on the minute.
long_usdUSDLong positions liquidated, USD.
short_usdUSDShort positions liquidated, USD.
total_usdUSDTotal, USD.
venuesVenues whose liquidations are summed in the row, by name (empty when none in the row). Rows before the first individual liquidation are imported totals: their list is the venues those totals cover.
window_start_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the ROLLING window the value covers (inclusive). Only rolling-window values carry it, and their `time` is always the END of the window; a bucket row has no window fields (its span is the envelope's `step`).
window_ssecondsLength of that rolling window, in whole seconds: it runs from `window_start_at` to `time` (excluded).
GET/v1/liquidations/cumulative/historydata_type · liquidations_cumulative_historyRéférence complète
Les 7 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket. The row covers the WHOLE bucket, from `time` to `time` + the envelope's `step` (excluded).
long_usdUSDLong positions liquidated, USD.
short_usdUSDShort positions liquidated, USD.
total_usdUSDTotal, USD.
sample_countcountNumber of source points in the bucket (one-minute points with data). For a state (basis, open interest) the value is the LAST of them — the bucket's close —; for a flow it is their total.
venuesVenues whose liquidations are summed in the row, by name (empty when none in the row). Rows before the first individual liquidation are imported totals: their list is the venues those totals cover.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.
ChampTypeDescription
timestringHorodatage du calcul.
long_usdfloatDollars de positions acheteuses liquidées.
short_usdfloatDollars de positions vendeuses liquidées.
total_usdfloatLe total.
window_start_atstringDébut de la fenêtre que couvre la valeur (inclus).
window_sintegerDurée de la fenêtre, en secondes : elle va de window_start_at à window_start_at + window_s.
GET/v1/liquidations/big-small-ratiodata_type · liquidations_big_small_ratioRéférence complète
Les 9 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the latest closed bucket of `timeframe` that had at least one liquidation — the first row of `/v1/liquidations/big-small-ratio/history` for the same `timeframe`.
big_countcountLiquidations of 100,000 USD or more.
big_usdUSDNotional of liquidations of 100,000 USD or more.
small_countcountLiquidations below 100,000 USD.
small_usdUSDNotional of liquidations below 100,000 USD.
big_small_ratiobig / smallbig_usd / small_usd: the notional of liquidations of 100,000 USD or more DIVIDED BY that of the smaller ones (8.2 = the big ones weigh 8.2 times the small ones: a quotient, not a share). `null` when small_usd is 0.
venuesVenues whose liquidations are summed in the row, by name (empty when none in the row). Rows before the first individual liquidation are imported totals: their list is the venues those totals cover.
sample_countcountNumber of source points in the bucket (one-minute points with data). For a state (basis, open interest) the value is the LAST of them — the bucket's close —; for a flow it is their total.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.
GET/v1/liquidations/big-small-ratio/historydata_type · liquidations_big_small_ratio_historyRéférence complète
Les 9 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket of `timeframe`, the value aggregating the bucket's minutes; the row covers `time` to `time` + the envelope's `step` (excluded).
big_countcountLiquidations of 100,000 USD or more.
big_usdUSDNotional of liquidations of 100,000 USD or more.
small_countcountLiquidations below 100,000 USD.
small_usdUSDNotional of liquidations below 100,000 USD.
big_small_ratiobig / smallbig_usd / small_usd: the notional of liquidations of 100,000 USD or more DIVIDED BY that of the smaller ones (8.2 = the big ones weigh 8.2 times the small ones: a quotient, not a share). `null` when small_usd is 0.
venuesVenues whose liquidations are summed in the row, by name (empty when none in the row). Rows before the first individual liquidation are imported totals: their list is the venues those totals cover.
sample_countcountMinutes of the bucket that had at least one liquidation.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.

Le rapport entre les grosses liquidations (au moins 100 000 $) et les petites. Il distingue une purge de gros comptes d’une cascade de petits porteurs.

ChampTypeDescription
big_count / big_usdinteger / floatLiquidations d’au moins 100 000 $.
small_count / small_usdinteger / floatCelles en dessous.
big_small_ratiofloat | nullbig_usd divisé par small_usd. null si le dénominateur est nul.
timestringDébut du bucket (le dernier bucket clos de timeframe sur /v1/liquidations/big-small-ratio, qui exige timeframe comme /v1/cvd).
sample_countintegerMinutes du bucket qui ont eu au moins une liquidation.
is_closedbooleantrue : le bucket est clos et ses valeurs sont définitives.

#Base

GET/v1/basisdata_type · basisRéférence complète
Les 5 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the venue prices used (each venue's last futures and spot trades, at most 2 minutes old).
basis_valuequote currency (USDT for BTCUSDT)Futures price - spot price, in the quote currency (USDT for BTCUSDT), like the two prices.
basis_pctpercent (58.5 = 58.5 %)(futures - spot) / spot, in percent. Positive = contango.
futures_pricequote currency (USDT for BTCUSDT)Perpetual futures price, open-interest weighted across venues.
spot_pricequote currency (USDT for BTCUSDT)Spot price across venues at the instant of the row, paired with the futures price of the same instant. Not the latest trade price: that is the `price` of `/v1/price-change`, i.e. the close of `/v1/klines?live=1`.
GET/v1/basis/historydata_type · basis_historyRéférence complète
Les 7 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket of `timeframe`; the value is the LAST one of the bucket's minutes.
basis_valuequote currency (USDT for BTCUSDT)Futures price - spot price, in the quote currency (USDT for BTCUSDT), like the two prices.
basis_pctpercent (58.5 = 58.5 %)(futures - spot) / spot, in percent. Positive = contango.
futures_pricequote currency (USDT for BTCUSDT)Perpetual futures price, open-interest weighted across venues.
spot_pricequote currency (USDT for BTCUSDT)Spot price across venues at the instant of the row, paired with the futures price of the same instant. Not the latest trade price: that is the `price` of `/v1/price-change`, i.e. the close of `/v1/klines?live=1`.
sample_countcountNumber of source points in the bucket (one-minute points with data). For a state (basis, open interest) the value is the LAST of them — the bucket's close —; for a flow it is their total.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.

L’écart entre le prix à terme et le prix spot, une moyenne pondérée par l’intérêt ouvert sur les places qui portent les deux marchés. Les deux prix sont pondérés de la même façon, ce qui garantit que basis_value = futures_price − spot_price reste vrai.

ChampTypeDescription
basis_valuefloatL’écart, dans la devise de cotation (USDT pour BTCUSDT).
basis_pctfloatL’écart en pourcentage : 0.059 signifie 0,059 %.
futures_pricefloatPrix futures composite.
spot_pricefloatPrix spot composite.
timestringHorodatage du calcul.

Unité de temps et fenêtre de l’historique

timeframe est obligatoire : l’historique sert une fenêtre close par ligne (timeframe=1m pour une ligne par minute, alignée sur la minute). Sans since_ms ni until_ms, il sert les limit fenêtres closes les plus récentes ; avec une fenêtre explicite, c’est elle qui s’applique.

#Écarts entre places

GET/v1/spread/interexchangedata_type · spread_interexchangeRéférence complète
Les 13 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket the row covers: a 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.
ref_pricequote currency (USDT for BTCUSDT)Reference price: the volume-weighted average price across venues over the bucket. Not the latest trade price: that is the `price` of `/v1/price-change`, i.e. the close of `/v1/klines?live=1`.
weightingHow venues are combined: `oi` (open-interest weighted) or `volume` (volume weighted).
max_spread_bpsbasis points (1 bp = 0.01 %)Gap between the highest and the lowest venue price, relative to ref_price.
high_venueVenue with the highest price over the bucket.
high_pricequote currency (USDT for BTCUSDT)Its volume-weighted price over the bucket.
low_venueVenue with the lowest price over the bucket.
low_pricequote currency (USDT for BTCUSDT)Its volume-weighted price over the bucket.
venuesPer-venue prices and premiums (`[{venue, price, premium_bps}]`).
venues.venueVenue name (with the liquidations, the only data that names its venues).
venues.pricequote currency (USDT for BTCUSDT)Volume-weighted price of the venue over the bucket.
venues.premium_bpsbasis points (1 bp = 0.01 %)Venue price premium (positive) or discount (negative) versus ref_price.
GET/v1/spread/interexchange/historydata_type · spread_interexchange_historyRéférence complète
Les 13 champs de cette route (d’après le contrat)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket the row covers: a 1h bucket at 14:00 covers 14:00:00 to 14:59:59.999.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.
ref_pricequote currency (USDT for BTCUSDT)Reference price: the volume-weighted average price across venues over the bucket. Not the latest trade price: that is the `price` of `/v1/price-change`, i.e. the close of `/v1/klines?live=1`.
weightingHow venues are combined: `oi` (open-interest weighted) or `volume` (volume weighted).
max_spread_bpsbasis points (1 bp = 0.01 %)Gap between the highest and the lowest venue price, relative to ref_price.
high_venueVenue with the highest price over the bucket.
high_pricequote currency (USDT for BTCUSDT)Its volume-weighted price over the bucket.
low_venueVenue with the lowest price over the bucket.
low_pricequote currency (USDT for BTCUSDT)Its volume-weighted price over the bucket.
venuesPer-venue prices and premiums (`[{venue, price, premium_bps}]`).
venues.venueVenue name (with the liquidations, the only data that names its venues).
venues.pricequote currency (USDT for BTCUSDT)Volume-weighted price of the venue over the bucket.
venues.premium_bpsbasis points (1 bp = 0.01 %)Venue price premium (positive) or discount (negative) versus ref_price.

La seule surface de BytNode qui nomme les places de marché, un écart n’ayant pas de sens sans elles. Le modèle est une prime par place : un prix de référence multi-places, puis l’écart de chaque place à cette référence. Toute paire se déduit côté client, par la différence de deux primes.

ParamètreTypeDéfautDescription
symbolstringobligatoireL’actif.
timeframestringobligatoire1m, 5m, 15m, 30m, 1h, 4h, 1d.
livebooleanfalseExpose la fenêtre en cours.
limitinteger100Sur l’historique, de 1 à 1000.
since_ms / until_msinteger—Sur l’historique : fenêtre datée, en millisecondes, appliquée avant limit.
Réponse
{
  "status": "ok",
  "server_time": "2026-10-14T09:06:22.870Z",
  "data_type": "spread_interexchange",
  "symbol": "BTCUSDT",
  "timeframe": "1h",
  "market": "futures",
  "data": {
    "time": "2026-10-14T08:00:00.000Z",
    "is_closed": true,
    "ref_price": 83706.7967743,
    "weighting": "volume",
    "max_spread_bps": 18.8831076757,
    "high_venue": "venue_a",
    "high_price": 83720.69106,
    "low_venue": "venue_b",
    "low_price": 83562.6266143,
    "venues": [
      { "venue": "venue_a", "price": 83720.69106, "premium_bps": 1.65987545135 },
      { "venue": "venue_c", "price": 83715.3204619, "premium_bps": 1.01827903431 }
    ]
  }
}
ChampTypeDescription
ref_pricefloatPrix de référence multi-places.
weightingstringoi (les places sont pondérées par leur open interest) ou volume ; le prix de référence est la moyenne pondérée des prix des places.
max_spread_bpsfloatL’amplitude entre la place la plus haute et la plus basse, en points de base.
high_venue / low_venuestringLa place au prix le plus haut (le plus bas) sur le bucket, et ce prix.
high_price / low_pricefloatLa place au prix le plus haut (le plus bas) sur le bucket, et ce prix.
venuesarrayUne entrée par place : venue, price, premium_bps. Triées par prime décroissante.
is_closedbooleanFaux uniquement avec live=1.