Журнал изменений

Журнал изменений и версии

Что изменилось в API, текущая версия и правила совместимости.

v1Текущая версия
2026.11.12Ревизия каталога

Версионирование и совместимость

Версионирование

  • Публичный API имеет версию v1. Префикс пути — `/api`, номера версии в нём нет.
  • У каталога своя версия на основе даты (`catalog_version`, например 2026.11.11). Она меняется при любом изменении эндпоинтов, параметров или документации.
  • Каждый ответ эндпоинтов собственного слоя данных содержит идентификатор `schema` (например, `sd.oi.v1`). Новый идентификатор выпускается только тогда, когда существующее поле меняет смысл или тип.

Совместимость

  • Добавление эндпоинтов, необязательных параметров, полей ответа, значений перечислений или бирж — обратно совместимое изменение, которое может произойти в любой момент. Клиенты должны игнорировать неизвестные им поля.
  • Удаление или переименование поля, изменение его типа или единицы измерения, а также превращение необязательного параметра в обязательный — изменение, нарушающее совместимость. О нём объявляется здесь до выпуска.
  • Исправления — исключение: исправление неверного числа или обработки некорректных входных данных, которые раньше молча принимались, выпускается немедленно и указывается здесь в день выхода с пометкой о нарушении совместимости, если может потребоваться изменение клиентского кода.
  • Числа могут меняться из-за расширения покрытия (добавляется новая биржа или тип контракта). Покрытие всегда указывается в ответе, поэтому сравнивайте `coverage`, прежде чем сравнивать итоги.
  • Отсутствующие данные возвращаются как `null` и перечисляются в `coverage.unavailable`; они никогда не заменяются на 0 или оценку. Код, трактующий `null` как 0, будет работать неверно.

Вывод из эксплуатации

  • Эндпоинты с пометкой `legacy` продолжают работать, но в новых разработках следует использовать указанную замену.
  • Унаследованный эндпоинт удаляется не ранее чем через 90 дней после появления записи о его выводе из эксплуатации в этом журнале изменений.
  • Эндпоинты с пометкой `beta` обслуживают страницы сайта; набор их полей может меняться без уведомления за 90 дней, но каждое изменение всё равно указывается здесь.

Изменения

Добавлено2026.11.12Обратно совместимо

`/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.
Добавлено2026.11.12Обратно совместимо

`/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.
Изменено2026.11.12Обратно совместимо

`/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.
Изменено2026.11.12Обратно совместимо

`/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.
Изменено2026.11.12Обратно совместимо

При сбоях источников возвращается HTTP 503, JSON-тело ошибки сохраняется

  • Неудачные запросы, на которые раньше приходил ответ HTTP 502 или 504, теперь получают 503 с заголовком `Retry-After`. CDN, стоящий перед API, подменял тело ответов 502 и 504 собственным текстом, из-за чего терялись `code` и `request_id`; ответ 503 проходит без изменений. Значения `code` остались прежними.
  • Сбой источника данных, стоящего за одним эндпоинтом, больше не влияет на другие эндпоинты: шлюз повторяет запрос на другом экземпляре только при ошибках соединения и тайм-аутах.
  • `/api/sd/options/*` и `/api/sd/cme/overview` принимают названия монет, записанные китайскими иероглифами. Для монеты, у которой нет такого рынка, возвращается HTTP 200 с агрегатами `null` вместо 400.
  • История расчётов финансирования: пропуски внутри 30-дневного окна выявляются и дозаполняются для 150 самых торгуемых монет на Bybit, OKX, Gate и Bitget (на HTX — для 40), поэтому `cum_7d` и `cum_30d` полны для большего числа монет.
Исправлено2026.11.11Обратно совместимо

Индекс вариативности ликвидаций исправлен; при недоступном источнике возвращается 503

  • `/api/indicators/cdri`: дневной ряд был пустым, поскольку при группировке по дням метка времени в миллисекундах читалась как секунды. Теперь возвращается до 90 полных суток UTC с итогами ликвидаций; `current.days` (новое поле) — число использованных дней, а `current.cdri` / `current.liqCV` равны `null`, если дней меньше двух.
  • `/api/indicators/reddit-subs`: пока источник отклоняет запросы, эндпоинт отвечает HTTP 503 с кодом `UNAVAILABLE` вместо HTTP 500. Число подписчиков сохраняется, только если источник возвращает положительное число.
  • Тела ошибок в ответах HTTP 5xx больше не содержат текст ошибки внешнего источника в унаследованном поле `msg`; теперь в нём то же общее сообщение, что и в `error`.
Исправлено2026.11.11Нарушает совместимость

