Registro de cambios

Registro de cambios y versiones

Qué ha cambiado en la API, la versión actual y las reglas de compatibilidad.

v1Versión actual
2026.11.12Revisión del catálogo

Versionado y compatibilidad

Versionado

  • La API pública es la versión v1. El prefijo de ruta es `/api` y no lleva número de versión.
  • El catálogo tiene su propia versión basada en fechas (`catalog_version`, por ejemplo 2026.11.11). Cambia cada vez que cambian los endpoints, los parámetros o la documentación.
  • Cada respuesta de los endpoints de datos propios lleva un id `schema` (por ejemplo `sd.oi.v1`). Solo se emite un id nuevo cuando un campo existente cambia de significado o de tipo.

Compatibilidad

  • Añadir endpoints, parámetros opcionales, campos de respuesta, valores de enumeración o exchanges es un cambio retrocompatible y puede ocurrir en cualquier momento. Los clientes deben ignorar los campos que no conozcan.
  • Eliminar o renombrar un campo, cambiar su tipo o su unidad, o hacer obligatorio un parámetro opcional es un cambio incompatible. Se anuncia aquí antes de publicarse.
  • Las correcciones son la excepción: la corrección de una cifra errónea, o de una entrada no válida que antes se aceptaba en silencio, se publica de inmediato y se recoge aquí el día en que entra en producción, marcada como incompatible cuando el código del cliente pueda necesitar cambios.
  • Las cifras pueden cambiar porque mejora la cobertura (se añade un nuevo exchange o tipo de contrato). La cobertura siempre se informa en la respuesta, así que compare `coverage` antes de comparar totales.
  • Los datos ausentes se devuelven como `null` y se listan en `coverage.unavailable`; nunca se sustituyen por 0 ni por una estimación. El código que trate `null` como 0 dará resultados erróneos.

Obsolescencia

  • Los endpoints marcados como `legacy` siguen funcionando, pero los desarrollos nuevos deben usar el sustituto indicado.
  • Un endpoint heredado no se elimina antes de 90 días desde que su entrada de obsolescencia aparece en este registro de cambios.
  • Los endpoints marcados como `beta` dan servicio a páginas del sitio; su conjunto de campos puede cambiar sin el aviso de 90 días, y cada cambio se lista aquí igualmente.

Cambios

Añadido2026.11.12Retrocompatible

`/api/currency/ex-table`: `market=perpetual`, `delivery` and `all`, plus one status vocabulary

  • New values of `market`: `perpetual` (perpetual contracts), `delivery` (dated futures) and `all` (spot, perpetual and delivery markets of the coin in one list). They return one row per market and number `rank` inside the requested view.
  • Every per-market row carries `market_status` (`ACTIVE`, `EXPIRING`, `EXPIRED`, `NO_QUOTE`, `STALE`), `reason_code` (`NO_QUOTE`, `EXPIRED`, `STALE`, `UNAVAILABLE` or null), `source_at`, `quality`, `is_stale`, `expires_in_s`, `symbol` and `base`. The state is derived from the contract specification of the exchange (expiry) and from the time the ticker was received. `status` and `status_reason` are unchanged.
  • `EXPIRING` marks a contract that still trades and expires within 24 hours (`meta.expiring_window_s`). Rows that are not `ACTIVE` or `EXPIRING` return `price: null`; no price is carried over from an earlier quote or from another contract.
  • `meta` adds `market_status_counts`, `type_counts` and `type_rankable`. The row order is the same for every caller: rankable rows by `volume_usd` descending, then rows without a quote, expired contracts last.
Añadido2026.11.12Retrocompatible

`/api/liquidation-events` adds event / account counts and BTC high, low and range

  • New fields on every row: `btc_high`, `btc_low`, `btc_range` (USD, high − low) and `btc_range_pct` ((high − low) / low × 100), with `btc_range_meta`. Prices are the median of the UTC daily high / low on Binance (BTC/USDT), Coinbase (BTC/USD) and Kraken (BTC/USD) spot. The fields are null unless all three venues have a final daily candle.
  • New fields on `coinboss` rows: `liquidation_count` (de-duplicated liquidation events; not people) and `account_count` (distinct liquidated accounts on exchanges that expose an account identifier, currently Hyperliquid only; `quality` is `PARTIAL`), each with a `_meta` object giving source, window, quality and coverage. Both are null on baseline rows.
  • CoinBoss does not publish a liquidated-trader (people) count; `coverage.metrics.people_count.quality` is `UNAVAILABLE`. `liquidated_traders` and `btc_amplitude` are unchanged: they stay the text recorded in the third-party source and are not copied into the new fields.
