Datos de mercado

API de derivados cripto

Los datos de derivados cripto en una sola API: open interest, tasas de funding, liquidaciones, base y diferenciales entre mercados. BytNode agrega los mercados de perpetuos y futuros que cubre y normaliza sus formatos: comparas los mercados sin conectar cada exchange ni reprocesar sus datos.

El posicionamiento en futuros: cuánto capital está comprometido, a qué coste, en qué dirección y a qué precio frente al spot. Todas estas métricas son compuestos, y se indica la ponderación usada en cada una.

#Datos de derivados cripto para agentes de IA y LLM

«¿El funding de BTC es positivo?», «¿Cuánto open interest ha sumado ETH hoy?», «¿Qué lado se liquidó en la última hora?»: un agente de IA conectado por MCP responde con esta familia, para un par o hasta diez comparados, mediante la herramienta get_pair_data.

MCP tools/call
Funding, open interest y liquidaciones de BTC y ETH en una llamada MCP: cada clave vuelve como par/campo.
{
  "name": "get_pair_data",
  "arguments": {
    "symbol": ["BTCUSDT", "ETHUSDT"],
    "fields": ["funding_next", "oi", "liquidations_cumulative"],
    "timeframe": "1h"
  }
}
  • Para el LLM: un rate_pct de funding es un porcentaje para una ventana de ocho horas, no una tasa anual; apr_pct lo anualiza. Citarlo como rendimiento anual es el error clásico.
  • Para desarrolladores: en tu propio agente de IA, /v1/funding/rate y /v1/oi son dos herramientas sencillas para el tool calling; el servidor MCP ya las expone, con los mismos nombres y unidades.
  • Dónde funciona: Claude, ChatGPT, Cursor y cualquier cliente MCP, incluidos los frameworks de agentes compatibles con MCP, como LangChain o n8n.

Conecta tu agente de IA con la guía del servidor MCP, o enséñale BytNode con los Agent Skills de código abierto.

#Interés abierto

GET/v1/oi/historydata_type · oi_historyReferencia completa
Los 4 campos de esta ruta (según el contrato)
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.

El interés abierto total, sumado en todos los mercados, una fila por intervalo cerrado de timeframe (obligatorio, 1m a 1d): para cada mercado su último valor en el intervalo, como un cierre. El valor actual es /v1/oi.

ParámetroTipoPor defectoDescripción
symbolstringobligatorioEl activo.
timeframestringobligatorioTamaño del intervalo: 1m, 5m, 15m, 30m, 1h, 4h o 1d.
limitinteger100Número de intervalos de timeframe, de 1 a 1000.
CampoTipoDescripción
timestringInicio del intervalo.
oifloatInterés abierto sumado entre mercados, en unidades del activo base, al FINAL del bucket (como un cierre). La misma magnitud, con el mismo nombre, que `oi` en /v1/oi/change.
GET/v1/oi/changedata_type · oi_changeReferencia completa
Los 7 campos de esta ruta (según el contrato)
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_historyReferencia completa
Los 7 campos de esta ruta (según el contrato)
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 variación del interés abierto: el capital que entra o sale. El porcentaje se recalcula a partir de los totales agregados, para ser coherente con la suma.

CampoTipoDescripción
oifloatInterés abierto actual, sumado entre mercados (unidades del activo base).
previous_oifloatEl anterior.
oi_changefloatLa diferencia.
oi_change_pctfloat | nullLa variación en porcentaje.
timestringMarca de tiempo del cálculo.
window_start_atstringInicio de la ventana que cubre el valor (incluido).
window_sintegerDuración de la ventana, en segundos: va de window_start_at a window_start_at + window_s.

#Funding

Tres lecturas del mismo fenómeno: la última tasa aplicada, la próxima estimada y el total acumulado en las últimas veinticuatro horas. Todas son compuestos ponderados por el interés abierto (el mercado que lleva más posiciones pesa más) y normalizados a una base de ocho horas antes de ponderar, porque algunos pares liquidan cada cuatro horas o cada hora.

GET/v1/funding/ratedata_type · funding_rateReferencia completa
Los 6 campos de esta ruta (según el contrato)
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_historyReferencia completa
Los 6 campos de esta ruta (según el contrato)
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.
CampoTipoDescripción
timestringInicio de la ventana de 8 h, alineada en 00:00, 08:00 y 16:00 UTC.
rate_pctfloatLa tasa compuesta de la ventana, en porcentaje (equivalente de 8 h).
apr_pctfloatLa tasa anualizada, en porcentaje: apr_pct = rate_pct × 1095, es decir, 1095 liquidaciones de 8 h al año. 8.98 significa 8,98 % anual. En el último valor y en cada fila del historial.
GET/v1/funding/nextdata_type · funding_nextReferencia completa
Los 4 campos de esta ruta (según el contrato)
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).
CampoTipoDescripción
timestringInstante de la próxima liquidación a la que corresponde la previsión.
estimated_rate_pctfloatLa tasa estimada, en porcentaje (equivalente de 8 h).
is_pastbooleanVerdadero si esa liquidación ya ha pasado.
apr_pctfloatAnualizada, en porcentaje.
GET/v1/funding/cumulativedata_type · funding_cumulativeReferencia completa
Los 6 campos de esta ruta (según el contrato)
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_historyReferencia completa
Los 7 campos de esta ruta (según el contrato)
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"
CampoTipoDescripción
timestringFin de la ventana de 24 h: la liquidación que cierra la última ventana de 8 h sumada.
window_start_atstringInicio de la ventana de 24 h sumada.
window_sintegerDuración de la ventana, en segundos (86400).
rolling_24h_rate_pctfloatSuma de las tres últimas tasas de 8 h liquidadas — una ventana MÓVIL de 24 horas — en porcentaje. Una fila cada 8 h, cada una cubre 24 h: las filas se solapan, no las sumes nunca (para un total, suma rate_pct de /v1/funding/rate/history).
apr_pctfloatAnualizado en porcentaje, sobre el número de ventanas realmente sumadas, lo que sigue siendo exacto aunque falte una.
sample_countintegerNúmero de ventanas de 8 h realmente sumadas, tres como máximo.

