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.

#El principio

GET/v1/snapshotdata_type · snapshot

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. symbol es obligatorio.

curl -H "X-API-KEY: $BYTNODE_KEY" \
  "https://api.bytnode.com/v1/snapshot?symbol=BTCUSDT\
&klines_1h=24\
&funding_rate_8h=1\
&oi_delta=60\
&liq_cumulative=120\
&cvd@1h=24\
&options=1\
&fear_greed=1"

Sin ningún campo solicitado, la respuesta devuelve un data vacío y la lista available_fields, útil para descubrir el catálogo desde un cliente.

#Los 61 campos

Cincuenta y tres campos se piden por su nombre sin más. La columna profundidad da la unidad y el límite; un campo sin límite indicado solo tiene un valor actual y se pide con =1.

Precio y volumen

CampoTipoDescripción
klines_1m … klines_1w1000 candlesLas ocho temporalidades. Cada fila: marca de tiempo, apertura, máximo, mínimo, cierre, volumen, taker_buy, taker_sell.
taker_combined1440 minutesVolumen comprador y vendedor por minuto, sumado en todos los exchanges.
trades_raw3600 secondsAgregado de operaciones por segundo: volumen total, número, desglose taker.
spot_ticks10,000 rowsOperaciones spot individuales.
futures_ticks10,000 rowsOperaciones de futuros individuales.
price_changecurrent valueVariación en % en las ocho temporalidades, calculada bajo demanda.

Derivados y posicionamiento

CampoTipoDescripción
oi_snapshotscurrent valueOpen interest total, sumado en los exchanges.
oi_history1440 minutesHistorial del open interest total, por minuto.
oi_delta60 minutesVariación del open interest, con su porcentaje.
funding_nextcurrent valuePróximo funding estimado, normalizado a un equivalente de 8 h.
funding_rate_8hcurrent valueÚltimo tipo aplicado, ponderado por el open interest.
funding_cumulativecurrent valueTotal acumulado en 24 h, suma de las tres últimas ventanas.
liquidations1440 minutesEventos individuales en la ventana de búsqueda.
liq_cumulative1440 minutesLiquidaciones acumuladas en ventanas de 5 minutos.
liq_ratiocurrent valueGrandes liquidaciones frente a pequeñas.
basis60 minutesDiferencia futuros frente a spot, ponderada por el open interest.

Libro de órdenes y microestructura

CampoTipoDescripción
orderbookcurrent valueProfundidad compradora y vendedora sumada, con el desequilibrio.
vwap60 minutesVWAP intradía, acumulado desde medianoche UTC.
buysell_ratiocurrent valueRatio compras sobre ventas, ventana de 5 minutos.
trade_sizecurrent valueTamaño medio de las operaciones, ponderado por su número.
heatmapcurrent valueClústeres de liquidaciones por encima y por debajo del precio.

Todo el mercado y satélites

CampoTipoDescripción
tokenomicscurrent valueOferta, capitalización y FDV del activo del símbolo.
global_marketcurrent valueCapitalización total, volumen, dominancias de BTC y ETH.
fear_greedcurrent valueÍndice de sentimiento 0-100 y su clasificación.
optionscurrent valueResumen de opciones del activo deducido del símbolo (solo BTC o ETH).
macro, macro_correlations, net_liquidity, macro_momentum, macro_riskcurrent valueSeries macro y los cuatro indicadores derivados.
btc_network, btc_mempool, btc_fees, btc_miningcurrent valueEstado de la red Bitcoin.
onchain_mvrv, onchain_nvt, onchain_active_addresses, onchain_miner_stresscurrent valueValoración on-chain de Bitcoin, datos diarios.
eth_supply, eth_gas, eth_gas_momentum, eth_staking, eth_deflation, eth_defi, eth_squeeze, eth_ratiocurrent valueLas ocho familias de Ethereum.

#Campos multitemporalidad

Ocho campos existen por temporalidad. Se piden con el sufijo @tf, obligatorio, y la clave vuelve tal cual en data (data["cvd@1h"]).

1m5m15m30m1h4h1d

CampoTipoDescripción
cvd@tf200 windowsDelta de volumen acumulado y su serie interna.
orderbook_aggregated@tf1000 windowsLibro agregado: media, mín., máx. y desviación típica del desequilibrio.
vwap_window@tf1000 windowsVWAP de la ventana, distinto del VWAP intradía.
spread_interexchange@tf50 windowsPrima de cada exchange. El único campo que nombra los exchanges.
trade@tf1440 candlesVelas de operaciones, spot y futuros sumados.
trade_spot@tf1440 candlesVelas de operaciones, solo spot.
trade_future@tf1440 candlesVelas de operaciones, solo futuros.
ls_ratio@tf500 windowsRatio long/short compuesto. Sin 1m.

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

partial

Siempre presente. Pasa a true en cuanto una parte de la respuesta no ha podido construirse: el campo afectado vale entonces {"error": "..."} 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
{
  "data": { "funding_rate_8h": null, "options": null, "heatmap": [] },
  "unavailable": {
    "funding_rate_8h": "not_applicable",
    "options": "not_applicable",
    "heatmap": "no_data"
  }
}

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.

coverage

Cuántos exchanges han producido la cifra y el efecto de una ausencia. El recuento real viaja fila por fila en venue_count; coverage lleva lo que es constante en todas las filas. El detalle de los valores se describe en la página Convenciones.

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",
  "data_type": "snapshot",
  "partial": false,
  "data": {
    "funding_rate_8h": { "bucket": "...", "rate": 0.000082, "apr": 0.0898 },
    "basis": [ { "timestamp": "...", "basis_pct": 0.059 } ]
  },
  "out_of_plan_fields": ["fear_greed", "onchain_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 desactivado400 con la lista de símbolos activos
Campo multitemporalidad sin sufijo, o lo contrario422
Temporalidad desconocida422
Profundidad no entera o inferior a 1400
Profundidad por encima del límite del campo400 en un campo de forma única, 422 en uno multitemporalidad
Profundidad más allá de la ventana de historial del plan403, con el limit máximo en detail
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_1m=1000 pide dieciséis horas de velas de 1 min, algo que Free (una hora en 1m) rechaza con un 403 explícito en lugar de devolver sesenta velas bajo el nombre de mil.

403
{
  "detail": "Profondeur d'historique hors offre : 16 heure(s) demandes en 1m, votre offre en autorise 1 heure(s) (soit limit=60 au maximum sur ce timeframe, et aucune borne since_ms/until_ms au-dela de cette fenetre)."
}