Записи, переставшие обновляться, помечаются и исключаются из итогов

  • `/api/coins/all` и `/api/coins/search`: запись монеты, не обновлявшаяся более 48 часов, возвращает `market_cap` и `mcap_rank` равными `null` с `is_stale: true` и сортируется после всех актуальных строк. Действующее правило дублируется в `stale_rule`.
  • `/api/derivatives/coins-full`: ровно одна строка на монету. Раньше символ, общий для нескольких записей монет, давал по строке на каждую запись; теперь строка содержит название, капитализацию и ранг крупнейшей записи, обновлённой в течение 48 часов, либо `null`, если такой нет. `mcap_rank` — новое поле.
  • `/api/reserves/overview`: у каждой строки есть `updated_at` и `is_stale`. `total` теперь суммирует только биржи, обновлённые в течение 36 часов; прежнее определение сохранено как `total_including_stale`, а исключённые биржи перечислены в `stale_exchanges`.
  • `/api/margin/rates` и `/api/margin-fee/matrix`: активы и ячейки, ставка которых перестала обновляться, содержат `is_stale: true`; пороги и счётчики возвращаются на верхнем уровне.
  • Дневные снимки глобальной капитализации с 2026-10-28 по 2026-11-11 пересчитаны после того, как в сумме были обнаружены две записи с невозможной капитализацией (больше, чем у Bitcoin). Теперь сборщики сохраняют для таких значений `null`.
Изменено2026.11.11Обратно совместимо

О сбоях источников сообщается в ответе — без ошибки и без видимости актуальных данных

  • `/api/indicators/mempool/pools`: если источник данных о майнинговых пулах не отвечает, вместо HTTP 500 возвращается последний сохранённый результат с `stale: true`, `cached_at` и `stale_reason`.
  • `/api/etf/funds`: новый объект `frozen_fields`, в котором названы поля уровня фонда, переставшие публиковаться источником 2026-10-08, с датой, к которой относится каждое значение.
  • `/api/indicators/halving`: новый объект `current_difficulty` (`value`, `as_of`, `source`). `difficulty` (прогресс пересчёта сложности) остаётся `null`, пока его источник недоступен.
  • `/api/browser/detect`: неудавшийся поиск в сети больше не выдаётся за адрес без активности. `kind` равно `lookup_failed`, если не удалось опросить ни одну сеть.
  • `/api/currency/flows`: в документации теперь перечислены 22 окна, которые эндпоинт реально отдаёт (от 5 минут до 1 года).
Изменено2026.11.11Нарушает совместимость

Неподдерживаемые значения параметров возвращают 400 вместо данных по умолчанию

  • `/api/derivatives/kline`: `interval=4h` возвращает настоящие 4-часовые свечи, построенные из свечей 1h по границам UTC (раньше возвращались свечи 1h). Любой интервал, кроме `1h`, `4h` и `1d`, возвращает 400.
  • Эндпоинты опционов в `/api/options/`: неподдерживаемое значение `currency` возвращает 400 вместо данных по BTC, а `coin` принимается как псевдоним на всех семи эндпоинтах.
  • `/api/etf/flows`, `/api/etf/detail`, `/api/etf/funds` и `/api/etf/holdings`: неподдерживаемое значение `asset` возвращает 400 вместо данных по BTC.
  • `/api/liquidations/coins`: неподдерживаемое значение `range` возвращает 400 вместо данных за 24h, а действующее окно дублируется в `range`.
  • `limit` ограничен значением 1000 на `/api/liquidations`, `/api/liquidations/largest` и `/api/derivatives/coins-full`. Нечисловой `limit` заменяется значением по умолчанию и не приводит к ошибке.
Исправлено2026.11.11Нарушает совместимость

Исправлены дневной объём и статистика исследований

  • `/api/volume/coin`: `daily_30d` складывал все снимки скользящего 24h-объёма за день и завышал дневной объём примерно в 24 раза. Теперь берётся последний снимок каждых суток UTC.
  • `/api/research/stats` с `topic=derivatives`: `volume_24h_usd` было завышено таким же образом и исправлено.
  • `avg_funding_rate_pct` в том же ответе теперь выражено в процентах — примерно в 100 раз больше исходной доли, которую оно возвращало раньше. Исправьте код, который умножал его на 100.
Исправлено2026.11.11Обратно совместимо

Старые рыночные эндпоинты игнорируют строки, переставшие обновляться

  • Затронуты: `/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` и `/api/derivatives/coins-full`.
  • Строки учитываются, только пока они актуальны: тикеры — в течение 1 часа, открытый интерес — 3 часов (CME: 120 часов), финансирование — 4 часов, соотношения лонг/шорт — 24 часов.
  • Итоги стали немного ниже, а некоторые списки — короче. Контракты, по которым прекратилась торговля, показывают цены `null` вместо последнего значения.
