Límites de Tasa
Entiende los límites de tasa de la API y cómo manejarlos.
Descripción General
Los límites de tasa protegen la API contra abuso y aseguran un uso justo. Los límites se aplican por API key.
Límites Actuales
API REST
| Entorno | Límite | Ventana |
|---|---|---|
Claves live (wk_live_) | 1,000 peticiones | Por minuto |
Claves test (wk_test_) | 100 peticiones | Por minuto |
Endpoints OAuth
| Endpoint | Límite | Ventana |
|---|---|---|
POST /oauth/token | 60 peticiones por IP | Por minuto |
POST /oauth/token | 30 peticiones por client_id | Por minuto |
POST /oauth/register | 10 peticiones por IP | Por hora |
Las respuestas de límite de tasa en OAuth incluyen el header Retry-After (segundos de espera). Implementa backoff exponencial — consulta Errores OAuth para un ejemplo de código.
Headers de Respuesta
Cada respuesta de la API incluye información sobre los límites de tasa:
| Header | Descripción |
|---|---|
X-RateLimit-Limit | Máximo de peticiones por ventana |
X-RateLimit-Remaining | Peticiones restantes en la ventana actual |
X-RateLimit-Reset | Timestamp Unix cuando la ventana se reinicia |
Manejo de Límites de Tasa
Cuando excedes el límite, la API devuelve 429 Too Many Requests:
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Try again in 45 seconds."
}
}Backoff Exponencial
Implementa reintentos automáticos con demoras incrementales:
async function apiRequest(url, options, maxRetries = 3) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.status !== 429) return response;
const resetAt = response.headers.get('X-RateLimit-Reset');
const waitMs = resetAt
? (Number(resetAt) * 1000) - Date.now()
: Math.pow(2, attempt) * 1000;
await new Promise(resolve => setTimeout(resolve, waitMs));
}
throw new Error('Rate limit exceeded after max retries');
}Mejores Prácticas
- Cachea respuestas cuando sea posible para reducir llamadas a la API
- Usa webhooks en lugar de polling para datos en tiempo real
- Agrupa operaciones donde la API lo soporte
- Monitorea tu uso a través del header
X-RateLimit-Remaining - Distribuye las peticiones a lo largo del tiempo en lugar de hacer ráfagas