Документация по API
Данные DepthFeed
Справочник API
Обнаружение рынков, исторические книги заказов, ценовые бары и живые потоки. Полное руководство по интеграции v3.
Базовый URL REST https://api.depthfeed.com/v3. Детали WebSocket и предоставленного FIX соединения описаны ниже; нажмите / для поиска содержимого.
Содержание▾
DepthFeed является исторической книгой заявок глубина для рынков прогнозов — записанные полные лестницы заявок и предложений с обеих сторон для Polymarket, Kalshi, и Limitless. Не только цена последней сделки или лучший уровень книги: каждое сохранённое наблюдение включает уровни и размеры заявок. Это данные, необходимые для бэктеста исполнения с учётом фактической ликвидности.
Поставляется через лимитированный REST API — обнаружение рынка, метаданные и последние + исторические снимки книги заказов, пагинация по ключам с отдельным контролем общего доступа и исторической нагрузки. Получайте именно ту глубину, которая нужна вашей стратегии, и воспроизводите её в своей системе.
Покрытие книги заявок 3 площадки, 7 активов (btc · eth · sol · xrp · doge · bnb · hype) и повторяющиеся крипторынки с ростом/падением на каждой площадке (5м, 15м, 1ч, 4ч, 24ч, в зависимости от площадки).
Цены — вторая половина продукта. /v3/bars обслуживает OHLCV ценовые бары для Акции и ETF, зарегистрированные в США, крипто спотовые пары и вечные фьючерсы на каждом плане, с базовым разрешением в одну минуту. Они используют одни и те же часы, схему и окно истории плана с книгами выше, так что стратегия может читать акции и действовать по контракту без согласования временных меток двух поставщиков.
Спорт есть на каждом плане — весь REST-интерфейс: книги Polymarket и Kalshi, коэффициенты букмекерских контор, счета и травмы в основных лигах. Что добавляет платный план — это низколатентная живая книга через WebSocket, одна одновременная книга на Quant и три на Desk. Перейдите к Спортивные эндпоинты.
Новичок в оценке источников данных? руководство покупателя охватывает пять критериев, которые определяют, можно ли действительно использовать данные рынка прогнозов для бэктестинга, и как DepthFeed выполняет каждый из них.
Используйте эту страницу как рабочий контракт, когда LLM или агент отвечает на вопросы о DepthFeed или пишет интеграционный код. Предпочитайте документированный ответ API предположениям из рыночных меток, примеров или описаний третьих лиц.
Канонические правила
- Использовать
https://depthfeed.com/docsкак источник истины для названий конечных точек, полей, лимитов и плановых ограничений. - Выберите конечную точку, соответствующую задаче:
/v3/demoдля примера без ключа,/v3/marketsдля обнаружения,/v3/snapshotsдля исторических книг,/v3/streamдля живых книг,/v3/sports/marketsдля сопоставления спорта, и/v3/whoamiдля ограничений аккаунта. - Не делайте вывод о кросс-площадочной эквивалентности из
kind, метки, порядок массива илиcross_venue_key. Подтвердитьcontract_mapping.status=matchedи условия расчётов перед обработкойcross_venue_market_keyкак эквивалентное. - Сохраняйте null, временные метки, идентификаторы площадок и частичные метаданные. HTTP 200 и общий счёт не доказывают полноту ответа.
- Следуйте за непрозрачными курсорами до
has_moreложно, фильтры остаются фиксированными при обходе страницы. - Для исправлений опрашивайте
updated_since, обновление по стабильной идентичности рынка или условия, сохранение отмен с null, включение разрешённых рынков и перекрытие только после успешного обхода. - Для бэктестов используйте полную глубину бид/аск и размеры ордеров в книге. Не описывайте данные средней цены или последней цены как исполнимые исполнения.
- Укажите аутентификацию, план, окно истории, ограничение скорости и предположения о площадке. Если документация не подтверждает факт, отметьте его как неподтверждённый.
Контракт ответа
Ответы, сгенерированные моделью, должны указывать точную конечную точку и якорь документации, показывать минимальный запрос, объяснять используемые поля ответа, различать нативные ID площадки и канонические ключи, а также отделять измеренные факты, текущий охват, выводы и неизвестные. Никогда не утверждайте связь DepthFeed с площадкой.
1. Создать бесплатный аккаунт и создайте ключ API через панель управления. Ключи выглядят как df_… и показываются один раз.
2. Сделайте первый аутентифицированный вызов:
curl https://api.depthfeed.com/v3/whoami \
-H "Authorization: Bearer df_your_key_here"3. Ответ — JSON-конверт. Этот пример показывает аккаунт Quant; ваши лимиты зависят от вашего плана:
{
"data": {
"user_id": "acct_…", "plan": "pro",
"rps": 25, "rpm": 1000, "history_days": 30, "coins": "all", "sports": true,
"bars": { "max_symbols_per_request": 8 }
},
"meta": { "request_id": "req_…", "timestamp": "2026-06-07T02:27:09.532Z" }
}4. Получите последние BTC рынки вверх/вниз, затем глубину книги заказов для одного из них — смотрите Рынки и Снимки.
Аутентифицированные конечные точки требуют ключ API. Публичные маршруты включают /v3/health, /v3/overview и /v3/demo. Принимайте в любом формате — обе схемы поддерживаются:
# Authorization header (recommended)
curl https://api.depthfeed.com/v3/btc/markets -H "Authorization: Bearer df_your_key"
# or the X-API-Key header
curl https://api.depthfeed.com/v3/btc/markets -H "X-API-Key: df_your_key"/v3/stream также требует ключ, но аутентифицируется один раз при подключении — WebSocket не может нести заголовок на запрос, поэтому принимает X-API-Key, Authorization: Bearer, или ?api_key= параметр запроса. См. Живой поток.Ключи создаются для каждого аккаунта через панель управления и имеют план, задающий лимит скорости, окно истории и доступ к активам/площадкам. Ключи хранятся SHA-256 хэшировано в состоянии покоя — исходное значение показывается ровно один раз при создании. Отзыв ключа в панели управления вступает в силу немедленно. Квоты на пользователя, а не на ключ — дополнительные ключи не умножают ваш лимит.
| Сбой | Статус | код |
|---|---|---|
| Ключ не предоставлен | 401 | AUTH_MISSING |
| Неизвестный / отозванный / некорректный ключ | 401 | AUTH_INVALID |
| Хранилище ключей временно недоступно | 503 | AUTH_UNAVAILABLE |
Все конечные точки работают под единым версией базового пути:
https://api.depthfeed.com/v3Требуется TLS (Let's Encrypt, HTTP/2). Текущая версия API — v3, построено с паритетом PolyBackTest (тот же конверт, курсорная пагинация и перечисление кодов ошибок) на нашем расширенном наборе данных (3 площадки, 7 активов). Устаревшее v1/v2 пространства имён не обслуживаются.
Каждый успешный ответ имеет одинаковый конверт:
{
"data": … , // object (single) or array (list)
"pagination": { … }, // present only on list endpoints
"meta": { "request_id": "req_…", "timestamp": "2026-06-07T02:27:09.532Z" }
}Ошибки имеют одинаковую структуру, с HTTP-статусом, установленным для код:
{
"error": { "code": "INVALID_COIN", "message": "…", "details": { … } },
"meta": { "request_id": "req_…", "timestamp": "…" }
}Каждый ответ — успешный или с ошибкой — содержит meta.request_id, также возвращается как X-Request-Id заголовок. Указывайте его в запросах поддержки.
Ветка по error.code — он стабилен. HTTP-статус подразумевается кодом.
| код | HTTP | Значение |
|---|---|---|
AUTH_MISSING | 401 | В запросе отсутствует API-ключ. |
AUTH_INVALID | 401 | Ключ неизвестен, отозван или имеет неправильный формат. |
COIN_NOT_IN_PLAN | 402 | Возвращается только анонимным демо-интерфейсом (пример BTC). Каждый тарифный план аккаунта, включая Explorer, включает все монеты. |
ENDPOINT_NOT_IN_PLAN | 402 | Возвращается только анонимным демо-интерфейсом. Каждый тарифный план аккаунта включает все площадки; история ограничена вашим тарифным окном. |
SYMBOL_LIMIT_EXCEEDED | 402 | Больше символов в одном запросе /v3/bars, чем размер пакета вашего плана (3 / 8 / 16 / 32). Разделите список и запросите заново — это ограничивает ОДИН вызов, а не количество символов, которые вы можете получить. |
WINDOW_TOO_WIDE | 400 | Один запрос /v3/bars охватывает больше времени, чем позволяет количество строк в рамке (45 дней при 1 мин, 180 при 5 мин, год при 15 мин и 1 час, десять лет при 1 дне). Пагинация с лимитом и курсором. |
HISTORY_LIMIT_EXCEEDED | 403 | start_time / timestamp старше окна вашего плана. |
INVALID_COIN | 400 | Монета не входит в число семи поддерживаемых. |
INVALID_CURSOR | 400 | Курсор повреждён. |
INVALID_TIMESTAMP | 400 | Не ms-эпоха или ISO-8601. |
INVALID_INTERVAL | 400 | интервал, а не длительность, как 30с, 1м, 5м, 1ч, 1д (1с–1д). |
INVALID_PARAMETER | 400 | Параметр запроса или переменная URL были отклонены; details.parameter names указывает их. Охватывает исполнение, отправленное без интервала, и пустой сегмент {ticker}/{slug}/{asset_id}/{market_id} — путь с двумя последовательными косыми чертами, что почти всегда означает, что переменная шаблона не была подставлена. |
MISSING_PARAMETER | 400 | Отсутствовал обязательный параметр; details.parameter names указывает его. |
INVALID_LIMIT | 400 | лимит не является положительным целым числом. |
INVALID_JSON | 400 | Тело запроса не является валидным JSON. Только POST маршруты могут его возвращать. |
INVALID_RANGE | 400 | Включено /v3/bars: end_time не позже start_time. Возвращает оба значения. |
INVALID_SYMBOL | 400 | Включено /v3/bars: символ не входит в число обслуживаемых нами. Напишите пару так, как это делает площадка — BTCUSDT, а не BTC. |
INVALID_TIMEFRAME | 400 | Включено /v3/bars: не один из 1Min, 5Min, 15Min, 1Hour, 1Day. details.supported перечисляет их. |
INVALID_VENUE | 400 | Включено /v3/bars: venue не является us-equities, binance, или binance-futures. |
INVALID_WINDOW | 400 | Включено /v3/screener/{asset}/{window}: окно не входит в число 5m, 15m, 1h, 4h, 24h. |
INVALID_METRIC | 400 | По временным рядам Binance-прогнозов: metric не является chance, price, или last_trade. |
INVALID_MARKET_ID | 400 | Включено /v3/binance-prediction/{market_id}/*: идентификатор не является беззнаковым целым числом. |
BAD_REQUEST | 400 | Сервис баров отклонил запрос, и его собственное сообщение передается дальше. Читайте error.message. |
MARKET_TICKER_REQUIRED | 400 | Была передана серия Kalshi, для которой требуется точный обнаруженный тикер рынка. |
BATCH_TOO_LARGE | 400 | Больше чем 10 подзапросов в пакете. |
BATCH_INVALID_PATH | 400 | Подзапрос не является GET /v3/ путём (статус по подписке). |
TICKS_NOT_IN_PLAN | 402 | Маршруты на уровне тиков доступны только для Desk. |
MARKET_NOT_FOUND | 404 | Рынка с таким id / slug / тикером нет. |
SNAPSHOT_NOT_FOUND | 404 | Для запроса не была захвачена ни одна книга — рынок может ещё не открыться для торговли, истечь или быть вне охвата. |
CANDLES_NOT_AVAILABLE | 404 | Для этого тикера Kalshi не записывается серия свечей. |
GAME_NOT_FOUND | 404 | Игры с таким game_slug нет. |
ENDPOINT_NOT_FOUND | 404 | Путь не соответствует ни одному маршруту v3. |
SPORTS_UNKNOWN_ROUTE | 404 | Путь находится в /v3/sports, но не соответствует ни одному спортивному маршруту. GET /v3/sports перечисляет все. |
SPORTS_METHOD_NOT_ALLOWED | 405 | Неверный HTTP-метод для спортивного маршрута. |
RESPONSE_TOO_LARGE | 413 | Страница превышает потолок ответа. Уменьшите предел, сузьте окно или добавьте интервал. |
RATE_LIMIT_BURST | 429 | Превышен всплеск в секунду. |
RATE_LIMIT_SUSTAINED | 429 | Превышен устойчивый лимит в минуту. |
HISTORY_CONCURRENCY_LIMIT | 429 | Другой запрос снимка или пакетной истории всё ещё выполняется для этой учётной записи (details.scope = "account"). |
HISTORY_POOL_BUSY | 429 | Общий пул запросов архива насыщен серверно, а не лимитом вашей учётной записи (details.scope = "shared_pool") — повторите с экспоненциальной задержкой. |
SERVICE_PROFILE_UNAVAILABLE | 503 | Конфигурация обслуживания вашего аккаунта не может быть прочитана. Временная ошибка; details.retry_after в секундах. |
HISTORY_METER_UNAVAILABLE | 503 | Учёт использования истории снижен, поэтому чтение истории не допускается. Временное; содержит details.retry_after. |
HISTORY_FALLBACK_UNAVAILABLE | 503 | Диапазон, отсутствующий в живом хранилище, не мог быть получен из архива прямо сейчас. Временно; несет details.retry_after. |
BARS_LICENCE | 502 | История цен не лицензирована для этого диапазона. Сузьте окно вместо повторной попытки. |
HISTORY_START_RATE_LIMIT | 429 | Этот аккаунт достиг максимума исторических запросов, разрешённых его профилем на эту минуту. Повторите попытку через: 60. |
HISTORY_DELIVERY_LIMIT | 429 | Разрешение на историческую доставку учетной записи исчерпано. Повторите попытку позже: 3600. |
TRIAL_DELIVERY_LIMIT | 429 | Разрешение на данные, включенное в бесплатную пробную версию, исчерпано. Это не ошибка и не исправляется ожиданием — подпишитесь на полный пакет разрешений. |
INTERNAL_ERROR | 500 | Неожиданная ошибка сервера — повторите попытку, затем свяжитесь с нами с идентификатором запроса. |
AUTH_UNAVAILABLE | 503 | Проверка ключа временно недоступна — повторите попытку позже. |
UPSTREAM_UNAVAILABLE | 503 | Сервис глубины, стоящий за API, не ответил (details.retryable = true). Это касается нас, а не вашего тикера — повторите попытку с экспоненциальным замедлением вместо того, чтобы рассматривать рынок как отсутствующий. |
BARS_BUSY | 503 | Сервис баров сейчас находится на пределе одновременности, а не в простое. Передает details.retry_after в секундах — подождите и повторите попытку, тот же запрос обычно выполняется успешно. |
BARS_UNAVAILABLE | 503 | Сервис баров не работает. Повторите попытку с задержкой. |
BARS_UPSTREAM | 502 | Поставщик баров ответил ошибкой. |
SPORTS_UNAVAILABLE | 503 | Спортивный шлюз не ответил. О нас, а не о вашем рынке. |
SPORTS_UPSTREAM | 502 | Спортивный шлюз ответил с ошибкой. |
ISOLATED_ROUTE_UNAVAILABLE | 503 | Только Desk: выделенный узел истории Desk недоступен. Повторите попытку с экспоненциальной задержкой. |
ISOLATED_ROUTE_FAILED | 502 | Только Desk: выделенный узел истории Desk ответил с ошибкой. |
403 HISTORY_LIMIT_EXCEEDED несёт details.max_history_days и details.oldest_allowed. 429 также устанавливает Retry-After и X-RateLimit-* заголовки.
Ограничения — это токен-бакет на пользователя с двумя окнами: в секунду всплеск и поминутный устойчивый лимит. Превышение любого из них возвращает 429 с кодом совпадения и Retry-After за 1 секунду.
Explorer — это один запрос в секунду, без отдельного ограничения по минутам. Это скорость, а не разовый лимит: цикл, который выполняется максимально быстро, потратит большую часть запросов на 429. Читать X-RateLimit-Remaining, или просто делайте паузу в секунду между вызовами.
Рекламируемые значения rps/rpm — это общие ограничения доступа REST, не ставки доставки архива. Исторические snapshot, пакеты с чтением истории и другие тяжёлые маршруты используют отдельные ограничения параллелизма и доставки на уровне аккаунта. Эти ограничения применяются независимо от общего токен-бакета и не меняют окно истории плана.
Explorer, Quant и Research в настоящее время принимают один исторический запрос в работе на аккаунт. Desk принимает 6 параллельных запросов исторических снимков на аккаунт через выделенный пул запросов Desk. Перекрытие возвращает 429 HISTORY_CONCURRENCY_LIMIT с Retry-After: 2; повторите попытку только после завершения активного запроса. Общие значения rps/rpm не должны использоваться для вывода исторического параллелизма.
Историческое чтение также может быть отклонено, когда ваша учетная запись все еще находится в пределах своего собственного лимита, потому что общий пул запросов к архиву перегружен. В этом случае возвращается 429 HISTORY_POOL_BUSY с details.scope = "shared_pool" вместо "account". Ветвление по details.scope: на account, уменьшите параллелизм; при shared_pool, уменьшение параллелизма не поможет — повторите с экспоненциальной задержкой.
/v3/bars имеет собственный потолок параллелизма, независимый от обоих вышеуказанных контролей. Превышение приводит к немедленному отказу с 503 BARS_BUSY и details.retry_after в секундах, а не в очереди — быстрый отказ, который можно повторить, полезнее медленного успеха, который нельзя запланировать. Рассматривайте это точно как 429: отступите и повторите тот же запрос. Барры также имеют два ограничения, которые вовсе не являются ограничениями по скорости — размер пакета (402 SYMBOL_LIMIT_EXCEEDED) и диапазон запроса (400 WINDOW_TOO_WIDE) — обе исправляются разделением запроса, а не ожиданием.
| Заголовок | Значение |
|---|---|
X-RateLimit-Limit | Ваш лимит всплеска в секунду (rps). |
X-RateLimit-Remaining | Оставшиеся токены Burst в эту секунду. |
Retry-After | Секунд ожидания (установлено на 429). |
X-Request-Id | Эхо meta.request_id. |
Смотреть Тарифы и доступ для rps/rpm по уровню.
Шаблон исторического запроса
Не держите активнее, чем подтвержденная одновременность истории. Используйте ограниченный start_time иend_time, курсорная пагинация и limit=1000; опустить include_count и запрашивать полную лестницу только при необходимости. Добавьте interval когда достаточно пониженной серии. DepthFeed — продукт с измеряемым доступом по запросам: массовые файлы, офлайн-архив, репликация баз данных и систематическое зеркалирование архива не включены.
Конечные точки списка используют непрозрачные курсор ключевого набора — O(1) на любой глубине. Пропустить ?cursor= с предыдущей страницы pagination.next_cursor; остановите, когда has_more является false.
"pagination": {
"next_cursor": "6274…", // opaque; feed back as ?cursor=
"has_more": true,
"limit": 50,
"count": 50,
"total_count": 1284 // only when ?include_count=true
}Общие параметры запроса
| Параметр | Тип | Примечания |
|---|---|---|
limit | int | Максимум рынков 100, максимум снимков/сделок 1000. По умолчанию: 50 / 100. |
cursor | строка | Непрозрачный курсор ключевого набора с предыдущей страницы. |
include_count | булево | Добавляет total_count (требует COUNT — опционально). |
start_time | ts | ms-epoch или ISO-8601. Старше вашего окна → 403. |
end_time | ts | ms-epoch или ISO-8601. |
от | ts | Псевдоним для start_time, принимается на всех маршрутах. |
до | ts | Псевдоним для end_time, принимается на всех маршрутах. |
interval | dur | Только снимки. Снизить частоту до одной книги на интервал (последняя в каждом): 30с, 1м, 5м, 1ч … до 1д. Оставьте пустым для полного разрешения. |
fill | перечисление | Только снимки, и требуется interval. ffill возвращает одну строку на бакет, перенося последнюю книгу в бакеты без захвата. По умолчанию выключено. |
от/до и start_time/end_time это одно и то же окно. Оба написания работают везде; если запрос каким-то образом содержит оба варианта, start_time/end_time выигрыш.
Временные метки принимают любой миллисекунды с эпохи (например, 1780774485780) или ISO-8601 (например, 2026-06-07T02:27:09Z). Каждое значение, попадающее в базу, проверяется и защищено от инъекций. Окно истории плана применяется ко всем списковым и snapshot endpoints: явный start_time за пределами окна возвращает 403; опущенное значение прижимается к нижнему пределу окна.
Дау́нсемплинг с interval
По умолчанию эндпоинты снимков возвращают каждый записанное изменение книги — полное событие-ориентированное разрешение. Когда нужен только периодический сэмпл (например, одна книга в минуту для графика или грубого бэктеста), добавьте ?interval= и сервер сворачивает каждый временной интервал в один снимок: это самая последняя книга в этом бакете. Это значительно меньше данных по сети, чем загрузка каждого тика и фильтрация на клиенте.
# one snapshot per minute instead of the raw stored series
curl "https://api.depthfeed.com/v3/btc/markets/{id}/snapshots?interval=1m&include_orderbook=true" \
-H "Authorization: Bearer df_your_key"Принимает продолжительность: простое число секунд или значение с единицей измерения — 30s, 1m, 5m, 15m, 1h, 4h, 1d — от 1s до 1d. Интервалы выровнены по эпохе, поэтому 1m привязывается к границам минут по стендовому времени. Курсорная пагинация и include_count применяются к пониженным строкам (total_count становится числом бакетов). Опустите его, передайте raw, или передайте 0 для полного разрешения. Неопознанное значение возвращает 400 INVALID_INTERVAL. Работает на каждом конечном пункте снимков — Polymarket, Kalshi, Limitless, PredictFun, Binance и спортивных.
Интервал выбирает; не интерполирует. Бакет появляется в ответе только в том случае, если книга была захвачена внутри него. Два часа в ?interval=1m охватывает 121 минутных границ, но возвращает только минуты с захватом — обычно десять-тридцать на рынке с низкой активностью котировок. Это полный рекорд для окна, а не усечённая страница.
Заполнение пробелов с помощью fill=ffill
Книга заявок сохраняет своё состояние, пока что-то его не изменит, поэтому минута без захвата не означает пропущенные данные — книга предыдущей минуты всё ещё была книгой. ?fill=ffill явно говорит: одна строка на бакет для всего окна, с последней захваченной книгой, перенесённой в бакеты без захвата. Это то, что нужно, когда серия должна выравниваться по фиксированным часам, ценовому бару или другой площадке.
# a dense 1-minute grid: 121 rows for a 2-hour window, gaps and all
curl "https://api.depthfeed.com/v3/btc/markets/{id}/snapshots?interval=1m&fill=ffill&from=1788202800000&to=1788210000000" \
-H "Authorization: Bearer df_your_key"fill требует interval; само по себе возвращает 400 INVALID_PARAMETER. Допустимые значения: ffill (также previous, prev, true, 1) и none (также false, 0, по умолчанию). Поддерживается на тех же маршрутах, что и interval. Список, тик, свеча и orderbook/latest маршруты не имеют сетки для заполнения и игнорируют параметр, а не отклоняют его, так что клиент, который отправляет его везде, всё равно получает нормальный 200 от них.
Собственные часы строки меняются, когда вы включаете fill включено. С interval одна строка — это реальный захват, поэтому id и time/timestamp это момент записи — 04:37:59.926 для корзины 04:37. С fill=ffill каждая строка представляет бакет, включая захваченные, поэтому эти поля становятся границами бакета (04:37:00.000) и момент захвата сдвигается к as_of_ts. Ничего не теряется в любом случае, но график, построенный из обоих, будет смещён до одного интервала, если вы не читаете одно и то же поле в обоих. Если вам нужна сетка и момент захвата вместе, запросите fill=ffill и читать as_of_ts.
Чтение заполненной строки
Ответы с исполнением добавляют три поля, и только ответы с исполнением их содержат. Запрос без fill возвращает точно ту же форму, что и всегда.
| Поле | Значение |
|---|---|
filled | 0 когда строка — это захваченная книга, 1 когда она была перенесена. |
as_of_ts | Когда книга в этой строке была фактически записана. В переносной строке это старше, чем бакет, и расстояние между ними — это именно насколько устарела книга. null когда не было предыдущей книги для переноса. |
as_of_ts_ms | Тот же момент, что и ms-эпоха. |
Временная метка корзины и as_of_ts очень близки, но не равны даже в захвате, потому что захват произошёл где-то внутри интервала, а не на его границе: 2026-09-02T00:50:00.000Z с as_of_ts из 2026-09-02T00:50:44.437Z является реальной минутой, в которой была реальная книга.
Первая строка заполненного окна обычно является перенесенной. Сетка заполняется новейшим записанным стаканом до окно открылось, поэтому серия начинается с реального состояния, а не пустого. Его as_of_ts может быть на часы старше первого бакета, и это честный ответ.
Когда окно открывается раньше рынка, более ранней книги для переноса нет. Эти ведущие бакеты возвращаются с пустой лестницей и as_of_ts: null — сгенерированы, но нечего в них помещать. Ограничение start_time к собственному старту рынка, чтобы пропустить их.
Этот resolution блок
Каждый ответ, использующий ?interval= несёт resolution блокировать, чтобы можно было отличить запись разреженного захвата от усеченной страницы без второго запроса.
"resolution": {
"interval_secs": 60,
"buckets_in_range": 121, // minute boundaries the window spans
"buckets_filled": 29, // minutes that held a CAPTURE
"rows_returned": 121, // rows on this page
"fill": "ffill", // absent when fill is off
"complete": true // false while a next_cursor is outstanding
}buckets_filled считает захваты, а не строки, поэтому это означает то же самое с fill включено так же, как и выключено. Это число для сравнения с buckets_in_range при оценке качества котировок рынка. С fill выключено, rows_returned и buckets_filled согласен. При включении разрыв между ними показывает, сколько сетки было перенесено. Если buckets_filled намного ниже buckets_in_range, запросите более крупный интервал или пропустите interval и читать каждый захват.
Четыре фиксированных плана. plan поле, возвращаемое /v3/whoami является необработанным значением в правом столбце.
| План | plan | Цена | Общий rps | Общий rpm | Исторический параллелизм | Объединённая история | Wallet Intelligence | Крипто | Спортивный REST | Стаканы спортивных рынков в реальном времени |
|---|---|---|---|---|---|---|---|---|---|---|
| Explorer | free | $0 | 1 | — | 1 | 7 дней | 1 сохранено · 3 аудита | Все активы + площадки | Все спортивные площадки | Только REST |
| Quant ★ | pro | $29/мес | 25 | 1,000 | 1 | 30 дней | 5 сохранено · 10 аудитов | Все активы + площадки | Все спортивные площадки | 1 |
| Research | scale | $99/мес | 50 | 3,000 | 1 | 90 дней | 10 сохранено · 25 аудитов | Все активы + площадки | Все спортивные площадки | 2 |
| Desk | предприятие | $249/мес | 100 | 6,000 | 6 параллельно | Полный архив | 20 сохранено · 50 аудитов | Все; выделенный пул исторических запросов Desk | Все спортивные площадки | 3 |
Нет дополнений Polymarket или Kalshi. Обе спортивные площадки используют один ключ, схему, лимит скорости и окно истории; обновление увеличивает историю, пропускную способность и одновременность живой книги.
Что охватывает Explorer
Explorer — это реальный ключ для реальных данных, а не песочница: все семь монет, каждая площадка, семь дней истории, весь спортивный REST-интерфейс, ценовые бары и скринер. Площадка — это не то, что покупает план. Что покупает апгрейд — это окно истории, пропускная способность, подписки на потоки и данные тиков. Каждый ключ возвращает полную лестницу; единственная усечённая книга в API — демонстрация без ключа с восемью уровнями с каждой стороны.
Семейство маршрутов, которое Explorer не может достичь, это тики, которые доступны только на Desk на каждой площадке и возвращают 402 TICKS_NOT_IN_PLAN ниже этого. Анонимный демонстрационный интерфейс — без ключа вообще — ограничен выборкой BTC и является единственным, кто отвечает 402 COIN_NOT_IN_PLAN.
Столбцы rps/rpm описывают допуск запросов, а не одновременное сканирование архива. Параллелизм исторических запросов и управление доставкой разделены. Исторические чтения Desk используют выделенный пул запросов только для Desk, изолированный от обычного трафика запросов по плану, без удаления элементов управления на уровне учетной записи. Пул общий для всех учетных записей Desk и не является инфраструктурой, принадлежащей клиенту или эксклюзивной для учетной записи.
Ограничения применяются на стороне сервера:
- Рынки — каждый план, включая Explorer, охватывает каждую монету, каждую площадку и полный стакан заказов; что ограничивает — это пропускная способность, история и тики, а не доступ.
- История — окно вне вашего плана →
403 HISTORY_LIMIT_EXCEEDED; обновление расширяет окно, но никогда список рынков. - Спорт — /v3/sports/* REST-интерфейс включён в каждый план; одно и то же окно истории плана применяется к обеим площадкам.
- История —
start_timeза пределами вашего окна →403 HISTORY_LIMIT_EXCEEDED. - Ценовые бары — /v3/bars подчиняется тому же окну истории, что и глубина, и дополнительно ограничивает символы на запрос (3 / 8 / 16 / 32), сверх которых возвращает
402 SYMBOL_LIMIT_EXCEEDED. - Потоковая передача — ограничения применяются при подписке на /v3/stream; каждый план транслирует каждую площадку — Explorer ограничен одной одновременной подпиской, платные уровни увеличивают количество.
/v3/healthбез авторизацииПроверка живости, без аутентификации. Возвращает { status: "ok", service, time }.
/v3/whoamiВаш план, лимиты скорости, единое окно истории, доступ к монетам и спорт — самый быстрый способ проверить работоспособность ключа.
Рынки Polymarket вверх/вниз по монете, объединённые с эталоном расчёта (цена открытия/закрытия, победитель, объём). {coin} является одним из btc · eth · sol · xrp · doge · bnb · hype.
/v3/{coin}/marketsФильтры: type (5м/15м/1ч/4ч/24ч), resolved (true/false), плюс общие параметры времени и пагинации.
/v3/{coin}/markets/{market_id}/v3/{coin}/markets/by-slug/{slug}Один рынок по идентификатору или slug. Пример ответа (ключи цен за монету динамичны, как и ссылка):
{ "data": {
"market_id": "2456720", "event_id": "566750",
"slug": "btc-updown-5m-1780860300", "market_type": "5m",
"start_time": "…", "end_time": "2026-06-07T19:30:00Z",
"condition_id": "0xb7ce…",
"clob_token_up": "15598…", "clob_token_down": "51823…",
"btc_price_start": null, "btc_price_end": null,
"winner": null, "final_volume": null, "final_liquidity": null, "resolved_at": null
}, "meta": { … } }*_price_*, winner, resolved_at, final_volume, и final_liquidity — являются null до урегулирования рынка и заполнения справочных данных (~12–24 ч после урегулирования)./v3/polymarket/marketsЭтот вся площадка Polymarket, не только крипто рынки роста/падения. Маршруты выше адресуют рынки по монете, поэтому могут охватить только рынки с монетой — выборы, геополитику, акции и FX без монеты и URL там нет. Здесь перечислено всё.
Фильтры: ?q= (поиск по слагу), ?type=event для всего, что не является лестницей вверх/вниз, плюс ?coin=, ?event= и ?outcome=. Рынки здесь индексируются по CLOB asset_id (ID токена); передайте это в /v3/polymarket/{asset_id}/snapshots для истории глубины или /v3/polymarket/{asset_id}/ticks для ленты. Не-криптовалютные рынки содержат пустой base_asset — у них нет монеты, и мы её не придумываем.
Каждая строка содержит category и tags. Лестницы вверх/вниз crypto; каждый другой рынок получает свою категорию из собственных тегов событий площадки, в том же написании, что и Polymarket US (спорт, crypto, politics, geopolitics, finance, macro, technology, science, climate, culture), с необработанными тегами слагов в tags и null где у площадки нет ярлыка. Фильтруйте с помощью ?category=politics,macro или ?exclude_category=sports,crypto: через запятую, без учёта регистра, можно комбинировать; исключение сохраняет немаркированные рынки. ?closed=true|false является торговым флагом площадки (лестница закрывается, как только её end_time прошло). Для зеркала, ?updated_since= (ISO-8601, дата или миллисекунды эпохи) возвращает только строки, у которых изменилось содержимое, метка или состояние закрытия с указанного времени; у каждой строки updated_at является этой меткой. resolved не является фильтром на этом маршруте и сообщается в разделе meta.ignored_params.
/v3/polymarket/{asset_id}/snapshotsИстория снимков книги заявок для любого рынка Polymarket — спорта, политики, новостей и крипто — ограничена окном истории вашего плана. Та же структура и пагинация, что и для маршрутов снимков по монетам.
/v3/polymarket/{asset_id}/ticksпредприятиеОбщая лента площадки для того же asset_id ключи.
Временной ряд глубины стакана заявок для рынка с ценой базового актива, прикрепленной к каждому снимку.
/v3/{coin}/markets/{market_id}/snapshotsДобавить ?include_orderbook=true для получения полной лестницы (по умолчанию опущена для облегчения нагрузки). Окно времени + курсорная пагинация. Добавьте ?interval=1m (или 5m, 1h, …) для понижения частоты до одной книги на интервал вместо исходной сохранённой серии — см. Пагинация и фильтры. Ответ списка — это массив с pagination блок:
{ "data": [{
"id": "1780774485780", "time": "2026-06-06 19:34:45.780",
"market_id": "2456720", "btc_price": 60606.68,
"price_up": 0.505, "price_down": 0.495,
"orderbook_up": { "bids": [[0.50, 304.25], …], "asks": [[0.51, 30.0], …] },
"orderbook_down": { "bids": [ … ], "asks": [[0.50, 304.25], …] }
}], "pagination": { … }, "meta": { … } }/v3/{coin}/markets/{market_id}/snapshots/at/{timestamp}Единичный снимок, ближайший к временной метке (в пределах ±2 с). {timestamp} является ms-эпохой или ISO-8601. В отличие от конечной точки списка, data является один объект (тот же формат строки) с нет pagination блок; отсутствие совпадений в пределах ±2 с возвращает 404 SNAPSHOT_NOT_FOUND.
{ "data": {
"id": "1780774485780", "time": "2026-06-06 19:34:45.780",
"market_id": "2456720", "btc_price": 60606.68,
"price_up": 0.505, "price_down": 0.495,
"orderbook_up": { "bids": [[0.50, 304.25], …], "asks": [[0.51, 30.0], …] },
"orderbook_down": { "bids": [ … ], "asks": [[0.50, 304.25], …] }
}, "meta": { … } }Уровни являются [price, size]. price_up является серединой лучшей заявки/предложения; price_down = 1 − price_up. Книга orderbook_down сторона выводится как бинарное дополнение к книге вверх (down = 1 − up, размеры сохранены). Цена монеты — ближайший предшествующий тик через ASOF join — точный для 1ч/4ч/24ч, маркированный прокси Binance для 5м/15м.
Каждая строка — это полный стакан на момент его отметки времени, никогда не дельта относительно предыдущей строки, поэтому не нужно восстанавливать состояние из изменений. Для потока изменений используйте тики.
Другие маршруты снимков площадок
Тот же контракт — окно, курсор, interval, fill, окно истории плана — обслуживается одним маршрутом на площадку. Они отличаются идентификатором и тем, как представлены две стороны бинарного рынка, поскольку сами площадки так делают.
| Маршрут | Идентификатор | Форма книги заказов |
|---|---|---|
/v3/{coin}/markets/{market_id}/snapshots | Числовой market_id от /v3/{coin}/markets | Вид события на монету: price_up/price_down только, если вы добавите include_orderbook=true |
/v3/polymarket/{asset_id}/snapshots | Идентификатор токена — clob_token_up/clob_token_down, или asset_id от /v3/polymarket/markets | Книга одного токена: bids и asks массивы, всегда включены |
/v3/kalshi/{ticker}/snapshots | ticker от /v3/kalshi/markets | yes и нет лестницы |
/v3/limitless/{slug}/snapshots | slug от /v3/limitless/markets | bids, asks, и midpoint |
/v3/predictfun/{id}/snapshots | market_id от /v3/predictfun/markets | Вложенный up и down объекты, каждый с bids/asks |
/v3/{coin}/{venue}/snapshots | venue является spot или futures — не название биржи | 20-уровневая базовая книга: bids, asks, price |
Маршрут Polymarket охватывает всю площадку, а не только крипто-лестницы — выборы, спорт и все остальное, что перечисляет Polymarket. Маршрут на монету — это вид крипто вверх/вниз с присоединенной базовой ценой.
Исходный лентопоток: каждое отдельное изменение стакана, не выборочная серия snapshot. Где снимки дают вам книгу в определённые моменты времени, тики дают каждое изменение между ними — что нужно для рабочего процесса маркет-мейкинга или исследования исполнения, чтобы узнать, где была книга непосредственно перед сделкой, или как долго уровень оставался до снятия.
Только для Enterprise. Другие планы получают 402 TICKS_NOT_IN_PLAN.
/v3/{coin}/markets/{market_id}/ticksпредприятиеPolymarket, полученный из потока дельт CLOB. По умолчанию возвращаются оба токена исхода и помечены outcome; сужайте с помощью ?outcome=up или ?outcome=down.
История: лента непрерывна с 2026-06-25 (проверено 2026-09-02) и продолжает накапливаться, поэтому надёжное окно растёт на день каждый день. Дни до этого есть в архиве, но не непрерывны — отсутствует 61 дней между 2026-04-14 и непрерывным периодом — поэтому бэктест, требующий непрерывной серии, должен начинаться не раньше 2026-06-25.
Покрытие: рынки вверх/вниз на 5m, 15m и 24h окна, по всем семи активам. The 1h и 4h семейства вверх/вниз являются не в настоящее время в тиковой ленте — используйте снимки для тех.
{ "data": [{
"id": "1780774485780", "time": "2026-06-06 19:34:45.780",
"received_ms": "1780774485812", "outcome": "up",
"token_id": "7194…", "side": "BUY", "price": 0.505, "size": 1240.0
}], "pagination": { … }, "meta": { … } }/v3/kalshi/{ticker}/ticksпредприятиеНовое — захват тиков Kalshi начался 2026-08-07. Истории тиков Kalshi до этой даты нет; лента накапливается с неё. Kalshi снимки остаются доступными в полном окне истории.
Покрытие — это скользящее подмножество, а не каждый рынок Kalshi: семь криптоактивов, приоритетно по ближайшему сроку истечения, с ограниченным числом рынков, записываемых одновременно. Свяжитесь с нами, если вам нужно покрытие конкретной серии.
Получено из аутентифицированного orderbook_delta WebSocket. kind является snapshot для строк, которые закрепляют книгу (чтобы любое запрошенное окно начиналось с полного состояния) или delta для изменения. delta является знаковым изменением размера и size является размером в состоянии покоя по этой цене после это. seq является собственным порядковым номером Kalshi для сессии захвата — он увеличивается ровно на один за сессию, так что вы можете проверить полноту участка ленты, а не просто верить нам. Последовательность snapshot строки отмечают новую сессию, где она перезапускается. Ограничьте одну сторону с помощью ?side=yes или ?side=no.
Восстановление книги: рассматривать каждый snapshot запускается как жёсткий сброс книги этого рынка, затем применяется delta строки в seq порядок в сессии. Сортировать по seq, не через time: временные метки самой площадки не монотонны по уровням в пределах одной миллисекунды, в то время как seq является. Любой seq шаг, отличный от +1 внутри сессии, означает пропуск в ленте для этого отрезка; захват автоматически переподключается и делает новый снимок при обнаружении пропуска, поэтому следующий snapshot прогон — это точка, с которой книга снова становится полной.
{ "data": [{
"id": "1780774485780", "time": "2026-06-06 19:34:45.780",
"received_ms": "1780774485791", "seq": "418823",
"kind": "delta", "side": "yes", "price": 0.62, "delta": -85.0, "size": 240.0
}], "pagination": { … }, "meta": { … } }Страницы содержат до 10000 строки (по умолчанию 1000) и поддерживают курсорную пагинацию, как и все другие списковые endpoints. Многие тики часто имеют одинаковую миллисекунду, поэтому курсоры несут позицию в пределах временная метка — пагинация загруженного рынка никогда не разделяет и не пропускает строки с одинаковым моментом времени.start_time/end_time и окно истории вашего плана применяются как обычно.
Книга и лента сделок базового актива с Binance. {venue} является spot или futures. Книга содержит 20 уровней с каждой стороны.
/v3/{coin}/{venue}/latest/v3/{coin}/{venue}/snapshotsПоследняя история книги / постраничной книги. Каждый снимок: price (среднее), bids, asks, timestamp.
/v3/{coin}/{venue}/trades/v3/{coin}/{venue}/trades/latest1-секундные OHLCV-свечи с агрессивным разделением покупок/продаж — точные, 1:1 с эталоном:
{ "data": [{
"id": "1780747762000", "timestamp": "2026-06-06 12:09:22.000",
"price_open": 61097.1, "price_high": 61097.1,
"price_low": 61097.09, "price_close": 61097.1,
"total_volume": 0.01667,
"aggressive_buy_volume": 0.0156, "aggressive_sell_volume": 0.00107,
"num_trades": 3
}], "pagination": { … }, "meta": { … } }OHLCV бары для акций и ETF, торгуемых в США, спотовых пар Binance и бессрочных фьючерсов. Одна минута — самое мелкое разрешение; более крупные интервалы агрегируются из неё.
/v3/barssymbols является списком, разделённым запятыми. timeframe является одним из 1Min, 5Min, 15Min, 1Hour или 1Day (по умолчанию 1Min). start_time, end_time, limit и cursor ведут себя точно так же, как и в каждой другой коллекции здесь.
id является временной меткой, а не уникальным ключом. Лента глубины поступает каждые 100 мс, и биржа иногда присваивает двум разным стаканам одну и ту же миллисекунду, поэтому страница может законно содержать две строки с одной id и две разные лестницы. Пагинация обрабатывает совпадение — курсор — это ключ, поэтому общий миллисекундный момент никогда не разделяется между страницами — но клиент, который индексирует строки по id одна строка тихо отбросит одну из двух. Ключ на строке или на (id, sequence within the page).
venue необязательно и выбирает рынок напрямую: us-equities, binance (спот) или binance-futures (постоянные контракты). Оставьте пустым, и будет разрешён простой символ — сначала акции, затем спот Binance. Укажите имя, и вы получите этот рынок или ничего, что нужно, когда строка может означать два инструмента.
limit является барами за символ. Запрос без этого параметра вообще не разбивается на страницы, потому что естественный запрос баров — это целое окно, и размер страницы по умолчанию тихо вернёт короткую серию — что неотличимо от пропуска данных. При постраничной загрузке все серии обрезаются в один момент и pagination.next_cursor возобновляется ровно там: без перекрытия, без разрыва.
curl -H "X-API-Key: $DEPTHFEED_KEY" \
"https://api.depthfeed.com/v3/bars?symbols=AAPL,BTCUSDT&timeframe=1Hour&start_time=2026-08-01T00:00:00Z"{ "data": {
"timeframe": "1Hour",
"license_class": "source_attributed_public_serving",
"attribution": "Market data via QuarterTrace. Source-attributed; not a consolidated (SIP) feed.",
"series": [{
"symbol": "AAPL", "timeframe": "1Hour", "assetClass": "equity",
"source": "yahoo_finance", "derived": true,
"t": [1785974400000, 1785978000000],
"open": [306.83, 307.04], "high": [307.9, 308.1],
"low": [306.1, 306.55], "close": [307.04, 307.8],
"volume": [1043200, 887400]
}]
}, "meta": { … } }Как правильно писать символ
Акции и ETF имеют обычный тикер: AAPL, SPY, BRK-B. Криптопара пишется так, как её называет площадка, поэтому это BTCUSDT вместо BTC. Перпетуальный фьючерс принимает .P суффикс — BTCUSDT.P, AAPLUSDT.P — потому что спотовая пара и бессрочный контракт — разные инструменты с разными ценами, а плоское пространство символов, тихо выбравшее один для вас, означало бы выбор рынка, который измеряет ваша стратегия.
BTCU, ETHU и WLDU. Каждый разрешается в акции, решено по вселенной символов, а не по диапазону дат — поэтому ответ не меняется при сдвиге окна. Криптопара всё ещё доступна под своим написанием площадки.Производные кадры
Акции собираются в 1Min и 1Day; криптовалюта собирается по 1Min. Всё остальное агрегируется при чтении, и серия указывает, что именно с помощью derived. Агрегированный бар берёт открытие первого бара и закрытие последнего, экстремумы максимума и минимума, а также сумму объёма за интервалы, выровненные по UTC.
Ограничения
Три отдельных ограничения, и они завершаются тремя разными кодами. Окно истории вашего плана применяется здесь, как и везде — после него, 403 HISTORY_LIMIT_EXCEEDED. Символов на запрос: 3 в Explorer, 8 в Quant, 16 в Research, 32 в Desk; сверх этого, 402 SYMBOL_LIMIT_EXCEEDED. Один запрос может охватывать только столько времени, сколько позволяет количество строк в фрейме — 45 дней при 1Min, 180 при 5Min, год при 15Min и 1Hour, десять лет при 1Day — по которому возвращается 400 WINDOW_TOO_WIDE. Страницы с помощью limit и cursor для обхода диапазона шире, чем один запрос.
Четвертый ответ — это не предел, а момент: 503 BARS_BUSY означает, что сервис баров сейчас достиг потолка параллелизма. Он содержит details.retry_after в секундах, как отказ из-за ограничения скорости, и тот же запрос обычно успешен при следующей попытке — рассматривайте это как откат и повтор, а не как сбой.
403 HISTORY_LIMIT_EXCEEDED, с oldest_allowed в деталях). Открытый исходный код Конструктор стратегий читает эту точную конечную точку с вашим собственным ключом, так что бэктест там охватывает ровно столько, сколько ваш план здесь.attribution строка, и каждая серия называет свою собственную source; оба должны сопровождать данные, если вы их отображаете.Криптоконтракты Kalshi — полная глубина Да/Нет, которой нет в эталоне. 21 серии для всех 7 активов: 15-минутные KX{ASSET}15M, порог KX{ASSET}, и направленное KX{ASSET}D. Пороговые и направленные серии запускаются одновременно для часовых, дневных и недельных рынков — market_type несёт фактическое окно каждого рынка.
/v3/kalshi/marketsФильтры: ?coin= (базовый актив), ?type= (окно), и точное ?series= (например, KXBTC15M). Для исторических загрузок передавайте start_time и end_time здесь сначала и используйте возвращённые нативные тикеры площадки. Не создавайте идентификаторы тикеров Kalshi из UTC-меток времени; конвенция часов тикеров площадки менялась исторически.
По умолчанию список ограничен рынками, чья книга заказов была захвачена в окне вашего плана, поэтому каждая строка имеет доступные /snapshots. Передать ?include_uncaptured=true для всего каталога площадки: все серии, которые перечисляет Kalshi, включая спорт, политику, экономику, погоду и развлечения. Эти строки содержат свечи, а не книги; depth_captured в каждой строке указано, какой вид вы смотрите.
Каждая строка содержит category, собственная метка серии площадки (Politics, Спорт, Крипто, Climate and Weather, …). Фильтруйте с помощью ?category=politics,elections или ?exclude_category=sports,crypto; оба принимают списки, разделенные запятыми, сравнивают без учета регистра и могут быть объединены. Используйте category для этого, а не base_asset: base_asset считывается из префикса серии и имеет смысл только на крипто-строках.
/v3/kalshi/{ticker}/orderbook/latestСамая свежая полная книга да/нет для тикера. yes/нет являются [price, size] массивы (цены в 0–1 долларах).
{ "data": {
"ticker": "KXHYPED-26JUN0717-T73.9999", "series": "KXHYPED",
"base_asset": "hype", "market_type": "24h",
"id": "1780…", "timestamp": "…",
"yes": [[0.62, 1400], …], "no": [[0.38, 900], …]
}, "meta": { … } }/v3/kalshi/{ticker}/snapshotsЭтот исторический yes/no серии глубины для одного точно обнаруженного рыночного тикера — та же форма строки, упорядочена по времени получения, окно времени + курсорная пагинация (include_count опционально, максимум 1000). История книги Kalshi, захваченная вперёд из циклического REST опроса. Эффективная частота варьируется в зависимости от активного набора рынков и лимитов API; использует тот же шаблон исторической конечной точки, что и Polymarket и Limitless /snapshots, так что глубина Kalshi тоже пригодна для бэктеста. Передача серии, такой как KXBTC15M, или вымышленный исторический тикер возвращает явную ошибку обнаружения вместо вводящей в заблуждение пустой страницы.
/v3/kalshi/{ticker}/candlesЕжечасно OHLC из заявок на покупку yes, заявок на продажу yes и цены сделки, плюс volume и open_interest. Это единственная история, существующая для большей части каталога Kalshi: Kalshi не предоставляет историческую книгу заявок, поэтому рынок, закрывшийся до начала захвата нашей книги, не имеет /snapshots и нет /ticks — но у него есть свечи, охватывающие до года назад.
Окна времени и пагинация курсором, как /snapshots (макс 5000 строк), ограничено окном истории вашего плана. ?interval= выбирает период свечи; только 1h записывается, и любое другое значение возвращает явную ошибку с указанием существующего, а не пустую страницу. Свечи хранятся как записаны и никогда не пересэмплируются, поэтому более короткий период никогда не синтезируется из более длинного.
price является null когда в период не было торгов — около 95% таких случаев. Стороны котировок всегда реальные, поэтому тихий час всё равно показывает положение книги. Покрытие — долгоживущие рынки (открыты дольше 24 часов); краткосрочные криптолестницы захватываются с полной детализацией /snapshots и /ticks вместо этого, и запрос их свечей возвращает 404 которые это утверждают.
{ "data": [{
"ticker": "KXFEDDECISION-26JUL-H26", "series": "KXFEDDECISION",
"market_type": "1w", "id": "1786168800000", "timestamp": "…",
"period_minutes": 60,
"yes_bid": { "open": 0.56, "high": 0.58, "low": 0.55, "close": 0.57 },
"yes_ask": { "open": 0.64, "high": 0.65, "low": 0.62, "close": 0.63 },
"price": { "open": 0.60, "high": 0.61, "low": 0.59, "close": 0.61 },
"volume": 240, "open_interest": 1180
}], "pagination": { … }, "meta": { … } }Сравниваете все три площадки одновременно? Начните с скринер между площадками вместо объединения вызовов по площадкам.
Polymarket US — это контрактный рынок, назначенный CFTC, и отдельная площадка от Polymarket: рынки идентифицируются по slug, отсутствует condition_id и нет asset_id, и здесь ничего не связано с поверхностями Polymarket выше. Только платные планы. Эта площадка находится в живом тестировании: каталог, цены и сделки доступны во всех категориях, а покрытие книги ещё расширяется.
/v3/polymarket-us/marketsКаталог площадок, все категории, сначала самые новые закрытия и постраничная навигация курсором. Каждая строка содержит собственные category (спорт, crypto, politics, climate, culture, macro, technology, finance, geopolitics, science). Фильтруйте с помощью ?category=politics,macro или ?exclude_category=sports,crypto: через запятую, без учёта регистра, можно комбинировать. Другие фильтры: ?coin=, ?type= (15m, 1h, futures, …), ?series=, ?closed=, ?resolved=, start_time/end_time по времени закрытия. Для зеркала, ?updated_since= возвращает только строки, содержимое которых изменилось с того времени (листинг, закрытие, изменение статуса); каждая строка updated_at является этой меткой. sports_market_type является полем площадки, которое площадка также заполняет вне спорта; это не спортивный дискриминатор, category является.
/v3/polymarket-us/{slug}/orderbook/latest/v3/polymarket-us/{slug}/snapshotsСамая свежая книга и серия захваченных книг для одного идентификатора. Глубина на этой площадке записывается с дня начала захвата и хранится 14 дней; рынок вне этого окна возвращает 404 здесь даже если существует строка каталога. Покрытие по рынкам: лестницы вверх/вниз захватываются непрерывно, категории с долгими сроками — частично.
/v3/polymarket-us/{slug}/prices/v3/polymarket-us/{slug}/trades/v3/polymarket-us/{slug}/settlementМинутные цены, лента исполнения площадки и расчет по каждому рынку. Цены и сделки существуют для большинства каталогизированных рынков во всех категориях; строки расчетов появляются после того, как площадка сообщает результат.
Limitless Exchange — CLOB на Base с повторяющимися рынками вверх/вниз криптовалюты на 5м и 15м. Глубина захватывается в реальном времени через websocket книги заявок (даже быстрые книги 5 минут записываются). {slug} выглядит как btc-up-or-down-15-min-1780798512077.
/v3/limitless/marketsТекущие открытые слоты. Фильтры: ?coin= и ?type= (5м/15м).
/v3/limitless/{slug}/orderbook/latestСамая свежая глубина L2 для идентификатора (заявки по убыванию, предложения по возрастанию):
{ "data": {
"slug": "btc-up-or-down-15-min-1780798512077", "condition_id": "0x…",
"base_asset": "btc", "market_type": "15m",
"id": "1780798…", "timestamp": "2026-06-07 02:27:09.532", "midpoint": 0.5,
"bids": [[0.45, 200.0], …], "asks": [[0.46, 120.0], …]
}, "meta": { … } }/v3/limitless/{slug}/snapshotsЭтот исторический серии глубины для одного слага — одинаковая форма строки, упорядоченная по времени получения, с оконным ограничением и курсорной пагинацией. Это история стакана, захваченная вперёд.
Крипторынки предсказаний Binance Wallet на базе Predict.fun, нормализованные в отдельное пространство имён DepthFeed. Начальный каталог охватывает рынки роста/падения BTC, ETH и BNB.
/v3/binance-prediction/marketsФильтровать с помощью ?coin=btc, ?type=5m, или ?status=resolved. Результаты включают идентификаторы рынка/темы, метаданные условий и токенов, разрешение, выигравший исход, объём, ликвидность, количество участников, цепочку и контракт биржи.
/v3/binance-prediction/{market_id}/orderbook/latest/v3/binance-prediction/{market_id}/snapshotsПоследняя и историческая полная глубина L2. Стандартизированная панель жизненного цикла BTC 15 минут начинается 26 июнь 2026; стабильный минутный опережающий захват на отслеживаемых живых рынках начинается 26 июля. Более ранние неактивные книги не могут быть реконструированы из данных о расчетах.
/v3/binance-prediction/{market_id}/timeseries?metric=chance/v3/binance-prediction/{market_id}/timeseries?metric=price/v3/binance-prediction/{market_id}/timeseries?metric=last_trade/v3/binance-prediction/{market_id}/tradesВероятность, отображаемая цена и образцы последних сделок хранятся отдельно и начинаются с 17 июля 2026. Маршрут сделок зарезервирован, пока исторические исполнения восстанавливаются из логов BNB Smart Chain и в настоящее время возвращают пустой исторический набор данных.
/v3/predictfun/* пути остаются совместимыми псевдонимами. Клиенты используют ключ DepthFeed; ключ Binance или привязка кошелька не требуются.Начните здесь для всего, что связано с несколькими площадками. Скринер отвечает на основной вопрос — как сейчас оценивается тот же рынок «вверх или вниз» на Polymarket, Kalshi и Limitless? — в один запрос, так что вам не нужно самостоятельно объединять три endpoint площадки (с тремя разными идентификаторами). Каждый план видит все три площадки; окно истории плана — единственное отличие при просмотре истории ячейки.
/v3/screenerСетка: одна ячейка на актив с последней вероятностью «вверх», лучшей ценой покупки/продажи и расчетной ссылкой каждой площадки. Заполнитель/пустой стакан сообщает null вместо бессмысленного 0.50.
{ "data": {
"assets": ["btc","eth","sol","xrp","doge","bnb","hype"],
"windows": ["5m","15m","1h","4h","24h"],
"cells": [{ "asset": "btc",
"polymarket": { "up": 0.735, "down": 0.265, "best_bid": 0.73, "best_ask": 0.74, "price_to_beat": 62764.0 },
"kalshi": { "up": 0.71, "down": 0.29, … },
"limitless": { "up": 0.75, "down": 0.25, "slug": "btc-up-or-down-…", … } }],
"paid": true
}, "meta": { … } }/v3/screener/{asset}/{window}Углубление в один (актив, окно): полная L2 книга на каждой площадке рядом (books.polymarket / books.kalshi / books.limitless), плюс базовая спотовая серия и расчёт price_to_beat — единственный вызов, который действительно нужен для кросс-площадочного бэктеста или арбитражного скрина.
/v3/overviewбез авторизацииОбзор временных рядов по активам и площадкам (ценовые сегменты по окнам) — основа графика обзора на панели. Публичный, ключ не требуется; выберите с помощью ?asset=.
/v3/batchВыполнить до 10 GET-запросов /v3/ запросы в одном круговом путешествии. Каждый подзапрос отправляется независимо и получает свой статус.
curl -X POST https://api.depthfeed.com/v3/batch \
-H "Authorization: Bearer df_your_key" -H "Content-Type: application/json" \
-d '{ "requests": [
{ "id": "a", "method": "GET", "path": "/v3/btc/markets?limit=1" },
{ "id": "b", "method": "GET", "path": "/v3/limitless/markets?type=5m&limit=1" },
{ "id": "c", "method": "GET", "path": "/v3/bars?symbols=BTCUSDT&timeframe=1Hour" }
] }'Глубина контракта и ценовые бары базового актива за один круговой путь — это пара, для которой это существует — /v3/bars является подзапросом, как и любой другой.
Доходность { data: [ { id, status, body }, … ] } с внешним 200. Более 10 подзапросов → 400 BATCH_TOO_LARGE; не-GET или не-/v3/ путь получает на подписчика 400 BATCH_INVALID_PATH.
Обновлено в сентябре 19, 2026. См. текущие инструкции по интеграции для идентификаторов, исправлений, постраничной навигации и проверок полноты.
Идентификаторы событий, кандидатов и контрактов
| Поле | Значение |
|---|---|
game_slug | Уникальный идентификатор игры на площадке; не является ключом для объединения между площадками. |
cross_venue_key | Тот же поддерживаемый матч или объект; не эквивалентные условия выплат. |
contract_mapping.candidate_key | Поддерживаемая группа субъектов, содержащаяся в фикстуре; изменяемая после исправлений и потенциально многие-ко-многим. |
contract_mapping.outcomes[].participant_key | Канонический участник для токена исхода, независимо от порядка в массиве. |
cross_venue_market_key | Подтверждённый ключ эквивалентного контракта; null, если статус не совпадает. |
contract_mapping.outcomes[].cross_venue_outcome_key | Подтверждённый ключ результата; null без проверенной эквивалентности контракта. |
Существующий kind, outcomes и tokens остаются нативными для площадки простыми строками; исходы и токены выравниваются по индексу в одной строке. fixture_participants предоставляет канонических участников события независимо от типа рынка. market_family и market_period нормализуйте поддерживаемые метки видов без утверждения эквивалентности линий, сторон или правил. Общие метки Yes/No и Over/Under не назначаются команде. Однотокеновый контракт Kalshi YES остаётся одним токеном; его NO дополнение не является автоматически оппонентом.
Кандидаты по линии Moneyline оцениваются по лигам, когда можно идентифицировать матч и два исхода с участниками. Распространение с половинчатой единицей, сравнения по общему и командному тоталам теперь используют sports-lines-v1, contract_spec и сторону по исходу. Нативные половинные/четвертные периоды заменяют общие метки. Явные нативные предложения по количеству могут нормализоваться до границ половинных единиц при согласии страйка, метрики и субъекта. Теннисные геймы/сеты, киберспортивные игры/карты, угловые, тачдауны, филдголы и наступательные ярды сохраняют отдельные метрики. Первые пять тоталов — это суммарные пробеги; отдельные иннинги остаются отдельными. Целочисленные/ничейные и разделённые линии, неизвестные метрики, фьючерсы и пропсы не поддерживаются; смотрите контракт сопоставления для семантики подписанного спреда. Текущий реестр проверенных профилей не содержит одобренных эквивалентных пар; подтверждённые ключи поэтому равны null. Кандидатные ключи поддерживают группировку субъектов с отдельно проверенным решением по расчету; они не заменяют подтверждённое соответствие. Дата более широкого подтверждённого сопоставления не установлена.
Верхний уровень cross_venue_market_key и contract_mapping.cross_venue_market_key являются идентичными псевдонимами из одного сопоставления. Читайте текущие исходные доказательства с GET /v3/sports/markets/{condition_id}/contract; отсутствующее доказательство равно null, а просроченное или не соответствующее входным данным доказательство явно помечено. GET /v3/sports/market-families возвращает машиночитаемую таблицу соответствия видов.
| Статус | Интерпретация |
|---|---|
matched | Контрагент разделяет рассмотренные условия расчета; используйте подтвержденные ключи. |
unmatched | Известное расхождение, неподдерживаемая область или отсутствующий контрагент препятствуют объединению. |
needs_review | Доказательства, идентичность или доступность отображения недостаточны; не рассматривайте их как эквивалент. |
Сравнения охватывают период, овертайм, ничьи, переносы, отмены, источник результата, окончательность результата, отказ, дисквалификации, изменения площадок и другие существенные правила. Диагностическое извлечение не является доказательством эквивалентности: подтверждённые сопоставления требуют terms_verified: true, хэш доказательства и свежие исходные доказательства.
Для матча Rams против 49ers идентификация участника сама по себе не разрешает различные условия переноса. Доказательства и диагностика могут устареть; читайте текущие коды причин и исходные данные, а не жёстко кодируйте пример статуса.
Кандидатами в ключи являются идентификатор события и могут изменяться или очищаться после исправлений идентичности, линии, периода или семейства. Обновление по condition_id, потребляйте updated_since дельты и сохранение предыдущих версий строк для исторических объединений. candidate_group открывает количество нативных площадок и идентификаторы условий; среди нескольких нативных листингов не выбирается авторитетный рынок.
Четвертной спред, общие и командные виды классифицируются явно. Двоичные кандидаты, привязанные к источнику, используют sports-binary-v1 и явное условие: никогда не выводите смысл из метки, такой как nrfi. Поддерживаемые исходы линий объединяются по стороне внутри кандидата; исходы moneyline объединяются по участнику. См. спортивное API-справочник для параметров конечной точки и полей ответа перед сохранением объединений.
Гранулярность строк и сортировка качества данных
Одна строка — запись рынка каталога. Некоторые строки moneyline Kalshi группируют два независимых контракта YES; другие записи показывают один контракт. Матч может иметь отдельные исходы moneyline, спреды, тоталы, командные тоталы, пропсы, варианты линий и исторические записи условий, поэтому подсчёты сгруппированы по cross_venue_key не ожидается совпадение между площадками. Большое различие — сигнал для проверки, а не доказательство отсутствия или дублирования строк.
resolved=false означает, что площадка не отметила это условие как окончательное; это не значит, что сопоставление не разрешено. Рынок может быть неразрешён с ключом кандидата, или разрешён с null или отозванным сопоставлением. Сохраняйте resolved, contract_mapping.status и наличие ключа как отдельные оси.
Для аудита перечислите league, scope и kind с GET /v3/sports/markets, затем сравните строки с одинаковой нормализованной сигнатурой: матч, период, участник, линия, сторона, тип и профиль расчёта. Используйте candidate_key для групп кандидатов и cross_venue_market_key только для подтверждённых объединений. Никогда не заполняйте null-ключ из слага, заголовка, позиции в массиве или отношения количества строк; сохраняйте reason_codes и состояние доказательств.
Идентификаторы площадок могут различаться для одного и того же события. Например, Kalshi kalshi-soccer-ieloak-2026-09-20 и Polymarket uslc-iel-oak-2026-09-20 требовать проверки матча, участника, времени начала и расчёта перед любым объединением.
Инкрементальные исправления
/v3/sports/markets?updated_since= принимает миллисекунды эпохи, ISO-8601 или дату. updated_at и updated_ms являются временем публикации каталога. Обновления публикуются для идентичности, начала, отзывов сопоставлений и обновлений доказательств.
- Сохранить время начала опроса и предыдущую контрольную точку.
- Сохранить
updated_sinceи фильтры фиксированы для каждого курсора. - Вставка или обновление по
condition_id, включая null, которые отменяют старые сопоставления. - Включать разрешённые рынки при опросе исправлений.
- Продвижение от начала опроса с перекрытием только после успешного завершения каждой страницы.
Сохранённые изменения ключей событий, идентичностей участников, метаданных семейства видов и доказательств контрактов перепубликуются через дельты каталога. Истечение срока действия доказательств по реальному времени отличается: прекращайте использовать подтверждённые ключи в evidence_valid_until_ms даже до прибытия дельты отмены. Истечение сохраняет кандидатов и участников. Это заменяет более старые рекомендации, что исправления фиксаций могли обходить updated_at. Следуйте вышеописанному процессу исправления и правила проверки интеграции при сохранении или обновлении отображений.
Проверка ответа
Инспектировать meta.partial даже после HTTP 200. Сохраняйте null-цены, следуйте непрозрачным курсорам, пока has_more истина, и не рассматривайте количество или метаданные разрешения как доказательство полноты по всей площадке. Заполненные вперёд строки — это перенесённые наблюдения, а не новые захваты.
В реальном времени спорт данные prediction-market — глубина книги заказов в реальном времени на Polymarket и Kalshi, вместе с коэффициентами спортивных книг, живыми счетами и лентой травм по основным лигам (NBA, NFL, MLB, NHL, футбол, теннис, UFC, F1 и др.). Обе площадки включены вместе на каждом уровне; планы меняют общее окно истории, пропускную способность и одновременность живых книг. То же самое{ data, meta, pagination } конверт, аутентификация и курсорная пагинация как в остальном API.
Открытие рынка. Пройдитесь по воронке: /v3/sports/leagues → /v3/sports/markets?league=… → взять рынок tokens[] (каждый — это исход одного результата asset_id) → /v3/sports/books/{asset_id}/latest для живой книги.
/v3/sports/overviewПокрытие и состояние аккаунта. Права вашего плана на спорт, отслеживаемые площадки и лиги, количество рынков и книг, а также окно истории — всё в одном вызове. Он не содержит рыночных или книжных данных; путь выше ведёт к живой книге.
/v3/sports/leaguesЛиги, которые мы отслеживаем, каждая со своим количеством игр и рынков — вершина воронки обнаружения.
/v3/sports/marketsСпортивные рынки на Polymarket и Kalshi. Фильтровать с помощью ?league= (например, nba, mlb, soccer); курсорная пагинация, как у всех списков (?limit=, ?cursor=). Каждый рынок содержит condition_id, market_slug, outcomes, и tokens — по исходу asset_idс, который вы передаёте конечной точке книги.
{ "data": [{
"condition_id": "0xfb53…", "market_slug": "mls-nyc-laf-…-total-2pt5",
"league": "soccer", "kind": "totals", "title": "New York City FC vs. Los Angeles FC",
"outcomes": ["Over", "Under"],
"tokens": ["45485059…", "38846626…"], // one asset_id per outcome
"game_start": "2026-11-05T00:30:00Z", "resolved": false
}], "pagination": { "next_cursor": "…", "has_more": true, "limit": 50 }, "meta": { … } }/v3/sports/books/{asset_id}/latestСамая свежая записанная полная книга заявок для одного исхода — asset_id является токеном изtokens[]. Лестница приходит в виде четырёх индексированных массивов (bid_prices с bid_sizes, ask_prices с ask_sizes) вместо [price, size] пары, которые возвращают криптомаршруты; Что общего у всех маршрутов книги заявок перечисляет каждое отличие. Для чувствительного к задержкам живого использования Quant и более высокие уровни могут подписываться на спортивные каналы WebSocket ниже.
condition_id. У рынка есть один condition_id и одна запись в tokens[] за исход, и книга принадлежит исходу. В строках Kalshi две строки совпадают, поэтому код, который читает condition_id работает на Kalshi и затем возвращает 404 SNAPSHOT_NOT_FOUND на каждом рынке Polymarket. Читайте tokens[]./v3/sports/books/{asset_id}/historyИсторические снимки полной лестницы для исхода. Страницы с помощью ?limit= и ?cursor=; привяжите время с помощью ?start_time= / ?end_time= (короче ?from= / ?to= также принимаются псевдонимы). Добавьте ?interval=1m для возврата последнего снимка в каждом бакете, выровненном по эпохе; поддерживаемые единицы: s, m, h, и d, от одной секунды до одного дня. Пропустите или используйтеraw / tick, для каждого зафиксированного snapshot. Спортивная глубина захватывается вперёд: архив Polymarket начинается с 14 апреля 2026, архив Kalshi — с 12 июня 2026.
Интервал понижает разрешение; не интерполирует. Бакет существует в ответе только в том случае, если книга была захвачена внутри него, поэтому двухчасовое окно в ?interval=1m охватывает 120 бакетов, но возвращает только минуты с захватом. Для исхода, который котируется редко — рынок ещё за дни до начала — обычно это десять-двадцать строк, и это полная лента для окна, а не усечённая страница. Каждый ответ, использующий ?interval= несёт resolution блокировать, чтобы их можно было различить:
{ "data": [ … ],
"pagination": { "count": 13, "has_more": false, "limit": 500 },
"resolution": {
"interval_secs": 60,
"buckets_in_range": 121, // minutes the window spans
"buckets_filled": 13, // minutes that held a capture
"complete": true // false while a next_cursor is outstanding
} }Если buckets_filled намного ниже buckets_in_range, исход редко котируется — запросите более крупный интервал или пропустите и считывайте каждый захват. Плотность захвата отражает торговую активность: исход в игре фиксирует сотни и тысячи snapshot за два часа, а тот же исход за три недели — несколько десятков. Поэтому ?interval=1m возвращает почти полный минутный ряд после начала игры и короткий для рынка, который ещё не торгуется.
Добавить ?fill=ffill рядом с interval для плотной сетки вместо этого: одна строка на корзину для всего окна, переносящая последнюю зафиксированную книгу в минуты без фиксации, каждая строка отмечена filled и помеченный as_of_ts с моментом записи книги. Тот же параметр, то же значение, те же маркеры, что и в других маршрутах снимков — см. Заполнение пробелов.
Игры и контекст разрешённых рынков
/v3/sports/{league}/gamesЖивые игры и счёт для лиги (например, nba, nfl, soccer/eng.1), каждая с привязанными рынками Polymarket и Kalshi.
/v3/sports/games/{game_slug}Объединенный документ игры: расписание и финальный счет, связанные прогнозные рынки и расчеты, линии спортивных книг и контекст травм. Используйте сопутствующие маршруты ниже, когда вам нужен отдельный высокообъемный уровень.
Встроенный список рынков — это предварительный просмотр максимум 1,000 записей. Проверьте markets_returned и markets_truncated, затем следуйте markets_url и курсор с начала для полного набора. Ошибки чтения данных возвращают 503 CATALOGUE_UNAVAILABLE; сохраняйте предыдущие записи и повторите попытку вместо того, чтобы рассматривать недоступный поиск как пустой результат.
/v3/sports/games/{game_slug}/markets/v3/sports/games/{game_slug}/lines/v3/sports/games/{game_slug}/box/v3/sports/games/{game_slug}/plays/v3/sports/games/{game_slug}/winprobРынки игр, движение линии, статистика, подробности по ходам и вероятность выигрыша за ход.
/markets привязан к событию ESPN, поэтому игра, которую мы не смогли сопоставить, возвращает 404 DATA_NOT_FOUND с “game is not matched to an ESPN event” — сама игра и её рынки прогнозов всё ещё обслуживаются. Проверьте espn включено /v3/sports/games/{game_slug}: null означает, что четыре маршрута ниже вернут 404 для него. Коэффициент совпадения — свойство лиги, а не игры (измерено 2026-09-02): NHL 97%, NBA 91%, NFL 68%, WNBA 67%, EPL 66%, MLB 59%, UFC 56%, CFB 49% — и почти ноль для киберспорта, крикета, дартса и регби, где ESPN не поддерживает каталог. Сортируйте кандидатов по лиге перед построением пайплайна по бокс-скорам./v3/sports/markets/{condition_id}Один нормализованный рынок с идентификаторами площадок, исходами, ID токенов, присоединением к игре и состоянием расчёта.
Игроки, пропсы и травмы
/v3/sports/{league}/playersПоиск по каталогу спортсменов лиги и получение стабильных ID спортсменов для объединения с player-prop.
/v3/sports/players/{athlete_id}/v3/sports/players/{athlete_id}/injuries/v3/sports/players/{athlete_id}/box/v3/sports/players/{athlete_id}/marketsПрофиль игрока, журнал изменений травм, игровой журнал с бокс-скором и разрешённые сущности предсказательных рынков.
/v3/sports/{league}/injuriesЖивая лента травм по лигам — изменения статуса перед игрой, которые двигают рынок.
Коэффициенты спортивных книг
/v3/sports/odds/linesЖивые линии moneyline, спреда, тотала и пропов по книгам, нормализованные для сравнения с рыночной ценой.
/v3/sports/odds/booksАктивный каталог спортивных книг и свежесть источника.
/v3/sports/{league}/odds-historyИсторические линии спортивных ставок для четырёх лиг: nfl (nflverse, сезоны 1999–2026) и epl, la-liga, soccer (football-data.co.uk, с 2000/01). Любая другая лига возвращает 404 SPORTS_UNKNOWN_ROUTE название этих четырёх. Запрос требует хотя бы один фильтр: NFL ставки season, team, от, или до; футбол использует код сезона футбольных данных (например 2324) и/или team. Без него вы получаете 400 INVALID_PARAMETER указывая какой.
?season=1999 возвращает 1999 на ключ Explorer. Пагинация всё ещё применяется: NFL возвращает до 500 строк на страницу с cursor, футбол до 1,000./v3/sports/odds/streamServer-Sent Events для изменения линий спортивных книг. Отправить Accept: text/event-stream; события проходят по мере их поступления, и соединение остается открытым. Ставки на спортивные события используют основной WebSocket DepthFeed ниже.
Вебхуки травм
/v3/sports/webhooksплатный планЗарегистрируйте HTTPS-приёмник с фильтрами по лиге и статусу травм. Секрет подписи показывается один раз. Доставки включают X-DepthFeed-Event и X-DepthFeed-Signature; проверьте подпись HMAC-SHA256 по точному необработанному телу запроса перед разбором JSON.
curl -X POST "https://api.depthfeed.com/v3/sports/webhooks" \
-H "Authorization: Bearer df_your_key" -H "Content-Type: application/json" \
-d '{"url":"https://example.com/depthfeed","leagues":["nba","nfl"],"statuses":["out","questionable"]}'/v3/sports/webhooksплатный план/v3/sports/webhooks/{sub_id}/testплатный план/v3/sports/webhooks/{sub_id}платный планСписок подписок и состояние доставки, отправка подписанного тестового события или отзыв подписки.
# discover a market, then pull its live book
curl "https://api.depthfeed.com/v3/sports/markets?league=mlb&limit=1" -H "Authorization: Bearer df_your_key"
# take tokens[0] from the response, then:
curl "https://api.depthfeed.com/v3/sports/books/<asset_id>/latest" -H "Authorization: Bearer df_your_key"FIX 4.4 рыночные данные по TLS
Подключите существующую систему рыночных данных FIX к нормализованным книгам заявок от Binance, Polymarket, Kalshi, Limitless и поддерживаемых спортивных каналов. Профиль поставляет начальные снимки, обновления новых/изменённых/удалённых уровней цен, сигналы сердцебиения, постоянные номера последовательностей и восстановление пропусков с последующими свежими снимками. Использует тот же поток, что и WebSocket.
| Настройка | Контракт |
|---|---|
| Право на участие | Только Desk / корпоративный уровень; проверка живого ключа и плана, CompID, привязанный к аккаунту |
| Сессия | FIX 4.4 по проверенному TLS 1.2+; назначены SenderCompID и TargetCompID |
| Вход | Существующий API-ключ в теге 554 через ваш callback движка; heartbeat 5–30 секунд |
| Данные рынка | 35=V запросов; 35=W снимков; 35=X изменений уровней цен; 35=Y отклонённых запросов |
| Восстановление | Постоянное состояние последовательности; повторная отправка заполнения пробелов; ожидание заменяющих снимков |
| Ограничения | Существующие REST-разрешения и ограничения подключения/подписки WebSocket остаются без изменений |
REST остаётся интерфейсом обнаружения и исторических данных. Этот профиль FIX охватывает рыночные данные; он не маршрутизирует заказы и не предоставляет историческое воспроизведение тиков. Он не добавляет независимого покрытия захвата или гарантии задержки. Временные метки источника и временные метки отправки шлюза отличаются от времени получения клиентом.
Читать полный профиль FIX для символов, бинарных исходов, полей запроса, детерминированных идентификаторов уровней, восстановления и пределов безопасности. Свяжитесь с поддержка корпоративных клиентов для статуса обеспечения. Не угадывайте имя хоста и не отправляйте ключ API на непроверенный FIX-эндпоинт.
/v3/streamWebSocket, который отправляет живые книги заявок и цены по мере их изменения. Полезная нагрузка фрейма — это те же JSON объекты, что возвращают конечные точки REST снимков, поэтому код, написанный для REST, переносится напрямую. Аутентификация при подключении через X-API-Key заголовок, Authorization: Bearer, или — для браузеров, которые не могут устанавливать заголовки WebSocket — ?api_key=df_….
# wscat -c "wss://api.depthfeed.com/v3/stream?api_key=df_your_key"
> {"op":"subscribe","channels":["book:polymarket:btc:2510645","price:btc"]}
< {"op":"subscribed","channels":[…],"active":2}
< {"channel":"price:btc","data":{"coin":"btc","price":63560.1,…},"ts":1781300671083}
< {"channel":"book:polymarket:btc:2510645","data":{…same shape as REST snapshot…},"ts":…}Каналы
| Канал | Полезная нагрузка | Примечания |
|---|---|---|
book:polymarket:<coin>:<market_id> | Объект снимка REST (с книгами заявок) | Уровень тиков через наш CLOB websocket |
book:kalshi:<coin>:<ticker> | Такая же структура, как у строк /v3/kalshi/…/snapshots | Обновления из циклического опроса Kalshi |
book:limitless:<coin>:<slug> | Такая же структура, как у строк /v3/limitless/…/snapshots | На основе push (socket.io tap) |
book:binance:<coin>:<spot|futures> | Такая же структура, как у /v3/…/latest | 100 мс глубина фида |
book:sports:polymarket:<token_id> | Полная спортивная лестница | Quant+: собственный событийно-ориентированный поток CLOB |
book:sports:kalshi:<ticker> | Полная спортивная лестница | Quant+: websocket дельты книги заказов Kalshi с лучшими усилиями, резервный ретранслятор; кадры только с изменениями |
price:<coin> | { coin, price, source, venue, id, time } | Базовые данные Binance, ~4 тиков/с макс |
Операции: subscribe · unsubscribe (каждый занимает {"channels":[…]}, применяется атомарно) и ping → pong. Скользящий * сегмент рынка (например, book:kalshi:btc:*) подписывает всю площадку/монету — только для плана Desk. Ошибки уровня операции (плохой канал, превышение лимита подписки) возвращаются как {"op":"error","code":…} кадры и никогда не разрывайте соединение.
Спортивные каналы используют конкретные идентификаторы и не поддерживают подстановочные знаки. Quant, Research и Desk позволяют соответственно один, два и три одновременных спортивных букмейкера. Каждый спортивный фрейм включает полную лестницу, venue, asset_id, отметки времени обмена/получения, full_ladder: true, иdelivery поле, указывающее источник каждого кадра: polymarket_clob_ws,kalshi_orderbook_delta_ws, или scoretape_relay когда спортивный ретранслятор работает. Спортивные книги Kalshi управляются аутентифицированным websocket дельты книги заявок Kalshi, с ретранслятором как резервом, поэтому тайминг кадров следует активности биржи, а не фиксированному интервалу опроса. Читайте свежесть по временным меткам каждого наблюдения, а не предполагая частоту обновления.
> {"op":"subscribe","channels":[
"book:sports:polymarket:<token_id>",
"book:sports:kalshi:<market_ticker>"
]}
< {"op":"subscribed","channels":[…],"active":2}Лимиты по планам
| План | Подключения | Подписки | Каналы |
|---|---|---|---|
| Explorer | 1 | 1 | Каждая площадка, все монеты; без спортивных книг |
| Quant | 1 | 5 | Каждая площадка, все монеты; 1 спортивная книга |
| Research | 2 | 25 | Каждая площадка, все монеты; 2 спортивных книг |
| Desk | 5 | 100 | Каждая площадка, все монеты, плюс подстановочные знаки; 3 спортивных книг |
Столбец канала одинаков в каждой строке по причине: план здесь не покупает ни площадку, ни монету. Explorer транслирует любой стакан на любой из четырех площадок — он держит только одну подписку одновременно, поэтому второй канал в том же subscribe возвращает SUB_LIMIT и ничего не применяется. Подстановочные знаки и живые спортивные книги — это два случая, которые не покрываются только ограничением подписки.
Фреймы ошибок операций
Они поступают как {"op":"error","code":…,"message":…} и оставляют соединение открытым. Это коды кадров, а не HTTP-статусы.
| код | Значение |
|---|---|
CHANNEL_INVALID | Недопустимое имя канала. Формы: book:<venue>:<coin>:<market> и price:<coin>. |
UNKNOWN_OP | Не из subscribe, unsubscribe, ping. |
SUB_LIMIT | Подписка превысила бы лимит подписок вашего плана. Ничего не было подписано — операция применяется атомарно. |
SPORTS_SUB_LIMIT | То же самое для отдельного лимита одновременных спортивных книг. |
SPORTS_NOT_IN_PLAN | Ваш план не включает подписку на низколатентную спортивную книгу. |
VENUE_NOT_IN_PLAN | Возвращается только в анонимном демо-интерфейсе. Каждый тарифный план аккаунта транслирует все площадки. |
WILDCARD_NOT_IN_PLAN | Трейлинг * сегмент рынка только для Desk. Назовите рынки вместо этого. |
SLOW_CONSUMER | Ваше соединение слишком сильно отстало от потока, и кадры теряются. Читайте быстрее или подпишитесь на меньшее число каналов. |
Коды закрытия и переподключение
| Код | Значение |
|---|---|
4001 | Ошибка аутентификации (отсутствует / неизвестен / отозван ключ) |
4003 | Достигнут лимит подключений плана |
4029 | Оп-флуд — замедлите |
1013 | Проверка ключа временно недоступна — повторите попытку позже |
Сервер посылает пинги протокола каждые 25 с. Развёртывания и переключения по умолчанию разрывают соединения — рассматривайте отключиться → переподключиться с экспоненциальной задержкой (250мс с удвоением до ~5с) и повторно отправляйте подписки как обычный жизненный цикл, а не как ошибку.
Свежесть и задержка
Частота захвата, задержка ретрансляции, размер полезной нагрузки и расположение клиента влияют на доставку от начала до конца. Кадр ts является временем публикации шлюза; временные метки внутри data может представлять событие площадки, захват или сохранённую запись, в зависимости от канала. Возраст источника и время обработки сервером не совпадают с задержкой получения клиентом.
Измерьте независимое получение клиентом с синхронизированными часами, сохраните происхождение временной метки и отдельно сообщайте каждую площадку, регион, полезную нагрузку и окно измерения. Историческиеdeploy/stream_freshness.py наблюдения описывают эти прогоны, а не текущие гарантии задержки для каждого подписчика. Enterprise FIX использует тот же базовый фид; его временные метки отправки и источника описаны в профиле FIX выше.
Wallet Intelligence является рабочей областью только для чтения для публичных кошельков Polymarket. Сохраняйте список наблюдения, открывайте трейдеров из публичного рейтинга Polymarket и просматривайте публичные позиции, недавнюю активность, реализованные образцы и метрики портфеля в одном месте. Никогда не подключает кошелёк, не подписывает транзакции и не размещает реальные ордера.
Аудит исполнения следующей книги
Для каждой подходящей публичной сделки DepthFeed находит первую книгу Polymarket, записанную после временной метки активности, проходит по отображённой лестнице на то же количество акций и сообщает цену воспроизведения, долю исполнимого объёма, наблюдаемую задержку и подписанную разницу цены относительно публичной сделки. Окно поиска — 90 секунд. Отсутствие совпадения отображается как отсутствующее; оно никогда не оценивается.
Оценки механические: Сохранившаяся глубина означает, что по крайней мере 95% публичного объёма было показано в пределах 1¢ от цены трейдера; Цена изменилась означает, что по крайней мере 95% осталось, но с разницей выше 1¢; Размер недоступен означает, что показано менее 95% публичного объёма.
Переслать бумажную копию
Начните бумажное зеркало с любого проверенного кошелька. Только публичные сделки, наблюдаемые после создания зеркала, подходят: DepthFeed удаляет дубликаты, применяет настроенное соотношение копирования и лимит на сделку, затем исполняет по следующей доступной живой котировке в обычном журнале бумажного трейдинга. Наличные, позиции, P&L, кривая капитала, защитный выключатель и история расчетов отображаются в Торговля на бумаге.
Опциональный HTTPS callback получает каждое успешное скопированное заполнение. Его секрет подписи показывается один раз. Проверьте HMAC-SHA256(timestamp.body) против x-depthfeed-signature; временная метка отправляется в x-depthfeed-timestamp. Локальные, частные сети, требующие учётных данных, не-HTTPS и перенаправления отклоняются.
| План | Сохранённые кошельки | Проверенные сделки за обновление | Публичные строки активности |
|---|---|---|---|
| Explorer | 1 | 3 | 30 |
| Quant | 5 | 10 | 100 |
| Research | 10 | 25 | 250 |
| Desk | 20 | 50 | 500 |
Ограничения интерпретации
- Публичный адрес может быть только одним кошельком в портфеле трейдера и не доказывает личность или владение.
- Публичные временные метки активности не являются приватными временными метками заказов. Аудит измеряет то, что DepthFeed наблюдал после публикации, а не исходную задержку трейдера.
- Можно сопоставлять только сделки, записанные DepthFeed в покрытии Polymarket. Неподдерживаемые или незафиксированные рынки отображаются без аудита.
- Повтор воспроизведения математически потребляет отображаемый размер; он не моделирует скрытую ликвидность, приоритет очереди, гонки отмен, комиссии или рыночное воздействие реального последующего ордера.
- Ранг в таблице лидеров, P&L, позиции и активность поступают из публичных сервисов данных Polymarket и могут иметь задержки, корректировки, быть неполными или временно недоступными.
- Wallet Intelligence и его бумажное зеркало — инструменты для исследований, а не торговля в реальном времени, инвестиционные советы, рекомендации или гарантии исполнения.
Руководства по исследованию кошельков
Начните с Руководство по отслеживанию кошельков Polymarket, затем сравните аналитика кошелька, исследование рейтинга, и анализ исполнения копи-трейдинга.
Открыть Конструктор стратегий для описания стратегии помощнику, запуска исторического бэктеста и просмотра результатов. Визуальное полотно доступно на вид конструктора. Обе представления используют один и тот же движок стратегий.
Создайте и запустите
- Опишите рынок, условия входа, выходы и размер позиции в помощнике или соедините узлы на холсте.
- Проверьте сгенерированную стратегию и настройки исполнения перед запуском.
- Выберите доступный исторический образец в пределах окна истории вашего аккаунта.
- Проверьте журнал сделок, кривую капитала, заполнения и предупреждения о качестве данных перед выводами.
Предположения исполнения
Результаты зависят от выбранной выборки, настроек исполнения, комиссий, проскальзывания и размера позиции. Отсутствующие наблюдения и недоступная глубина влияют на то, что можно смоделировать. Проверьте предположения и предупреждения запуска; исторический результат не гарантирует исполнение в реальном времени или будущую эффективность.
Продолжить в режиме бумажной торговли
Проверьте стратегию в конструкторе и используйте процесс бумажного трейдинга для отслеживания с имитированными средствами. Бумажный трейдинг имеет свои позиции, наличные и журнал сделок. Он не размещает реальные ордера на бирже. Использование ассистента и лимиты бумажных стратегий зависят от вашего тарифного плана.
Торговля на бумаге прогоняет стратегии вперёд на живой рынки с виртуальными деньгами. Сделки, отметки и расчеты оцениваются по живым книгам DepthFeed — покупки по спросу, продажи по предложению, позиции автоматически рассчитываются в $0/$1 при разрешении рынка. Каждая стратегия получает собственную кривую капитала, просмотр позиций и полный журнал сделок.
Три способа торговли
| Режим | Как это работает |
|---|---|
| Webhook | Ваша собственная система (бот, cron, ноутбук) отправляет POST-сигналы покупки/продажи на URL токена стратегии. Ваша логика остаётся вашей — мы выполняем исполнение, учёт и графики. |
| Правило лаборатории | Разверните пресет Backtest Lab для Polymarket или Kalshi (вход по временному окну, пересечение уровней, откат после падения) с нативными сторонами площадки, take-profit/stop-loss, максимальным открытым лимитом и размером позиции (фиксированный / долевой / Келли); он оценивается на сервере по живым котировкам (~90 с частотой). |
| Копия кошелька | Отражайте новые публичные сделки из проверенного кошелька Polymarket с коэффициентом копирования и лимитом на сделку. Результаты используют тот же бумажный реестр и могут по желанию отправлять подписанные HTTPS вебхуки о сделках. |
Webhook сигнала
/paper/hook/{token}без авторизацииТокен (показывается один раз при создании/ротации) — это аутентификация. Заполнения всегда оцениваются по живой книге на момент сигнала — полезная нагрузка не может задать собственную цену. Рынки идентифицируются venue + market: тикер Kalshi или идентификатор токена CLOB Polymarket. Вы можете торговать любой рынок на площадке, не только те, что записывает DepthFeed — если у нас нет локально, исполнение оценивается по живому чтению собственного стакана площадки.
curl -X POST 'https://api.depthfeed.com/paper/hook/pt_your_token' \
-H 'content-type: application/json' \
-d '{
"action": "buy",
"venue": "polymarket",
"market": "REPLACE_WITH_CLOB_TOKEN_ID",
"side": "yes",
"usd": 100,
"client_id": "sig-0042"
}'{ "data": { "filled": true, "action": "buy", "price": 0.62,
"shares": 161.29, "cost_cents": 10000, "cash_cents": 990000,
"position_id": "…" } }| Ошибка | Значение |
|---|---|
NO_FRESH_QUOTE | Нет живой книги для этого рынка — неверный id, или рынок закрыт / стал односторонним на 0/1 (расчёт автоматически закрывает позиции). |
INSUFFICIENT_CASH | Заказ превышает бумажные наличные средства стратегии. |
NO_POSITION | продавать/закрывать без открытой позиции на этом рынке/стороне. |
RATE_LIMITED | Более 120 сигналов в минуту для стратегии. |
PAUSED | Стратегия приостановлена в панели управления. |
Автоматический прерыватель
Каждая стратегия имеет трейлинг стоп по максимальной просадке (по умолчанию 60%, редактируемо; установите в 0 для отключения). Если текущий капитал опускается ниже этого уровня от максимума, стратегия автоматически закрывается по текущим котировкам и остановлено — жёсткая остановка против стратегии, торгующей сама с собой к нулю. Возобновите в любое время; возобновление сбрасывает отметку максимума до вашего текущего капитала.
Ограничения
Одновременные стратегии по плану: Explorer 1 · Quant 5 · Research 15 · Desk 40. До 100 открытых позиций на стратегию; начальный баланс $100–$1,000,000 (по умолчанию $10,000). Метки обновляются с частотой около 90 секунд — это трекер форвард-тестирования, а не площадка исполнения.
Каждый маршрут книги заказов — шесть маршрутов по крипто и площадкам плюс спортивный — отвечает одному и тому же контракту, так что код, написанный для одного, переносится на другой изменением пути и идентификатора.
- Этот
{ data, pagination, meta }конверт иmeta.request_id. - Набор ключей
cursorпагинация иlimit. - Окно, как
start_time/end_timeилиот/до. intervalдля одной книги на корзину, иfill=ffillдля плотной сетки.filled,as_of_ts, иas_of_ts_msна заполненных строках.- Этот
resolutionблокировать любой ответ, который использовалinterval. - Окно истории плана и
error.codeперечисление.
Четыре вещи всё ещё различаются, все они видны в ответе, а не скрыты в поведении.
| Крипто и маршруты площадок | Спортивная история | |
|---|---|---|
| Отметка времени строки | time или timestamp как строку, id как ms-эпоху | ts как ISO-8601, ts_ms как ms-эпоху |
| Заказ | Сначала самые старые | Сначала самые новые |
| Лестница | Включено, кроме маршрута событий по каждой монете, который требует include_orderbook=true | Всегда включено |
| Форма уровня | Пары: bids / asks как [[price, size], …], сначала лучшие (Kalshi называет их yes / нет) | Параллельные массивы: bid_prices с bid_sizes, ask_prices с ask_sizes, выровнено по индексу |
Это формы, на которых построены существующие интеграции, поэтому они остаются без изменений. Сортируйте по собственному временной метке строки, а не по порядку поступления, и разница перестанет иметь значение.
Точность достигается за счёт использования тех же источников, что и рынки, поэтому значения совпадают по конструкции.
| Площадка | Захват | Окна | Примечания |
|---|---|---|---|
| Polymarket | CLOB websocket — каждое событие книги и изменения цены | 5м · 15м · 1ч · 4ч · 24ч | Полная глубина, событийная. Открытие/закрытие урегулирования из собственных метаданных Polymarket. |
| Kalshi | Публичный REST, опрос полной глубины с ограничением скорости | 15м · 1ч · 24ч · 1нед | Книга Да/Нет, до 100 уровней на сторону, 7 активов; эффективная частота зависит от нагрузки рынка и ограничений API. |
| Limitless | socket.io websocket (orderbookUpdate) | 5м · 15м | CLOB на Base; живой пуш захватывает быстрые 5-минутные книги, которые REST не может зафиксировать. |
| Binance | спот + фьючерсы @depth20@100мс + @aggTrade | — | Базовая книга + OHLCV с точностью до 1 секунды, якорь точности для рынков вверх/вниз. |
Все 7 активы (btc · eth · sol · xrp · doge · bnb · hype) на всех площадках, где они торгуются.
Временные метки — это миллисекунды эпохи. exch_ts_ms = время биржи, recv_ts_ms = время нашего получения (разница — задержка захвата). Ниже приведены ХРАНИМЫЕ столбцы. Маршруты для криптовалют и площадок объединяют четыре массива цен/размеров в bids / asks пары перед возвратом; спортивные маршруты пропускают их как четыре массива. Всё остальное приходит под тем именем, под которым хранится.
polymarket_book — полные снимки книги заказов
asset_id, condition_id, slug, base_asset, market_type, exch_ts_ms, recv_ts_ms, hash, bid_prices[], bid_sizes[], ask_prices[], ask_sizes[]
polymarket_changes — дельты для воспроизведения между снимками
asset_id, condition_id, exch_ts_ms, recv_ts_ms, side, price, size
polymarket_markets — одна строка на токен
asset_id, market_id, event_id, condition_id, slug, outcome, base_asset, market_type, clob_token_up, clob_token_down, resolution_source, start_time, end_time, first_seen_ms
polymarket_reference — расчёты
slug, base_asset, market_type, start_ms, end_ms, price_to_beat, final_price, winner, final_volume, final_liquidity, resolved_at, captured_ms
binance_book — 20-уровневый стакан (спот и фьючерсы)
venue, symbol, exch_ts_ms, recv_ts_ms, bid_prices[], bid_sizes[], ask_prices[], ask_sizes[]
binance_trades_1s — 1s OHLCV
venue, symbol, second_ms, open, high, low, close, volume, buy_volume, sell_volume, trades, recv_ts_ms
цены — унифицированные серии базовых цен
asset, source (binance|chainlink), venue, exch_ts_ms, price
kalshi_book / kalshi_markets
kalshi_book: ticker, series, base_asset, market_type, recv_ts_ms, yes_prices[], yes_sizes[], no_prices[], no_sizes[]
kalshi_markets: ticker, event_ticker, series, base_asset, market_type, title, status, strike, open_time, close_time, first_seen_ms
limitless_book / limitless_markets
limitless_book: slug, condition_id, base_asset, market_type, recv_ts_ms, midpoint, bid_prices[], bid_sizes[], ask_prices[], ask_sizes[]
limitless_markets: slug, condition_id, base_asset, market_type, title, status, expiration_ms, first_seen_ms
Каждое окно плана обслуживается из живого хранилища и холодного архива, так что полное окно всегда доступно. Desk не имеет ограничения на историю с прокруткой: он может запрашивать каждый записанный снимок из применимого пола серии через прямой канал. Полы различаются, потому что контракты и лицензированный захват начались не в один и тот же день для каждой комбинации актива/окна.
Минимумы архива полной глубины Polymarket (UTC)
Пол — это первый день, когда была записана лестница, что не является первым днем непрерывной серии. Архив Polymarket содержит ничего до 2026-01-03, а январь — пять разбросанных дней (2026-01-03 по 01-06 и 01-24). Непрерывное ежедневное покрытие начинается с 2026-02-12. Бэктест, которому нужна непрерывная серия, должен начинаться отсюда.
| Активы | 5m | 15m | 1h | 4h | 24h |
|---|---|---|---|---|---|
| BTC | 2026-02-12 | 2026-01-03 | 2026-01-03 | 2026-01-03 | 2026-01-03 |
| ETH, SOL, XRP | 2026-02-18 | 2026-01-03 | 2026-01-03 | 2026-01-03 | 2026-01-03 |
| BNB | 2026-03-13 | 2026-03-13 | 2026-03-06 | 2026-03-13 | 2026-03-07 |
| DOGE | 2026-03-13 | 2026-03-13 | 2026-03-11 | 2026-03-13 | 2026-03-11 |
| HYPE | 2026-03-13 | 2026-03-13 | 2026-03-06 | 2026-03-13 | 2026-03-07 |
Это самые ранние дни с записанными полными лестницами, а не утверждение, что каждый актив/окно существовали до этого минимума. Снимок возвращает полную записанную лестницу; он может законно не содержать уровней, если в момент снимка на рынке не было ожидающих ордеров.
Архивные уровни Kalshi (UTC)
Уровни Kalshi — это отдельно от Polymarket выше и позже. Самая ранняя записанная лестница Kalshi любой серии — 2026-01-08. Для крипто серии с 15-минутным окном:
| Серии | Самая ранняя записанная лестница |
|---|---|
| KXBTC15M, KXETH15M | 2026-01-08 |
| KXSOL15M | 2026-01-09 |
| KXXRP15M | 2026-02-11 |
| KXBNB15M, KXDOGE15M | 2026-03-07 |
| KXHYPE15M | 2026-03-18 |
Почасовые, дневные и недельные серии Kalshi имеют свои собственные минимумы по каждой серии, а BTC, ETH, XRP и DOGE также начинаются с 2026-01-08. Вместо публикации минимума для каждой серии, рассматривайте обнаружение как авторитетное: /v3/kalshi/markets?series=KXBTC15M&start_time=…&end_time=… перечисляет именно те тикеры, глубина которых доступна в этом диапазоне, а идентификаторы тикеров Kalshi определяются площадкой, поэтому их нужно обнаруживать, а не создавать из UTC-меток времени.
Частота и глубина захвата данных Kalshi не постоянны по всему архиву. Текущий захват опрашивает всю лестницу до 100 уровней с каждой стороны каждые несколько секунд; в более ранние периоды данные реже, а некоторые дни весны 2026 содержат лишь несколько наблюдений на контракт. Строки снимков хранятся как записанные, поэтому исследовательский запрос по архиву должен пересчитывать данные на фиксированную сетку и учитывать количество наблюдений в каждом интервале, а не предполагать постоянный интервал выборки.
Глубина книги заявок фиксируется в реальном времени и не может быть восстановлена задним числом. Доступ к архиву предоставляется через документированные измеряемые интерфейсы запросов; DepthFeed не предоставляет восстановление по запросу клиента или пакетную доставку архива.
Продажи массовых данных целые UTC дни архив в виде запечатанных файлов zstd Parquet, по одному файлу на таблицу в день, доставляемых из объектного хранилища по краткоживущему подписанному URL. Он находится рядом с REST API, а не перед ним: API по-прежнему обслуживает горячее окно и исторические полосы, а массовые файлы снимают с них задачу «пройти весь архив». Предоплачивается, оплачивается за GiB и регулируется лицензией на данные, которую вы принимаете один раз в панели.
Продукты
| продукт | таблица архива | типичный будний день |
|---|---|---|
polymarket-book | polymarket_book | 0.35 ГиБ |
polymarket-us-book | polymarket_us_book | 0.08 ГиБ |
polymarket-ticks | polymarket_changes | 2.7 ГиБ |
kalshi-book | kalshi_book | 0.12 ГиБ |
kalshi-ticks | kalshi_changes | 3.4 ГиБ |
Группы строк — 5,000 строк в таблицах книги и 25,000 в других, отсортированы по рынку, чтобы можно было читать один рынок из дневного файла. Таблицы спорта появляются после ежедневного закрытия.
Ценообразование
| элемент | значение |
|---|---|
| Цена | $40 за ГиБ для polymarket-book, polymarket-us-book и polymarket-ticks; $80 за ГиБ для kalshi-book и kalshi-ticks. Считается при заказе по размерам манифеста, округляется вверх один раз по общей сумме заказа. |
| Минимум | $5 за заказ |
| Возвраты | Отсутствуют. Каждый ордер окончателен после размещения; потраченные кредиты не возвращаются. Панель управления просит подтвердить это перед каждым заказом. |
| Кредиты | Предоплата, 100 кредитов равны $1, пополнения от $25 до $10,000, срок использования 12 месяцев |
| Ссылки | 1 час каждый, повторно выдаётся бесплатно в течение 30 дней после заказа |
Закрытие
День указан в каталоге только после запечатывания: не менее трёх дней, ровно один файл данных, и его ETag записан в манифесте. Хэш манифеста — это то, что вы покупаете. Если день когда-либо снова запечатается, он становится новая версия; ссылки на старую версию больше не выдаются, а строка каталога показывает новую. Размещенный вами заказ сохраняет свою записанную версию, а ссылки отмечают эти элементы superseded вместо возврата URL.
Лицензия
Котировки и заказы возвращаются 403 DATA_LICENCE_REQUIRED до тех пор, пока аккаунт не принял Лицензия на данные: внутреннее использование в вашей организации, без перераспределения или перепродажи, разрешены производные аналитические данные. Примите его с панели управления или с помощью приведенного ниже вызова. Учетные записи, для которых продукт не включен, получают 404 DATA_PRODUCTS_DISABLED на каждом маршруте здесь.
Маршруты
/v3/data/productsТаблицы для продажи с их тарифами.
curl https://api.depthfeed.com/v3/data/products -H "Authorization: Bearer df_your_key_here"/v3/data/licenceПринял ли этот аккаунт лицензию и какую версию.
curl https://api.depthfeed.com/v3/data/licence -H "Authorization: Bearer df_your_key_here"/v3/data/licence/acceptЗафиксировать принятие версии, напечатанной на странице лицензии.
curl -X POST https://api.depthfeed.com/v3/data/licence/accept -H "Authorization: Bearer df_your_key_here" -H "Content-Type: application/json" -d '{"version":"2026-10-06"}'/v3/data/balanceПредоплаченный баланс как credits и usd. Пополнения осуществляются через панель управления.
curl https://api.depthfeed.com/v3/data/balance -H "Authorization: Bearer df_your_key_here"/v3/data/catalogueЗакрытые дни для одного продукта между от и до (даты UTC, включительно), каждая с bytes, rows, etag, version и sealed_at. Пагинация курсором, как и в любом списке.
curl "https://api.depthfeed.com/v3/data/catalogue?product=kalshi-ticks&from=2026-09-01&to=2026-09-30&limit=100" -H "Authorization: Bearer df_your_key_here"/v3/data/quotesОцените выбор. Возвращает котировку id, total_bytes, price_credits и expires_at (15 минут). Котировка фиксирует цену, а не деньги: для её запроса не нужны предоплаченные кредиты. Новая котировка отменяет предыдущие открытые, если у них нет активной оплаты картой. Оплачивайте вручную картой через endpoint оформления ниже или списывайте с баланса кредитов. Каждая котировка и заказ несут non_refundable: true.
curl -X POST https://api.depthfeed.com/v3/data/quotes -H "Authorization: Bearer df_your_key_here" -H "Content-Type: application/json" -d '{"items":[{"product":"kalshi-ticks","from":"2026-09-01","to":"2026-09-07"}]}'/v3/data/orders/checkoutПокупайте через API и оплачивайте вручную. Отправьте UUID котировки на этот эндпоинт и откройте возвращённыйpayment_url (также возвращается как url) в браузере. Это оформление карты через Stripe для именно этой котировки, а не мгновенный платёж. Повторный запрос при активном оформлении возвращает ту же ссылку с reused: true. Используйте возвращаемое expires_at.
curl -X POST https://api.depthfeed.com/v3/data/orders/checkout -H "Authorization: Bearer df_your_key_here" -H "Content-Type: application/json" -d '{"quote_id":"11111111-1111-1111-1111-111111111111"}'{ "data": {
"quote_id": "11111111-1111-1111-1111-111111111111",
"payment_url": "https://checkout.stripe.com/c/pay/...",
"payment_status": "awaiting_payment",
"price_usd": 12.34,
"expires_at": "2026-10-19T01:32:00Z",
"reused": false
} }После ручной оплаты Stripe отправляет подтвержденный webhook, который создает оплаченный заказ. ОпросGET /v3/data/orders с ограниченным повтором и совпадением quote_id; страница возврата браузера не доказывает оплату. Как только заказ будет paid, запросите ссылки для загрузки. Письмо с загрузкой также отправляется на email аккаунта. Неоплаченный или просроченный заказ не создаёт платный заказ. Оформление кредитами по той же котировке блокируется, пока активно оформление картой.
/v3/data/ordersЗакрыть котировку. Кредиты списываются сейчас; заказ перечисляет каждый день, который покрывает.
curl -X POST https://api.depthfeed.com/v3/data/orders -H "Authorization: Bearer df_your_key_here" -H "Content-Type: application/json" -d '{"quote_id":"q_01J…"}'/v3/data/orders/v3/data/orders/{id}Ваши заказы, сначала новые, и один заказ с его позициями.
curl https://api.depthfeed.com/v3/data/orders -H "Authorization: Bearer df_your_key_here"/v3/data/orders/{id}/linksВыдавайте подписанные URL для каждого элемента заказа. Каждый URL действует один час и является токеном доступа к файлу, храните его в своих системах. Запрашивайте заново при необходимости, бесплатно, в течение 30 дней. Элемент, чей день был повторно запечатан, возвращается с status: "reissued_new_version" и свежий URL. День без текущего файла — это unavailable.
curl -X POST https://api.depthfeed.com/v3/data/orders/ord_01J…/links -H "Authorization: Bearer df_your_key_here"{ "data": { "items": [
{ "item_id": "…", "product": "kalshi-ticks", "day": "2026-09-01", "bytes": 3650722201,
"url": "https://<account>.r2.cloudflarestorage.com/…?X-Amz-Expires=3600&…",
"expires_at": "2026-10-06T13:00:00Z", "status": "ready" }
] } }Пройдитесь по полной истории глубины рынка (Python)
import requests
BASE = "https://api.depthfeed.com/v3"
H = {"Authorization": "Bearer df_your_key"}
# 1. find a market
m = requests.get(f"{BASE}/btc/markets?type=15m&limit=1", headers=H).json()["data"][0]
mid = m["market_id"]
# 2. page through its order-book snapshots
cursor, rows = None, []
while True:
q = f"{BASE}/btc/markets/{mid}/snapshots?include_orderbook=true&limit=1000"
if cursor: q += f"&cursor={cursor}"
page = requests.get(q, headers=H).json()
rows += page["data"]
if not page["pagination"]["has_more"]: break
cursor = page["pagination"]["next_cursor"]
print(len(rows), "snapshots")Последняя кросс-площадочная глубина для BTC вверх/вниз (JavaScript)
const h = { Authorization: "Bearer df_your_key" };
// One call → the full BTC 15m book on all three venues at once.
// (No stitching: the screener is the cross-venue entry point.)
const res = await fetch("https://api.depthfeed.com/v3/screener/btc/15m", { headers: h }).then(r => r.json());
const { books } = res.data; // books.polymarket / books.kalshi / books.limitlessDepthFeed предназначен для управления агентами: простой JSON через HTTPS, один ключ Bearer, стабильные коды ошибок и без необходимости SDK. Машиночитаемое резюме продукта доступно по адресу /llms.txt.
Как инструмент вызова функций / MCP-стиля
Оборачивайте любую конечную точку как инструмент — API достаточно самодокументирован, чтобы одно универсальное определение покрывало большинство рабочих процессов:
{
"name": "depthfeed_get",
"description": "Query DepthFeed prediction-market order-book data. Paths: /v3/{coin}/markets, /v3/{coin}/markets/{id}/snapshots, /v3/kalshi/markets, /v3/kalshi/{ticker}/snapshots, /v3/kalshi/{ticker}/candles, /v3/limitless/{slug}/snapshots, /v3/{coin}/{spot|futures}/latest. Coins: btc eth sol xrp doge bnb hype.",
"parameters": {
"type": "object",
"properties": { "path": { "type": "string", "description": "GET path under /v3, with query params" } },
"required": ["path"]
}
}Тело инструмента — единичный аутентифицированный GET:
curl "https://api.depthfeed.com{path}" -H "Authorization: Bearer df_your_key"Живые данные в агентах
Этот WebSocket поток использует три JSON операции (subscribe / unsubscribe / ping) и аутентифицируется через ?api_key= где нельзя установить заголовки — просто управлять из любого рантайма. Кадры несут те же JSON объекты, что и REST, поэтому код парсинга агента идентичен для истории и живых данных.
/v3/whoami отражает план ключа, лимиты скорости и окно истории — вызывайте его первым и настраивайтесь автоматически вместо угадывания лимитов.Что в реальном времени, сначала новые:
- Конструктор стратегий. Бэктесты с помощью ассистента и визуальный холст стратегии используют один движок на
/dashboard/backtest. - Ценовые бары.
/v3/barsобслуживает акции, ETF и крипто OHLCV в пределах окна истории вашего плана. - Массовые загрузки. Целые дни в UTC с запечатанными файлами Parquet можно приобрести отдельно от доступа к API.
- Живое вещание.
/v3/streamWebSocket — каналы книги заявок и цен на каждой площадке, захват и доставка зависят от площадки, подписки ограничены планом. - Площадка Limitless. Рынки, последняя книга заказов и исторические снимки глубины — с захватом в реальном времени 5м + 15м через websocket книги заказов.
- Расширенный Kalshi. 21 серии для всех 7 активов (15-минутные, пороговые и направленные — последние два одновременно с часовыми/дневными/недельными);
market_typeоткрытые и фильтруемые. - Полный API версии 3. Рынки Polymarket + снимки, спот/фьючерсы Binance, пакетная обработка, пагинация курсором, соблюдение истории по плану, измеряемое использование.
- Публичный HTTPS.
https://api.depthfeed.comчерез TLS.
Доступная история варьируется по площадкам и сериям. Проверьте Историю и покрытие и ответ API, чтобы подтвердить минимальный архив для вашего периода. Вопросы или запрос на заполнение? Связаться с нами.