Modificado2026.11.12Retrocompatible

`/api/currency/ex-table`: per-contract rows carry their own quote and a `status`

  • With `group=pair`, every contract row now uses the ticker of that contract. Before, only the main contract of each exchange had a price and the other rows returned `price: null`.
  • New row fields with `group=pair` and `market=spot`: `status` (`active`, `no_quote`, `not_provided`, `expired`), `status_reason`, `market_type`, `expiry_ts`, `expiry_date`, `native_symbol`, `quote`, `margin_type`, `price_source`, `price_at` and `rank`; the response adds `meta` (freshness window, volume window and unit, sort rule, row counts per status).
  • Rows that are not `active` return `price: null` and are never filled from another contract. `volume_usd` on such rows is `0` only when the exchange reports zero 24h turnover, otherwise `null`.
  • Order with `group=pair`: `active` rows first by `volume_usd` descending (these carry `rank`), then rows without a live quote by `oi_usd` descending, expired contracts last. `contract_type` now follows the exchange contract specification, so dated contracts on Deribit, Bybit, Gate and KuCoin are reported as `delivery`; `expiry` is set for all of them.
  • Requests without `group` return the same rows and fields as before.
Modificado2026.11.12Retrocompatible

`/api/liquidation-events` returns the Top 10 with a `source` field

  • This corrects the 2026-11-11 entry below. The historical baseline rows (third-party public historical records) are served again, as recorded and without recalculation.
  • Rows recorded by CoinBoss are UTC daily totals from its own collectors. A day is added only when its total is greater than the 10th place of the list at that time. Every row carries `source` (`historical_baseline` or `coinboss`) and `basis`.
  • The list is sorted by `total_usd` and returns 10 rows. New fields: `data[].total_usd` (same value as `amount_usd`), `data[].source`, `data[].basis` and `threshold_usd`. `coverage` is split into `coverage.baseline` and `coverage.coinboss`; the `coverage.source`, `coverage.from` and `coverage.note` fields introduced on 2026-11-11 moved under them.
Modificado2026.11.12Retrocompatible

Los fallos del origen responden HTTP 503 y conservan el cuerpo de error JSON

  • Las solicitudes fallidas que antes respondían HTTP 502 o 504 ahora responden 503 con una cabecera `Retry-After`. La CDN situada delante de la API sustituía el cuerpo de las respuestas 502 y 504 por su propio texto, con lo que se perdían `code` y `request_id`; un 503 pasa sin modificaciones. Los valores de `code` son los mismos que antes.
  • El fallo de una fuente de origen detrás de un endpoint ya no afecta a los demás endpoints: la pasarela solo reintenta con otra instancia ante errores de conexión y tiempos de espera agotados.
  • `/api/sd/options/*` y `/api/sd/cme/overview` aceptan nombres de monedas escritos en caracteres chinos. Una moneda sin ese mercado recibe HTTP 200 con agregados `null` en lugar de 400.
  • Historial de pagos de financiación: los huecos dentro de la ventana de 30 días se detectan y se rellenan para las 150 monedas más negociadas en Bybit, OKX, Gate y Bitget (40 en HTX), de modo que `cum_7d` y `cum_30d` están completos para más monedas.
Corregido2026.11.11Retrocompatible

Reparado el índice de variabilidad de liquidaciones; si la fuente no está disponible se responde 503

  • `/api/indicators/cdri`: la serie diaria estaba vacía porque la agrupación por días interpretaba la marca de tiempo en milisegundos como segundos. Ahora devuelve hasta 90 días UTC completos de totales de liquidaciones; `current.days` (campo nuevo) es el número de días utilizados, y `current.cdri` / `current.liqCV` son `null` cuando existen menos de dos días.
  • `/api/indicators/reddit-subs`: responde HTTP 503 con el código `UNAVAILABLE` mientras su fuente rechace las solicitudes, en lugar de HTTP 500. El número de suscriptores solo se almacena cuando la fuente devuelve un número positivo.
  • Los cuerpos de error de las respuestas HTTP 5xx ya no incluyen el texto de error del origen en el campo heredado `msg`; ahora este contiene el mismo mensaje genérico que `error`.
Corregido2026.11.11Incompatible