#Liquidaciones

GET/v1/liquidations/eventsdata_type · liquidations_eventsReferencia completa
Los 6 campos de esta ruta (según el contrato)
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).

Las liquidaciones individuales, de todos los mercados. Aquí la cobertura es estructuralmente menor que en las operaciones: no todos los mercados publican un flujo público de liquidaciones.

ParámetroTipoPor defectoDescripción
symbolstringobligatorioEl activo.
limitinteger100Número de eventos, de 1 a 10 000.
min_usdfloat—Filtro opcional sobre el valor en dólares.
CampoTipoDescripción
timestringInstante de la liquidación.
sidestringlong o short: el lado de la posición liquidada, no el de la orden. La convención está normalizada entre mercados.
pricefloatPrecio de liquidación.
quantityfloatTamaño en unidades del activo base.
value_usdfloatValor en dólares.
GET/v1/liquidations/cumulativedata_type · liquidations_cumulativeReferencia completa
Los 7 campos de esta ruta (según el contrato)
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_historyReferencia completa
Los 7 campos de esta ruta (según el contrato)
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.
CampoTipoDescripción
timestringMarca de tiempo del cálculo.
long_usdfloatDólares de posiciones largas liquidadas.
short_usdfloatDólares de posiciones cortas liquidadas.
total_usdfloatEl total.
window_start_atstringInicio de la ventana que cubre el valor (incluido).
window_sintegerDuración de la ventana, en segundos: va de window_start_at a window_start_at + window_s.
GET/v1/liquidations/big-small-ratiodata_type · liquidations_big_small_ratioReferencia completa
Los 9 campos de esta ruta (según el contrato)
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_historyReferencia completa
Los 9 campos de esta ruta (según el contrato)
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.

La relación entre las grandes liquidaciones (al menos 100 000 $) y las pequeñas. Distingue una purga de grandes cuentas de una cascada de pequeños tenedores.

CampoTipoDescripción
big_count / big_usdinteger / floatLiquidaciones de al menos 100 000 $.
small_count / small_usdinteger / floatLas que están por debajo.
big_small_ratiofloat | nullbig_usd dividido por small_usd. null si el denominador es cero.
timestringInicio del bucket (el último bucket cerrado de timeframe en /v1/liquidations/big-small-ratio, que exige timeframe como /v1/cvd).
sample_countintegerMinutos del bucket con al menos una liquidación.
is_closedbooleantrue: el bucket está cerrado y sus valores son definitivos.

#Base

GET/v1/basisdata_type · basisReferencia completa
Los 5 campos de esta ruta (según el contrato)
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_historyReferencia completa
Los 7 campos de esta ruta (según el contrato)
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.

La diferencia entre el precio de futuros y el precio spot, una media ponderada por el interés abierto sobre los mercados que tienen ambos mercados. Los dos precios se ponderan igual, lo que garantiza que basis_value = futures_price − spot_price siga siendo cierto.

CampoTipoDescripción
basis_valuefloatLa diferencia, en la moneda de cotización (USDT para BTCUSDT).
basis_pctfloatLa diferencia en porcentaje: 0.059 significa 0,059 %.
futures_pricefloatPrecio de futuros compuesto.
spot_pricefloatPrecio spot compuesto.
timestringMarca de tiempo del cálculo.

Temporalidad y ventana del historial

timeframe es obligatorio: el historial sirve una ventana cerrada por fila (timeframe=1m para una fila por minuto, alineada en el minuto). Sin since_ms ni until_ms, sirve las limit ventanas cerradas más recientes; con una ventana explícita, se aplica esa ventana.

#Diferenciales entre mercados

GET/v1/spread/interexchangedata_type · spread_interexchangeReferencia completa
Los 13 campos de esta ruta (según el contrato)
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_historyReferencia completa
Los 13 campos de esta ruta (según el contrato)
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 única superficie de BytNode que nombra los mercados, porque un diferencial no tiene sentido sin ellos. El modelo es una prima por mercado: un precio de referencia multimercado y después la diferencia de cada mercado con esa referencia. Cualquier par se deduce en el cliente, por la diferencia de dos primas.

ParámetroTipoPor defectoDescripción
symbolstringobligatorioEl activo.
timeframestringobligatorio1m, 5m, 15m, 30m, 1h, 4h, 1d.
livebooleanfalseExpone la ventana en curso.
limitinteger100En el historial, de 1 a 1000.
since_ms / until_msinteger—En el historial: ventana fechada, en milisegundos, aplicada antes de limit.
Respuesta
{
  "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 }
    ]
  }
}
CampoTipoDescripción
ref_pricefloatPrecio de referencia multimercado.
weightingstringoi (los mercados se ponderan por su open interest) o volume; el precio de referencia es la media ponderada de los precios de los mercados.
max_spread_bpsfloatLa amplitud entre el mercado más alto y el más bajo, en puntos básicos.
high_venue / low_venuestringEl mercado con el precio más alto (más bajo) en el bucket, y ese precio.
high_price / low_pricefloatEl mercado con el precio más alto (más bajo) en el bucket, y ese precio.
venuesarrayUna entrada por mercado: venue, price, premium_bps. Ordenadas por prima decreciente.
is_closedbooleanFalso solo con live=1.