DocsLimites de uso

Limites de velocidad

Entiende los limites de velocidad de la API de FreeFileTools y como manejarlos en tu aplicacion.

Limites del plan gratuito

LimiteValor
Solicitudes por hora50
Tamano maximo de archivo por solicitud25 MB
Ventana de limite de velocidadRolling 1 hour

El limite de velocidad se aplica por API key. Cada clave tiene su propio contador independiente que se reinicia en una base horaria continua.

Cuando se exceden los limites de velocidad

Cuando excedes el limite de velocidad, la API devuelve una respuesta 429 Too Many Requests:

json
{
  "error": "Rate limit exceeded",
  "message": "You have exceeded the rate limit of 50 requests per hour. Please try again later.",
  "retryAfter": 1742
}

El campo retryAfter indica el numero de segundos a esperar antes de realizar otra solicitud.

Encabezados de respuesta de limite de velocidad

Cada respuesta de la API incluye encabezados para ayudarte a rastrear tu uso del limite de velocidad:

EncabezadoDescripcion
X-RateLimit-LimitNumero maximo de solicitudes permitidas por hora (50)
X-RateLimit-RemainingNumero de solicitudes restantes en la ventana actual
Retry-AfterSegundos a esperar antes de reintentar (solo en respuestas 429)

Ejemplo de encabezados de respuesta

http
HTTP/1.1 200 OK
Content-Type: image/jpeg
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 42

Consejos para mantenerse dentro de los limites

1.

Verifica las solicitudes restantes

Monitorea el encabezado X-RateLimit-Remaining para saber cuantas solicitudes te quedan.

2.

Implementa retroceso exponencial

Cuando recibas una respuesta 429, espera y reintenta con retrasos crecientes en lugar de bombardear la API.

3.

Almacena en cache los resultados

Si estas procesando los mismos archivos repetidamente, almacena los resultados en cache localmente para evitar llamadas innecesarias a la API.

4.

Agrupa sabiamente

Para procesamiento por lotes, distribuye tus solicitudes a lo largo del tiempo en lugar de enviarlas todas a la vez.

Ejemplo: Manejo de limites de velocidad en JavaScript

javascript
async function apiCall(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");
      console.log(`Rate limited. Waiting ${retryAfter} seconds...`);
      await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));
      continue;
    }

    return response;
  }

  throw new Error("Max retries exceeded");
}