Rate limiting
La API pública aplica un límite de 600 requests por minuto por clave de API, en ventana fija: el contador se reinicia al inicio de cada minuto. El límite aplica a todos los métodos, sumados.
Headers de respuesta
Toda respuesta autenticada informa el estado de tu ventana actual:
| Header | Ejemplo | Descripción |
|---|---|---|
X-RateLimit-Limit | 600 | Límite de requests de la ventana. |
X-RateLimit-Remaining | 597 | Requests restantes en la ventana actual. |
X-RateLimit-Reset | 1753272060 | Unix time (segundos) en que la ventana se reinicia. |
Retry-After | 27 | Solo en 429: segundos hasta poder reintentar. |
Respuesta al exceder
Al superar el límite, la API responde 429 Too Many Requests con el envelope de error estándar:
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1753272060
Retry-After: 27
{
"message": "Limite de requisições excedido",
"code": "RATE_LIMITED"
}
Espera los segundos indicados en Retry-After (o hasta el instante de X-RateLimit-Reset) antes de la próxima request. Como la ventana es fija, reintentar antes solo desperdicia llamadas — la respuesta seguirá siendo 429 hasta el cambio de minuto.
Buenas prácticas
- Monitorea
X-RateLimit-Remainingy baja el ritmo antes de llegar a cero, en vez de reaccionar al429. - Reintenta con backoff respetando
Retry-After— nunca en loop inmediato. - Usa
X-Idempotency-Keyen las mutaciones: el reintento post-429 es seguro y no duplica la operación. - Prefiere filtros de listado y
per_page=100a barridos página por página — menos requests, la misma información (Paginación y filtros). - Distribuye las cargas por lote (importaciones, sincronizaciones) a lo largo del tiempo en vez de ráfagas al inicio del minuto.