API REST

Snapshot

Un endpoint a la carta: nombras los campos y los devuelve todos en una sola petición. Es el punto de entrada adecuado para un panel o para alimentar un modelo: una llamada por ciclo en lugar de diez.

Para un agente de IA, el snapshot cabe en una llamada MCP: la herramienta get_pair_data del servidor MCP sirve el valor actual de los campos del snapshot de un par en una petición, contada una vez en tu cuota; para comparar hasta diez pares, una petición por par.

#El principio

GET/v1/snapshotdata_type · snapshotReferencia completa

Cada parámetro de la petición es un nombre de campo, y su valor la profundidad solicitada (un número de filas, de minutos o de segundos según el campo). Los campos que solo tienen un valor actual se piden con =1 (o =true, que significa lo mismo). symbol es obligatorio. El snapshot está incluido a partir del plan Traders.

curl -H "X-API-KEY: $BYTNODE_API_KEY" \
  "https://api.bytnode.com/v1/snapshot?symbol=BTCUSDT\
&funding_rate=1\
&basis=1\
&fear_greed=1\
&cvd@1h=2"

Sin ningún campo solicitado, la respuesta devuelve un data vacío y el catálogo de lo que incluye tu plan: available_fields (los campos sin temporalidad), available_multi_tf_fields (que se piden como name@tf), timeframes y max_depth, el límite de cada campo. Un cliente puede construir sus peticiones a partir de él sin leer esta página.

#Los 52 campos

Treinta y siete campos se piden por su nombre a secas (el descubrimiento, /v1/snapshot?symbol=BTCUSDT, los lista). Cada uno tiene el nombre y el contenido de su ruta: un campo cuya ruta devuelve un objeto vuelve como ese objeto, pedido con =1 (o =true) — una profundidad mayor es un 422 que remite a su ruta /history; los campos de eventos (trades individuales, eventos de liquidación, velas por segundo) son listas, hasta el límite de la columna profundidad.

Precio y volumen

CampoTipoDescripción
trades_kline_futures_seconds1000 secondsLas filas de /v1/trades-kline/futures/seconds: las operaciones de futuros perpetuos agregadas por segundo — volumen, número, volúmenes comprador y vendedor.
trades_spot10,000 tradesLas operaciones spot una a una, las filas de /v1/trades/spot.
trades_futures10,000 tradesLas operaciones de futuros una a una, las filas de /v1/trades/futures.
price_changevalor actualVariación en % en las ocho temporalidades, calculada bajo demanda.

Derivados y posicionamiento

CampoTipoDescripción
oi_changevalor actualVariación del open interest, con su porcentaje.
funding_nextvalor actualPróximo funding estimado, normalizado a un equivalente de 8 h.
funding_ratevalor actualÚltimo tipo aplicado, ponderado por el open interest.
funding_cumulativevalor actualTotal acumulado en 24 h, suma de las tres últimas ventanas.
liquidations_events10,000 eventosLas N últimas liquidaciones, las filas de /v1/liquidations/events. Tu plan fija cuántas: más allá, 403 history_depth.
liquidations_cumulativevalor actualLiquidaciones acumuladas en ventanas de 5 minutos.
basisvalor actualDiferencia futuros frente a spot, ponderada por el open interest.

Todo el mercado y satélites

CampoTipoDescripción
tokenomicsvalor actualOferta, capitalización y FDV del activo del símbolo.
globalvalor actualCapitalización total, volumen, dominancias de BTC y ETH.
fear_greedvalor actualÍndice de sentimiento 0-100 y su clasificación.
options_summaryvalor actualResumen de opciones del activo deducido del símbolo (solo BTC o ETH).
macro_series, macro_correlations, macro_net_liquidity, macro_momentum, macro_riskvalor actualSeries macro y los cuatro indicadores derivados.
btc_network, btc_mempool, btc_fees, btc_miningvalor actualEstado de la red Bitcoin.
btc_mvrv, btc_nvt, btc_active_addresses, btc_revenue_per_difficultyvalor actualValoración on-chain de Bitcoin, datos diarios.
eth_supply, eth_gas, eth_gas_momentum, eth_staking, eth_deflation, eth_defi, eth_squeeze, eth_price_btcvalor actualLas ocho familias de Ethereum.
fear_greed_cmc, altcoin_season, cmc20, cmc100valor actualSentimiento CMC: el índice Fear & Greed de CMC, el Altcoin Season Index y los índices CMC20 y CMC100.

#Campos multitemporalidad

Once campos existen por marco temporal. Se piden con el sufijo @tf, obligatorio, y la clave vuelve tal cual en data (data["cvd@1h"]). klines admite también 1w (timeframes_by_field en el catálogo). Un campo @tf es siempre una LISTA, incluso con profundidad 1; un campo sin marco temporal es el OBJETO de su ruta (solo profundidad 1), salvo los campos de eventos (trades, liquidaciones, segundos), que son listas.

1m5m15m30m1h4h1d

