Referencia

Registro de cambios

Lo que ha cambiado en el contrato de la API, de lo más reciente a lo más antiguo, y el preaviso al que nos comprometemos antes de un cambio incompatible. Contrato actual: v1, versión OpenAPI 1.1.0.

#Versionado y obsolescencia

El contrato es v1. No rompen la compatibilidad, y se publican sin preaviso: una ruta nueva, un campo nuevo en una respuesta, un parámetro opcional nuevo, un error.code nuevo, un valor nuevo en un texto informativo. Escribe clientes que ignoren los campos desconocidos.

Rompen la compatibilidad: eliminar o renombrar una ruta, un campo, un parámetro o un error.code, cambiar una unidad o el significado de un campo. Un cambio incompatible se anuncia en esta página y solo entra en vigor para tu plan una vez cumplido su preaviso:

PlanPreaviso antes de un cambio incompatible
FreeSin preaviso garantizado (se anuncia en esta página)
Traders30 días
Financial60 días
Startup90 días
EnterpriseFijado en el contrato

#Cambios

2026-10-01 · Un único formato de error, una referencia generada

  • Todo error tiene una sola forma: status: "error", timestamp, error {code, message, param} y detail. error.code es estable y legible por máquina: decide en función de él. detail se mantiene y repite el mensaje; en un error de validación ahora es una cadena en lugar de una lista.
  • Los mensajes de error están en inglés (estaban en francés). Un cliente que comparaba el texto en francés debe pasar a error.code.
  • /v1/snapshot acepta =true como profundidad 1 (funding_rate_8h=true). Llamado solo con symbol, ahora también devuelve available_multi_tf_fields, timeframes y max_depth.
  • timePeriod=1mo en los historiales de Bitcoin, una grafía inequívoca de un mes; 1m sigue funcionando allí y sigue significando un mes.
  • POST /v1/indicators acepta también los parámetros anidados en un objeto parameters.
  • /v1/trades/future sobre una stablecoin responde unavailable: "not_applicable" (antes decía no_data).
  • Las respuestas se comprimen (gzip) cuando el cliente lo pide; GET https://api.bytnode.com/ responde con un índice JSON de los enlaces.
  • El contrato OpenAPI incluye ahora un esquema, la unidad de cada campo y un ejemplo real para cada ruta, las respuestas de error y ejemplos de código. Novedades: llms-full.txt, una colección de Postman y la referencia interactiva.
  • Los textos de /v1/macro/correlations (method) y /v1/macro/risk (condition) están en inglés.

2026-09-30 · Calidad de los datos

  • Las velas de operaciones combinadas (/v1/trades) se construyen a partir de las velas spot y de futuros del mismo bucket.
  • Nuevo campo volume_estimated en las velas: true cuando el volumen agregado de una vela antigua se ha reconstruido.
  • El funding se alinea con el período realmente cubierto; /v1/funding/rate?live=1 sirve la ventana en curso.
  • La variación de precio del par USDC se calcula sobre velas spot.
  • WebSocket: cada mensaje book.* incluye mid_avg y spread_bps_avg.

2026-09-29 · Alias de tiempo, respuestas vacías, contrato publicado

  • Todo objeto con marca de tiempo bajo data lleva también time, una copia de su bucket, timestamp, date… para que un cliente genérico lea una sola clave.
  • Toda ruta REST cuyo data está vacío lleva unavailable (not_applicable, no_api_key, no_data), como el snapshot.
  • El contrato OpenAPI con la unidad de cada campo numérico se sirve sin clave en /openapi.json.
  • Las velas OHLC proceden de un único mercado spot de referencia por símbolo; los volúmenes siguen agregados entre plataformas.
  • Un timeframe desconocido es un 422, ya no un 403.

2026-09-28 · Parámetros estrictos y una escala por sufijo

  • Parámetros estrictos: un parámetro que la ruta no declara, o uno repetido, es un 422 con una sugerencia (antes se ignoraba en silencio).
  • since_ms / until_ms en segundos, micro- o nanosegundos, o anteriores al 2009-01-03 son un 422.
  • Unidades por sufijo: *_pct es un porcentaje, *_ratio una fracción, *_bps puntos básicos. apr pasó a ser apr_pct; basis_pct se sirve ×100.
  • Toda marca de tiempo es ISO 8601 UTC con milisegundos fijos (2026-09-28T14:00:00.000Z).
  • El sobre repite el symbol y el timeframe efectivos de la petición.
  • is_closed es inmutable: un bucket cerrado es definitivo y nunca se reescribe.
  • Cabeceras de límite de velocidad en el formato del IETF (RateLimit-Policy, RateLimit), con la cuota mensual restante.
  • Todo error generado en el borde es JSON, nunca una página HTML.
  • /v1/status tiene una fila por flujo público, con un umbral de 1,5 × su intervalo esperado.

2026-09-26 · Servidor MCP

  • El servidor MCP expone tres herramientas que cubren toda la API (73 campos), con la clave y el plan del propio cliente.
  • Un historial nunca se corta en silencio: un período sin timeframe recibe el paso más fino que cabe, y cada serie incluye su cobertura real (ranges).

2026-09-16 · Capacidad del WebSocket

  • El flujo WebSocket funciona en una infraestructura dedicada y anuncia su capacidad: un 503 en el handshake significa que el servicio está lleno, no que tu plan lo haya rechazado.
  • Los números de secuencia (seq) son globales por canal.

2026-09-12 · Diez pares nuevos

  • XMR, LINK, ADA, LTC, UNI, GRAM (ex-TON), AVAX, HBAR, NEAR y TAO se suman al catálogo: 22 pares.