הגבלת קצב ומכסות
למדו על מגבלות הקצב של Smart Money API, המכסות היומיות לכל רמת מנוי ואסטרטגיות אופטימיזציה למקסום השימוש ב-API שלכם.
סקירה כללית
Smart Money API מיישם מכסות בקשות יומיות כדי להבטיח איכות שירות והוגנות לכל המשתמשים. כל רמת מנוי כוללת מגבלה יומית שונה. כאשר תחרוג מהמכסה היומית שלך, תקבל שגיאה 429 Too Many Requests עד שהמכסה תאופס בחצות UTC.
מגבלות הקצב חלות לכל מפתח API. לכל מפתח יש מכסה עצמאית משלו. תוכלו ליצור מספר מפתחות ליישומים שונים ולנטר את השימוש עבור כל אחד בנפרד.
מכסות לפי רמת מנוי
| רמה |
בקשות יומיות |
מחיר |
תכונות |
| חינם |
20 בקשות/יום |
$0 |
BTC, ETH, SOL, שעורי מימון, נזילות |
| סוחר |
400 בקשות/יום |
$29/חודש |
כל הסמלים, עמדות לווייתנים, נתוני OI |
| מקצועי |
4,000 בקשות/יום |
$79/חודש |
ציוני אישור, נתוני שרשרת, webhooks |
| ארגוני |
מותאם אישית |
מותאם אישית |
תמיכה ייעודית, אינטגרציות מותאמות |
כל תגובת API כוללת כותרות המציינות את מצב המכסה הנוכחי שלך:
X-Requests-Limit: 200
X-Requests-Remaining: 147
X-Requests-Reset: 1711116000
X-Requests-Reset-ISO: 2026-03-22T00:00:00Z
| כותרת |
תיאור |
X-Requests-Limit |
סה"כ בקשות מותרות ביום (למשל, 200 עבור סוחר) |
X-Requests-Remaining |
בקשות שנותרו ביום הנוכחי |
X-Requests-Reset |
חותמת זמן Unix לאיפוס המכסה |
X-Requests-Reset-ISO |
חותמת זמן ISO 8601 לאיפוס המכסה |
בדיקת מכסה לפני ביצוע בקשות
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")
חלון קצב יומי
מגבלות הקצב פועלות בחלון גלילה של 24 שעות. המכסה שלך מתאפסת מדי יום בחצות UTC (00:00 UTC). זמן האיפוס המדויק מסופק בכותרות X-Requests-Reset-ISO .
דוגמה: רמת סוחר (400 בקשות/יום)
- יום 1 (21 במרץ): 200 בקשות זמינות ב-00:00 UTC
- 10:30 UTC: בוצעו 75 בקשות, נותרו 125
- 15:45 UTC: בוצעו 100 בקשות נוספות, נותרו 25
- 23:59 UTC: עדיין נותרו 25 בקשות (לא ניתן להעביר ליום הבא)
- יום 2 (22 במרץ, 00:00 UTC): המכסה מתאפסת ל-200
אסטרטגיות אופטימיזציה
1. שמור במטמון תגובות API
עמדות לווייתנים לא משתנות כל שנייה. שמרו תוצאות במטמון למשך 30-60 שניות והציגו נתונים ממטמון במקום לבצע קריאות API חדשות.
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. השתמש ב-WebSocket לנתונים בזמן אמת
חיבורי WebSocket מספקים עדכונים מיידיים ללא השפעה על מגבלת הקצב שלך. הירשמו לזרמים וקבלו עדכונים כפי שהם מתרחשים, תוך הפחתת מספר קריאות ה-REST API הנדרשות.
3. בצע בקשות אצווה בצורה אסטרטגית
בצעו בקשה אחת עם מספר סמלים כאשר אפשרי במקום בקשות נפרדות לכל סמל. זה מפחית את מספר קריאות ה-API עד פי 10.
4. השתמש בסינון בזמן הבקשה
החילו מסננים (סמל, בורסה, גודל מינימלי של עמדה) בפרמטרי השאילתה כדי לקבל בדיוק את הנתונים שאתם צריכים, תוך הימנעות מצורך בעיבוד לאחר מעשה.
טיפול בשגיאות הגבלת קצב
נסה שוב עם השהייה מעריכית
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)
מוכן לשדרג?
הרמה החינמית לא מספיקה? שדרג לרמת סוחר או מקצועי למכסות גבוהות יותר וגישה לתכונות מתקדמות כמו ציוני אישור ונתוני שרשרת.
צפה במחירים
מקסם את שימוש ה-API שלך היום
יישם מטמון, השתמש ב-WebSocket לנתונים בזמן אמת וטפל במגבלות קצב בצורה אלגנטית.