CampoTipoDescripción
klines@tf1000 velasLas velas de /v1/klines, de 1m a 1w (klines@1w también), con los campos de la ruta: time, open, high, low, close, volume (spot + futuros perpetuos) con sus partes compradora y vendedora, lo mismo por mercado (volume_spot, volume_futures…), los indicadores is_*_estimated e is_closed. Volúmenes en unidades del activo base.
oi@tf1000 ventanasEl open interest total por bucket cerrado, las filas de /v1/oi/history. oi@1m=1 da el último minuto.
cvd@tf200 ventanasDelta de volumen acumulado y su serie interna.
buy_sell_ratio@tf1000 ventanasRatio compras sobre ventas por bucket cerrado (los mismos buckets que cvd).
trades_avg_size@tf1000 ventanasTamaño medio de las operaciones por bucket cerrado, ponderado por su número.
liquidations_big_small_ratio@tf1000 ventanasGrandes liquidaciones frente a pequeñas, por bucket cerrado.
orderbook@tf1000 ventanasEl libro de órdenes por rango de precio al final de cada bucket, spot y futuros perpetuos sumados: las filas de /v1/orderbook/history.
spread_interexchange@tf50 ventanasPrima de cada exchange. El único campo que nombra los exchanges.
trades_kline@tf1440 velasVelas de operaciones (/v1/trades-kline), spot y futuros sumados.
trades_kline_spot@tf1440 velasVelas de operaciones, solo spot (/v1/trades-kline/spot).
trades_kline_futures@tf1440 velasVelas de operaciones, solo futuros (/v1/trades-kline/futures).

Pedir un campo multitemporalidad sin su sufijo devuelve 422, y lo contrario también: un campo de forma única con el sufijo @1h se rechaza.

#Las claves adicionales

is_partial

Presente en toda respuesta que pide campos. Pasa a true en cuanto una parte de la respuesta no ha podido construirse: el campo afectado vale entonces {"error": {"code": "...", "message": "..."}} y los demás responden con normalidad. Un fallo local sigue siendo local: nunca obtienes una respuesta vacía porque una familia de siete no estaba disponible.

unavailable

Presente solo si al menos un campo solicitado está vacío. Dice por qué, algo que un null por sí solo no puede hacer.

Respuesta
{
  "status": "ok",
  "server_time": "2026-10-13T02:18:41.507Z",
  "data_type": "snapshot",
  "symbol": "USDCUSDT",
  "is_partial": false,
  "data": { "funding_rate": null, "options_summary": null, "basis": null },
  "unavailable": {
    "funding_rate": "not_applicable",
    "options_summary": "not_applicable",
    "basis": "not_applicable"
  }
}

Tres valores, por orden de prioridad: not_applicable (el fenómeno no existe para este activo), no_api_key (la fuente de origen no está conectada, nunca se ha recopilado nada), no_data (una ausencia real en la ventana). Solo el tercero permite una conclusión de mercado.

out_of_plan_fields

El snapshot devuelve el contenido de las demás familias y está filtrado según tu plan: un campo cuya familia no está en el plan se elimina de data y su nombre aparece en out_of_plan_fields, presente solo en ese caso. Los demás campos responden con normalidad; la petición no se rechaza.

Respuesta
{
  "status": "ok",
  "server_time": "2026-10-13T02:30:56.839Z",
  "data_type": "snapshot",
  "symbol": "BTCUSDT",
  "is_partial": false,
  "data": {
    "funding_rate": {"time": "2026-10-12T16:00:00.000Z", "period_end_at": "2026-10-13T00:00:00.000Z", "settled_at": "2026-10-13T00:00:00.005Z", "rate_pct": 0.0038949161538, "apr_pct": 4.26493318841, "is_closed": true},
    "basis": {"time": "2026-10-13T02:30:14.102Z", "basis_value": -33.9427339947, "basis_pct": -0.0410036905061, "futures_price": 82743.8733191, "spot_price": 82777.8160531}
  },
  "out_of_plan_fields": ["fear_greed", "btc_mvrv"]
}

Sin ningún campo solicitado, available_fields solo lista los campos de tu plan. Un snapshot cuyos campos están todos fuera del plan devuelve un data vacío con la lista completa en out_of_plan_fields, nunca un resultado vacío sin explicación. La correspondencia entre familias y planes está en la página de planes; el snapshot en sí está disponible a partir de Traders.

#Errores

CasoCódigo
Falta symbol422
Símbolo desconocido o desactivado422 con la lista de símbolos activos
Campo multitemporalidad sin sufijo, o lo contrario422
Temporalidad desconocida422
Profundidad no entera o inferior a 1422 invalid_depth
Profundidad por encima del límite del campo422 depth_too_large
Profundidad más allá de la ventana de historial del plan403 con X-Deny-Reason: history_depth, y el limit máximo en error.message
Clave desconocida, o clave repetida422 con el campo más parecido como sugerencia
Campo de una familia fuera del planno es un error: el campo se elimina y se lista en out_of_plan_fields

La ventana de historial del plan se aplica a los campos con fecha igual que a las rutas REST: klines@1h=1000 pide mil velas horarias, algo que Traders (una semana en 1h) rechaza con un 403 history_depth explícito en lugar de devolver 168 velas bajo el nombre de mil.

403
{
  "status": "error",
  "server_time": "2026-09-30T16:07:27.808Z",
  "error": {
    "code": "history_depth",
    "message": "History depth beyond your plan: 1000 hour(s) requested on 1h, your plan allows 7 day(s) (i.e. at most limit=168 on this timeframe, and no since_ms/until_ms bound beyond that window).",
    "param": "limit",
    "details": {
      "window_s": 604800,
      "earliest_ms": 1791273600000,
      "max_limit": 168,
      "timeframe": "1h"
    }
  }
}