Rate Limiting and Quotas

Zrozumienie limitów szybkości Smart Money API, dziennych limitów dla każdego poziomu subskrypcji oraz strategii optymalizacji, aby maksymalnie wykorzystać swoje użycie API.

Przegląd

Smart Money API implementuje dzienne limity żądań, aby zapewnić jakość usług i sprawiedliwość dla wszystkich użytkowników. Każdy poziom subskrypcji obejmuje inny dzienny limit. Po przekroczeniu dziennego limitu otrzymasz błąd 429 Too Many Requests, aż limit zostanie zresetowany o północy UTC.

Limity szybkości są stosowane na klucz API. Każdy klucz ma swój własny niezależny limit. Możesz generować wiele kluczy dla różnych aplikacji i monitorować użycie każdego z nich osobno.

Limity według Poziomu Subskrypcji

Tier Dzienne Żądania Cena Funkcje
Bezpłatny 20 żądań/dzień $0 BTC, ETH, SOL, stawki finansowania, likwidacje
Trader 400 żądań/dzień $29/miesiąc Wszystkie symbole, pozycje wielorybów, dane OI
Pro 4,000 żądań/dzień $79/miesiąc Wyniki potwierdzenia, dane on-chain, webhooki
Enterprise Niestandardowe Niestandardowe Dedykowane wsparcie, niestandardowe integracje

Nagłówki Odpowiedzi Limitów Szybkości

Każda odpowiedź API zawiera nagłówki wskazujące aktualny status limitu:

Nagłówki HTTP
X-Requests-Limit: 200 X-Requests-Remaining: 147 X-Requests-Reset: 1711116000 X-Requests-Reset-ISO: 2026-03-22T00:00:00Z
Nagłówek Opis
X-Requests-Limit Całkowita liczba żądań dozwolonych dziennie (np. 200 dla Tradera)
X-Requests-Remaining Pozostałe żądania w bieżącym dniu
X-Requests-Reset Znacznik czasu Unix, kiedy limit zostanie zresetowany
X-Requests-Reset-ISO Znacznik czasu ISO 8601 dla resetu limitu

Sprawdzanie Limitu Przed Wysłaniem Żądania

Python
import requests from datetime import datetime def check_quota_before_request(api_key): response = requests.head( "https://api.smartmoneyapi.com/v1/whales/events", headers={"Authorization": f"Bearer {api_key}"} ) limit = int(response.headers.get("X-Requests-Limit", 0)) remaining = int(response.headers.get("X-Requests-Remaining", 0)) reset_unix = int(response.headers.get("X-Requests-Reset", 0)) reset_time = datetime.fromtimestamp(reset_unix) percent_used = (limit - remaining) / limit * 100 print(f"Quota: {remaining}/{limit} requests ({percent_used:.1f}% used)") print(f"Resets at: {reset_time}") if remaining < 5: print("WARNING: Approaching quota limit!") return False return True # Check before making requests if check_quota_before_request("sk_live_abc123xyz789"): print("Safe to proceed with API calls")

Dzienne Okno Limitów Szybkości

Limity szybkości działają w 24-godzinnym oknie. Twój limit resetuje się codziennie o północy UTC (00:00 UTC). Dokładny czas resetu jest podany w nagłówku X-Requests-Reset-ISO .

Przykład: Tier Trader (400 żądań/dzień)

  • Dzień 1 (21 marca): 200 żądań dostępnych o 00:00 UTC
  • 10:30 UTC: Wykonano 75 żądań, pozostało 125
  • 15:45 UTC: Wykonano kolejne 100 żądań, pozostało 25
  • 23:59 UTC: Nadal pozostało 25 żądań (nie można przenieść na następny dzień)
  • Dzień 2 (22 marca, 00:00 UTC): Limit zostaje zresetowany do 200

Strategie Optymalizacji

1. Buforowanie Odpowiedzi API

Pozycje wielorybów nie zmieniają się co sekundę. Buforuj wyniki przez 30-60 sekund i serwuj dane z bufora zamiast wykonywać nowe wywołania API.