Los registros que dejaron de actualizarse se marcan y quedan fuera de los totales

  • `/api/coins/all` y `/api/coins/search`: un registro de moneda que lleva más de 48 horas sin actualizarse devuelve `market_cap` y `mcap_rank` como `null` con `is_stale: true`, y se ordena después de todas las filas vigentes. La regla en vigor se devuelve en `stale_rule`.
  • `/api/derivatives/coins-full`: exactamente una fila por moneda. Un símbolo compartido por varios registros de moneda producía antes una fila por registro; ahora la fila lleva el nombre, la capitalización de mercado y la posición del mayor registro actualizado en las últimas 48 horas, o `null` cuando no hay ninguno. `mcap_rank` es un campo nuevo.
  • `/api/reserves/overview`: cada fila tiene `updated_at` e `is_stale`. `total` suma ahora solo los exchanges actualizados en las últimas 36 horas; la definición anterior se conserva como `total_including_stale`, y los exchanges excluidos figuran en `stale_exchanges`.
  • `/api/margin/rates` y `/api/margin-fee/matrix`: los activos y las celdas cuya tasa dejó de actualizarse llevan `is_stale: true`; los umbrales y los recuentos se devuelven en el nivel superior.
  • Las instantáneas diarias de capitalización de mercado global del 2026-10-28 al 2026-11-11 se recalcularon tras detectarse en la suma dos registros con una capitalización de mercado imposible (mayor que la de Bitcoin). Los recolectores almacenan ahora `null` para esos valores.
Modificado2026.11.11Retrocompatible

Las interrupciones de las fuentes se indican en la respuesta en lugar de provocar un fallo o aparentar datos vigentes

  • `/api/indicators/mempool/pools`: cuando la fuente de pools de minería no responde, se devuelve el último resultado almacenado con `stale: true`, `cached_at` y `stale_reason` en lugar de HTTP 500.
  • `/api/etf/funds`: nuevo objeto `frozen_fields` que enumera los campos a nivel de fondo cuya fuente dejó de publicar el 2026-10-08, con la fecha a la que se refiere cada valor.
  • `/api/indicators/halving`: nuevo objeto `current_difficulty` (`value`, `as_of`, `source`). `difficulty` (progreso del reajuste) sigue siendo `null` mientras su fuente no está disponible.
  • `/api/browser/detect`: una consulta de cadena fallida ya no se notifica como una dirección sin actividad. `kind` es `lookup_failed` cuando no se pudo consultar ninguna cadena.
  • `/api/currency/flows`: la documentación enumera ahora las 22 ventanas que el endpoint sirve realmente (de 5 minutos a 1 año).
Modificado2026.11.11Incompatible

Los valores de parámetro no admitidos devuelven 400 en lugar de datos predeterminados

  • `/api/derivatives/kline`: `interval=4h` devuelve velas reales de 4 horas construidas a partir de velas de 1h sobre límites UTC (antes devolvía velas de 1h). Cualquier intervalo distinto de `1h`, `4h` o `1d` devuelve 400.
  • Endpoints de opciones bajo `/api/options/`: un `currency` no admitido devuelve 400 en lugar de datos de BTC, y `coin` se acepta como alias en los siete endpoints.
  • `/api/etf/flows`, `/api/etf/detail`, `/api/etf/funds` y `/api/etf/holdings`: un `asset` no admitido devuelve 400 en lugar de datos de BTC.
  • `/api/liquidations/coins`: un `range` no admitido devuelve 400 en lugar de datos de 24h, y la ventana en vigor se devuelve en `range`.
  • `limit` se limita a 1000 en `/api/liquidations`, `/api/liquidations/largest` y `/api/derivatives/coins-full`. Un `limit` no numérico usa el valor predeterminado en lugar de fallar.
Corregido2026.11.11Incompatible

Corrección del volumen diario y de las estadísticas de investigación

  • `/api/volume/coin`: `daily_30d` sumaba todas las instantáneas de 24h móviles de un día y sobrestimaba el volumen diario unas 24 veces. Ahora toma la última instantánea de cada día UTC.
  • `/api/research/stats` con `topic=derivatives`: `volume_24h_usd` tenía la misma sobrestimación y se ha corregido.
  • `avg_funding_rate_pct` en la misma respuesta es ahora un porcentaje, unas 100 veces la fracción sin procesar que devolvía antes. Ajuste cualquier código que lo multiplicara por 100.
Corregido2026.11.11Retrocompatible

Los endpoints de mercado más antiguos ignoran las filas que dejaron de actualizarse

  • Afectados: `/api/market/tickers`, `/api/market/volume-rank`, `/api/market/open-interest`, `/api/market/funding`, `/api/market/funding-spread`, `/api/market/long-short`, `/api/market/long-short-v2`, `/api/market/overview`, `/api/p3/volume/overview`, `/api/p3/perp-spot-volume`, `/api/volume/btc-ex-share` y `/api/derivatives/coins-full`.
  • Las filas solo se cuentan mientras están vigentes: tickers dentro de 1 hora, interés abierto dentro de 3 horas (CME: 120 horas), financiación dentro de 4 horas, ratios largos/cortos dentro de 24 horas.
  • Los totales son ligeramente inferiores y algunas listas son más cortas. Los contratos que dejaron de negociarse muestran precios `null` en lugar de su último valor.
