Límites por plan
| Plan | Límite | Ventana |
|---|
| Standard | 100 peticiones | por minuto |
| Enterprise | 1.000 peticiones | por minuto |
Los límites se aplican por API key. Si necesitas un límite superior, contacta con soporte@linahealthcareplatform.com.
Cada respuesta de la API incluye headers que indican el estado actual de tu cuota:
| Header | Descripción |
|---|
X-RateLimit-Limit | Número máximo de peticiones permitidas por ventana |
X-RateLimit-Remaining | Peticiones restantes en la ventana actual |
X-RateLimit-Reset | Timestamp Unix (segundos) en que se restablece la ventana |
Ejemplo de headers:
HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 73
X-RateLimit-Reset: 1747224120
Respuesta 429 (Too Many Requests)
Cuando superas el límite, recibirás un error 429:
{
"error": {
"code": "rate_limit_exceeded",
"message": "Has superado el límite de peticiones. Inténtalo de nuevo en 34 segundos.",
"retryAfter": 34
}
}
El header Retry-After también indica los segundos de espera:
HTTP/1.1 429 Too Many Requests
Retry-After: 34
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1747224120
Gestión recomendada
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get('Retry-After') || '60', 10);
console.log(`Rate limited. Reintentando en ${retryAfter}s...`);
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
continue;
}
return response;
}
throw new Error('Se ha superado el número máximo de reintentos');
}
import time
import requests
def fetch_with_retry(url, headers, max_retries=3):
for attempt in range(max_retries + 1):
response = requests.get(url, headers=headers)
if response.status_code == 429:
retry_after = int(response.headers.get("Retry-After", 60))
print(f"Rate limited. Reintentando en {retry_after}s...")
time.sleep(retry_after)
continue
return response
raise Exception("Se ha superado el número máximo de reintentos")
Buenas prácticas
Implementa backoff exponencial
Si recibes un 429, espera el tiempo indicado en Retry-After antes de reintentar.
Cachea respuestas
Almacena en caché las respuestas que no cambian frecuentemente (formularios, configuración).
Usa webhooks
En lugar de hacer polling, configura webhooks para recibir actualizaciones. Peticiones en lote
Agrupa operaciones cuando sea posible para reducir el número de peticiones.
Los endpoints de webhooks (recibir eventos) no cuentan para tu límite de peticiones. Solo las llamadas salientes a la API consumen cuota.