Python
import requests import time class CachedClient: def __init__(self, api_key, cache_ttl=60): self.api_key = api_key self.cache_ttl = cache_ttl self.cache = {} self.cache_time = {} def get_whale_positions(self, symbol): cache_key = f"whales:{symbol}" now = time.time() # Return cached data if still fresh if cache_key in self.cache: age = now - self.cache_time[cache_key] if age < self.cache_ttl: print(f"Served from cache (age: {age:.1f}s)") return self.cache[cache_key] # Fetch fresh data response = requests.get( f"https://api.smartmoneyapi.com/v1/whales/events?symbol={symbol}", headers={"Authorization": f"Bearer {self.api_key}"} ) data = response.json() self.cache[cache_key] = data self.cache_time[cache_key] = now return data # Usage: Cache for 60 seconds client = CachedClient("sk_live_abc123xyz789", cache_ttl=60) whales1 = client.get_whale_positions("BTCUSDT") # API call whales2 = client.get_whale_positions("BTCUSDT") # From cache whales3 = client.get_whale_positions("BTCUSDT") # From cache

2. Używaj WebSocket do Danych w Czasie Rzeczywistym

Połączenia WebSocket dostarczają aktualizacje natychmiastowo, nie licząc się do limitu szybkości. Subskrybuj strumienie i otrzymuj aktualizacje na bieżąco, zmniejszając liczbę potrzebnych wywołań REST API.

3. Strategiczne Grupowanie Żądań

Wykonuj jedno żądanie z wieloma symbolami, gdy jest to możliwe, zamiast osobnych żądań dla każdego symbolu. Zmniejsza to liczbę wywołań API nawet 10-krotnie.

4. Używaj Filtrowania w Czasie Żądania

Stosuj filtry (symbol, giełda, minimalny rozmiar pozycji) w parametrach zapytania, aby otrzymać dokładnie potrzebne dane, unikając potrzeby przetwarzania po fakcie.

Obsługa Błędów Limitów Szybkości

Ponów z Wykładniczym Wycofaniem

Python
import requests import time def request_with_retry(url, api_key, max_retries=5): for attempt in range(max_retries): try: response = requests.get( url, headers={"Authorization": f"Bearer {api_key}"}, timeout=10 ) if response.status_code == 200: return response.json() elif response.status_code == 429: # Rate limited - back off exponentially wait_time = min(2 ** attempt, 300) # Max 5 minutes reset_time = response.headers.get("X-Requests-Reset-ISO") print(f"Rate limited. Retrying in {wait_time}s (resets at {reset_time})") time.sleep(wait_time) elif response.status_code >= 500: # Server error - retry wait_time = 2 ** attempt print(f"Server error {response.status_code}. Retrying in {wait_time}s") time.sleep(wait_time) else: # Other error - don't retry raise Exception(f"HTTP {response.status_code}: {response.text}") except requests.exceptions.Timeout: wait_time = 2 ** attempt print(f"Timeout. Retrying in {wait_time}s") time.sleep(wait_time) raise Exception("Max retries exceeded") # Usage data = request_with_retry( "https://api.smartmoneyapi.com/v1/whales/events", "sk_live_abc123xyz789" ) print(data)

Gotowy na Ulepszenie?

Bezpłatny tier nie wystarcza? Ulepsz do Trader lub Pro, aby uzyskać wyższe limity i dostęp do zaawansowanych funkcji, takich jak wyniki potwierdzenia i dane on-chain.

Zobacz Cennik

Optymalizuj Swoje Użycie API Już Dziś

Wprowadź buforowanie, używaj WebSocket do danych w czasie rzeczywistym i obsługuj limity szybkości z gracją.

Przeczytaj Dokumentację
Zacznij bezpłatnie — 200 wywołań/dzień, bez karty

Otrzymuj na żywo przepływy wielorybów, finansowanie, otwarte zainteresowanie i dane on-chain z 3 giełd z jednego API. Bezpłatny tier, bez karty kredytowej, ulepsz w dowolnym momencie.

Zacznij bezpłatnie →
Wypróbuj konsolę API na żywo → (nie wymaga konta)
Uzyskaj swój klucz API w 30 sekund

Gotowy do budowania? Zdobądź bezpłatny klucz API (200 wywołań/dzień, bez karty) i zacznij pobierać na żywo dane o wielorybach, finansowaniu i on-chain.

Uzyskaj swój klucz API →