Rate Limits

Límites de la API

Conocé los límites de requests y cómo manejar el error 429.

Límites

General

Todos los endpoints

200 req/min

Trading

/orders, /repos

30 req/min

WebSocket

Suscripciones

50 títulos/conexión

Headers de respuesta

Cada respuesta incluye headers con tu uso actual:

BASH
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 195
X-RateLimit-Reset: 1767456734

Limit — Máximo permitido

Remaining — Requests restantes

Reset — Timestamp Unix de reinicio

Error 429: Rate Limit Exceeded

Cuando excedés el límite, recibís un error 429. Usá el header Retry-After para saber cuántos segundos esperar.

Respuesta 429
HTTP/1.1 429 Too Many Requests
Retry-After: 45
{
"meta": {
"timestamp": "2026-01-03T16:00:00.000Z",
"path": "/broker/orders",
"method": "POST",
"status_code": 429
},
"data": null,
"error": {
"message": "Rate limit exceeded. Try again in 45 seconds.",
"code": "RATE_LIMIT_EXCEEDED"
}
}

Estrategia de reintento

Implementá reintentos con backoff exponencial para manejar errores 429.

429esperar Retry-Afterreintentar
Python
1import time
2import requests
3
4def request_with_retry(url, headers, max_retries=3):
5 for attempt in range(max_retries):
6 response = requests.get(url, headers=headers)
7
8 if response.status_code == 200:
9 return response.json()
10
11 if response.status_code == 429:
12 retry_after = int(response.headers.get("Retry-After", 60))
13 time.sleep(retry_after)
14 continue
15
16 response.raise_for_status()
17
18 raise Exception("Max retries exceeded")

Buenas prácticas

  • Monitorear X-RateLimit-Remaining para evitar llegar al límite
  • Siempre respetar el header Retry-After
  • Cachear respuestas cuando sea posible
  • Usar WebSocket para datos en tiempo real en lugar de polling