Corregido2026.11.11Retrocompatible

Contratos con multiplicador asociados a su moneda base

  • `/api/funding/coin`, `/api/funding/history`, `/api/funding/chart` y `/api/ls/coin` asocian ahora los contratos cotizados en múltiplos de una moneda (por ejemplo `1000PEPE`) a la moneda base, por lo que estas monedas muestran más exchanges.
Añadido2026.11.11Retrocompatible

Datos de opciones de seis plataformas

  • Nuevos `/api/sd/options/overview`, `/api/sd/options/expiries`, `/api/sd/options/strikes`, `/api/sd/options/chain` y `/api/sd/options/history`.
  • CoinBoss calcula el interés abierto, el volumen nocional de 24h, los ratios put/call, el max pain, la IV ATM, el skew 25 delta y la estructura temporal de la IV a partir de las listas de contratos de Deribit, Binance, Bybit, OKX, Gate y Coincall.
  • El volumen nocional y el volumen de primas son campos separados y nunca se suman entre sí. Las columnas que una plataforma no publica son `null` y se listan en `coverage.field_gaps`.
  • El historial es horario y comienza el 2026-11-11; las horas anteriores no se rellenan retroactivamente.
Añadido2026.11.11Retrocompatible

Datos de ETF spot, CME y CFTC a partir de publicaciones primarias

  • Nuevos `/api/sd/etf/overview`, `/api/sd/etf/funds` y `/api/sd/etf/history`, creados a partir de las divulgaciones de los emisores. Los totales cubren los fondos que CoinBoss puede recopilar; cada uno de los demás fondos se lista con el motivo, y `totals_scope` es siempre `covered_funds_only`.
  • CoinBoss calcula el flujo de los fondos a partir de las participaciones en circulación y el NAV (o de los activos netos y el NAV). La fórmula utilizada se devuelve por fondo en `flow_method`.
  • Nuevos `/api/sd/cme/overview` (volumen diario e interés abierto de ocho productos de CME) y `/api/sd/cme/cot` (posicionamiento semanal de la CFTC por categoría de operador).
  • Los precios de liquidación de CME aún no se recopilan. Las cifras en USD usan un precio de referencia etiquetado (`price_src`) y el resumen se marca como PARTIAL por ese motivo.
Añadido2026.11.11Retrocompatible

Profundidad del libro de órdenes y deslizamiento

  • Nuevos `/api/sd/liquidity`, `/api/sd/liquidity/history` y `/api/sd/liquidity/rank`.
  • La profundidad dentro del ±0.5 %, ±1 % y ±2 % del precio medio y el deslizamiento de órdenes a mercado de 10k / 100k / 1M USD se calculan a partir de instantáneas reales del libro de órdenes de 24 exchanges, por separado para los mercados de perpetuos y spot.
  • Una instantánea que no alcanza una banda se marca con `complete: false`, se informa como límite inferior y queda fuera del agregado. `n_included` indica cuántos libros contiene un total.
  • `/api/indicators/large-orderbook` es el resultado de un modelo, no un libro de órdenes; use los nuevos endpoints para la liquidez pendiente.
Añadido2026.11.11Retrocompatible

Base a partir de los precios de marca y del índice de los exchanges

  • Nuevos `/api/sd/basis`, `/api/sd/basis/history` y `/api/sd/basis/rank`.
  • Base de perpetuos = (marca − índice) ÷ índice × 100 en el mismo exchange; la base spot-perpetuo compara el perpetuo con el mercado spot del mismo exchange; los contratos con vencimiento añaden un valor anualizado.
  • Los agregados se ofrecen ponderados por OI, ponderados por volumen y como mediana. Las filas que no cumplen las reglas de inclusión se devuelven igualmente con `excluded_reason`.
  • El historial horario comienza el 2026-11-11.
Modificado2026.11.11Retrocompatible

Los mapas de iconos usan el origen público del sitio

  • `/api/coin-icons` y `/api/exchange-icons` devuelven URL de iconos en `https://www.coinboss.com`, el mismo origen que todos los demás endpoints públicos. Las rutas (`/api/coin-icon/{coin}`, `/api/exchange-icon/{exchange}`) no cambian.
Obsoleto2026.11.11Retrocompatible

`/api/basis/list` y `/api/cftc/cot` marcados como heredados

  • Use `/api/sd/basis/rank` en lugar de `/api/basis/list`, y `/api/sd/cme/cot` en lugar de `/api/cftc/cot`. Los endpoints heredados siguen funcionando.
