Usamos cookies. Las cookies y el almacenamiento del navegador mantienen tu sesión iniciada y recuerdan tus preferencias. Con tu permiso, también medimos cómo se usa el sitio. Puedes en cualquier momento. Consulta nuestra política de cookies.

Límites de tasa

Cuenta

Límites de tasa

Peticiones por minuto según el plan, límites de RPM y diarios en USD por clave, cabeceras X-RateLimit y cómo gestionar el error 429 con reintentos.

Los límites de tasa protegen tu saldo y el servicio. Se cuentan en peticiones por minuto (RPM) por clave de API, y las claves también pueden tener un límite de gasto diario en USD.

Límites por plan

PlanPeticiones por minuto
Free5
Pro100
Team3,000
Enterprise3,000+

Mejora tu plan en la página de precios para aumentar tu límite.

Límites por clave

Al crear o editar una clave en Claves de API puedes configurar:

LímiteEfecto
Límite de RPMLimita las peticiones por minuto de esta clave. El límite efectivo es el menor entre el límite de la clave y el de tu plan.
Límite diario en USDCuando la clave ha gastado esta cantidad hoy (UTC), las siguientes peticiones devuelven 429 daily_limit_reached hasta el día siguiente.
Lista de modelos permitidosCon esta clave solo se pueden usar los ids de modelo de la lista; los demás devuelven 403 model_not_allowed.

La ventana de RPM es de un minuto y se cuenta por clave, así que las claves separadas para aplicaciones distintas no comparten límite, aunque todas siguen sujetas al límite de tu plan.

Cabeceras de límite

Cada respuesta de generación (éxito o error) indica en qué punto estás, para que puedas frenar antes de llegar al límite:

CabeceraSignificado
X-RateLimit-LimitSolicitudes permitidas en la ventana actual de un minuto para esta clave.
X-RateLimit-RemainingSolicitudes que quedan en la ventana.
X-RateLimit-ResetSegundos hasta que se reinicia la ventana.

Los clientes de navegador también pueden leerlas (están en Access-Control-Expose-Headers).

Picos y concurrencia

Las peticiones que superan el límite no se rechazan de inmediato: esperan en una cola y empiezan en cuanto se libera la ventana de un minuto. Por cuenta se ejecutan hasta 10 peticiones a la vez; el resto espera a que termine una. Antes de empezar, el coste máximo estimado de cada petición se reserva de tu saldo junto con el de las que ya se están ejecutando, así que las peticiones paralelas nunca gastan más de lo que tienes. Una petición que no puede empezar en 60 segundos devuelve 429 (rate_limited o concurrency_limit) con Retry-After; si su coste ya no cabe en tu saldo, devuelve 402 insufficient_balance.

Reintentos seguros con Idempotency-Key

Tras un error de red quizá no sepas si la solicitud llegó. Envía una cabecera Idempotency-Key (una cadena única de hasta 120 caracteres, por ejemplo un UUID) y reintenta con la misma clave: si la primera solicitud ya se envió al modelo, el reintento devuelve 409 idempotency_conflict en lugar de ejecutar y cobrar el trabajo dos veces. Si la primera falló antes de llegar al modelo, la clave se libera y el reintento funciona con normalidad. Cada clave se puede usar una vez por cuenta durante 24 horas.

curl https://api14.com/api/v1/images/generations \
  -H "Authorization: Bearer $API14_KEY" \
  -H "Idempotency-Key: 6f1c2a3e-order-1842" \
  -H "Content-Type: application/json" \
  -d '{"model": "black-forest-labs/flux-3-image", "prompt": "a red bicycle"}'

Cuando alcanzas un límite

Demasiadas peticiones

HTTP/1.1 429 Too Many Requests
Retry-After: 60
{
  "error": {
    "message": "Rate limit of 5 requests per minute exceeded.",
    "type": "rate_limit_error",
    "code": "rate_limited"
  }
}

Espera los segundos que indica Retry-After y vuelve a intentarlo. Los SDK oficiales de OpenAI reintentan automáticamente las respuestas 429 con backoff (dos reintentos por defecto; configurable con maxRetries / max_retries).

Límite de gasto diario

{
  "error": {
    "message": "This API key reached its daily spend limit.",
    "type": "rate_limit_error",
    "code": "daily_limit_reached"
  }
}

Reintentar no sirve de nada hasta el siguiente día UTC. Si se trata de tráfico esperado, aumenta o elimina el límite diario de la clave en Claves de API.

Límites del upstream

Los proveedores tienen sus propios límites, más estrictos en las variantes de modelo :free. Cuando un proveedor limita una petición, su 429 te llega tal cual. Usa modelos de respaldo o enrutamiento de proveedores para repartir la carga entre proveedores.

Gestionar los límites en el código

  • Respeta Retry-After y reintenta con backoff exponencial y jitter.
  • Distingue rate_limited (reintentar más tarde) de daily_limit_reached e insufficient_balance (reintentar no sirve de nada).
  • Pon en cola las tareas en segundo plano en lugar de lanzarlas todas a la vez.
  • Usa streaming para respuestas largas: una petición en streaming cuenta como una sola petición.
import time
from openai import OpenAI, RateLimitError

client = OpenAI(base_url="https://api14.com/api/v1", api_key="sk-api14-...", max_retries=0)

for attempt in range(5):
    try:
        r = client.chat.completions.create(model="openai/gpt-5-mini", messages=[{"role": "user", "content": "Hi"}])
        break
    except RateLimitError as e:
        if e.code == "daily_limit_reached":
            raise
        time.sleep(int(e.response.headers.get("retry-after", 2 ** attempt)))

Consulta Errores para ver todos los códigos de estado.