Limitación de Tasa y Cuotas

Comprende los límites de tasa de Smart Money API, las cuotas diarias para cada nivel de suscripción y las estrategias de optimización para maximizar el uso de tu API.

Resumen

Smart Money API implementa cuotas de solicitudes diarias para garantizar la calidad del servicio y equidad entre todos los usuarios. Cada nivel de suscripción incluye un límite diario diferente. Cuando excedes tu cuota diaria, recibes un error 429 Too Many Requests hasta que tu cuota se reinicie a medianoche UTC.

Los límites de tasa se aplican por clave de API. Cada clave tiene su propia cuota independiente. Puedes generar múltiples claves para diferentes aplicaciones y monitorear el uso de cada una por separado.

Cuotas por Nivel de Suscripción

Nivel Solicitudes Diarias Precio Características
Gratis 20 solicitudes/día $0 BTC, ETH, SOL, tasas de financiamiento, liquidaciones
Trader 400 solicitudes/día $29/mes Todos los símbolos, posiciones de ballenas, datos de OI
Pro 4,000 solicitudes/día $79/mes Puntuaciones de confirmación, datos on-chain, webhooks
Enterprise Personalizado Personalizado Soporte dedicado, integraciones personalizadas

Encabezados de Respuesta de Límite de Tasa

Cada respuesta de la API incluye encabezados que indican el estado actual de tu cuota:

Encabezados HTTP
X-Requests-Limit: 200 X-Requests-Remaining: 147 X-Requests-Reset: 1711116000 X-Requests-Reset-ISO: 2026-03-22T00:00:00Z
Encabezado Descripción
X-Requests-Limit Total de solicitudes permitidas por día (ej., 200 para Trader)
X-Requests-Remaining Solicitudes restantes en el día actual
X-Requests-Reset Marca de tiempo Unix cuando se reinicia la cuota
X-Requests-Reset-ISO Marca de tiempo ISO 8601 para el reinicio de la cuota

Verificación de Cuota Antes de Hacer Solicitudes

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"Cuota: {remaining}/{limit} solicitudes ({percent_used:.1f}% utilizadas)") print(f"Se reinicia a: {reset_time}") if remaining < 5: print("ADVERTENCIA: ¡Cerca del límite de cuota!") return False return True # Verificar antes de hacer solicitudes if check_quota_before_request("sk_live_abc123xyz789"): print("Seguro proceder con las llamadas API")

Ventana de Tasa Diaria

Los límites de tasa operan en una ventana de 24 horas. Tu cuota se reinicia diariamente a medianoche UTC (00:00 UTC). El tiempo exacto de reinicio se proporciona en el X-Requests-Reset-ISO encabezado.

Ejemplo: Nivel Trader (400 solicitudes/día)

  • Día 1 (21 de Mar): 200 solicitudes disponibles a las 00:00 UTC
  • 10:30 UTC: Se hicieron 75 solicitudes, 125 restantes
  • 15:45 UTC: Se hicieron 100 solicitudes más, 25 restantes
  • 23:59 UTC: Todavía quedan 25 solicitudes (no se pueden transferir)
  • Día 2 (22 de Mar, 00:00 UTC): La cuota se reinicia a 200

Estrategias de Optimización

1. Almacenar en Caché las Respuestas de la API

Las posiciones de ballenas no cambian cada segundo. Almacena los resultados durante 30-60 segundos y sirve los datos en caché en lugar de hacer nuevas llamadas 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() # Devolver datos en caché si aún están frescos if cache_key in self.cache: age = now - self.cache_time[cache_key] if age < self.cache_ttl: print(f"Servido desde caché (edad: {age:.1f}s)") return self.cache[cache_key] # Obtener datos nuevos 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 # Uso: Almacenar en caché durante 60 segundos client = CachedClient("sk_live_abc123xyz789", cache_ttl=60) whales1 = client.get_whale_positions("BTCUSDT") # Llamada API whales2 = client.get_whale_positions("BTCUSDT") # Desde caché whales3 = client.get_whale_positions("BTCUSDT") # Desde caché

2. Usar WebSocket para Datos en Tiempo Real

Las conexiones WebSocket entregan actualizaciones al instante sin contar contra tu límite de tasa. Suscríbete a transmisiones y recibe actualizaciones en tiempo real, reduciendo el número de llamadas REST API necesarias.

3. Agrupar Solicitudes Estratégicamente

Haz una solicitud con múltiples símbolos cuando sea posible en lugar de solicitudes separadas para cada símbolo. Esto reduce las llamadas API hasta 10 veces.

4. Usar Filtros al Momento de la Solicitud

Aplica filtros (símbolo, exchange, tamaño mínimo de posición) en los parámetros de consulta para obtener exactamente los datos que necesitas, evitando el post-procesamiento.

Manejo de Errores de Límite de Tasa

Reintentar con Retroceso Exponencial

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: # Límite de tasa alcanzado - retroceso exponencial wait_time = min(2 ** attempt, 300) # Máximo 5 minutos reset_time = response.headers.get("X-Requests-Reset-ISO") print(f"Límite de tasa alcanzado. Reintentando en {wait_time}s (se reinicia a {reset_time})") time.sleep(wait_time) elif response.status_code >= 500: # Error del servidor - reintentar wait_time = 2 ** attempt print(f"Error del servidor {response.status_code}. Reintentando en {wait_time}s") time.sleep(wait_time) else: # Otro error - no reintentar raise Exception(f"HTTP {response.status_code}: {response.text}") except requests.exceptions.Timeout: wait_time = 2 ** attempt print(f"Tiempo de espera agotado. Reintentando en {wait_time}s") time.sleep(wait_time) raise Exception("Se excedió el número máximo de reintentos") # Uso data = request_with_retry( "https://api.smartmoneyapi.com/v1/whales/events", "sk_live_abc123xyz789" ) print(data)

¿Listo para Actualizar?

¿El nivel gratuito no es suficiente? Actualiza a Trader o Pro para obtener cuotas más altas y acceso a funciones avanzadas como puntuaciones de confirmación y datos on-chain.

Ver Precios

Optimiza tu Uso de API Hoy

Implementa almacenamiento en caché, usa WebSocket para datos en tiempo real y maneja los límites de tasa con elegancia.

Leer Documentación
Comienza gratis — 200 llamadas/día, sin tarjeta

Obtén flujo de ballenas en vivo, financiamiento, interés abierto y datos on-chain en 3 exchanges desde una sola API. Nivel gratuito, sin tarjeta de crédito, actualiza en cualquier momento.

Comienza gratis →
Prueba la consola API en vivo → (no se necesita cuenta)
Obtén tu clave API en 30 segundos

¿Listo para construir? Obtén una clave API gratuita (200 llamadas/día, sin tarjeta) y comienza a obtener datos en vivo de ballenas, financiamiento y on-chain.

Obtén tu clave API →