Modificado2026.11.11Retrocompatible

`/api/liquidation-events` ahora sirve solo registros de CoinBoss

  • La lista se crea a partir de las órdenes de liquidación que CoinBoss recibió de los feeds de los exchanges. Su historial comienza el 2026-08-19; las fechas anteriores no devuelven filas.
  • Los nombres y los tipos de los campos no cambian.
Eliminado2026.11.11Retrocompatible

Los endpoints operativos ya no son accesibles desde internet

  • `/api/health/alerts`, `/api/health/server`, `/api/health/history` y `/api/health/ch-read` responden 404 a las solicitudes públicas. Nunca formaron parte de la API pública.
  • Use `/api/meta/status` para el estado del servicio y `/api/meta/quality` para la frescura de los datos.
Añadido2026.11.11Retrocompatible

Centro de desarrolladores y metadatos de la API legibles por máquina

  • Nuevos `/api/meta/catalog`, `/api/meta/endpoint`, `/api/meta/status`, `/api/meta/quality`, `/api/meta/changelog` y `/api/meta/openapi`.
  • Las tablas de campos y las respuestas de ejemplo de la documentación se generan a partir de respuestas reales mediante una sonda de la API que llama a todos los endpoints públicos cada 5 minutos.
  • El estado de los endpoints (disponible / parcial / degradado / caído / no disponible) procede ahora de esas llamadas reales, no del estado de los procesos.
Modificado2026.11.11Retrocompatible

Cuerpo de error uniforme e ID de solicitud

  • Cada respuesta lleva una cabecera `X-Request-Id`; los cuerpos de error la repiten como `request_id`.
  • Los cuerpos de error son ahora `{ success: false, code, error, request_id }` en todos los endpoints. `error` sigue siendo una cadena, por lo que los clientes existentes siguen funcionando.
  • Las rutas `/api/*` desconocidas responden un 404 en JSON (`NOT_FOUND`) en lugar de una página HTML.
  • Las respuestas HTTP 429 incluyen `Retry-After`.
  • Los mensajes de los errores 5xx son genéricos; ya no se devuelven detalles internos.
Añadido2026.11.11Retrocompatible

Endpoints de datos propios con cobertura y calidad en cada respuesta

  • Nuevos `/api/sd/oi`, `/api/sd/funding`, `/api/sd/liquidations`, `/api/sd/volume`, `/api/sd/ls`, `/api/sd/coin` y `/api/sd/quality`.
  • El interés abierto informa por separado de los contratos USDT / USDC / con margen en moneda / con vencimiento, e indica qué plataformas informan cifras por ambos lados.
  • La financiación se devuelve en bruto, con su intervalo, normalizada a 8h y anualizada; las plataformas cuyo contrato no está activo se excluyen y se listan.
Obsoleto2026.11.11Retrocompatible

`/api/market/long-short` marcado como heredado

  • Use `/api/market/long-short-v2` para la vista de lista o `/api/sd/ls` para los ratios por cuentas / posiciones / taker por exchange.
Modificado2026.10.31Retrocompatible

Los campos de iconos devuelven rutas del mismo origen

  • Campos como `image_url` / `icon` contienen ahora una ruta de CoinBoss (`/api/coin-icon/...`) en lugar de una URL de terceros.
  • Una moneda sin icono verificado devuelve `null`; los clientes deben mostrar su propio marcador de posición.
Corregido2026.10.24Retrocompatible

Las filas desactualizadas ya no entran en los agregados

  • Los totales de interés abierto, financiación y largos/cortos solo usan filas actualizadas dentro de la ventana de frescura (más larga para CME, que publica a diario).
  • Los contratos retirados de cotización dejan de contribuir a los totales cuando su última actualización sale de la ventana.

Endpoints heredados

Se mantienen por compatibilidad. Siguen funcionando; las integraciones nuevas deben usar el endpoint de reemplazo.

EndpointReemplazoDescripción
/api/market/long-short/api/market/long-short-v2Se mantiene para las integraciones existentes. Use `/api/market/long-short-v2` (añade un filtro por exchange) o `/api/sd/ls` (por exchange, con cuentas / posiciones / taker por separado).
/api/basis/list/api/sd/basis/rank`apr_pct` es `basis_pct × 3 × 365`, una extrapolación simple de la base actual del perpetuo como si se pagara cada 8 horas; no es un rendimiento de financiación ni de futuros con vencimiento. `/api/sd/basis` informa por separado de la base marca-índice, la base spot-perpetuo y la base de los futuros con vencimiento.