История базиса (почасовая)
Почасовой ряд базиса по каждой бирже и в виде межбиржевого агрегата (медиана, среднее, взвешенное по OI) для одной монеты.
/api/sd/basis/historyЗапрос
Параметры запроса
| Имя | Тип | Обязательный | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|---|
| coin | string | Обязательный | — | — | Символ монеты без учёта регистра (например, `BTC`). При отсутствии или некорректном значении возвращается 400. Пример: BTC |
| kind | string | Необязательный | perp | perp, spot_perp | `perp`: цена маркировки относительно индексной цены той же биржи. `spot_perp`: цена бессрочного контракта относительно спотовой цены той же биржи. |
| range | string | Необязательный | 24h | 24h, 7d, 30d | Период выборки, одна точка в час. |
| exchange | string | Необязательный | — | — | Идентификатор одной биржи. По умолчанию: все биржи. Для неизвестного идентификатора возвращается 400. |
Пример запроса
curl -s "https://www.coinboss.com/api/sd/basis/history?coin=BTC"Поля ответа
Таблица полей формируется из реальных ответов, поэтому в ней перечислено ровно то, что возвращает эндпоинт. В путях a[] обозначает элементы массива, а {*} — объекты с динамическим ключом, например монетой или биржей.
| Поле | Тип | Единица | Описание |
|---|---|---|---|
| success | boolean | — | true, если запрос выполнен успешно. При ошибке тело ответа имеет вид `{ success: false, code, error, request_id }`. |
| schema | string | — | Идентификатор схемы этого ответа. Меняется только тогда, когда у существующего поля меняется смысл или тип. |
| now | number | ms | Время сервера в момент формирования ответа. |
| coin | string | — | Символ монеты (в верхнем регистре). |
| kind | string | — | `perp` или `spot_perp`. |
| range | string | — | Применённый период выборки. |
| interval | string | — | Шаг между точками ряда. |
| exchange | string|null | — | Идентификатор биржи (в нижнем регистре). |
| aggregate | array | — | Агрегат раздела по всем биржам. |
| aggregate[] | object | — | Агрегат раздела по всем биржам. |
| aggregate[].t | number | ms | Начало временного интервала. |
| aggregate[].median_pct | number | % | Медиана базиса по одному основному контракту на биржу. |
| aggregate[].mean_pct | number | % | Простое среднее по тому же набору, что и медиана. |
| aggregate[].oi_weighted_pct | number | % | Базис, взвешенный по открытому интересу; строки без веса OI не учитываются. |
| aggregate[].n_exchanges | number | — | Биржи в агрегате. |
| series | array | — | Один ряд на биржу. |
| series[] | object | — | Один ряд на биржу. |
| series[].exchange | string | — | Идентификатор биржи (в нижнем регистре). |
| series[].symbol | string | — | Символ контракта в формате хранения CoinBoss. |
| series[].primary | boolean | — | True для контракта, который представляет свою биржу в медиане и среднем. |
| series[].in_aggregate | boolean | — | True, если строка прошла правила включения. |
| series[].points | array | — | Пары `[hour start in ms, basis in %]` (начало часа в ms, базис в %), от старых к новым. |
| series[].points[] | array | — | Пары `[hour start in ms, basis in %]` (начало часа в ms, базис в %), от старых к новым. |
| series[].points[][] | number | — | Пары `[hour start in ms, basis in %]` (начало часа в ms, базис в %), от старых к новым. |
| history | object | — | Какая часть запрошенного периода доступна. |
| history.requested_from | number | ms | Начало запрошенного периода. |
| history.available_from | number | ms | Первый сохранённый час. |
| history.available_to | number | ms | Последний сохранённый час. |
| history.n_hours | number | — | Число часов, доступных в периоде. |
| history.expected_hours | number | — | Число часов в периоде при полных данных. |
| history.complete | boolean | — | True, если сохранён каждый час запрошенного периода. |
| coverage | object | — | Что входит и что не входит в эти значения. Сверьтесь с этим блоком, прежде чем сравнивать итоги с другим источником. |
| coverage.included_exchanges | array | — | Источники, актуальные данные которых учтены. |
| coverage.included_exchanges[] | string | — | Источники, актуальные данные которых учтены. |
| coverage.unavailable | array | — | Источники, которые не удалось включить, с указанием причины для каждого. Они никогда не учитываются как 0. |
| coverage.unavailable[] | object | — | Источники, которые не удалось включить, с указанием причины для каждого. Они никогда не учитываются как 0. |
| coverage.unavailable[].exchange | string | — | Идентификатор биржи (в нижнем регистре). |
| coverage.unavailable[].reason | string | — | Машиночитаемый код причины. |
| coverage.unavailable[].detail | string | — | Понятное человеку объяснение причины. |
| coverage.stale_excluded | array | — | Строки, не учтённые потому, что их последнее обновление выходит за окно актуальности. пусто в образцах, по которым построена таблица |
| method | object | — | Текстовое описание формул, использованных для этого ответа, по одной записи на поле. |
| method.series.points | string | — | Пояснение к формуле для `series.points`, обычный текст. |
| method.aggregate.median_pct | string | — | Пояснение к формуле для `aggregate.median_pct`, обычный текст. |
| method.aggregate.oi_weighted_pct | string | — | Пояснение к формуле для `aggregate.oi_weighted_pct`, обычный текст. |
| method.interval | string | — | Пояснение к формуле для `interval`, обычный текст. |
| meta | object | — | Происхождение данных и актуальность этого ответа. |
| meta.schema | string | — | Идентификатор схемы этого ответа. Меняется только тогда, когда у существующего поля меняется смысл или тип. |
| meta.source | array | — | Публичные эндпоинты источников, из которых собраны данные. |
| meta.source[] | object | — | Публичные эндпоинты источников, из которых собраны данные. |
| meta.source[].exchange | string | — | Идентификатор биржи (в нижнем регистре). |
| meta.source[].endpoint | string | — | Публичный эндпоинт источника, который читает коллектор (показан для сведений о происхождении данных; клиенты его не вызывают). |
| meta.observed_at | null | — | Метка времени, указанная источником для данных. |
| meta.received_at | number | ms | Время получения данных коллектором CoinBoss. |
| meta.fetched_at | number | ms | Время формирования этого ответа. |
| meta.window | string | — | Временное окно, которое охватывают значения. |
| meta.quality | string | — | FRESH, PARTIAL, STALE, BROKEN или UNAVAILABLE — оценка по меткам времени данных и покрытию. |
| meta.is_stale | boolean | — | True, если данные старше своего окна актуальности. |
| meta.cache_ttl_s | number | s | Время жизни кеша этого ответа. |
| meta.fallback | string | — | Что возвращает эндпоинт при сбое коллектора или источника. |
Сформировано 2026-11-11 23:00 UTC; использовано реальных ответов: 3.
Пример ответа
/api/sd/basis/history?coin=BTC · Реальный ответ, получен 2026-11-13 04:02:46 UTC. Длинные массивы и словари сокращены для отображения: series: элементов было 20; aggregate: элементов было 25; meta.source: элементов было 20; series[].points: элементов было 25; coverage.included_exchanges: элементов было 20.
- "success"true
- "schema""coinboss.sd.basis/1"
- "now"1794542288014
- "coin""BTC"
- "kind""perp"
- "range""24h"
- "interval""1h"
- "exchange"null
- "aggregate"
- "series"
- "history"
- "requested_from"1794452400000
- "available_from"1794452400000
- "available_to"1794538800000
- "n_hours"25
- "expected_hours"24
- "complete"true
- "coverage"
- "included_exchanges"
- "unavailable"
- "stale_excluded"
- "method"
- "series.points""[hour_ts, (mark_price - index_price) / index_price * 100] from the first collector round after each full hour; hours where the two timestamps were more than 60 …"
- "aggregate.median_pct""median over one primary contract per exchange in that hour; excluded: |value| > 10, contracts with no trade in 24 h, exchanges whose index is not a comparable i…"
- "aggregate.oi_weighted_pct""sum(value * oi_usd) / sum(oi_usd) over all included contracts that have an OI snapshot for the same hour (oi_history / sd_contract_hourly, single-sided); null w…"
- "interval""fixed 1 h buckets, no interpolation; missing hours are simply absent"
- "meta"
- "schema""coinboss.sd.basis/1"
- "source"
- "observed_at"null
- "received_at"1794538827406
- "fetched_at"1794542288014
- "window""24h"
- "quality""FRESH"
- "is_stale"false
- "cache_ttl_s"300
- "fallback""history is served as stored; hours without a snapshot are absent, never interpolated"
Проверенные образцы
Помимо примера выше, автопроверка вызывает этот эндпоинт с указанными параметрами и каждый раз сверяет схему.
| Параметры | HTTP | Задержка | Результат |
|---|---|---|---|
| coin=ETH&kind=spot_perp | 200 | 41 ms | Пройдено FRESH |
| coin=BTC&exchange=binance | 200 | 32 ms | Пройдено FRESH |
| coin=BTC&range=1y | 400 | 1 ms | Пройдено возвращает ожидаемую ошибку |
Проверено: 2026-11-13 03:58:08 UTC
Сведения
- Аутентификация
- Не требуется. Публичный эндпоинт.
- Лимит запросов
- 1200 запросов в минуту на один IP
- Серверный кеш
- 5m
- Пограничный микрокеш
- 10s
- Частота обновления
- Цикл коллектора — каждые 60 секунд; строка считается актуальной 180 секунд. Историю формируют почасовые снимки.
- Окно
- 24h / 7d / 30d, часовые интервалы.
- Источники данных
- Цена маркировки, индексная цена и последняя цена, публикуемые 21 биржей деривативов, а также спотовая цена той же биржи; данные собирает и хранит CoinBoss (sd_px_latest, sd_px_hourly).
- Покрытие бирж
- 21 биржа. Биржи, не публикующие индексную цену или цену маркировки, перечислены в `coverage.unavailable`; строки, у которых две ценовые составляющие разнесены более чем на 60 секунд, возвращают `null`. Строки, не включённые в агрегат, перечислены в `coverage.excluded_from_aggregate` с указанием причины.
- Пагинация
- Пагинации нет; `range` ограничивает число точек.
- Сортировка
- По возрастанию времени.
- Единицы измерения
- All basis values in percent. Prices in the quote currency of the contract (USDT / USDC / USD). `oi_usd` single-sided.
- Метод расчёта
- Each point is the snapshot taken in the first ten minutes of the hour. The OI weight of a historical hour is the open interest recorded in that hour; without it `oi_weighted_pct` is `null`.
- Метки времени
- Миллисекунды эпохи Unix (UTC), если в описании поля не указано иное
- Формат ответа
- json
- Стабильность
- Стабильный
- Доступен с
- 2026-11-11
Текущий статус
Сбор начат 2026-11-11. В ответе сообщаются `history.available_from`, `n_hours` в сравнении с `expected_hours` и `complete`; часы без данных отсутствуют, а не интерполируются.
Доступность за последние 30 дней
Пройдено 100% из 408 проверок
Ошибки
Неудачные вызовы имеют одинаковую структуру на всех эндпоинтах. Полный список приведён на странице ошибок. Ошибки и лимиты запросов →
| Код | HTTP | Значение | Что делать |
|---|---|---|---|
| INVALID_PARAM | 400 | Отсутствует обязательный параметр, или значение не принимается. `param` называет параметр, если он известен. | Не повторяйте запрос без изменений; исправьте его. |
| UNAUTHORIZED | 401 | Заголовок `CB-API-KEY` был отправлен, но ключ неизвестен или отозван. Для публичных данных ключ не нужен — уберите заголовок или используйте действительный ключ. | Не повторяйте запрос без изменений. |
| FORBIDDEN | 403 | Маршрут не входит в публичный API (внутренний или только для аккаунта). | Не повторяйте запрос. |
| NOT_FOUND | 404 | Неизвестный маршрут, либо запрошенная монета / биржа / фонд не существует. | Не повторяйте запрос; сверьте путь и идентификаторы с каталогом. |
| RATE_LIMITED | 429 | Запросов больше, чем позволяет поминутный лимит. `Retry-After` указывает, сколько секунд нужно подождать. | Дождитесь истечения `Retry-After`, затем повторите запрос с нарастающей задержкой. |
| INTERNAL | 500 | Непредвиденная ошибка сервера. Сообщение намеренно общее; при обращении указывайте `request_id`. | Повторите запрос один раз через несколько секунд; если ошибка сохраняется, сообщите о ней, указав ID запроса. |
| UPSTREAM_FAILED | 503 | Источник данных, стоящий за этим эндпоинтом, не ответил вовремя. Устаревшие или подменные значения вместо него не возвращаются. | Повторите запрос с нарастающей задержкой; проверьте страницу статуса. |
| UNAVAILABLE | 501 / 503 | Набор данных временно не готов (прогрев кеша), либо у эндпоинта пока нет законного публичного источника. | Повторите запрос позже; каталог помечает эндпоинты, недоступные по проектному решению. |
| REQUEST_FAILED | 200 | Некоторые более старые эндпоинты отвечают HTTP 200 с `success: false`. Всегда проверяйте `success`, а не только статус HTTP. | Зависит от сообщения; считайте запрос неудачным. |
Попробовать
/api/sd/basis/historyЧастичноstring — Coin symbol, case-insensitive (for example `BTC`). Missing or malformed values return 400.
string · по умолчанию perp — `perp`: mark price against the index price of the same exchange. `spot_perp`: perpetual price against the spot price of the same exchange.
string · по умолчанию 24h — Look-back range, one point per hour.
string — One exchange id. Default: all exchanges. An unknown id returns 400.
https://www.coinboss.com/api/sd/basis/history?coin=BTCДругие эндпоинты этой категории
- Базис фьючерсов (все площадки) /api/sd/basis
- История базиса (почасовая) /api/sd/basis/history
- Рейтинг монет по базису /api/sd/basis/rank
- Список базиса фьючерсов к споту /api/derivatives/basis
- Дневной спред цены BTC между Coinbase и Kraken /api/p3/cb-kr-spread
- Индекс премии Bitcoin на Coinbase /api/p3/coinbase-premium
- Список индекса премии бессрочных контрактов /api/p3/premium-index
- История индекса премии по одной монете /api/p3/premium-index/history
- Свечи индекса премии /api/p3/premium-index/klines
- Внебиржевая (OTC) премия USDT к курсам фиатных валют /api/usdt-premium
- Полный список базиса фьючерсов к споту /api/basis/list