Исправлено2026.11.11Обратно совместимо

Контракты с множителем сопоставлены с базовой монетой

  • `/api/funding/coin`, `/api/funding/history`, `/api/funding/chart` и `/api/ls/coin` теперь сопоставляют контракты, котируемые в кратных количествах монеты (например, `1000PEPE`), с базовой монетой, поэтому по таким монетам отображается больше бирж.
Добавлено2026.11.11Обратно совместимо

Данные по опционам с шести площадок

  • Новые эндпоинты `/api/sd/options/overview`, `/api/sd/options/expiries`, `/api/sd/options/strikes`, `/api/sd/options/chain` и `/api/sd/options/history`.
  • Открытый интерес, номинальный объём за 24h, соотношения пут/колл, макс. боль, ATM IV, перекос 25-дельта и временная структура IV рассчитываются CoinBoss по спискам контрактов Deribit, Binance, Bybit, OKX, Gate и Coincall.
  • Номинальный объём и оборот по премии — отдельные поля, и они никогда не суммируются. Столбцы, которые площадка не публикует, равны `null` и перечислены в `coverage.field_gaps`.
  • История ведётся по часам и начинается 2026-11-11; более ранние часы задним числом не заполняются.
Добавлено2026.11.11Обратно совместимо

Данные по спотовым ETF, CME и CFTC из первичных публикаций

  • Новые эндпоинты `/api/sd/etf/overview`, `/api/sd/etf/funds` и `/api/sd/etf/history`, построенные на раскрытиях эмитентов. Итоги охватывают фонды, данные которых CoinBoss может собирать; все остальные фонды перечислены с указанием причины, а `totals_scope` всегда равно `covered_funds_only`.
  • Поток средств фонда рассчитывается CoinBoss по паям в обращении и NAV (либо по чистым активам и NAV). Использованная формула возвращается для каждого фонда в `flow_method`.
  • Новые эндпоинты `/api/sd/cme/overview` (дневной объём и открытый интерес по восьми продуктам CME) и `/api/sd/cme/cot` (еженедельное позиционирование по данным CFTC по категориям трейдеров).
  • Расчётные цены CME пока не собираются. Для значений в USD используется референсная цена с пометкой (`price_src`), и по этой причине обзор помечен как PARTIAL.
Добавлено2026.11.11Обратно совместимо

Глубина книги ордеров и проскальзывание

  • Новые эндпоинты `/api/sd/liquidity`, `/api/sd/liquidity/history` и `/api/sd/liquidity/rank`.
  • Глубина в пределах ±0.5 %, ±1 % и ±2 % от средней цены и проскальзывание рыночных ордеров на 10k / 100k / 1M USD рассчитываются по реальным снимкам книг ордеров 24 бирж, отдельно для бессрочных контрактов и спота.
  • Снимок, не достигающий границы диапазона, помечается `complete: false`, сообщается как нижняя граница и не входит в агрегат. `n_included` показывает, сколько книг ордеров входит в итог.
  • `/api/indicators/large-orderbook` — результат модели, а не книга ордеров; для ликвидности, стоящей в книге, используйте новые эндпоинты.
Добавлено2026.11.11Обратно совместимо

Базис по ценам маркировки и индексным ценам бирж

  • Новые эндпоинты `/api/sd/basis`, `/api/sd/basis/history` и `/api/sd/basis/rank`.
  • Базис бессрочного контракта = (mark − index) ÷ index × 100 на одной и той же бирже; базис «спот — бессрочный контракт» сравнивает бессрочный контракт со спотовым рынком той же биржи; для срочных контрактов добавляется значение в годовом выражении.
  • Агрегаты приводятся взвешенными по OI, взвешенными по объёму и в виде медианы. Строки, не прошедшие правила включения, всё равно возвращаются с `excluded_reason`.
  • Часовая история начинается 2026-11-11.
Изменено2026.11.11Обратно совместимо

Карты иконок используют публичный origin сайта

  • `/api/coin-icons` и `/api/exchange-icons` возвращают URL иконок на `https://www.coinboss.com` — том же origin, что и у всех остальных публичных эндпоинтов. Пути (`/api/coin-icon/{coin}`, `/api/exchange-icon/{exchange}`) не изменились.
Не рекомендуется2026.11.11Обратно совместимо

`/api/basis/list` и `/api/cftc/cot` помечены как унаследованные

  • Используйте `/api/sd/basis/rank` вместо `/api/basis/list` и `/api/sd/cme/cot` вместо `/api/cftc/cot`. Унаследованные эндпоинты продолжают работать.
