API y desarrolladores

Rate Limiting

Entiende los límites de peticiones y cómo manejar respuestas 429

La Business API aplica límites de peticiones por merchant para garantizar un uso justo y la estabilidad de la plataforma.

Headers de Respuesta

Cada respuesta incluye headers de rate limit que te indican tu cuota actual:

Header Descripción
X-RateLimit-Limit Máximo de peticiones permitidas en la ventana actual
X-RateLimit-Remaining Peticiones restantes en la ventana actual
X-RateLimit-Reset Timestamp Unix cuando la ventana se reinicia

Consulta estos headers en cada respuesta para conocer tu límite y cuántas peticiones te quedan.

Manejar 429 Too Many Requests

Cuando excedes el límite, la API responde con status 429 y agrega un header Retry-After:

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 1
X-RateLimit-Limit: 1
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1710288000
{
  "type": "RateLimitExceededError",
  "detail": "Rate limit exceeded"
}

Estrategia de Reintentos

Usa backoff exponencial cuando recibas una respuesta 429:

import time
import httpx

def request_with_retry(url: str, headers: dict, max_retries: int = 3):
    for attempt in range(max_retries):
        response = httpx.get(url, headers=headers)
        if response.status_code != 429:
            return response
        retry_after = int(response.headers.get("Retry-After", 2 ** attempt))
        time.sleep(retry_after)
    return response

Buenas Prácticas

  • Monitorea el header X-RateLimit-Remaining para reducir la velocidad proactivamente antes de alcanzar el límite.
  • Cachea las respuestas cuando los datos no cambian frecuentemente — especialmente catálogos de productos.
  • Agrupa tu trabajo — solicita páginas más grandes (hasta limit=100) para reducir el número de peticiones.
  • Respeta Retry-After — siempre espera el tiempo indicado antes de reintentar, en lugar de usar un delay fijo.
¿Necesitas ayuda?