Dokumentacja API

Dane DepthFeed
Odwołanie API

Odkrywanie rynków, historyczne książki zleceń, świece i strumienie na żywo. Kompletny referencyjny integracyjny v3.

Podstawowy URL REST https://api.depthfeed.com/v3. Szczegóły połączenia WebSocket i provisioned FIX są opisane poniżej; naciśnij / wyszukiwać zawartość.

Spis treści▾

DepthFeed jest historyczną księgą zleceń głębokość dla rynków predykcyjnych — zarejestrowane pełne drabinki bid/ask po obu stronach dla Polymarket, Kalshi, oraz Limitless. Nie tylko ostatnia cena transakcji czy najlepsza oferta: każda przechowywana obserwacja zawiera poziomy i rozmiary zleceń spoczynkowych. To dane potrzebne do backtestu realizacji z rzeczywistą płynnością.

Jest dostarczany przez metered REST API — odkrywanie rynku, metadane oraz najnowsze i historyczne snapshoty order-book, stronicowane kluczowo z osobnymi kontrolami dostępu ogólnego i obciążenia historycznego. Pobierz dokładnie głębokość, której potrzebuje twoja strategia i odtwórz ją we własnym stosie.

Pokrycie księgi zleceń obejmuje 3 platformy, 7 aktywów (btc · eth · sol · xrp · doge · bnb · hype) oraz powtarzających się rynków kryptowalut wzrost/spadek na każdej giełdzie (5m, 15m, 1h, 4h, 24h, w zależności od giełdy).

Ceny to druga połowa produktu. /v3/bars serwuje słupki cen OHLCV dla Akcje i ETF-y notowane w USA, pary spot kryptowalut i futures perpetual na każdym planie, z rozdzielczością bazową co minutę. Dzielą zegar, schemat i okno historii planu z powyższymi księgami, więc strategia może odczytać kapitał i działać na kontrakcie bez uzgadniania znaczników czasu dwóch dostawców.

Sporty jest na każdym planie — cała powierzchnia REST: księgi Polymarket i Kalshi, kursy bukmacherskie, wyniki i kontuzje w głównych ligach. To, co dodaje płatny plan, to niskolatencyjna księga na żywo przez WebSocket, jedna jednoczesna księga na Quant i trzy na Desk. Przejdź do Punkty końcowe sportowe.

Nowy w ocenie źródeł danych? The przewodnik kupującego obejmuje pięć kryteriów decydujących, czy dane rynków predykcyjnych są faktycznie możliwe do backtestu, i jak DepthFeed spełnia każde z nich.

Niezależny projekt. Nie jest powiązany z Polymarket, Kalshi, Binance, Chainlink ani Limitless. Nasze własne przechwytywanie działa na żywo, a licencjonowana historyczna głębokość udostępnia najdłuższą serię Polymarket od Styczeń 2026. Dokładne minimalne archiwa na serię są wymienione w Historia i zakres. Każde okno planu jest wspierane przez przechowywane dane. Atrybucja danych stron trzecich jest wymieniona w warunki.

Używaj tej strony jako działającego kontraktu, gdy LLM lub agent odpowiada na pytania o DepthFeed lub pisze kod integracyjny. Preferuj udokumentowaną odpowiedź API nad założeniami z etykiet rynku, przykładów lub opisów stron trzecich.

Kanoniczne reguły

  1. Użyj https://depthfeed.com/docs jako źródło prawdy dla nazw endpointów, pól, limitów i bramek planu.
  2. Wybierz endpoint odpowiadający zadaniu: /v3/demo dla przykładu bez klucza, /v3/markets dla discovery, /v3/snapshots dla historycznych order booków, /v3/stream dla order booków na żywo, /v3/sports/markets dla mapowania sportów, i /v3/whoami dla limitów konta.
  3. Nie wyciągaj wniosków o równoważności między venue na podstawie kind, etykiety, kolejność tablicy lub cross_venue_key. Potwierdź contract_mapping.status=matched i warunki rozliczenia przed traktowaniem cross_venue_market_key jako równoważne.
  4. Zachowaj null, znaczniki czasu, identyfikatory platform i częściowe metadane. HTTP 200 i całkowita liczba nie dowodzą kompletności odpowiedzi.
  5. Śledź nieprzezroczyste kursory aż do has_more jest fałszem, utrzymując filtry stałe podczas przeglądania strony.
  6. Dla korekt, sprawdzaj updated_since, aktualizuj według stabilnej tożsamości rynku lub warunku, zachowaj cofnięcia null, uwzględnij rozstrzygnięte rynki i nakładanie się tylko po pomyślnym przejściu.
  7. Dla backtestów używaj pełnej głębokości ofert kupna/sprzedaży i rozmiarów spoczynkowych. Nie opisuj danych midpoint ani ostatniej ceny jako wykonalnych wypełnień.
  8. Stan uwierzytelnienia, planu, okna historii, limitu szybkości i założeń platformy. Jeśli dokumentacja nie potwierdza faktu, oznacz go jako niepotwierdzony.

Kontrakt odpowiedzi

Odpowiedzi generowane przez model powinny podawać dokładny endpoint i kotwicę dokumentacji, pokazywać minimalne żądanie, wyjaśniać używane pola odpowiedzi, rozróżniać natywne ID venue od kluczy kanonicznych oraz oddzielać fakty zmierzone, aktualne pokrycie, wnioskowanie i nieznane. Nigdy nie twierdzić o afiliacji między DepthFeed a venue.

1. Utwórz darmowe konto i wygeneruj klucz API z panelu. Klucze wyglądają jak df_… i są pokazane raz.

2. Wykonaj swoje pierwsze uwierzytelnione wywołanie:

shell
curl https://api.depthfeed.com/v3/whoami \
  -H "Authorization: Bearer df_your_key_here"

3. Odpowiedź to koperta JSON. Ten fragment pokazuje konto Quant; twoje limity zależą od planu:

json
{
  "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. Pobierz najnowsze rynki BTC wzrost/spadek, następnie głębokość order book dla jednego z nich — zobacz Rynki i Snapshoty.

Uwierzytelnione punkty końcowe danych wymagają klucza API. Publiczne trasy obejmują /v3/health, /v3/overview i /v3/demo. Przekaż w obie strony — oba schematy są akceptowane:

shell
# 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 wymaga też klucza, ale uwierzytelnia się raz przy połączeniu — WebSocket nie może przenosić nagłówka na żądanie, więc akceptuje X-API-Key, Authorization: Bearer, lub ?api_key= parametr zapytania. Zobacz Strumień na żywo.

Klucze są tworzone na konto z pulpitu i mają plan określający limit szybkości, okno historii oraz dostęp do aktywów/venue. Klucze są przechowywane SHA-256-haszowane w spoczynku — surowa wartość jest pokazana dokładnie raz przy tworzeniu. Cofnięcie klucza w panelu następuje natychmiast. Limity są na użytkownika, nie na klucz — dodatkowe klucze nie mnożą twojego limitu.

NiepowodzenieStatuskod
Brak podanego klucza401AUTH_MISSING
Nieznany / unieważniony / niepoprawny klucz401AUTH_INVALID
Sklep z kluczami tymczasowo niedostępny503AUTH_UNAVAILABLE

Wszystkie punkty końcowe działają pod jedną wersjonowaną ścieżką bazową:

tekst
https://api.depthfeed.com/v3

Wymagane TLS (Let's Encrypt, HTTP/2). Aktualna wersja API to v3, zbudowane na parytet PolyBackTest (ten sam envelope, paginacja kursorem i enum kodów błędów) na naszym nadzbiorze danych (3 giełdy, 7 aktywa). Legacy v1/v2 przestrzenie nazw nie są obsługiwane.

Każda udana odpowiedź ma ten sam format:

json
{
  "data": … ,                 // object (single) or array (list)
  "pagination": { … },        // present only on list endpoints
  "meta": { "request_id": "req_…", "timestamp": "2026-06-07T02:27:09.532Z" }
}

Błędy mają ten sam kształt, z ustawionym statusem HTTP według kod:

json
{
  "error": { "code": "INVALID_COIN", "message": "…", "details": { … } },
  "meta": { "request_id": "req_…", "timestamp": "…" }
}

Każda odpowiedź — sukces lub błąd — zawiera meta.request_id, również zwracane jako X-Request-Id nagłówek. Cytuj go w zgłoszeniach wsparcia.

Rozgałęzienie na error.code — jest stabilny. Status HTTP jest implikowany przez kod.

kodHTTPZnaczenie
AUTH_MISSING401Brak klucza API w żądaniu.
AUTH_INVALID401Klucz jest nieznany, unieważniony lub niepoprawny.
COIN_NOT_IN_PLAN402Zwracane tylko przez anonimową powierzchnię demo (próbka BTC). Każdy plan konta, w tym Explorer, obejmuje każdą monetę.
ENDPOINT_NOT_IN_PLAN402Zwracane tylko przez anonimową powierzchnię demo. Każdy plan konta obejmuje każde venue; historia jest ograniczona oknem twojego planu.
SYMBOL_LIMIT_EXCEEDED402Więcej symboli w jednym żądaniu /v3/bars niż rozmiar partii twojego planu (3 / 8 / 16 / 32). Podziel listę i ponownie zażądaj — to ogranicza JEDNO wywołanie, nie liczbę symboli, które możesz pobrać.
WINDOW_TOO_WIDE400Jedno żądanie /v3/bars obejmuje więcej czasu niż pozwala liczba wierszy ramki (45 dni przy 1Min, 180 przy 5Min, rok przy 15Min i 1Godz, dziesięć lat przy 1Dzień). Strona z limitem i kursorem.
HISTORY_LIMIT_EXCEEDED403start_time / timestamp jest starszy niż okno Twojego planu.
INVALID_COIN400Moneta nie jest jedną z siedmiu obsługiwanych.
INVALID_CURSOR400Kursor jest niepoprawny.
INVALID_TIMESTAMP400Nie jest to ms-epoch ani ISO-8601.
INVALID_INTERVAL400interwał, nie czas trwania jak 30s, 1m, 5m, 1h, 1d (1s–1d).
INVALID_PARAMETER400Parametr zapytania lub zmienna adresu URL zostały odrzucone; szczegóły.nazwy parametrów. Dotyczy wypełnienia wysłanego bez interwału i pustego segmentu {ticker}/{slug}/{asset_id}/{market_id} — ścieżka z dwoma kolejnymi ukośnikami, co prawie zawsze oznacza, że zmienna szablonu nie została podstawiona.
MISSING_PARAMETER400Wymagany parametr był nieobecny; szczegóły.nazwy parametrów.
INVALID_LIMIT400limit nie jest dodatnią liczbą całkowitą.
INVALID_JSON400Treść żądania nie jest poprawnym JSON. Tylko trasy POST mogą go zwracać.
INVALID_RANGE400Włączone /v3/bars: end_time nie jest po start_time. Zwraca obie wartości.
INVALID_SYMBOL400Włączone /v3/bars: symbol nie jest przez nas obsługiwany. Podaj parę tak, jak robi to platforma — BTCUSDT, nie BTC.
INVALID_TIMEFRAME400Włączone /v3/bars: nie jeden z 1Min, 5Min, 15Min, 1Hour, 1Day. details.supported wymienia je.
INVALID_VENUE400Włączone /v3/bars: venue nie jest us-equities, binance, lub binance-futures.
INVALID_WINDOW400Włączone /v3/screener/{asset}/{window}: okno nie jest jednym z 5m, 15m, 1h, 4h, 24h.
INVALID_METRIC400Na szeregach czasowych predykcji Binance: metric nie jest chance, price, lub last_trade.
INVALID_MARKET_ID400Włączone /v3/binance-prediction/{market_id}/*: identyfikator nie jest liczbą całkowitą bez znaku.
BAD_REQUEST400Usługa bar odrzuciła żądanie, a jej własna wiadomość jest przekazywana dalej. Przeczytaj error.message.
MARKET_TICKER_REQUIRED400Przekazano serię Kalshi, dla której wymagany jest dokładny znaleziony ticker rynku.
BATCH_TOO_LARGE400Więcej niż 10 podżądań w partii.
BATCH_INVALID_PATH400Podżądanie nie jest ścieżką GET /v3/ (status podżądania).
TICKS_NOT_IN_PLAN402Trasy na poziomie ticków są tylko dla Desk.
MARKET_NOT_FOUND404Brak rynku o takim id / slug / tickerze.
SNAPSHOT_NOT_FOUND404Nie zarejestrowano książki dla zapytania — rynek może jeszcze nie być otwarty, wygasł lub jest poza pokryciem.
CANDLES_NOT_AVAILABLE404Nie zarejestrowano serii świec dla tego tickera Kalshi.
GAME_NOT_FOUND404Brak gry o takim game_slug.
ENDPOINT_NOT_FOUND404Ścieżka nie pasuje do żadnej ścieżki v3.
SPORTS_UNKNOWN_ROUTE404Ścieżka jest pod /v3/sports, ale nie pasuje do żadnej ścieżki sportowej. GET /v3/sports wyświetla wszystkie.
SPORTS_METHOD_NOT_ALLOWED405Nieprawidłowy czasownik HTTP dla ścieżki sportowej.
RESPONSE_TOO_LARGE413Strona przekracza limit odpowiedzi. Obniż limit, zawęź okno lub dodaj interwał.
RATE_LIMIT_BURST429Przekroczono limit impulsu na sekundę.
RATE_LIMIT_SUSTAINED429Przekroczono limit utrzymania na minutę.
HISTORY_CONCURRENCY_LIMIT429Inne żądanie snapshotu lub historii wsadowej nadal działa dla tego konta (details.scope = "account").
HISTORY_POOL_BUSY429Wspólny pul zapytań archiwalnych jest nasycony po stronie serwera, nie limit Twojego konta (details.scope = "shared_pool") — spróbuj ponownie z opóźnieniem.
SERVICE_PROFILE_UNAVAILABLE503Konfiguracja serwowania Twojego konta nie mogła zostać odczytana. Przejściowe; details.retry_after jest w sekundach.
HISTORY_METER_UNAVAILABLE503Rozliczenie użycia historii jest wyczerpane, więc odczyt historii nie może zostać przyjęty. Przejściowe; niesie details.retry_after.
HISTORY_FALLBACK_UNAVAILABLE503Zakres brakujący z aktywnego sklepu nie mógł zostać pobrany z archiwum teraz. Przejściowe; przenosi details.retry_after.
BARS_LICENCE502Historia cen nie jest licencjonowana dla tego zakresu. Zawęź okno zamiast ponawiać próbę.
HISTORY_START_RATE_LIMIT429To konto rozpoczęło tyle zapytań historycznych, ile pozwala jego profil w tej minucie. Retry-After: 60.
HISTORY_DELIVERY_LIMIT429Miesięczny limit dostarczania historycznych danych konta został wyczerpany. Retry-After: 3600.
TRIAL_DELIVERY_LIMIT429Limit danych zawarty w darmowym okresie próbnym został wykorzystany. To nie jest błąd i nie rozwiązuje się przez czekanie — subskrybuj pełny plan.
INTERNAL_ERROR500Nieoczekiwany błąd serwera — spróbuj ponownie, a następnie skontaktuj się z nami podając identyfikator żądania.
AUTH_UNAVAILABLE503Weryfikacja klucza tymczasowo niedostępna — spróbuj ponownie wkrótce.
UPSTREAM_UNAVAILABLE503Usługa głębokości za API nie odpowiedziała (details.retryable = true). Dotyczy to nas, a nie twojego tickera — ponów próbę z wycofaniem zamiast traktować rynek jako brakujący.
BARS_BUSY503Usługa bar jest obecnie na granicy równoczesności, nie jest to awaria. Zawiera details.retry_after w sekundach — odczekaj i spróbuj ponownie, to samo żądanie zwykle się udaje.
BARS_UNAVAILABLE503Usługa bar jest niedostępna. Spróbuj ponownie z opóźnieniem.
BARS_UPSTREAM502Dostawca danych zwrócił błąd.
SPORTS_UNAVAILABLE503Brama sportowa nie odpowiedziała. Dotyczy nas, nie Twojego rynku.
SPORTS_UPSTREAM502Brama sportowa odpowiedziała błędem.
ISOLATED_ROUTE_UNAVAILABLE503Tylko Desk: dedykowany węzeł historii Desk jest niedostępny. Spróbuj ponownie z opóźnieniem.
ISOLATED_ROUTE_FAILED502Tylko Desk: dedykowany węzeł historii Desk odpowiedział błędem.

403 HISTORY_LIMIT_EXCEEDED zawiera details.max_history_days i details.oldest_allowed. 429 ustawia też Retry-After i X-RateLimit-* nagłówki.

Limity to kubełek tokenów na użytkownika z dwoma oknami: na sekundę burst i na minutę utrzymany limit. Przekroczenie któregokolwiek zwraca 429 z kodem dopasowania i Retry-After 1 sekundy.

Explorer to jedno żądanie na sekundę, bez oddzielnego limitu na minutę. To tempo, a nie limit wybuchowy: pętla działająca tak szybko, jak to możliwe, spędzi większość swoich żądań na 429. Odczytaj X-RateLimit-Remaining, lub po prostu śpij sekundę między wywołaniami.

Reklamowane wartości rps/rpm to ogólne limity dostępu REST, nie są to stawki dostarczania archiwum. Historyczne snapshoty, partie zawierające odczyty historii i inne ciężkie trasy używają oddzielnych kontroli współbieżności i dostarczania na poziomie konta. Kontrole te działają niezależnie od ogólnego kubełka tokenów i nie zmieniają okna historii planu.

Explorer, Quant i Research obecnie akceptują jedno historyczne żądanie w toku na konto. Desk akceptuje 6 równoległych zapytań o historyczne snapshoty na konto przez dedykowany pul zapytań Desk. Nakładanie się zwraca 429 HISTORY_CONCURRENCY_LIMIT z Retry-After: 2; ponów próbę tylko po zakończeniu aktywnego żądania. Ogólne wartości rps/rpm nie mogą być używane do wnioskowania o historycznym równoległości.

Odczyt historyczny może zostać odrzucony, nawet jeśli twoje konto jest nadal w ramach swojego limitu, ponieważ współdzielona pula zapytań do archiwum jest nasycona. W takim przypadku zwraca 429 HISTORY_POOL_BUSY z details.scope = "shared_pool" zamiast "account". Rozgałęzienie na details.scope: na account, zmniejsz swoją równoległość; przy shared_pool, zmniejszenie równoległości nie pomoże — spróbuj ponownie z opóźnieniem.

/v3/bars ma własny limit współbieżności, niezależny od obu powyższych kontroli. Po jego przekroczeniu żądanie jest odrzucane natychmiast 503 BARS_BUSY i details.retry_after w sekundach, zamiast być w kolejce — szybka odmowa, którą możesz powtórzyć, jest bardziej użyteczna niż wolny sukces, którego nie możesz zaplanować. Traktuj to dokładnie jak 429: wycofaj się i spróbuj ponownie tego samego żądania. Świece mają też dwa limity, które nie są limitami szybkości — rozmiar partii (402 SYMBOL_LIMIT_EXCEEDED) oraz zakresu na żądanie (400 WINDOW_TOO_WIDE) — oba rozwiązane przez podział żądania, nie przez oczekiwanie.

NagłówekZnaczenie
X-RateLimit-LimitTwój limit burst na sekundę (rps).
X-RateLimit-RemainingTokeny burst pozostałe w tej sekundzie.
Retry-AfterSekundy do odczekania (ustawione na 429).
X-Request-IdEcho meta.request_id.

Zobacz Plany i dostęp dla rps/rpm na poziom.

Wzór zapytań historycznych

Nie utrzymuj aktywnej większej liczby potwierdzonej współbieżności historii. Używaj ograniczonej start_time iend_time, paginacja kursorem oraz limit=1000; pomiń include_count i żądaj pełnej drabinki tylko gdy potrzebne. Dodaj interval gdy wystarczy seria z próbkowaniem. DepthFeed to produkt z dostępem na zapytania: pliki zbiorcze, dostawa archiwum offline, replikacja bazy danych i systematyczne lustrzane archiwum nie są wliczone.

List endpoints używają nieprzezroczystych kursory zestawu kluczy — O(1) na dowolnej głębokości. Przekaż ?cursor= z poprzedniej strony pagination.next_cursor; zatrzymaj, gdy has_more jest false.

json
"pagination": {
  "next_cursor": "6274…",   // opaque; feed back as ?cursor=
  "has_more": true,
  "limit": 50,
  "count": 50,
  "total_count": 1284        // only when ?include_count=true
}

Typowe parametry zapytań

ParametrTypNotatki
limitintMaksymalnie 100 rynków, migawki/transakcje maksymalnie 1000. Domyślnie: 50 / 100.
cursorciąg znakówNieprzezroczysty kursor zestawu kluczy z poprzedniej strony.
include_countboolDodaje total_count (kosztuje COUNT — opt-in).
start_timetsms-epoch lub ISO-8601. Starsze niż twoje okno → 403.
end_timetsms-epoch lub ISO-8601.
ztsAlias dla start_time, akceptowane na każdej trasie.
dotsAlias dla end_time, akceptowane na każdej trasie.
intervaldurTylko snapshoty. Zmniejsz do jednej księgi na kubełek (najnowsza w każdym): 30s, 1m, 5m, 1h … do 1d. Pomijaj dla pełnej rozdzielczości.
fillenumTylko snapshoty, wymaga interval. ffill zwraca jeden wiersz na kubełek, przenosząc ostatnią księgę do kubełków bez zapisu. Domyślnie wyłączone.

z/do i start_time/end_time to to samo okno. Obie pisownie działają wszędzie; jeśli żądanie niespodziewanie zawiera oba, start_time/end_time wygrać.

Znaczniki czasu akceptują albo milisekundy od epoki (np. 1780774485780) lub ISO-8601 (np. 2026-06-07T02:27:09Z). Każda wartość trafiająca do bazy jest walidowana i bezpieczna przed wstrzyknięciami. Okno historii planu jest egzekwowane na każdym punkcie końcowym listy/snapshot: wyraźne start_time poza zwrotem okna 403; pominięty jest przycięty do dolnej granicy okna.

Downsampling z interval

Domyślnie endpointy snapshotów zwracają każdy zmiana zarejestrowanej księgi — pełna rozdzielczość zdarzeniowa. Gdy potrzebujesz tylko okresowej próbki (np. jedna księga na minutę do wykresu lub wstępnego testu), dodaj ?interval= a serwer redukuje każdy kubełek czasowy do pojedynczego snapshotu: najnowsza księga w tym koszyku. To znacznie mniej danych przesyłanych przez sieć niż pobieranie każdego ticka i filtrowanie po stronie klienta.

shell
# 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"

Akceptuje czas trwania: samą liczbę sekund lub wartość z jednostką — 30s, 1m, 5m, 15m, 1h, 4h, 1d — od 1s do 1d. Kubełki są wyrównane do epoki, więc 1m dopasowuje do granic minut zegara ściennego. Paginacja kursora i include_count stosuje się do wierszy zredukowanych (total_count staje się liczbą kubełków). Pomiń to, przekaż raw, lub przekaż 0 dla pełnej rozdzielczości. Nieznana wartość zwraca 400 INVALID_INTERVAL. Działa na każdym punkcie końcowym snapshot — Polymarket, Kalshi, Limitless, PredictFun, Binance i sporty.

Interwał wyboru; nie interpoluje. Kubek pojawia się w odpowiedzi tylko wtedy, gdy w jego obrębie przechwycono księgę. Dwie godziny o ?interval=1m obejmuje 121 granic minutowych, ale zwraca tylko minuty z zapisem — zwykle dziesięć do trzydziestu na rynku nieaktywnie cytowanym. To jest pełny zapis dla okna, nie strona skrócona.

Wypełnianie luk za pomocą fill=ffill

Księga zleceń utrzymuje swój stan, dopóki coś go nie zmieni, więc minuta bez przechwycenia nie oznacza brakujących danych — książka z poprzedniej minuty nadal była książką. ?fill=ffill mówi to wyraźnie: jeden wiersz na kubełek dla całego okna, z ostatnią uchwyconą księgą przeniesioną do kubełków bez zapisu. To jest to, czego chcesz, gdy seria musi się zgadzać z ustalonym zegarem, słupkiem cenowym lub inną platformą.

shell
# 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 wymaga interval; samo w sobie zwraca 400 INVALID_PARAMETER. Akceptowane wartości to ffill (również previous, prev, true, 1) oraz none (również false, 0, domyślnie). Jest obsługiwane na tych samych trasach co interval. Lista, tick, świeca i orderbook/latest trasy nie mają siatki do wypełnienia i ignorują parametr zamiast go odrzucać, więc klient wysyłający go wszędzie nadal otrzymuje normalny 200 od nich.

Własny zegar wiersza zmienia się, gdy obracasz fill włączony. Z interval sam wiersz to prawdziwy zapis, więc id i time/timestamp to moment, w którym zostało zarejestrowane — 04:37:59.926 dla kubełka 04:37. Z fill=ffill każdy wiersz oznacza kubełek, włącznie z przechwyconymi, więc te pola stają się granicą kubełka (04:37:00.000) a moment rejestracji przesuwa się do as_of_ts. Nic nie jest tracone w żadną stronę, ale wykres narysowany z obu będzie przesunięty o do jednego interwału, chyba że odczytasz to samo pole w obu. Jeśli potrzebujesz siatki i momentu rejestracji razem, poproś o fill=ffill i odczytaj as_of_ts.

Odczytywanie wypełnionego wiersza

Wypełnione odpowiedzi dodają trzy pola i tylko wypełnione odpowiedzi je mają. Żądanie bez fill zwraca dokładnie taki kształt, jak zawsze.

PoleZnaczenie
filled0 gdy wiersz to zarejestrowana księga, 1 kiedy zostało przeniesione dalej.
as_of_tsKiedy księga w tym wierszu została faktycznie zarejestrowana. W przypadku przeniesionego wiersza jest to starsze niż kubeł, a odległość między nimi dokładnie pokazuje, jak przestarzała jest księga. null gdy nie było wcześniejszej księgi do przeniesienia.
as_of_ts_msTen sam moment co ms-epoch.

Znacznik czasu wiadra i as_of_ts są bliskie, ale nie równe nawet w zapisie, ponieważ zapis wylądował gdzieś wewnątrz kubełka, a nie na jego granicy: 2026-09-02T00:50:00.000Z z as_of_ts z 2026-09-02T00:50:44.437Z jest prawdziwą minutą, która miała prawdziwą księgę.

Pierwszy wiersz wypełnionego okna jest zwykle przeniesiony. Siatka jest zasilana najnowszą zarejestrowaną księgą przed okno zostało otwarte, więc seria zaczyna się od rzeczywistego stanu zamiast pustego. Jej as_of_ts może być godzinę starszy niż pierwszy kubełek i to jest szczera odpowiedź.

Gdy okno otwiera się przed rynkiem, nie ma wcześniejszej księgi do przeniesienia. Te wiodące kubełki wracają z pustą drabiną i as_of_ts: null — wygenerowane, bez niczego do włożenia. Ogranicz start_time do początku rynku, aby je pominąć.

Ten resolution blokuj

Każda odpowiedź, która użyła ?interval= zawiera resolution blokuj, aby można było odróżnić rzadki rekord przechwytywania od obciętej strony bez drugiego żądania.

json
"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 liczy przechwycenia, nigdy wiersze, więc oznacza to samo z fill włączony tak jak wyłączony. To liczba do porównania z buckets_in_range przy ocenie, jak dobrze rynek jest notowany. Z fill wyłączony, rows_returned i buckets_filled zgoda. Z nią przerwa między nimi to ile siatki zostało przeniesione. Jeśli buckets_filled jest znacznie poniżej buckets_in_range, poproś o grubszy interwał lub pomiń interval i odczytaj każdy zapis.

Cztery proste plany. The plan pole zwracane przez /v3/whoami jest surową wartością w prawej kolumnie.

PlanplanCenaOgólne rpsOgólne rpmHistoryczny paralelizmZunifikowana historiaWallet IntelligenceKryptoSports RESTKsięgi zleceń rynków sportowych na żywo
Explorerfree$01—17 dni1 zapisane · 3 audytyWszystkie aktywa + miejscaWszystkie miejsca sportoweTylko REST
Quant ★pro$29/mies.251,000130 dni5 zapisane · 10 audytyWszystkie aktywa + miejscaWszystkie miejsca sportowe1
Researchscale$99/mies.503,000190 dni10 zapisane · 25 audytyWszystkie aktywa + miejscaWszystkie miejsca sportowe2
Deskprzedsiębiorstwo$249/mies.1006,0006 równoległychPełny archiwum20 zapisane · 50 audytyWszystkie; dedykowany pul zapytań historycznych DeskWszystkie miejsca sportowe3

Nie ma dodatków Polymarket ani Kalshi. Oba miejsca sportowe używają tego samego klucza, schematu, limitu szybkości i okna historii; aktualizacja kupuje więcej historii, przepustowości i jednoczesności książek na żywo.

Do czego sięga Explorer

Explorer to prawdziwy klucz na prawdziwych danych, nie sandbox: wszystkie siedem monet, każda platforma, siedem dni historii, cały powierzchniowy REST sportowy, słupki cenowe i screener. Platforma nigdy nie jest czymś, co kupuje plan. To, co kupuje upgrade, to okno historii, przepustowość, subskrypcje strumieni i dane tickowe. Każdy klucz zwraca pełną drabinkę; jedyną przyciętą księgą na API jest demo bez klucza, z ośmioma poziomami po stronie.

Jedna rodzina tras, do której Explorer nie ma dostępu, to ticki, które są dostępne tylko w Desk na każdej platformie i zwracają 402 TICKS_NOT_IN_PLAN poniżej tego. Anonimowa powierzchnia demo — bez żadnego klucza — jest osobno ograniczona do próbki BTC i jest jedyną rzeczą, która odpowiada 402 COIN_NOT_IN_PLAN.

Ogólne kolumny rps/rpm opisują przyjmowanie żądań, nie jednoczesne skanowanie archiwum. Równoległość zapytań historycznych i kontrola dostarczania są oddzielne. Historyczne odczyty Desk używają dedykowanej puli zapytań tylko dla Desk, izolowanej od ruchu zapytań planu regularnego, bez usuwania kontroli na poziomie konta. Pula jest współdzielona między kontami Desk i nie jest infrastrukturą własną klienta ani wyłączną dla konta.

Ograniczenia są egzekwowane po stronie serwera:

  • Rynki — każdy plan, w tym Explorer, obejmuje każdą monetę, każdą platformę i pełną księgę zamówień; co ogranicza to przepustowość, historię i ticki, a nie dostęp.
  • Historia — okno poza twoim planem → 403 HISTORY_LIMIT_EXCEEDED; uaktualnienie poszerza okno, nigdy listę rynków.
  • Sporty — the /v3/sports/* Powierzchnia REST jest zawarta w każdym planie; to samo okno historii planu dotyczy obu venue.
  • Historia — start_time poza twoim oknem → 403 HISTORY_LIMIT_EXCEEDED.
  • Świece cenowe — /v3/bars przestrzega tego samego okna historii co głębokość, a dodatkowo ogranicza symbole na żądanie (3 / 8 / 16 / 32), ponad które zwraca 402 SYMBOL_LIMIT_EXCEEDED.
  • Strumieniowanie — limity obowiązują w momencie subskrypcji na /v3/stream; każdy plan strumieniuje każdą platformę — Explorer jest ograniczony do jednej jednoczesnej subskrypcji, płatne plany zwiększają liczbę.
GET/v3/healthbrak uwierzytelnienia

Probe żywotności, bez uwierzytelniania. Zwraca { status: "ok", service, time }.

GET/v3/whoami

Twój plan, limity szybkości, zunifikowane okno historii, dostęp do coinów i sportu — najszybszy sposób na potwierdzenie działania klucza.

Rynki wzrost/spadek Polymarket według monety, połączone z referencją rozliczeniową (cena otwarcia/zamknięcia, zwycięzca, wolumen). {coin} jest jednym z btc · eth · sol · xrp · doge · bnb · hype.

GET/v3/{coin}/markets

Filtry: type (5m/15m/1h/4h/24h), resolved (true/false), plus wspólne parametry czasu + paginacji.

GET/v3/{coin}/markets/{market_id}
GET/v3/{coin}/markets/by-slug/{slug}

Pojedynczy rynek według identyfikatora lub nazwy. Przykładowa odpowiedź (klucze cenowe na monetę są dynamiczne, jak odniesienie):

json
{ "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": { … } }
Pola rozliczeniowe — *_price_*, winner, resolved_at, final_volume, oraz final_liquidity — są null dopóki rynek się nie rozliczy i referencja nie zostanie uzupełniona (~12–24 h po rozliczeniu).
GET/v3/polymarket/markets

Ten cała platforma Polymarket, nie tylko rynki kryptowalut wzrost/spadek. Powyższe trasy adresują rynki według monety, więc mogą dotrzeć tylko do rynków, które ją mają — wybory, geopolityka, akcje i FX nie mają monety i nie mają tam URL. To lista wszystkiego.

Filtry: ?q= (wyszukiwanie slug), ?type=event dla wszystkiego, co nie jest drabinką up/down, plus ?coin=, ?event= i ?outcome=. Rynki tutaj są kluczowane przez CLOB asset_id (id tokena); przekaż to do /v3/polymarket/{asset_id}/snapshots dla historii głębokości lub /v3/polymarket/{asset_id}/ticks dla taśmy. Rynki niekryptowalutowe mają pusty base_asset — nie mają monety i nie wymyślamy jej.

Każdy wiersz zawiera category i tags. Drabiny wzrostu/spadku są crypto; każdy inny rynek bierze swoją kategorię z własnych tagów zdarzeń platformy, w tej samej pisowni co Polymarket US (sporty, crypto, politics, geopolitics, finance, macro, technology, science, climate, culture), z surowymi tagami slug w tags i null gdzie platforma nie ma etykiety. Filtruj za pomocą ?category=politics,macro lub ?exclude_category=sports,crypto: oddzielone przecinkami, nieczułe na wielkość liter, łączone; wykluczenie zachowuje rynki bez etykiet. ?closed=true|false jest flagą handlową venue (drabinka jest zamknięta, gdy jej end_time minął). Dla lustrzanego odbicia, ?updated_since= (ISO-8601, data lub epoka w milisekundach) zwraca tylko wiersze, których zawartość, etykieta lub stan zamknięcia zmieniły się od tego czasu; każdy wiersz ma updated_at jest tym stemplem. resolved nie jest filtrem na tej trasie i jest raportowany pod meta.ignored_params.

GET/v3/polymarket/{asset_id}/snapshots

Historia snapshotów księgi zleceń dla dowolnego rynku Polymarket — sport, polityka, wiadomości i kryptowaluty — ograniczona oknem historii Twojego planu. Ten sam kształt i paginacja co trasy snapshotów na monetę.

GET/v3/polymarket/{asset_id}/ticksprzedsiębiorstwo

Taśma obejmująca całe miejsce dla tego samego asset_id klucze.

Szereg czasowy głębokości księgi zleceń dla rynku, z dołączoną ceną bazową monety na każdym snapshotcie.

GET/v3/{coin}/markets/{market_id}/snapshots

Dodaj ?include_orderbook=true do pobrania pełnej drabinki (domyślnie pomijane dla lżejszego ładunku). Okno czasowe + paginacja kursora. Dodaj ?interval=1m (lub 5m, 1h, …) do próbkowania do jednego księgi na kubełek zamiast surowej przechowywanej serii — zobacz Paginacja i filtry. Odpowiedź listy to tablica z pagination blokuj:

json
{ "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": { … } }
GET/v3/{coin}/markets/{market_id}/snapshots/at/{timestamp}

Pojedynczy snapshot najbliższy znacznikowi czasu (w zakresie ±2 s). {timestamp} jest ms-epoch lub ISO-8601. W przeciwieństwie do punktu końcowego listy, data jest pojedynczy obiekt (ten sam kształt wiersza) z nie pagination blokuj; brak dopasowania w zakresie ±2 s zwraca 404 SNAPSHOT_NOT_FOUND.

json
{ "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": { … } }

Poziomy to [price, size]. price_up jest najlepszym punktem środkowym bid/ask; price_down = 1 − price_up. The orderbook_down strona jest wyprowadzana jako binarny dopełniacz księgi wzrostu (down = 1 − up, rozmiary zachowane). Cena monety to najbliższy poprzedzający tick przez ASOF join — dokładny dla 1h/4h/24h, oznaczony Binance proxy dla 5m/15m.

Każdy wiersz to kompletny order book według jego znacznika czasu, nigdy nie delta względem poprzedniego wiersza, więc nigdy nie musisz odbudowywać stanu z zmian. Dla samego strumienia zmian użyj ticki.

Inne trasy snapshotów venue

Ten sam kontrakt — okno, kursor, interval, fill, okno historii planu — jest obsługiwane przez jedną trasę na giełdę. Różnią się identyfikatorem, który przyjmują, oraz sposobem prezentacji dwóch stron rynku binarnego, ponieważ same giełdy tak robią.

TrasaIdentyfikatorKształt księgi
/v3/{coin}/markets/{market_id}/snapshotsNumeryczne market_id z /v3/{coin}/marketsWidok zdarzenia per coin: price_up/price_down tylko, chyba że dodasz include_orderbook=true
/v3/polymarket/{asset_id}/snapshotsIdentyfikator tokena — clob_token_up/clob_token_down, lub asset_id z /v3/polymarket/marketsKsięga jednego tokena: bids i asks tablice, zawsze dołączone
/v3/kalshi/{ticker}/snapshotsticker z /v3/kalshi/marketsyes i nie drabinki
/v3/limitless/{slug}/snapshotsslug z /v3/limitless/marketsbids, asks, oraz midpoint
/v3/predictfun/{id}/snapshotsmarket_id z /v3/predictfun/marketsZagnieżdżone up i down obiekty, każdy z bids/asks
/v3/{coin}/{venue}/snapshotsvenue jest spot lub futures — nie jest nazwą giełdy20-poziomowa podstawowa księga: bids, asks, price

Trasa Polymarket obejmuje cały venue, nie tylko drabinki kryptowalut — wybory, sporty i wszystko inne, co Polymarket oferuje. Trasa per coin to widok kryptowalutowy up/down z dołączoną ceną bazową.

Surowy zapis: każda pojedyncza zmiana order booku, nie jest to próbkowana seria snapshotów. Tam, snapshoty dają order book w punktach czasowych, ticki dają każdą zmianę między nimi — czego potrzebuje workflow market-makingu lub badań wykonania, aby zapytać, gdzie był order book tuż przed realizacją zlecenia lub jak długo poziom był dostępny, zanim został zabrany.

Tylko dla przedsiębiorstw. Inne plany otrzymują 402 TICKS_NOT_IN_PLAN.

GET/v3/{coin}/markets/{market_id}/ticksprzedsiębiorstwo

Polymarket, pozyskany ze strumienia delta CLOB. Oba tokeny wynikowe są zwracane domyślnie i oznaczone outcome; zawęź za pomocą ?outcome=up lub ?outcome=down.

Historia: taśma jest ciągła od 2026-06-25 (sprawdzone 2026-09-02) i nadal się kumuluje, więc niezawodne okno rośnie o jeden dzień każdego dnia. Dni sprzed tego istnieją w archiwum, ale nie są ciągłe — 61 z nich brakuje między 2026-04-14 a ciągłym okresem — więc backtest wymagający nieprzerwanej serii powinien zaczynać się nie wcześniej niż 2026-06-25.

Zasięg: rynki wzrost/spadek na 5m, 15m i 24h okna, dla wszystkich siedmiu aktywów. The 1h i 4h rodziny w górę/w dół są nie aktualnie na taśmie ticków — użyj snapshoty dla tych.

json
{ "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": { … } }
GET/v3/kalshi/{ticker}/ticksprzedsiębiorstwo

Nowe — przechwytywanie ticków Kalshi rozpoczęło się 2026-08-07. Nie ma historii ticków Kalshi przed tą datą; taśma kumuluje się od niej naprzód. Kalshi snapshoty pozostają dostępne przez całe okno historii.

Zasięg to podzbiór ruchomy, nie każdy rynek Kalshi: siedem aktywów kryptowalutowych, priorytetowo według najbliższego wygaśnięcia, z ograniczoną liczbą rynków nagrywanych jednocześnie. Skontaktuj się z nami, jeśli potrzebujesz pokrycia konkretnej serii.

Pochodzi z uwierzytelnionego orderbook_delta WebSocket. kind jest snapshot dla wierszy kotwiczących order book (aby każde żądane okno zaczynało się od kompletnego stanu) lub delta dla zmiany. delta jest podpisaną zmianą wielkości i size jest wielkością oczekującą na tej cenie po to. seq jest własnym numerem sekwencji Kalshi dla sesji przechwytywania — zwiększa się dokładnie o jeden w trakcie sesji, więc możesz zweryfikować, że fragment taśmy jest kompletny, zamiast wierzyć nam na słowo. Ciąg snapshot wiersze oznaczają nową sesję, gdzie następuje restart. Zawęż do jednej strony za pomocą ?side=yes lub ?side=no.

Rekonstrukcja książki: traktuj każdy snapshot uruchom jako twardy reset księgi tego rynku, następnie zastosuj delta wiersze w seq kolejność w sesji. Sortuj według seq, nie przez time: własne znaczniki czasu platformy nie są monotoniczne na poziomach w ciągu jednej milisekundy, podczas gdy seq jest. Każdy seq krok inny niż +1 w sesji to luka w taśmie dla tego odcinka; przechwytywanie łączy się ponownie i robi nowy snapshot automatycznie, gdy wykryje lukę, więc następny snapshot uruchomienie to punkt, od którego księga jest ponownie kompletna.

json
{ "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": { … } }

Strony mieszczą do 10000 wiersze (domyślnie 1000) i są paginowane kursorem jak każdy inny punkt końcowy listy. Wiele ticków rutynowo dzieli tę samą milisekundę, więc kursory niosą pozycję w ciągu znacznik czasu — paginacja ruchliwego rynku nigdy nie dzieli ani nie pomija wierszy dzielących granicę czasu.start_time/end_time i okno historii Twojego planu stosują się jak zwykle.

Książka i taśma transakcji aktywa bazowego z Binance. {venue} jest spot lub futures. Księga ma 20 poziomów na stronę.

GET/v3/{coin}/{venue}/latest
GET/v3/{coin}/{venue}/snapshots

Najnowsza historia księgi / paginowana historia księgi. Każda migawka: price (średnia), bids, asks, timestamp.

GET/v3/{coin}/{venue}/trades
GET/v3/{coin}/{venue}/trades/latest

1-sekundowe świece OHLCV z agresywnym podziałem kupna/sprzedaży — dokładne, 1:1 z odniesieniem:

json
{ "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": { … } }
Binance nie dostarcza futures aggTrade przez websocket do naszego regionu (strumienie głębokości działają dobrze), więc taśma transakcji futures 1s jest pobierana z punktu końcowego REST aggTrades i agregowana do tego samego 1s OHLCV co spot. Transakcje spot i futures oraz wszystkie księgi są na żywo.

Świece OHLCV dla akcji i ETF-ów notowanych w USA, par spot Binance i wieczystych kontraktów futures. Jedna minuta to najdrobniejsza rozdzielczość; większe ramy czasowe są agregowane z niej.

GET/v3/bars

symbols jest listą oddzieloną przecinkami. timeframe jest jednym z 1Min, 5Min, 15Min, 1Hour lub 1Day (domyślnie 1Min). start_time, end_time, limit i cursor zachowują się dokładnie tak jak na każdej innej kolekcji tutaj.

id jest znacznikiem czasu, nie unikalnym kluczem. Feed głębokości przychodzi co 100 ms, a giełda czasem oznacza dwie różne księgi tym samym milisekundowym znacznikiem, więc strona może legalnie zawierać dwa wiersze z jednym id i dwie różne drabinki. Paginacja obsługuje remis — kursor to keyset, więc współdzielona milisekunda nigdy nie jest dzielona na granicy strony — ale klient, który kluczuje wiersze według id sam wiersz cicho odrzuci jeden z dwóch. Klucz na wierszu lub na (id, sequence within the page).

venue jest opcjonalny i wybiera rynek bezpośrednio: us-equities, binance (spot) lub binance-futures (perpetuals). Wyłącz to, a goły symbol zostanie rozstrzygnięty za Ciebie — najpierw akcje, potem Binance spot. Nazwij go, a otrzymasz ten rynek lub nic, co jest pożądane, gdy ciąg może oznaczać dwa instrumenty.

limit to są świece na symbol. Żądanie bez tego nie jest stronicowane wcale, ponieważ naturalne pobieranie świec to całe okno, a domyślny rozmiar strony cicho zwróciłby krótką serię — co jest nie do odróżnienia od luki w danych. Gdy stronicujesz, każda seria jest cięta w tym samym momencie i pagination.next_cursor wznawia dokładnie tam: bez nakładania się, bez przerwy.

bash
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"
json
{ "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": { … } }

Jak przeliterować symbol

Akcje i ETF-y mają swoje zwykłe tickery: AAPL, SPY, BRK-B. Para kryptowalutowa jest zapisana tak, jak ją zapisuje platforma, więc jest BTCUSDT zamiast BTC. Kontrakt terminowy perpetual ma .P przyrostek — BTCUSDT.P, AAPLUSDT.P — ponieważ para spot i perpetual to różne instrumenty handlujące po różnych cenach, a płaska przestrzeń symboli, która cicho wybrałaby jeden dla ciebie, wybierałaby, który rynek mierzy twoja strategia.

Trzy ciągi to zarówno ETF z USA, jak i para Binance: BTCU, ETHU i WLDU. Każdy rozwiązuje się do kapitał własny, zdecydowano się na uniwersum symboli zamiast zakresu dat — więc odpowiedź nigdy się nie zmienia po przesunięciu okna. Para kryptowalut jest nadal dostępna pod własną pisownią giełdy.

Ramy pochodne

Akcje są zbierane o 1Min i 1Day; kryptowaluty są zbierane o 1Min. Wszystko inne jest agregowane podczas odczytu, a seria wskazuje, która to jest za pomocą derived. Zagregowana świeca bierze otwarcie pierwszej świecy i zamknięcie ostatniej, ekstremalne wartości maksimum i minimum oraz sumę wolumenu, na kubełkach wyrównanych do UTC.

Limity

Trzy oddzielne granice, które kończą się trzema różnymi kodami błędów. Okno historii Twojego planu obowiązuje tutaj jak wszędzie — po jego przekroczeniu, 403 HISTORY_LIMIT_EXCEEDED. Symbole na żądanie to 3 w Explorer, 8 w Quant, 16 w Research, 32 w Desk; powyżej tego, 402 SYMBOL_LIMIT_EXCEEDED. Pojedyncze żądanie może obejmować tylko tyle czasu, ile pozwala liczba wierszy ramki — 45 dni przy 1Min, 180 przy 5Min, rok przy 15Min i 1Hour, dziesięć lat przy 1Day — nad którym zwraca 400 WINDOW_TOO_WIDE. Stronicuj za pomocą limit i cursor przejść zakres szerszy niż jedna żądanie.

Czwarta odpowiedź to nie limit, ale moment: 503 BARS_BUSY oznacza, że usługa barów osiągnęła teraz swój limit współbieżności. Obsługuje details.retry_after w sekundach, jak odmowa limitu szybkości, a to samo żądanie zwykle się udaje przy następnym podejściu — traktuj to jako wycofanie się i ponowną próbę, nie jako awarię.

Jedno okno, jedno znaczenie. Słupki są ograniczone tym samym oknem historii planu co głębokość księgi zleceń, odrzucane w ten sam sposób poza nim (403 HISTORY_LIMIT_EXCEEDED, z oldest_allowed w szczegółach). Open-source Kreator strategii czyta ten dokładny punkt końcowy z Twoim własnym kluczem, więc backtest tam sięga dokładnie tak daleko, jak Twój plan tutaj.
Te dane są przypisane do źródła i nie jest skonsolidowanym (SIP) feedem, i nie jest powiązany z giełdą, NBBO ani bezpośrednim kanałem dystrybucji giełdowej. Każda odpowiedź zawiera attribution ciąg znaków i każda seria nazywa własny source; oba muszą być dołączone do danych, jeśli je wyświetlasz.

Kontrakty kryptowalutowe Kalshi — pełna głębokość tak/nie, której referencja nie posiada. 21 seria dla wszystkich 7 aktywów: 15-minutowa KX{ASSET}15M, próg KX{ASSET}, oraz kierunkowe KX{ASSET}D. Progi i serie kierunkowe działają jednocześnie na rynkach godzinowych, dziennych i tygodniowych — market_type zawiera rzeczywiste okno każdego rynku.

GET/v3/kalshi/markets

Filtry: ?coin= (bazowy aktyw), ?type= (okno), oraz dokładne ?series= (na przykład KXBTC15M). Dla historycznych pobrań, przekaż start_time i end_time tutaj najpierw i używaj zwróconych natywnych tickerów venue. Nie generuj identyfikatorów tickerów Kalshi z znaczników czasu UTC; konwencja zegara tickerów venue zmieniła się historycznie.

Domyślnie lista jest ograniczona do rynków, których księga zleceń została zarejestrowana w oknie twojego planu, więc każdy wiersz ma możliwe do pobrania /snapshots. Przekaż ?include_uncaptured=true dla całego katalogu venue: każda seria Kalshi, w tym sporty, polityka, ekonomia, pogoda i rozrywka. Te wiersze zawierają świece, nie order booki; depth_captured w każdym wierszu mówi, jakiego rodzaju patrzysz.

Każdy wiersz zawiera category, własna etykieta serii giełdy (Politics, Sporty, Krypto, Climate and Weather, …). Filtruj za pomocą ?category=politics,elections lub ?exclude_category=sports,crypto; oba przyjmują listy rozdzielane przecinkami, porównują bez uwzględniania wielkości liter i mogą być łączone. Użyj category dla tego, nie base_asset: base_asset jest odczytywany z prefiksu serii i ma znaczenie tylko w wierszach kryptowalut.

GET/v3/kalshi/{ticker}/orderbook/latest

Najnowsza pełna książka yes/no dla tickera. yes/nie są [price, size] tablice (ceny w 0–1 dolarach).

json
{ "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": { … } }
GET/v3/kalshi/{ticker}/snapshots

Ten historyczne serie głębokości tak/nie dla jednego dokładnego odkrytego tickera rynku — ten sam kształt wiersza, uporządkowany według czasu odbioru, okno czasowe + stronicowanie kursora (include_count opcjonalne, max 1000). Historia księgi Kalshi przechwytywana z pętli REST o stałym tempie. Skuteczna częstotliwość zależy od aktywnego zestawu rynków i limitów API; używa tego samego wzoru punktu końcowego historycznego co Polymarket i Limitless /snapshots, więc głębokość Kalshi jest również testowalna. Przekazanie serii takiej jak KXBTC15M, lub wymyślony historyczny ticker, zwraca wyraźny błąd odkrycia zamiast mylącej pustej strony.

GET/v3/kalshi/{ticker}/candles

Godzinowo OHLC z oferty tak, oferty nie i ceny transakcyjne, plus volume i open_interest. To jedyna historia istniejąca dla większości katalogu Kalshi: Kalshi nie udostępnia historycznej księgi zleceń, więc rynek zamknięty przed rozpoczęciem rejestracji księgi nie ma /snapshots i nie /ticks — ale ma świece, sięgające do roku wstecz.

Okna czasowe i paginacja kursorem jak /snapshots (maksymalnie 5000 wierszy), ograniczone do okna historii Twojego planu. ?interval= wybiera okres świecy; tylko 1h jest rejestrowany, a każda inna wartość zwraca wyraźny błąd wskazujący, co istnieje, zamiast pustej strony. Świece są przechowywane tak, jak zostały zarejestrowane i nigdy nie są ponownie próbkowane, więc krótszy okres nigdy nie jest syntetyzowany z dłuższego.

price jest null gdy nic nie było handlowane w okresie — około 95% z nich. Strony kwotowań są zawsze rzeczywiste, więc cicha godzina nadal pokazuje, gdzie stała księga. Pokrycie to rynki długoterminowe (otwarte dłużej niż 24 godziny); krótkoterminowe drabinki kryptowalut są rejestrowane w pełnej rozdzielczości przez /snapshots i /ticks zamiast tego, a żądanie ich świec zwraca 404 który to stwierdza.

json
{ "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": { … } }

Porównujesz wszystkie trzy platformy jednocześnie? Zacznij od cross-venue screener zamiast łączenia wywołań per-venue.

Polymarket US jest rynkiem kontraktów wyznaczonym przez CFTC i oddzielnym venue od Polymarket: rynki są kluczowane na slug, nie ma condition_id i nie asset_id, i nic tutaj nie łączy się z powierzchniami Polymarket powyżej. Tylko płatne plany. Ta giełda jest w fazie testów na żywo: katalog, ceny i transakcje są dostępne we wszystkich kategoriach, a pokrycie order book jest nadal rozszerzane.

GET/v3/polymarket-us/markets

Katalog miejsc, każda kategoria, najnowsze zamknięcie pierwsze i stronicowanie kursorem. Każdy wiersz zawiera własne category (sporty, crypto, politics, climate, culture, macro, technology, finance, geopolitics, science). Filtruj za pomocą ?category=politics,macro lub ?exclude_category=sports,crypto: oddzielone przecinkami, nieczułe na wielkość liter, łączone. Inne filtry: ?coin=, ?type= (15m, 1h, futures, …), ?series=, ?closed=, ?resolved=, start_time/end_time na czas zamknięcia. Dla lustrzanego odbicia, ?updated_since= zwraca tylko wiersze, których zawartość zmieniła się od tego czasu (lista, zamknięcie, zmiana statusu); każdy wiersz updated_at jest tym stemplem. sports_market_type jest polem venue, które venue również wypełnia poza sportem; nie jest dyskryminatorem sportowym, category jest.

GET/v3/polymarket-us/{slug}/orderbook/latest
GET/v3/polymarket-us/{slug}/snapshots

Najnowsza książka i zarejestrowana seria książek dla jednego sluga. Głębokość na tym venue jest rejestrowana od dnia rozpoczęcia przechwytywania i przechowywana przez 14 dni; rynek poza tym oknem zwraca 404 tutaj nawet gdy istnieje jego wiersz katalogu. Pokrycie jest na rynek: drabinki wzrostu/spadku są rejestrowane ciągle, kategorie długoterminowe tylko częściowo.

GET/v3/polymarket-us/{slug}/prices
GET/v3/polymarket-us/{slug}/trades
GET/v3/polymarket-us/{slug}/settlement

Minutowe ceny, taśma wykonania platformy i rozliczenie na rynku. Ceny i transakcje istnieją dla większości katalogowanych rynków w każdej kategorii; wiersze rozliczeniowe pojawiają się po zgłoszeniu wyniku przez platformę.

Limitless Exchange — CLOB na Base prowadzący powtarzające się rynki kryptowalut w górę/w dół na 5m i 15m. Głębokość jest rejestrowana na żywo przez websocket księgi zleceń (więc nawet szybkie księgi 5m są rejestrowane). {slug} wygląda jak btc-up-or-down-15-min-1780798512077.

GET/v3/limitless/markets

Aktualnie otwarte sloty. Filtry: ?coin= i ?type= (5m/15m).

GET/v3/limitless/{slug}/orderbook/latest

Najnowsza głębokość L2 dla slug (bid malejąco, ask rosnąco):

json
{ "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": { … } }
GET/v3/limitless/{slug}/snapshots

Ten historyczne serie głębokości dla jednego slug — ten sam kształt wiersza, uporządkowany według czasu odbioru, okienkowany czasowo + stronicowany kursorem. To jest historia order booku przechwytywana do przodu.

Rynki predykcyjne kryptowalut portfela Binance wspierane przez Predict.fun, znormalizowane w dedykowanej przestrzeni nazw DepthFeed. Początkowy katalog obejmuje rynki up/down BTC, ETH i BNB.

GET/v3/binance-prediction/markets

Filtruj za pomocą ?coin=btc, ?type=5m, lub ?status=resolved. Wyniki zawierają identyfikatory rynku/tematu, metadane warunków i tokenów, rozstrzygnięcie, zwycięski wynik, wolumen, płynność, liczbę uczestników, łańcuch i kontrakt giełdowy.

GET/v3/binance-prediction/{market_id}/orderbook/latest
GET/v3/binance-prediction/{market_id}/snapshots

Najnowsza i historyczna pełna głębokość L2. Standardowy panel cyklu życia BTC 15-minutowego zaczyna się 26 czerwiec 2026; stabilne minutowe przechwytywanie do przodu na śledzonych rynkach na żywo rozpoczyna się 26 lipca. Wcześniejsze księgi odpoczynku nie mogą być odtworzone z danych rozliczeniowych.

GET/v3/binance-prediction/{market_id}/timeseries?metric=chance
GET/v3/binance-prediction/{market_id}/timeseries?metric=price
GET/v3/binance-prediction/{market_id}/timeseries?metric=last_trade
GET/v3/binance-prediction/{market_id}/trades

Prawdopodobieństwo, wyświetlana cena i próbki ostatnich transakcji są przechowywane osobno i zaczynają się 17 lipca 2026. Trasa transakcji jest zarezerwowana, podczas gdy historyczne realizacje są rekonstruowane z logów BNB Smart Chain i obecnie zwraca pusty zestaw historyczny.

Deterministyczny katalog 5-minutowy i 15-minutowy, rozdzielczość, wolumen i historia płynności jest uzupełniana od 5 maja 2026. Odpowiednik /v3/predictfun/* ścieżki pozostają kompatybilnymi aliasami. Klienci używają klucza DepthFeed; nie jest wymagany klucz Binance ani powiązanie z portfelem.

Zacznij tutaj dla wszystkiego międzyplatformowego. Screener odpowiada na kluczowe pytanie — jak jest wyceniany ten sam rynek „w górę lub w dół” na Polymarket, Kalshi i Limitless właśnie teraz? — w pojedyncze żądanie, więc nigdy nie łączysz samodzielnie trzech punktów końcowych na giełdę (z ich trzema różnymi identyfikatorami). Każdy plan widzi wszystkie trzy giełdy; okno historii planu to jedyna różnica, gdy śledzisz komórkę w jej historii.

GET/v3/screener

Siatka: jedna komórka na aktywo z najnowszym prawdopodobieństwem „up” każdego venue, najlepszym bid/ask i referencją rozliczeniową. Zastępcza/pusta księga raportuje null zamiast bezsensownego 0.50.

json
{ "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": { … } }
GET/v3/screener/{asset}/{window}

Zanurz się w jeden (aktywo, okno): pełny order book L2 na każdym venue obok siebie (books.polymarket / books.kalshi / books.limitless), plus podstawowa seria spot i rozliczenie price_to_beat — pojedyncze wywołanie, którego faktycznie potrzebuje backtest cross-venue lub ekran arbitrażowy.

GET/v3/overviewbrak uwierzytelnienia

Przegląd szeregów czasowych na aktywo i venue (segmenty cenowe na okno) — co zasila wykres przeglądowy dashboardu. Publiczne, bez wymaganego klucza; wybierz za pomocą ?asset=.

POST/v3/batch

Uruchom do 10 GET /v3/ żądania w jednej podróży w obie strony. Każde podżądanie jest wysyłane niezależnie i otrzymuje własny status.

shell
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" }
  ] }'

Głębokość kontraktu i wykresy cen bazowych w jednym cyklu to para, dla której to istnieje — /v3/bars jest podżądaniem jak każde inne.

Zwroty { data: [ { id, status, body }, … ] } z zewnętrznym 200. Ponad 10 podżądań → 400 BATCH_TOO_LARGE; nie-GET lub nie-/v3/ ścieżka otrzymuje subskrypcję per 400 BATCH_INVALID_PATH.

Aktualizacja z września 19, 2026. Zobacz aktualny przewodnik integracji dla identyfikatorów, korekt, stronicowania i kontroli kompletności.

Tożsamości fixture, kandydata i kontraktu

PoleZnaczenie
game_slugSpecyficzny dla platformy identyfikator gry; nie jest kluczem do łączenia między platformami.
cross_venue_keyTen sam obsługiwany fixture lub przedmiot; nie równoważne warunki wypłaty.
contract_mapping.candidate_keyObsługiwana grupa przedmiotów zawartych w fixture; mutowalna po korektach i potencjalnie wiele-do-wielu.
contract_mapping.outcomes[].participant_keyKanoniczny uczestnik dla tokena wyniku, niezależny od kolejności w tablicy.
cross_venue_market_keyPotwierdzony klucz równoważnego kontraktu; null, jeśli status nie jest dopasowany.
contract_mapping.outcomes[].cross_venue_outcome_keyPotwierdzony klucz wyniku; null bez zweryfikowanej równoważności kontraktu.

Istniejący kind, outcomes i tokens pozostają natywne dla platformy zwykłe ciągi znaków; wyniki i tokeny są wyrównane indeksowo w jednym wierszu. fixture_participants dostarcza kanonicznych uczestników wydarzenia niezależnie od rodzaju rynku. market_family i market_period normalizuj obsługiwane etykiety rodzaju bez przypisywania równoważnych linii, stron lub zasad. Ogólne etykiety Tak/Nie i Over/Under nie są przypisywane do drużyny. Jednotokenowy kontrakt Kalshi YES pozostaje jednotokenowy; jego komplement NO nie jest automatycznie przeciwnikiem.

Kandydaci moneyline są oceniani w ligach, gdy można zidentyfikować terminarz i dwa oznaczone wyniki uczestników. Porównania half-unit spread, total i team-total powiązane ze źródłem używają teraz sports-lines-v1, contract_spec i strony per outcome. Natywne okresy half/quarter zastępują ogólne etykiety. Wyraźne natywne propozycje liczbowe mogą normalizować do granic half-unit, gdy ich strike, metryka i temat się zgadzają. Gry/sety tenisa, gry/mapy esportu, rzuty rożne, przyłożenia, field gole i jardy ofensywne zachowują odrębne metryki. Sumy pierwszych pięciu są sumami biegów; zakresy pojedynczych inningów pozostają odrębne. Linie integer/push i split, nieznane metryki, futures i props pozostają nieobsługiwane; konsultuj kontrakt mapowania dla semantyki signed-spread. Aktualny rejestr profili przeglądanych nie ma zatwierdzonych par równoważnych; potwierdzone klucze są więc null. Klucze kandydatów wspierają grupowanie tematów z osobno przeglądaną decyzją rozliczeniową; nie zastępują potwierdzonej równoważności. Nie ma daty na szersze potwierdzone dopasowanie.

Poziom najwyższy cross_venue_market_key i contract_mapping.cross_venue_market_key są identycznymi aliasami z jednego mapowania. Odczytaj aktualne źródło dowodu z GET /v3/sports/markets/{condition_id}/contract; brak dowodów oznacza null, a przeterminowane lub niezgodne z danymi wejściowymi dowody są jawnie oznaczone. GET /v3/sports/market-families zwraca mapowanie czytelne maszynowo dla rodzaju.

StatusInterpretacja
matchedKontrahent udostępnia przegląd warunków rozliczenia; użyj potwierdzonych kluczy.
unmatchedZnana różnica, nieobsługiwany zakres lub brakujący odpowiednik uniemożliwia połączenie.
needs_reviewDostępność dowodów, tożsamości lub mapowania jest niewystarczająca; nie traktuj tego jako równoważne.

Porównania obejmują okres, dogrywki, remisy, odroczenia, anulowania, źródło wyniku, ostateczność wyniku, porzucenia, walkowery, zmiany platform i inne istotne zasady. Diagnostyczne wyodrębnienie nie jest dowodem równoważności: potwierdzone mapowania wymagają terms_verified: true, hash dowodu i świeże źródło dowodu.

Dla Rams vs. 49ers sama tożsamość uczestnika nie rozstrzyga różnych klauzul odroczenia. Dowody i diagnostyka mogą wygasnąć; czytaj aktualne kody powodów i dowody źródłowe zamiast twardo kodować przykładowy status.

Klucze kandydujące obejmują tożsamość wydarzenia i mogą się zmieniać lub czyścić po korektach tożsamości, linii, okresu lub rodziny. Upsert według condition_id, konsumuj updated_since różnice i zachowuj wcześniejsze wersje wierszy dla historycznych połączeń. candidate_group udostępnia natywne liczniki venue i condition ID; nie jest wybierany żaden autorytatywny rynek spośród wielu natywnych listingów.

Spread kwartalny, całkowity i zespołowy są klasyfikowane jawnie. Kandydaci binarni powiązani ze źródłem używają sports-binary-v1 i jawny predykat: nigdy nie wyciągaj znaczenia z etykiety takiej jak nrfi. Obsługiwane wyniki linii łączą się według strony w obrębie kandydata; wyniki moneyline łączą się według uczestnika. Zobacz referencja API sportowego dla parametrów endpointów i pól odpowiedzi przed trwałymi połączeniami.

Ziarno wiersza i triage jakości danych

Jeden wiersz to rekord rynku katalogowego. Niektóre wiersze moneyline Kalshi grupują dwa niezależne kontrakty YES; inne rekordy pokazują jeden kontrakt. Fixture może generować oddzielne wyniki moneyline, spreadów, sum, sum drużynowych, propsów, wariantów linii i historycznych warunków, więc liczenie grupowane przez cross_venue_key nie powinny się zgadzać między venue. Duża różnica to sygnał do przeglądu, a nie dowód, że wiersze są brakujące lub zdublowane.

resolved=false oznacza, że venue nie oznaczyło tego warunku jako ostatecznego; nie oznacza to, że mapowanie jest nierozwiązane. Rynek może być nierozwiązany z kluczem kandydata, lub rozwiązany z mapowaniem null lub cofniętym. Zachowaj resolved, contract_mapping.status i obecność klucza jako osobne osie.

Dla audytu wylicz league, scope i kind z GET /v3/sports/markets, następnie porównaj wiersze o tym samym znormalizowanym podpisie: mecz, okres, uczestnik, linia, strona, rodzaj i profil rozliczenia. Użyj candidate_key dla grup kandydatów i cross_venue_market_key tylko dla potwierdzonych połączeń. Nigdy nie wypełniaj null klucza z slug, tytułu, pozycji w tablicy lub stosunku liczby wierszy; zachowaj reason_codes i stan dowodów.

Slug platformy może się różnić dla tego samego wydarzenia. Na przykład Kalshi kalshi-soccer-ieloak-2026-09-20 i Polymarket uslc-iel-oak-2026-09-20 wymaga sprawdzeń wydarzenia, uczestników, czasu rozpoczęcia i rozliczenia przed dołączeniem.

Korekty przyrostowe

/v3/sports/markets?updated_since= akceptuje milisekundy epoki, ISO-8601 lub datę. updated_at i updated_ms to czasy publikacji katalogu. Tożsamość, rozpoczęcie, cofnięcia mapowania i odnowienia dowodów publikują aktualizacje.

  1. Zapisz czas rozpoczęcia odpytywania i poprzedni punkt kontrolny.
  2. Zachowaj updated_since i filtry stałe dla każdego kursora.
  3. Aktualizacja przez condition_id, w tym wartości null cofające stare mapowania.
  4. Uwzględnij rozliczone rynki podczas korekty ankietowania.
  5. Przejdź od początku ankiety z nakładaniem się tylko po pomyślnym zakończeniu każdej strony.

Utrwalone zmiany kluczy fixture, tożsamości uczestników, metadanych rodziny rodzaju i dowodów kontraktu są ponownie publikowane przez delty katalogu. Wygasanie dowodu według zegara ściennego jest inne: przestań używać potwierdzonych kluczy o evidence_valid_until_ms nawet zanim nadejdzie delta odwołania. Wygasanie zachowuje tożsamości kandydatów i uczestników. To zastępuje starsze wytyczne, że korekty fixture mogły ominąć updated_at. Postępuj zgodnie z powyższym procesem korekty i zasady walidacji integracji podczas zachowywania lub odświeżania mapowań.

Poprawki metadanych nie naprawiają historycznych wierszy książki. Pobierz ponownie dotkniętą historię osobno.

Walidacja odpowiedzi

Inspekcja meta.partial nawet po HTTP 200. Zachowaj ceny null, podążaj za nieprzezroczystymi kursorami podczas has_more jest prawdą i nie traktuj liczby ani metadanych rozdzielczości jako dowodu kompletności venue. Wiersze wypełnione do przodu to obserwacje przeniesione, nie nowe przechwycenia.

Na żywo sporty dane rynku predykcyjnego — na żywo głębokość księgi zleceń na Polymarket i Kalshi, wraz z kursami sportsbook, wynikami na żywo i feedem kontuzji w głównych ligach (NBA, NFL, MLB, NHL, piłka nożna, tenis, UFC, F1 i inne). Obie platformy są uwzględnione razem na każdym poziomie; plany zmieniają wspólne okno historii, przepustowość i współbieżność księgi na żywo. To samo{ data, meta, pagination } koperta, uwierzytelnianie i stronicowanie kursorem jak reszta API.

Odkrywanie rynku. Przejdź lejek: /v3/sports/leagues → /v3/sports/markets?league=… → pobierz z rynku tokens[] (każdy to jedno z wyników asset_id) → /v3/sports/books/{asset_id}/latest dla order booku na żywo.

GET/v3/sports/overview

Zasięg i stan konta. Uprawnienia sportowe Twojego planu, śledzone venue i ligi, liczby rynków i ksiąg oraz okno historii w jednym wywołaniu. Nie zawiera danych rynków ani ksiąg; powyższy lejek to droga do live booka.

GET/v3/sports/leagues

Ligi, które śledzimy, każda z liczbą gier i rynków — szczyt lejka odkrywania.

GET/v3/sports/markets

Rynki sportowe na Polymarket i Kalshi. Filtruj za pomocą ?league= (np. nba, mlb, soccer); paginowane kursorem jak każdy punkt końcowy listy (?limit=, ?cursor=). Każdy rynek niesie swoje condition_id, market_slug, outcomes, oraz tokens — na wynik asset_ids, które przekazujesz do punktu końcowego księgi.

json
{ "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": { … } }
GET/v3/sports/books/{asset_id}/latest

Najnowsza zarejestrowana pełna książka zleceń dla jednego wyniku — asset_id jest tokenem ztokens[]. Drabina przychodzi jako cztery tablice wyrównane do indeksu (bid_prices z bid_sizes, ask_prices z ask_sizes) zamiast [price, size] pary zwracane przez trasy kryptowalutowe; Co łączy każdą ścieżkę księgi zleceń wymienia każdą różnicę. Dla zastosowań na żywo wrażliwych na opóźnienia, Quant i wyższe poziomy mogą subskrybować poniższe kanały WebSocket sportu.

Trasy księgi przyjmują token, nie condition_id. Rynek ma jeden condition_id i jedno wejście w tokens[] na wynik, a księga należy do wyniku. W wierszach Kalshi oba ciągi są równe, więc kod, który czyta condition_id działa na Kalshi, a następnie zwraca 404 SNAPSHOT_NOT_FOUND na każdym rynku Polymarket. Przeczytaj tokens[].
GET/v3/sports/books/{asset_id}/history

Historyczne snapshoty pełnej drabinki dla wyniku. Strona z ?limit= i ?cursor=; ogranicz czas za pomocą ?start_time= / ?end_time= (krótszy ?from= / ?to= aliasy są również akceptowane). Dodaj ?interval=1m do zwrócenia najnowszego snapshotu w każdym kubełku wyrównanym do epoki; obsługiwane jednostki to s, m, h, oraz d, od jednej sekundy do jednego dnia. Pomijaj lub używajraw / tick, dla każdego zarejestrowanego snapshotu. Głębokość sportowa jest rejestrowana do przodu: archiwum Polymarket zaczyna się 14 kwietnia 2026, a archiwum Kalshi zaczyna się 12 czerwca 2026.

Interwał próbkowania; nie interpoluje. Kubek istnieje w odpowiedzi tylko wtedy, gdy księga została w nim przechwycona, więc dwugodzinne okno o ?interval=1m obejmuje 120 kubełków, ale zwraca tylko minuty z zapisem. Dla wyniku cytowanego rzadko — rynku jeszcze dni przed rozpoczęciem — to zwykle dziesięć do dwudziestu wierszy i jest to pełna taśma dla okna, a nie strona skrócona. Każda odpowiedź, która używała ?interval= zawiera resolution blokuj, aby można było odróżnić dwie rzeczy:

json
{ "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
  } }

Jeśli buckets_filled jest znacznie poniżej buckets_in_range, wynik jest wyceniany rzadko — poproś o grubszy interwał lub pomiń i czytaj każdy snapshot. Gęstość rejestracji odzwierciedla aktywność handlową: wynik w trwającej grze rejestruje setki do tysięcy snapshotów w ciągu dwóch godzin, podczas gdy ten sam wynik trzy tygodnie wcześniej rejestruje kilkadziesiąt. Tak więc ?interval=1m zwraca niemal kompletną serię minutową po rozpoczęciu meczu oraz krótką dla rynku, który jeszcze nie jest handlowany.

Dodaj ?fill=ffill obok interval dla gęstej siatki zamiast tego: jeden wiersz na kubełek dla całego okna, przenosząc ostatni przechwycony order book do minut bez przechwytywania, każdy wiersz oznaczony filled i opieczętowany as_of_ts z momentem, w którym księga została zarejestrowana. Ten sam parametr, to samo znaczenie, te same znaczniki co każda inna trasa snapshot — zobacz Wypełnianie luk.

Ta trasa zwraca najnowsze najpierw, i jest to jedyna trasa order book, która tak robi. Trasy snapshotów kryptowalut i giełd zwracają najstarsze dane jako pierwsze. Sortuj według znacznika czasu wiersza, a nie kolejności przybycia, jeśli czytasz oba.

Gry i kontekst rozstrzygniętych rynków

GET/v3/sports/{league}/games

Na żywo mecze i wyniki dla ligi (np. nba, nfl, soccer/eng.1), każdy z powiązanymi rynkami Polymarket i Kalshi.

GET/v3/sports/games/{game_slug}

Połączony dokument gry: harmonogram i wynik końcowy, powiązane rynki predykcyjne i rozliczenia, linie sportsbook, oraz kontekst kontuzji. Używaj poniższych tras towarzyszących, gdy potrzebujesz pojedynczej warstwy o dużym wolumenie.

Wbudowana lista rynków to podgląd maksymalnie 1,000 rekordów. Sprawdź markets_returned i markets_truncated, następnie śledź markets_url i jego kursor od początku dla kompletnej kolekcji. Nieudane odczyty danych zwracają 503 CATALOGUE_UNAVAILABLE; zachowaj swoje poprzednie rekordy i ponów próbę zamiast traktować niedostępne wyszukiwanie jako pusty wynik.

GET/v3/sports/games/{game_slug}/markets
GET/v3/sports/games/{game_slug}/lines
GET/v3/sports/games/{game_slug}/box
GET/v3/sports/games/{game_slug}/plays
GET/v3/sports/games/{game_slug}/winprob

Rynki gier, ruch linii, statystyki meczowe, play-by-play i prawdopodobieństwo wygranej na każdą akcję.

Te cztery potrzebują meczu ESPN. Wszystko oprócz /markets jest powiązany z wydarzeniem ESPN, więc mecz, którego nie mogliśmy dopasować, zwraca 404 DATA_NOT_FOUND z “game is not matched to an ESPN event” — sama gra i jej rynki predykcyjne są nadal obsługiwane. Sprawdź espn włączony /v3/sports/games/{game_slug}: null oznacza, że cztery poniższe trasy zwrócą 404 dla tego. Wskaźnik dopasowania jest właściwością ligi, nie meczu (mierzone 2026-09-02): NHL 97%, NBA 91%, NFL 68%, WNBA 67%, EPL 66%, MLB 59%, UFC 56%, CFB 49% — i prawie zero dla esportu, krykieta, darta i rugby, gdzie żadna transmisja ESPN nie wspiera katalogu. Sortuj kandydatów według ligi przed budową pipeline na podstawie wyników meczów.
GET/v3/sports/markets/{condition_id}

Jeden znormalizowany rynek z identyfikatorami platform, wyników, tokenów, dołączenia do gry i stanu rozliczenia.

Zawodnicy, propsy i kontuzje

GET/v3/sports/{league}/players

Przeszukaj katalog zawodników ligi i pobierz stabilne identyfikatory zawodników używane przez połączenia player-prop.

GET/v3/sports/players/{athlete_id}
GET/v3/sports/players/{athlete_id}/injuries
GET/v3/sports/players/{athlete_id}/box
GET/v3/sports/players/{athlete_id}/markets

Profil zawodnika, dziennik zmian kontuzji, dziennik gry box-score i rozpoznane podmioty w propach rynku predykcyjnego.

GET/v3/sports/{league}/injuries

Na żywo feed kontuzji na ligę — zmiany statusu przedmeczowego, które poruszają rynkiem.

Kursy sportsbook

GET/v3/sports/odds/lines

Na żywo linie moneyline, spread, total i prop w różnych książkach, znormalizowane do porównania z ceną rynkową.

GET/v3/sports/odds/books

Aktywny katalog sportsbooków i świeżość źródła.

GET/v3/sports/{league}/odds-history

Historyczne linie sportsbook dla czterech lig: nfl (nflverse, sezony 1999–2026) oraz epl, la-liga, soccer (football-data.co.uk, od sezonu 2000/01). Każda inna liga zwraca 404 SPORTS_UNKNOWN_ROUTE nazwanie tych czterech. Żądanie wymaga co najmniej jednego filtra: NFL wymaga season, team, z, lub do; piłka nożna przyjmuje kod sezonu football-data (na przykład 2324) i/lub team. Bez tego otrzymujesz 400 INVALID_PARAMETER mówiąc które.

Każdy sezon jest dostępny na każdym planie, w tym darmowym poziomie. Okno historii Twojego planu ogranicza dane rejestrowane przez DepthFeed — księgi zleceń, stan gry na żywo, zmiany kontuzji. Nie ogranicza tych dwóch tabel, które redystrybuują publiczne zestawy referencyjne, więc ?season=1999 zwraca 1999 na kluczu Explorer. Nadal obowiązuje paginacja: NFL zwraca do 500 wierszy na stronę z cursor, piłka nożna do 1,000.
GET/v3/sports/odds/stream

Server-Sent Events dla zmieniających się linii sportsbook. Wyślij Accept: text/event-stream; zdarzenia przechodzą w miarę ich przybywania, a połączenie pozostaje otwarte. Księgi zleceń sportowych używają głównego DepthFeed WebSocket poniżej.

Webhooki urazów

POST/v3/sports/webhooksplan płatny

Zarejestruj odbiorcę HTTPS z filtrami ligi i statusu kontuzji. Sekret podpisu pokazany jest raz. Dostawy obejmują X-DepthFeed-Event i X-DepthFeed-Signature; zweryfikuj podpis HMAC-SHA256 nad dokładnym surowym ciałem żądania przed parsowaniem JSON.

shell
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"]}'
GET/v3/sports/webhooksplan płatny
POST/v3/sports/webhooks/{sub_id}/testplan płatny
DELETE/v3/sports/webhooks/{sub_id}plan płatny

Wymień subskrypcje i stan dostaw, wyślij podpisane zdarzenie testowe lub odwołaj subskrypcję.

shell
# 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 dane rynkowe przez TLS

Podgląd integracji Enterprise. Implementacja przeszła izolowane testy end-to-end; publiczny punkt końcowy FIX nie został ogłoszony. Dostęp wymaga indywidualnie przydzielonego punktu końcowego i CompID dla konta Desk (enterprise).

Połącz istniejący system danych rynkowych FIX z znormalizowanymi księgami zleceń z Binance, Polymarket, Kalshi, Limitless i obsługiwanych kanałów sportowych. Profil dostarcza początkowe snapshoty, aktualizacje nowych/zmienionych/usuniętych poziomów cen, heartbeat, trwałe numery sekwencji i odzyskiwanie luk, a następnie świeże snapshoty. Pobiera ten sam feed co WebSocket.

UstawienieKontrakt
UprawnieniaDesk / tylko dla przedsiębiorstw; na żywo sprawdzanie klucza i planu, CompID powiązany z kontem
SesjaFIX 4.4 przez zweryfikowany TLS 1.2+; przypisane SenderCompID i TargetCompID
LogowanieIstniejący klucz API w tagu 554 przez callback twojego silnika; heartbeat 5–30 sekund
Dane rynkowe35=V żądań; 35=W snapshotów; 35=X zmian poziomów cen; 35=Y odrzuceń żądań
OdzyskiwanieTrwały stan sekwencji; ponowne wysyłanie wypełnień luk; oczekiwanie na zastępcze snapshoty
LimityIstniejące uprawnienia REST i limity połączeń/subskrypcji WebSocket pozostają bez zmian

REST pozostaje interfejsem do odkrywania i danych historycznych. Ten profil FIX obejmuje dane rynkowe; nie kieruje zleceń ani nie zapewnia odtwarzania historycznych ticków. Nie dodaje niezależnego zakresu przechwytywania ani gwarancji opóźnienia. Znaczniki czasu źródła i wysyłki bramy różnią się od odbioru klienta.

Przeczytaj kompletny profil FIX dla symboli, wyników binarnych, pól żądań, deterministycznych ID poziomów, limitów odzyskiwania i bezpieczeństwa. Skontaktuj się wsparcie enterprise dla statusu provisioning. Nie zgaduj nazwy hosta ani nie wysyłaj klucza API do niezweryfikowanego endpointu FIX.

GET/v3/stream

WebSocket, który wysyła księgi zleceń i ceny na żywo w miarę zmian. Payloady ramek to te same obiekty JSON, które zwracają punkty końcowe snapshot REST, więc kod napisany pod REST działa bezpośrednio. Uwierzytelnij się przy połączeniu za pomocą X-API-Key nagłówek, Authorization: Bearer, lub — dla przeglądarek, które nie mogą ustawiać nagłówków WebSocket — ?api_key=df_….

shell
# 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":…}

Kanały

KanałŁadunekNotatki
book:polymarket:<coin>:<market_id>Obiekt migawki REST (z książkami zleceń)Tick-level przez nasz websocket CLOB
book:kalshi:<coin>:<ticker>Ten sam kształt co wiersze /v3/kalshi/…/snapshotsAktualizacje z rytmicznej pętli odpytywania Kalshi
book:limitless:<coin>:<slug>Ten sam kształt co wiersze /v3/limitless/…/snapshotsOparte na push (socket.io tap)
book:binance:<coin>:<spot|futures>Ten sam kształt co /v3/…/latest100 ms feed głębokości
book:sports:polymarket:<token_id>Pełna drabinka sportowaQuant+: strumień CLOB sterowany zdarzeniami pierwszej strony
book:sports:kalshi:<ticker>Pełna drabinka sportowaQuant+: websocket delta księgi Kalshi na zasadzie najlepszych starań, fallback relay; ramki tylko ze zmianami
price:<coin>{ coin, price, source, venue, id, time }Podstawowe dane Binance, maksymalnie ~4 ticków/s

Operacje: subscribe · unsubscribe (każdy zajmuje {"channels":[…]}, stosowane atomowo) oraz ping → pong. Śledzący * segment rynku (np. book:kalshi:btc:*) subskrybuje całą giełdę/monetę — tylko plan Desk. Problemy na poziomie operacyjnym (zły kanał, przekroczenie limitu subskrypcji) zwracają {"op":"error","code":…} ramki i nigdy nie zrywaj połączenia.

Kanały sportowe używają konkretnych identyfikatorów i nie obsługują znaków wieloznacznych. Quant, Research i Desk pozwalają odpowiednio na jeden, dwa i trzy równoczesne sports books. Każda ramka sportowa zawiera kompletną drabinkę, venue, asset_id, znaczniki czasowe wymiany/odbioru, full_ladder: true, orazdelivery pole określające źródło każdej ramki: polymarket_clob_ws,kalshi_orderbook_delta_ws, lub scoretape_relay gdy działa przekaźnik sportowy. Kalshi sports books są napędzane przez uwierzytelniony websocket delta order-book Kalshi, z przekaźnikiem jako zapasowym, więc czas ramek podąża za aktywnością giełdy, a nie stałym interwałem odpytywania. Odczytuj świeżość z czasów obserwacji, zamiast zakładać tempo odświeżania.

shell
> {"op":"subscribe","channels":[
    "book:sports:polymarket:<token_id>",
    "book:sports:kalshi:<market_ticker>"
  ]}
< {"op":"subscribed","channels":[…],"active":2}

Limity na plan

PlanPołączeniaSubskrypcjeKanały
Explorer11Każda platforma, wszystkie monety; bez sports book
Quant15Każda platforma, wszystkie monety; 1 sports book
Research225Każda platforma, wszystkie monety; 2 sports books
Desk5100Każda platforma, wszystkie monety, plus wildcardy; 3 sports books

Kolumna kanału jest taka sama w każdym wierszu z powodu: plan tutaj też nie kupuje venue ani monety. Explorer przesyła dowolną księgę na dowolnym z czterech venue — trzyma tylko jedną subskrypcję na raz, więc drugi kanał w tym samym subscribe zwraca SUB_LIMIT i nic nie jest stosowane. Dziki znak i live sports books to dwie rzeczy, których sam limit subskrypcji nie obejmuje.

Ramki błędów operacji

Przychodzą jako {"op":"error","code":…,"message":…} i pozostaw połączenie otwarte. To są kody ramek, nie statusy HTTP.

kodZnaczenie
CHANNEL_INVALIDNieprawidłowa nazwa kanału. Kształty to book:<venue>:<coin>:<market> i price:<coin>.
UNKNOWN_OPNie jest jednym z subscribe, unsubscribe, ping.
SUB_LIMITSubskrypcja przekroczyłaby limit subskrypcji Twojego planu. Nic nie zostało zasubskrybowane — operacja jest atomowa.
SPORTS_SUB_LIMITTo samo, dla osobnego limitu jednoczesnych sports-book.
SPORTS_NOT_IN_PLANTwój plan nie zawiera subskrypcji niskolatencyjnej księgi sportowej.
VENUE_NOT_IN_PLANZwracane tylko na anonimowej powierzchni demo. Każdy plan konta strumieniuje każde venue.
WILDCARD_NOT_IN_PLANŚledzący * segment rynku jest tylko Desk. Nazwij rynki zamiast tego.
SLOW_CONSUMERTwoje połączenie jest zbyt opóźnione względem feedu i ramki są odrzucane. Czytaj szybciej lub subskrybuj mniej kanałów.

Zamknięcie kodów i ponowne łączenie

KodZnaczenie
4001Uwierzytelnianie nie powiodło się (brak / nieznany / cofnięty klucz)
4003Osiągnięto limit połączeń planu
4029Zalew operacji — zwolnij
1013Weryfikacja klucza tymczasowo niedostępna — spróbuj ponownie wkrótce

Serwer wysyła sygnały protokołu co 25 s. Wdrożenia i awarie celowo zrywają połączenia — traktuj rozłącz → połącz ponownie z wykładniczym opóźnieniem (250ms podwajające się do ~5s) i ponownie wysyłaj swoje subskrypcje jako normalny cykl życia, nie jako ścieżkę błędu.

Świeżość i opóźnienie

Częstotliwość przechwytywania, opóźnienie przekazu, rozmiar ładunku i lokalizacja klienta wpływają na dostawę end-to-end. Ramka ts jest czasem publikacji bramy; znaczniki czasu wewnątrz data może reprezentować zdarzenie venue, przechwycenie lub zapisany rekord, w zależności od kanału. Wiek źródła i czas przetwarzania serwera nie są tym samym co opóźnienie odbioru przez klienta.

Zmierz niezależne potwierdzenie klienta z zsynchronizowanym zegarem, zachowaj pochodzenie znacznika czasu i raportuj każde venue, region, ładunek i okno pomiarowe osobno. Historycznedeploy/stream_freshness.py obserwacje opisują te przebiegi, a nie gwarancję aktualnej latencji dla każdego subskrybenta. Enterprise FIX używa tego samego podstawowego feedu; jego znaczniki czasu wysyłania i źródła są opisane w profilu FIX powyżej.

Wiadomości strumieniowe są mierzone do twojego użycia jak odpowiedzi REST. Subskrypcje są ograniczone według planu, a limity są na użytkownika we wszystkich połączeniach. Zakresowa, automatycznie wygasająca 7-dniowa ocena Desk jest dostępna na żądanie do walidacji opóźnień produkcyjnych.

Wallet Intelligence jest tylko do odczytu przestrzenią badawczą dla publicznych portfeli Polymarket. Zapisz listę obserwowanych, odkrywaj traderów z publicznej listy liderów Polymarket i przeglądaj publiczne pozycje, ostatnią aktywność, zrealizowane próbki oraz metryki na poziomie portfela w jednym miejscu. Nigdy nie łączy portfela, nie podpisuje transakcji ani nie składa prawdziwego zlecenia.

Audyt wykonania next-book

Dla każdej kwalifikującej się publicznej transakcji DepthFeed znajduje pierwszą księgę Polymarket, którą zarejestrował po znaczniku czasu aktywności, przechodzi wyświetloną drabinkę dla tej samej liczby udziałów i raportuje cenę odtwarzania, ułamek możliwy do wypełnienia, zaobserwowane opóźnienie oraz podpisaną różnicę ceny względem transakcji publicznej. Okno wyszukiwania to 90 sekund. Brakujące dopasowanie jest pokazane jako brakujące; nigdy nie jest szacowane.

Oceny są mechaniczne: Pozostała głębokość oznacza, że co najmniej 95% publicznej wielkości było wyświetlane w odległości 1¢ od ceny tradera; Cena się zmieniła oznacza, że co najmniej 95% pozostało, ale przy różnicy powyżej 1¢; Rozmiar niedostępny oznacza, że mniej niż 95% publicznej wielkości było wyświetlane.

Kopia papierowa na żywo

Uruchom papierowe lustro z dowolnego inspekcjonowanego portfela. Tylko publiczne transakcje obserwowane po utworzeniu lustra są kwalifikowalne: DepthFeed deduplikuje każde wypełnienie, stosuje skonfigurowany współczynnik kopiowania i limit na transakcję, a następnie realizuje je przy najbliższej dostępnej wycenie na żywo w normalnej księdze Paper Trading. Gotówka, pozycje, P&L, krzywa kapitału, wyłącznik awaryjny i historia rozliczeń pojawiają się pod Handel na papierze.

Opcjonalne wywołanie HTTPS odbiera każde udane skopiowane zlecenie. Jego sekret podpisu jest pokazany raz. Zweryfikuj HMAC-SHA256(timestamp.body) przeciwko x-depthfeed-signature; znacznik czasu jest wysyłany w x-depthfeed-timestamp. Lokalni, prywatni, z poświadczeniami, nie-HTTPS i przekierowujący odbiorcy są odrzucani.

PlanZapisane portfeleAudytowane transakcje na odświeżeniePubliczne wiersze aktywności
Explorer1330
Quant510100
Research1025250
Desk2050500

Ograniczenia interpretacji

  • Publiczny adres może być tylko jednym portfelem w portfelu tradera i nie dowodzi tożsamości ani własności.
  • Publiczne znaczniki czasu aktywności nie są prywatnymi znacznikami czasu zleceń. Audyt mierzy to, co DepthFeed zaobserwował po publikacji, a nie oryginalne opóźnienie tradera.
  • Tylko transakcje w zarejestrowanym pokryciu Polymarket DepthFeed mogą być dopasowane. Nieobsługiwane lub niezarejestrowane rynki są pokazywane bez audytu.
  • Odtwarzanie zużywa wyświetlany rozmiar matematycznie; nie może modelować ukrytej płynności, priorytetu kolejki, wyścigów anulowania, opłat ani wpływu rynkowego rzeczywistego zlecenia następczego.
  • Ranking, P&L, pozycje i aktywność pochodzą z publicznych usług danych Polymarket i mogą być opóźnione, poprawiane, niekompletne lub tymczasowo niedostępne.
  • Wallet Intelligence i jego papierowe odbicie to narzędzia badawcze — nie kopiowanie transakcji na żywo, porada inwestycyjna, rekomendacja ani gwarancja wykonania.
DepthFeed przechowuje tylko adresy z listy obserwowanych i etykiety tworzone przez użytkownika. Publiczne dane portfela są pobierane na żądanie i krótko buforowane; audyty wykonania są obliczane na podstawie naszych zarejestrowanych książek zleceń w czasie żądania.

Przewodniki badań portfela

Zacznij od Przewodnik śledzenia portfela Polymarket, następnie porównaj analiza portfela, badania listy liderów, oraz analiza wykonania copy-tradingu.

Otwórz Kreator strategii do opisania strategii asystentowi, uruchomienia historycznego backtestu i sprawdzenia wyników. Wizualne płótno jest dostępne na widok budowniczego. Oba widoki korzystają z tego samego silnika strategii.

Buduj i uruchamiaj

  1. Opisz rynek, warunki wejścia, wyjścia i wielkość pozycji w asystencie lub połącz węzły na płótnie.
  2. Przejrzyj wygenerowaną strategię i ustawienia wykonania przed uruchomieniem.
  3. Wybierz dostępny historyczny próbkę w oknie historii twojego konta.
  4. Sprawdź dziennik transakcji, krzywą kapitału, wypełnienia i ostrzeżenia o jakości danych przed wyciągnięciem wniosków.

Założenia wykonania

Wyniki zależą od wybranej próbki, ustawień wypełnienia, opłat, poślizgu i wielkości pozycji. Brakujące obserwacje i niedostępna głębokość wpływają na to, co można symulować. Sprawdź założenia i ostrzeżenia uruchomienia; wynik historyczny nie gwarantuje wypełnienia na żywo ani przyszłej wydajności.

Kontynuuj w handlu papierowym

Przejrzyj strategię w kreatorze i użyj przepływu wdrożenia papierowego, aby śledzić ją dalej z symulowanymi środkami. Paper Trading ma własne pozycje, gotówkę i rejestr transakcji. Nie składa prawdziwych zleceń giełdowych. Użycie asystenta i limity strategii papierowej zależą od planu konta.

Handel na papierze uruchamia strategie do przodu na na żywo rynki z wirtualną gotówką. Wypełnienia, oznaczenia i rozliczenia są wyceniane na podstawie ksiąg zleceń DepthFeed na żywo — kupno po cenie ask, sprzedaż po bid, pozycje rozliczają się automatycznie do $0/$1 po rozwiązaniu rynku. Każda strategia ma własną krzywą kapitału, widok pozycji i pełny dziennik transakcji.

Trzy sposoby handlu

TrybJak to działa
WebhookTwój własny system (bot, cron, notebook) wysyła sygnały kupna/sprzedaży do tokenowego URL na strategię. Twoja logika pozostaje Twoja — my wykonujemy realizację, rozliczenia i wykresy.
Reguła laboratoriumWdróż preset Backtest Lab Polymarket lub Kalshi (wejście w oknie czasowym, przekroczenie poziomu, odwrócenie spadku) z natywnymi stronami platformy, take-profit/stop-loss, maksymalnym limitem otwartych pozycji i sizingiem pozycji (stały / ułamkowy / Kelly); jest oceniany po stronie serwera na podstawie żywych wycen (~90s kadencja).
Kopia portfelaOdwzoruj nowe publiczne wypełnienia z inspekcjonowanego portfela Polymarket z współczynnikiem kopiowania i limitem na transakcję. Wyniki używają tego samego papierowego rejestru i mogą opcjonalnie emitować podpisane webhooki HTTPS wypełnień.

Webhook sygnału

POST/paper/hook/{token}brak uwierzytelnienia

Token (pokazywany raz przy tworzeniu/rotacji) jest uwierzytelnieniem. Realizacje zawsze wyceniane są z żywej książki w czasie sygnału — payload nigdy nie może ustawić własnej ceny. Rynki identyfikowane są przez venue + market: ticker Kalshi lub identyfikator tokena Polymarket CLOB. Możesz handlować dowolny rynek na venue, nie tylko tych, które rejestruje DepthFeed — jeśli nie mamy ich lokalnie, realizacja jest wyceniana na podstawie na żywo odczytanego order book giełdy.

shell
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"
  }'
json
{ "data": { "filled": true, "action": "buy", "price": 0.62,
            "shares": 161.29, "cost_cents": 10000, "cash_cents": 990000,
            "position_id": "…" } }
BłądZnaczenie
NO_FRESH_QUOTEBrak książki na żywo dla tego rynku — zły identyfikator lub rynek został zamknięty / stał się jednostronny przy 0/1 (rozliczenie automatycznie zamyka pozycje).
INSUFFICIENT_CASHZlecenie przekracza papierową gotówkę strategii.
NO_POSITIONsprzedać/zamknąć bez otwartej partii na tym rynku/stronie.
RATE_LIMITEDPonad 120 sygnałów/min dla strategii.
PAUSEDStrategia jest wstrzymana na pulpicie.

Wyłącznik awaryjny

Każda strategia ma trailing stop maksymalnego obsunięcia (domyślnie 60%, edytowalne; ustaw na 0, aby wyłączyć). Jeśli kapitał na żywo spadnie poniżej tej wartości względem najwyższego poziomu, strategia jest automatycznie zamykana po aktualnych cenach i wstrzymano — twardy stop przeciwko strategii handlującej samą sobą do zera. Wznów w dowolnym momencie; wznowienie resetuje najwyższy poziom do twojego aktualnego kapitału.

Limity

Strategie równoczesne na plan: Explorer 1 · Quant 5 · Research 15 · Desk 40. Do 100 otwartych pozycji na strategię; saldo początkowe $100–$1,000,000 (domyślnie $10,000). Znaczniki odświeżają się co ~90 sekund — to tracker testów w przód, nie miejsce wykonania.

Wyniki papierowe używają rzeczywistej wyświetlanej płynności do wyceny, ale jej nie zużywają — realizacje na żywo o danym rozmiarze mogą mieć większy poślizg niż realizacja papierowa na szczycie książki. Rynki, których nie rejestrujemy lokalnie, są wyceniane na podstawie odczytu venue na żywo i nie będą ponownie rozliczane z naszych danych rozliczeniowych — zamykają się na ostatniej wartości po kilku dniach, jeśli venue ich nie rozliczy ścieżką, którą śledzimy.

Każda ścieżka księgi zleceń — sześć ścieżek kryptowalut i platform plus sport — odpowiada temu samemu kontraktowi, więc kod napisany dla jednej przenosi się na kolejną przez zmianę ścieżki i identyfikatora.

  • Ten { data, pagination, meta } koperta i meta.request_id.
  • Zestaw kluczy cursor paginacja i limit.
  • Okno, jako start_time/end_time lub z/do.
  • interval dla jednego order booku na kubełek, i fill=ffill dla gęstej siatki.
  • filled, as_of_ts, oraz as_of_ts_ms na wypełnionych wierszach.
  • Ten resolution blokuj na każdą odpowiedź, która użyła interval.
  • Okno historii planu oraz error.code enum.

Cztery rzeczy nadal się różnią, wszystkie widoczne w odpowiedzi, a nie ukryte w zachowaniu.

Trasy krypto i platformHistoria sportowa
Znacznik czasu wierszatime lub timestamp jako ciąg znaków, id jako ms-epochts jako ISO-8601, ts_ms jako ms-epoch
ZlecenieNajstarsze pierwszeNajnowsze pierwsze
DrabinkaUwzględnione, z wyjątkiem trasy zdarzeń na monetę, która wymaga include_orderbook=trueZawsze włączone
Kształt poziomuPary: bids / asks jako [[price, size], …], najlepsze pierwsze (Kalshi nazywa je yes / nie)Tablice równoległe: bid_prices z bid_sizes, ask_prices z ask_sizes, wyrównane do indeksu

To są kształty, na których opierają się istniejące integracje, więc pozostają takie, jakie są. Sortuj według własnego znacznika czasu wiersza, a nie kolejności nadejścia, a różnica przestaje mieć znaczenie.

Precyzja pochodzi z pozyskiwania tych samych źródeł, których używają rynki, więc wartości zgadzają się z definicji.

MiejscePrzechwyćOknaNotatki
PolymarketCLOB websocket — każde zdarzenie księgi i zmiany ceny5m · 15m · 1h · 4h · 24hPełna głębokość, zdarzeniowa. Otwarcie/zamknięcie rozliczenia z własnych metadanych Polymarket.
KalshiPubliczne REST, rytmiczne pełne sondowanie głębokości15m · 1h · 24h · 1wTak/nie księga, do 100 poziomów na stronę, 7 aktywów; efektywna częstotliwość zależy od obciążenia rynku i limitów API.
Limitlesssocket.io websocket (orderbookUpdate)5m · 15mCLOB na Base; na żywo przechwytuje szybkie 5m księgi, których REST nie może snapshotować.
Binancerynek kasowy + kontrakty terminowe @depth20@100ms + @aggTrade—Księga bazowa + 1s OHLCV, precyzyjna kotwica dla rynków wzrostowych/spadkowych.

Wszystkie 7 aktywa (btc · eth · sol · xrp · doge · bnb · hype) na każdej giełdzie, która je notuje.

Znaczniki czasu to epoch-millis. exch_ts_ms = czas giełdy, recv_ts_ms = nasz czas odbioru (różnica to opóźnienie przechwytywania). Poniżej znajdują się kolumny PRZECHOWYWANE. Trasy kryptowalut i platformy łączą cztery tablice cen/rozmiarów w bids / asks pary przed ich zwróceniem; trasy sportowe przekazują je jako cztery tablice. Wszystko inne dociera do Ciebie pod nazwą, pod którą jest przechowywane.

polymarket_book — pełne snapshoty księgi zleceń

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 — zmiany do odtwarzania między snapshotami

asset_id, condition_id, exch_ts_ms, recv_ts_ms, side, price, size

polymarket_markets — jeden wiersz na token

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 — rozliczenie

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-poziomowy order book (spot & futures)

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

ceny — zunifikowane serie cen bazowych

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

Każde okno planu jest obsługiwane z żywego magazynu plus zimnego archiwum, więc pełne okno jest zawsze dostępne. Desk nie ma limitu historii z przewijaniem: może odpytywać każdy zarejestrowany snapshot z odpowiedniego poziomu serii aż do kanału na żywo. Poziomy różnią się, ponieważ kontrakty i licencjonowane przechwytywanie nie rozpoczęły się tego samego dnia dla każdej kombinacji aktywów/okna.

Minimalne wartości archiwum pełnej głębokości Polymarket (UTC)

Poziom to pierwszy dzień, w którym zarejestrowano drabinę, co nie jest pierwszym dniem nieprzerwanego szeregu czasowego. Archiwum Polymarket zawiera nic przed 2026-01-03, a styczeń to pięć rozproszonych dni (2026-01-03 do 01-06, oraz 01-24). Ciągły dzienny zasięg zaczyna się 2026-02-12. Backtest, który potrzebuje nieprzerwanego szeregu czasowego, powinien zacząć od tego miejsca.

Aktywa5m15m1h4h24h
BTC2026-02-122026-01-032026-01-032026-01-032026-01-03
ETH, SOL, XRP2026-02-182026-01-032026-01-032026-01-032026-01-03
BNB2026-03-132026-03-132026-03-062026-03-132026-03-07
DOGE2026-03-132026-03-132026-03-112026-03-132026-03-11
HYPE2026-03-132026-03-132026-03-062026-03-132026-03-07

To są najwcześniejsze dni z zarejestrowanymi pełnymi drabinkami, a nie twierdzenie, że każdy aktyw/okno istniał przed swoją dolną granicą. Snapshot zwraca kompletną zarejestrowaną drabinkę; może zawierać brak poziomów, gdy sam rynek nie miał spoczywających zleceń w tym momencie.

Kalshi archiwum podłogi (UTC)

Kalshi floors to oddzielne od powyższych Polymarket i są późniejsze. Najwcześniejsza zarejestrowana drabinka Kalshi dowolnej serii to 2026-01-08. Dla serii kryptowalutowej 15 minut:

SerieNajwcześniejsza zarejestrowana drabinka
KXBTC15M, KXETH15M2026-01-08
KXSOL15M2026-01-09
KXXRP15M2026-02-11
KXBNB15M, KXDOGE15M2026-03-07
KXHYPE15M2026-03-18

Godzinne, dzienne i tygodniowe serie Kalshi mają własne minimalne wartości na serię, a BTC, ETH, XRP i DOGE zaczynają tam również na 2026-01-08. Zamiast publikować minimalną wartość na serię, traktuj odkrycie jako autorytatywne: /v3/kalshi/markets?series=KXBTC15M&start_time=…&end_time=… wymienia dokładnie tickery, których głębokość jest dostępna w tym zakresie, a identyfikatory tickerów Kalshi są definiowane przez venue, więc muszą być odkrywane, a nie konstruowane z znaczników czasu UTC.

Częstotliwość i głębokość przechwytywania Kalshi nie są stałe w całym archiwum. Aktualne przechwytywanie ankietuje pełną drabinkę do 100 poziomów po każdej stronie co kilka sekund; wcześniejsze okresy są rzadsze, a niektóre dni wiosny 2026 mają tylko kilka obserwacji na kontrakt. Wiersze snapshotów są przechowywane tak, jak zarejestrowano, więc pobranie badawcze obejmujące archiwum powinno próbkować na stałą siatkę i zawierać liczbę obserwacji na kubełek zamiast zakładać stały interwał próbkowania.

Głębokość księgi zleceń jest rejestrowana na żywo i nie można jej odtworzyć po fakcie. Dostęp do archiwum jest realizowany przez udokumentowane powierzchnie zapytań z pomiarem; DepthFeed nie zapewnia rekonstrukcji na żądanie klienta ani hurtowej dostawy archiwum.

Sprzedaż danych zbiorczych całe dni UTC archiwum jako zapieczętowane pliki zstd Parquet, jeden plik na tabelę na dzień, dostarczane z magazynu obiektów przez krótkotrwały podpisany URL. Leży obok REST API, nie przed nim: API nadal obsługuje gorące okno i pasy historii, a pliki zbiorcze odciążają je z zadania „przejścia przez całe archiwum”. Przedpłacone, wyceniane za GiB i chronione licencją danych, którą akceptujesz raz na pulpicie.

Produkty

produkttabela archiwumtypowy dzień roboczy
polymarket-bookpolymarket_book0.35 GiB
polymarket-us-bookpolymarket_us_book0.08 GiB
polymarket-tickspolymarket_changes2.7 GiB
kalshi-bookkalshi_book0.12 GiB
kalshi-tickskalshi_changes3.4 GiB

Grupy wierszy mają 5,000 wierszy w tabelach książek i 25,000 gdzie indziej, sortowane najpierw według rynku, aby czytelnik mógł odczytać zakres jednego rynku z pliku dziennego. Tabele sportowe pojawiają się po ich codziennym zapieczętowaniu.

Wycenianie

elementwartość
Cena$40 za GiB dla polymarket-book, polymarket-us-book i polymarket-ticks; $80 za GiB dla kalshi-book i kalshi-ticks. Opłata naliczana w momencie składania zamówienia na podstawie rozmiarów manifestu, zaokrąglana w górę raz na całkowitą wartość zamówienia.
Minimum$5 za zamówienie
ZwrotyBrak. Każde zlecenie jest ostateczne po złożeniu; wydane kredyty nie są zwracane. Panel prosi o potwierdzenie tego przed każdym zleceniem.
KredytyPrzedpłacone, 100 kredytów to $1, doładowania od $25 do $10,000, ważne przez 12 miesięcy
Linki1 godzina każdy, wydany ponownie bez opłat przez 30 dni po zamówieniu

Zapieczętowanie

Dzień jest wymieniony w katalogu tylko po zapieczętowaniu: co najmniej trzy dni stary, dokładnie jeden plik danych i jego ETag zapisany w manifeście. Hash manifestu to to, co kupujesz. Jeśli dzień zostanie ponownie zamknięty, staje się nowa wersja; linki do starej wersji przestają być wydawane, a wiersz katalogu pokazuje nowy. Złożone zamówienie zachowuje swoją zarejestrowaną wersję, a linki do znaków oznaczają te elementy superseded zamiast zwracania URL.

Licencja

Cytaty i zlecenia zwracają 403 DATA_LICENCE_REQUIRED dopóki konto nie zaakceptuje Licencja danych: użytek wewnętrzny w organizacji, bez redystrybucji lub odsprzedaży, dozwolone analizy pochodne. Zaakceptuj z pulpitu lub za pomocą poniższego wywołania. Konta bez włączonego produktu otrzymują 404 DATA_PRODUCTS_DISABLED na każdej trasie tutaj.

Trasy

GET/v3/data/products

Sprzedawalne tabele z ich stawką.

shell
curl https://api.depthfeed.com/v3/data/products   -H "Authorization: Bearer df_your_key_here"
GET/v3/data/licence

Czy to konto zaakceptowało licencję i którą wersję.

shell
curl https://api.depthfeed.com/v3/data/licence   -H "Authorization: Bearer df_your_key_here"
POST/v3/data/licence/accept

Zarejestruj akceptację wersji wydrukowanej na stronie licencji.

shell
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"}'
GET/v3/data/balance

Saldo przedpłacone jako credits i usd. Doładowania są dokonywane z pulpitu.

shell
curl https://api.depthfeed.com/v3/data/balance   -H "Authorization: Bearer df_your_key_here"
GET/v3/data/catalogue

Zapieczętowane dni dla jednego produktu między z i do (daty UTC, włącznie), każdy z bytes, rows, etag, version i sealed_at. Stronicowanie kursora jak w każdej liście.

shell
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"
POST/v3/data/quotes

Wyceń wybór. Zwraca wycenę id, total_bytes, price_credits i expires_at (15 minut). Oferta utrzymuje cenę, nie pieniądze: nie potrzebujesz przedpłaconych kredytów, aby ją zamówić. Nowa oferta anuluje wcześniejsze otwarte oferty, chyba że mają aktywną płatność kartą. Płać ręcznie kartą za pomocą poniższego punktu kasowego lub rozliczaj z salda kredytów. Każda oferta i zamówienie niesie ze sobą non_refundable: true.

shell
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"}]}'
POST/v3/data/orders/checkout

Kupuj przez API i płać ręcznie. Wyślij UUID oferty do tego endpointu i otwórz zwróconypayment_url (również zwracane jako url) w przeglądarce. To Stripe-hostowana kasa kartowa dla dokładnie tej oferty, nie natychmiastowa opłata. Powtarzanie tego żądania podczas aktywnej kasy zwraca ten sam link z reused: true. Użyj zwróconego expires_at.

shell
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"}'
json
{ "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
} }

Po ręcznej płatności, zweryfikowany webhook Stripe tworzy opłacone zamówienie. AnkietaGET /v3/data/orders z ograniczonym backoffem i dopasowaniem quote_id; strona zwrotu przeglądarki nie dowodzi płatności. Po złożeniu zamówienia paid, żądaj linków do pobrania. Email z pobraniem jest również wysyłany na email konta. Nieopłacona lub wygasła kasa nie tworzy płatnego zamówienia. Kasa kredytowa na tę samą ofertę jest blokowana, gdy kasa kartowa jest aktywna.

POST/v3/data/orders

Rozlicz kwotę. Kredyty są pobierane teraz; zlecenie wymienia każdy dzień, który obejmuje.

shell
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…"}'
GET/v3/data/orders
GET/v3/data/orders/{id}

Twoje zamówienia, najnowsze pierwsze, oraz jedno zamówienie z jego pozycjami.

shell
curl https://api.depthfeed.com/v3/data/orders   -H "Authorization: Bearer df_your_key_here"
POST/v3/data/orders/{id}/links

Wydaj podpisane URL-e dla każdego elementu w zamówieniu. Każdy URL działa przez godzinę i jest tokenem dostępu do tego pliku, więc trzymaj go w swoich systemach. Wywołuj ponownie, gdy potrzebujesz świeżego zestawu, bezpłatnie, przez 30 dni. Element, którego dzień został ponownie zamknięty, wraca z status: "reissued_new_version" i świeży URL. Dzień bez aktualnego pliku to unavailable.

shell
curl -X POST https://api.depthfeed.com/v3/data/orders/ord_01J…/links   -H "Authorization: Bearer df_your_key_here"
json
{ "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" }
] } }
Żaden bajt pliku nie przechodzi przez API: linki wskazują bezpośrednio na storage obiektów, a opłata jest za rozmiar manifestu w momencie zamówienia, nie za egress. Pobranie tego samego zamówienia dwa razy nie kosztuje nic dodatkowego w oknie 30 dni.

Przejdź po pełnej historii głębokości rynku (Python)

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")

Najnowsza głębokość cross-venue dla BTC w górę/w dół (JavaScript)

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.limitless

DepthFeed jest zaprojektowany do obsługi przez agentów: prosty JSON przez HTTPS, jeden klucz Bearer, stabilne kody błędów i brak wymaganego SDK. Maszynowo czytelne podsumowanie produktu znajduje się pod /llms.txt.

Jako narzędzie wywołujące funkcje / w stylu MCP

Opakuj dowolny endpoint jako narzędzie — API jest na tyle samopiszące, że jedna ogólna definicja obejmuje większość przepływów pracy:

json
{
  "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"]
  }
}

Treść narzędzia to pojedyncze uwierzytelnione GET:

shell
curl "https://api.depthfeed.com{path}" -H "Authorization: Bearer df_your_key"

Dane na żywo w agentach

Ten Strumień WebSocket używa trzech operacji JSON (subscribe / unsubscribe / ping) i uwierzytelnia się za pomocą ?api_key= gdzie nie można ustawić nagłówków — łatwe do obsługi z dowolnego środowiska uruchomieniowego. Ramki zawierają te same obiekty JSON co REST, więc kod parsujący agenta jest identyczny dla historii i na żywo.

Wskazówka dla asystentów: /v3/whoami odzwierciedla plan klucza, limity szybkości i okno historii — wywołaj to najpierw i skonfiguruj się sam zamiast zgadywać limity.

Co jest na żywo, najnowsze pierwsze:

  • Kreator strategii. Backtesty prowadzone przez asystenta i wizualne płótno strategii korzystają z tego samego silnika w /dashboard/backtest.
  • Świece cenowe. /v3/bars serwuje OHLCV akcji, ETF-ów i kryptowalut w oknie historii Twojego planu.
  • Pobrania zbiorcze. Całe dni UTC z zapieczętowanymi plikami Parquet można kupić osobno od dostępu API.
  • Transmisja na żywo. /v3/stream WebSocket — kanały księgi zleceń i cen na każdej platformie, zależne od platformy przechwytywanie i dostarczanie, subskrypcje ograniczone planem.
  • Limitless venue. Rynki, najnowsza książka zleceń i historyczne migawki głębokości — z 5m + 15m przechwyconymi na żywo przez websocket książki zleceń.
  • Kalshi rozszerzone. 21 seria dla wszystkich 7 aktywów (15-minutowa, progowa i kierunkowa — dwie ostatnie działają jednocześnie godzinowo/dziennie/tygodniowo); market_type udostępnione i filtrowalne.
  • Pełne API v3. Rynki Polymarket + snapshoty, Binance spot/futures, batch, paginacja kursora, egzekwowanie historii według planu, mierzone użycie.
  • Publiczne HTTPS. https://api.depthfeed.com przez TLS.

Dostępna historia różni się w zależności od venue i serii. Sprawdź Historię i pokrycie oraz odpowiedź API, aby potwierdzić minimalny poziom archiwum dla żądanego okresu. Masz pytania lub prośbę o uzupełnienie? Skontaktuj się.

Rozpocznij backtesting na rzeczywistej głębokości.