Изменено2026.11.11Обратно совместимо

`/api/liquidation-events` теперь отдаёт только записи CoinBoss

  • Список строится из ордеров ликвидации, полученных CoinBoss из лент бирж. Его история начинается 2026-08-19; для более ранних дат строки не возвращаются.
  • Имена и типы полей не изменились.
Удалено2026.11.11Обратно совместимо

Служебные эндпоинты больше не доступны из интернета

  • `/api/health/alerts`, `/api/health/server`, `/api/health/history` и `/api/health/ch-read` отвечают 404 на публичные запросы. Они никогда не входили в публичный API.
  • Для статуса сервиса используйте `/api/meta/status`, для актуальности данных — `/api/meta/quality`.
Добавлено2026.11.11Обратно совместимо

Центр разработчика и машиночитаемые метаданные API

  • Новые эндпоинты `/api/meta/catalog`, `/api/meta/endpoint`, `/api/meta/status`, `/api/meta/quality`, `/api/meta/changelog` и `/api/meta/openapi`.
  • Таблицы полей и примеры ответов в документации формируются из реальных ответов автопроверкой API, которая вызывает каждый публичный эндпоинт каждые 5 минут.
  • Статус эндпоинта (available / partial / degraded / down / unavailable) теперь определяется по этим реальным вызовам, а не по состоянию процесса.
Изменено2026.11.11Обратно совместимо

Единое тело ошибки и ID запросов

  • Каждый ответ содержит заголовок `X-Request-Id`; в телах ошибок он повторяется как `request_id`.
  • Тела ошибок теперь имеют вид `{ success: false, code, error, request_id }` на всех эндпоинтах. `error` остаётся строкой, поэтому существующие клиенты продолжают работать.
  • Неизвестные маршруты `/api/*` отвечают JSON 404 (`NOT_FOUND`) вместо HTML-страницы.
  • Ответы HTTP 429 содержат `Retry-After`.
  • Сообщения ошибок 5xx носят общий характер; внутренние подробности больше не выводятся.
Добавлено2026.11.11Обратно совместимо

Эндпоинты собственного слоя данных с покрытием и качеством в каждом ответе

  • Новые эндпоинты `/api/sd/oi`, `/api/sd/funding`, `/api/sd/liquidations`, `/api/sd/volume`, `/api/sd/ls`, `/api/sd/coin` и `/api/sd/quality`.
  • Открытый интерес приводится отдельно для контрактов с маржой в USDT, USDC и в монете и для срочных контрактов; указано, какие площадки публикуют значения с двусторонним учётом.
  • Финансирование возвращается в исходном виде (с указанием интервала), приведённым к 8h и в годовом выражении; площадки, контракт которых не торгуется, исключаются и перечисляются.
Не рекомендуется2026.11.11Обратно совместимо

`/api/market/long-short` помечен как унаследованный

  • Используйте `/api/market/long-short-v2` для списочного представления или `/api/sd/ls` для соотношений по счетам / по позициям / тейкеров в разбивке по биржам.
Изменено2026.10.31Обратно совместимо

Поля иконок возвращают пути на том же источнике (same-origin)

  • Поля вроде `image_url` / `icon` теперь содержат путь CoinBoss (`/api/coin-icon/...`) вместо стороннего URL.
  • Для монеты без проверенной иконки возвращается `null`; клиентам следует отображать собственную заглушку.
Исправлено2026.10.24Обратно совместимо

Устаревшие строки больше не попадают в агрегаты

  • Итоги по открытому интересу, финансированию и лонг/шорт используют только строки, обновлённые в пределах окна актуальности (для CME, публикующей данные раз в день, оно длиннее).
  • Контракты, снятые с торгов, перестают учитываться в итогах, как только их последнее обновление выходит за пределы окна.

Унаследованные эндпоинты

Сохранены для совместимости. Они продолжают работать; в новых интеграциях следует использовать замену.

ЭндпоинтЗаменаОписание
/api/market/long-short/api/market/long-short-v2Сохранён для существующих интеграций. Используйте `/api/market/long-short-v2` (добавляет фильтр по бирже) или `/api/sd/ls` (по биржам; соотношения по счетам, по позициям и тейкеров хранятся раздельно).
/api/basis/list/api/sd/basis/rank`apr_pct` — это `basis_pct × 3 × 365`, простая экстраполяция текущего базиса бессрочного контракта, как если бы он выплачивался каждые 8 часов; это не доходность финансирования и не доходность срочного контракта. `/api/sd/basis` сообщает базис «цена маркировки — индекс», «спот — бессрочный контракт» и базис срочных контрактов по отдельности.