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
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
| Campo | Tipo | Descripción |
|---|---|---|
trades_kline_futures_seconds | 1000 seconds | Las filas de /v1/trades-kline/futures/seconds: las operaciones de futuros perpetuos agregadas por segundo — volumen, número, volúmenes comprador y vendedor. |
trades_spot | 10,000 trades | Las operaciones spot una a una, las filas de /v1/trades/spot. |
trades_futures | 10,000 trades | Las operaciones de futuros una a una, las filas de /v1/trades/futures. |
price_change | valor actual | Variación en % en las ocho temporalidades, calculada bajo demanda. |
Derivados y posicionamiento
| Campo | Tipo | Descripción |
|---|---|---|
oi_change | valor actual | Variación del open interest, con su porcentaje. |
funding_next | valor actual | Próximo funding estimado, normalizado a un equivalente de 8 h. |
funding_rate | valor actual | Último tipo aplicado, ponderado por el open interest. |
funding_cumulative | valor actual | Total acumulado en 24 h, suma de las tres últimas ventanas. |
liquidations_events | 10,000 eventos | Las N últimas liquidaciones, las filas de /v1/liquidations/events. Tu plan fija cuántas: más allá, 403 history_depth. |
liquidations_cumulative | valor actual | Liquidaciones acumuladas en ventanas de 5 minutos. |
basis | valor actual | Diferencia futuros frente a spot, ponderada por el open interest. |
Todo el mercado y satélites
| Campo | Tipo | Descripción |
|---|---|---|
tokenomics | valor actual | Oferta, capitalización y FDV del activo del símbolo. |
global | valor actual | Capitalización total, volumen, dominancias de BTC y ETH. |
fear_greed | valor actual | Índice de sentimiento 0-100 y su clasificación. |
options_summary | valor actual | Resumen de opciones del activo deducido del símbolo (solo BTC o ETH). |
macro_series, macro_correlations, macro_net_liquidity, macro_momentum, macro_risk | valor actual | Series macro y los cuatro indicadores derivados. |
btc_network, btc_mempool, btc_fees, btc_mining | valor actual | Estado de la red Bitcoin. |
btc_mvrv, btc_nvt, btc_active_addresses, btc_revenue_per_difficulty | valor actual | Valoración on-chain de Bitcoin, datos diarios. |
eth_supply, eth_gas, eth_gas_momentum, eth_staking, eth_deflation, eth_defi, eth_squeeze, eth_price_btc | valor actual | Las ocho familias de Ethereum. |
fear_greed_cmc, altcoin_season, cmc20, cmc100 | valor actual | Sentimiento 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
| Campo | Tipo | Descripción |
|---|---|---|
klines@tf | 1000 velas | Las 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@tf | 1000 ventanas | El open interest total por bucket cerrado, las filas de /v1/oi/history. oi@1m=1 da el último minuto. |
cvd@tf | 200 ventanas | Delta de volumen acumulado y su serie interna. |
buy_sell_ratio@tf | 1000 ventanas | Ratio compras sobre ventas por bucket cerrado (los mismos buckets que cvd). |
trades_avg_size@tf | 1000 ventanas | Tamaño medio de las operaciones por bucket cerrado, ponderado por su número. |
liquidations_big_small_ratio@tf | 1000 ventanas | Grandes liquidaciones frente a pequeñas, por bucket cerrado. |
orderbook@tf | 1000 ventanas | El 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@tf | 50 ventanas | Prima de cada exchange. El único campo que nombra los exchanges. |
trades_kline@tf | 1440 velas | Velas de operaciones (/v1/trades-kline), spot y futuros sumados. |
trades_kline_spot@tf | 1440 velas | Velas de operaciones, solo spot (/v1/trades-kline/spot). |
trades_kline_futures@tf | 1440 velas | Velas 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.
{
"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.
{
"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
| Caso | Código |
|---|---|
Falta symbol | 422 |
| Símbolo desconocido o desactivado | 422 con la lista de símbolos activos |
| Campo multitemporalidad sin sufijo, o lo contrario | 422 |
| Temporalidad desconocida | 422 |
| Profundidad no entera o inferior a 1 | 422 invalid_depth |
| Profundidad por encima del límite del campo | 422 depth_too_large |
| Profundidad más allá de la ventana de historial del plan | 403 con X-Deny-Reason: history_depth, y el limit máximo en error.message |
| Clave desconocida, o clave repetida | 422 con el campo más parecido como sugerencia |
| Campo de una familia fuera del plan | no 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.
{
"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"
}
}
}