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.
{
"name": "get_pair_data",
"arguments": {
"symbol": ["BTCUSDT", "ETHUSDT"],
"fields": ["funding_next", "oi", "liquidations_cumulative"],
"timeframe": "1h"
}
}- Para el LLM: un
rate_pctde funding es un porcentaje para una ventana de ocho horas, no una tasa anual;apr_pctlo anualiza. Citarlo como rendimiento anual es el error clásico. - Para desarrolladores: en tu propio agente de IA,
/v1/funding/ratey/v1/oison 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
Los 4 campos de esta ruta (según el contrato)
time | ISO 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. |
oi | base 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_count | count | Number 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ámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
symbol | string | obligatorio | El activo. |
timeframe | string | obligatorio | Tamaño del intervalo: 1m, 5m, 15m, 30m, 1h, 4h o 1d. |
limit | integer | 100 | Número de intervalos de timeframe, de 1 a 1000. |
| Campo | Tipo | Descripción |
|---|---|---|
time | string | Inicio del intervalo. |
oi | float | Interé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. |
Los 7 campos de esta ruta (según el contrato)
time | ISO 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. |
oi | base 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_oi | base asset quantity (BTC for BTCUSDT) | Total open interest at the start of the window (`window_start_at`). |
oi_change | base asset quantity (BTC for BTCUSDT) | oi - previous_oi, base asset units. |
oi_change_pct | percent (58.5 = 58.5 %) | Relative open interest change, percent. |
window_start_at | ISO 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_s | seconds | Length of that rolling window, in whole seconds: it runs from `window_start_at` to `time` (excluded). |
Los 7 campos de esta ruta (según el contrato)
time | ISO 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). |
oi | base 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_oi | base asset quantity (BTC for BTCUSDT) | Total open interest at the start of the window (`window_start_at`). |
oi_change | base asset quantity (BTC for BTCUSDT) | oi - previous_oi, base asset units. |
oi_change_pct | percent (58.5 = 58.5 %) | Relative open interest change, percent. |
sample_count | count | Number 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.
| Campo | Tipo | Descripción |
|---|---|---|
oi | float | Interés abierto actual, sumado entre mercados (unidades del activo base). |
previous_oi | float | El anterior. |
oi_change | float | La diferencia. |
oi_change_pct | float | null | La variación en porcentaje. |
time | string | Marca de tiempo del cálculo. |
window_start_at | string | Inicio de la ventana que cubre el valor (incluido). |
window_s | integer | Duració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.
Los 6 campos de esta ruta (según el contrato)
time | ISO 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_at | ISO 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_at | ISO 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_pct | percent (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_pct | percent (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. |
Los 6 campos de esta ruta (según el contrato)
time | ISO 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_at | ISO 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_at | ISO 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_pct | percent (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_pct | percent (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. |
| Campo | Tipo | Descripción |
|---|---|---|
time | string | Inicio de la ventana de 8 h, alineada en 00:00, 08:00 y 16:00 UTC. |
rate_pct | float | La tasa compuesta de la ventana, en porcentaje (equivalente de 8 h). |
apr_pct | float | La 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. |
Los 4 campos de esta ruta (según el contrato)
time | ISO 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_pct | percent (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_pct | percent (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). |
| Campo | Tipo | Descripción |
|---|---|---|
time | string | Instante de la próxima liquidación a la que corresponde la previsión. |
estimated_rate_pct | float | La tasa estimada, en porcentaje (equivalente de 8 h). |
is_past | boolean | Verdadero si esa liquidación ya ha pasado. |
apr_pct | float | Anualizada, en porcentaje. |
Los 6 campos de esta ruta (según el contrato)
time | ISO 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_at | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Start of the 24-hour window summed (inclusive). |
window_s | seconds | Length of the window, in seconds (86400 = 24 hours). |
rolling_24h_rate_pct | percent (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_pct | percent (58.5 = 58.5 %) | Annualised rate in percent. |
sample_count | count | Number of 8-hour funding windows summed. |
Los 7 campos de esta ruta (según el contrato)
time | ISO 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_at | ISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z) | Start of the 24-hour window summed (inclusive). |
window_s | seconds | Length of the window, in seconds (86400 = 24 hours). |
rolling_24h_rate_pct | percent (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_pct | percent (58.5 = 58.5 %) | Annualised rate in percent. |
sample_count | count | Number 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 -H "X-API-KEY: $BYTNODE_API_KEY" \
"https://api.bytnode.com/v1/funding/cumulative?symbol=BTCUSDT"| Campo | Tipo | Descripción |
|---|---|---|
time | string | Fin de la ventana de 24 h: la liquidación que cierra la última ventana de 8 h sumada. |
window_start_at | string | Inicio de la ventana de 24 h sumada. |
window_s | integer | Duración de la ventana, en segundos (86400). |
rolling_24h_rate_pct | float | Suma 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_pct | float | Anualizado en porcentaje, sobre el número de ventanas realmente sumadas, lo que sigue siendo exacto aunque falte una. |
sample_count | integer | Número de ventanas de 8 h realmente sumadas, tres como máximo. |
#Liquidaciones
Los 6 campos de esta ruta (según el contrato)
time | ISO 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). | |
price | quote currency (USDT for BTCUSDT) | Price. |
quantity | base asset quantity (BTC for BTCUSDT) | Quantity traded or liquidated, in base asset units. |
value_usd | USD | Notional value: price × quantity, in the pair's quote currency (USDT for BTCUSDT), taken as USD. |
venue | Venue 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ámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
symbol | string | obligatorio | El activo. |
limit | integer | 100 | Número de eventos, de 1 a 10 000. |
min_usd | float | — | Filtro opcional sobre el valor en dólares. |
| Campo | Tipo | Descripción |
|---|---|---|
time | string | Instante de la liquidación. |
side | string | long o short: el lado de la posición liquidada, no el de la orden. La convención está normalizada entre mercados. |
price | float | Precio de liquidación. |
quantity | float | Tamaño en unidades del activo base. |
value_usd | float | Valor en dólares. |
Los 7 campos de esta ruta (según el contrato)
time | ISO 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_usd | USD | Long positions liquidated, USD. |
short_usd | USD | Short positions liquidated, USD. |
total_usd | USD | Total, USD. |
venues | Venues 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_at | ISO 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_s | seconds | Length of that rolling window, in whole seconds: it runs from `window_start_at` to `time` (excluded). |
Los 7 campos de esta ruta (según el contrato)
time | ISO 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_usd | USD | Long positions liquidated, USD. |
short_usd | USD | Short positions liquidated, USD. |
total_usd | USD | Total, USD. |
sample_count | count | Number 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. |
venues | Venues 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. |
| Campo | Tipo | Descripción |
|---|---|---|
time | string | Marca de tiempo del cálculo. |
long_usd | float | Dólares de posiciones largas liquidadas. |
short_usd | float | Dólares de posiciones cortas liquidadas. |
total_usd | float | El total. |
window_start_at | string | Inicio de la ventana que cubre el valor (incluido). |
window_s | integer | Duración de la ventana, en segundos: va de window_start_at a window_start_at + window_s. |
Los 9 campos de esta ruta (según el contrato)
time | ISO 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_count | count | Liquidations of 100,000 USD or more. |
big_usd | USD | Notional of liquidations of 100,000 USD or more. |
small_count | count | Liquidations below 100,000 USD. |
small_usd | USD | Notional of liquidations below 100,000 USD. |
big_small_ratio | big / small | big_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. |
venues | Venues 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_count | count | Number 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. |
Los 9 campos de esta ruta (según el contrato)
time | ISO 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_count | count | Liquidations of 100,000 USD or more. |
big_usd | USD | Notional of liquidations of 100,000 USD or more. |
small_count | count | Liquidations below 100,000 USD. |
small_usd | USD | Notional of liquidations below 100,000 USD. |
big_small_ratio | big / small | big_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. |
venues | Venues 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_count | count | Minutes 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.
| Campo | Tipo | Descripción |
|---|---|---|
big_count / big_usd | integer / float | Liquidaciones de al menos 100 000 $. |
small_count / small_usd | integer / float | Las que están por debajo. |
big_small_ratio | float | null | big_usd dividido por small_usd. null si el denominador es cero. |
time | string | Inicio del bucket (el último bucket cerrado de timeframe en /v1/liquidations/big-small-ratio, que exige timeframe como /v1/cvd). |
sample_count | integer | Minutos del bucket con al menos una liquidación. |
is_closed | boolean | true: el bucket está cerrado y sus valores son definitivos. |
#Base
Los 5 campos de esta ruta (según el contrato)
time | ISO 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_value | quote currency (USDT for BTCUSDT) | Futures price - spot price, in the quote currency (USDT for BTCUSDT), like the two prices. |
basis_pct | percent (58.5 = 58.5 %) | (futures - spot) / spot, in percent. Positive = contango. |
futures_price | quote currency (USDT for BTCUSDT) | Perpetual futures price, open-interest weighted across venues. |
spot_price | quote 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`. |
Los 7 campos de esta ruta (según el contrato)
time | ISO 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_value | quote currency (USDT for BTCUSDT) | Futures price - spot price, in the quote currency (USDT for BTCUSDT), like the two prices. |
basis_pct | percent (58.5 = 58.5 %) | (futures - spot) / spot, in percent. Positive = contango. |
futures_price | quote currency (USDT for BTCUSDT) | Perpetual futures price, open-interest weighted across venues. |
spot_price | quote 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_count | count | Number 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.
| Campo | Tipo | Descripción |
|---|---|---|
basis_value | float | La diferencia, en la moneda de cotización (USDT para BTCUSDT). |
basis_pct | float | La diferencia en porcentaje: 0.059 significa 0,059 %. |
futures_price | float | Precio de futuros compuesto. |
spot_price | float | Precio spot compuesto. |
time | string | Marca 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
Los 13 campos de esta ruta (según el contrato)
time | ISO 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_price | quote 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`. |
weighting | How venues are combined: `oi` (open-interest weighted) or `volume` (volume weighted). | |
max_spread_bps | basis points (1 bp = 0.01 %) | Gap between the highest and the lowest venue price, relative to ref_price. |
high_venue | Venue with the highest price over the bucket. | |
high_price | quote currency (USDT for BTCUSDT) | Its volume-weighted price over the bucket. |
low_venue | Venue with the lowest price over the bucket. | |
low_price | quote currency (USDT for BTCUSDT) | Its volume-weighted price over the bucket. |
venues | Per-venue prices and premiums (`[{venue, price, premium_bps}]`). | |
venues.venue | Venue name (with the liquidations, the only data that names its venues). | |
venues.price | quote currency (USDT for BTCUSDT) | Volume-weighted price of the venue over the bucket. |
venues.premium_bps | basis points (1 bp = 0.01 %) | Venue price premium (positive) or discount (negative) versus ref_price. |
Los 13 campos de esta ruta (según el contrato)
time | ISO 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_price | quote 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`. |
weighting | How venues are combined: `oi` (open-interest weighted) or `volume` (volume weighted). | |
max_spread_bps | basis points (1 bp = 0.01 %) | Gap between the highest and the lowest venue price, relative to ref_price. |
high_venue | Venue with the highest price over the bucket. | |
high_price | quote currency (USDT for BTCUSDT) | Its volume-weighted price over the bucket. |
low_venue | Venue with the lowest price over the bucket. | |
low_price | quote currency (USDT for BTCUSDT) | Its volume-weighted price over the bucket. |
venues | Per-venue prices and premiums (`[{venue, price, premium_bps}]`). | |
venues.venue | Venue name (with the liquidations, the only data that names its venues). | |
venues.price | quote currency (USDT for BTCUSDT) | Volume-weighted price of the venue over the bucket. |
venues.premium_bps | basis 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ámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
symbol | string | obligatorio | El activo. |
timeframe | string | obligatorio | 1m, 5m, 15m, 30m, 1h, 4h, 1d. |
live | boolean | false | Expone la ventana en curso. |
limit | integer | 100 | En el historial, de 1 a 1000. |
since_ms / until_ms | integer | — | En el historial: ventana fechada, en milisegundos, aplicada antes de limit. |
{
"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 }
]
}
}| Campo | Tipo | Descripción |
|---|---|---|
ref_price | float | Precio de referencia multimercado. |
weighting | string | oi (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_bps | float | La amplitud entre el mercado más alto y el más bajo, en puntos básicos. |
high_venue / low_venue | string | El mercado con el precio más alto (más bajo) en el bucket, y ese precio. |
high_price / low_price | float | El mercado con el precio más alto (más bajo) en el bucket, y ese precio. |
venues | array | Una entrada por mercado: venue, price, premium_bps. Ordenadas por prima decreciente. |
is_closed | boolean | Falso solo con live=1. |