Saltar al contenido principal

Límites de OpenAI API: corrige el 429 leyendo primero el límite correcto

A
14 min de lecturaAPI Guides

Un 429 de OpenAI API se corrige más rápido cuando dejas de tratarlo como un simple problema de reintento. Primero mira los x-ratelimit headers y la página Limits; luego decide si debes esperar, bajar concurrencia, recortar tokens, reparar billing, corregir scope o salir de la superficie equivocada.

Límites de OpenAI API: corrige el 429 leyendo primero el límite correcto

Un 429 de OpenAI API suele costar tiempo no porque el desarrollador ignore qué es un rate limit, sino porque el mismo código 429 esconde dueños distintos del problema. A veces el owner es la frecuencia de solicitudes. A veces es el volumen de tokens. A veces el freno real está en la cuota, la facturación o el presupuesto. Otras veces el error aparenta ser de capacidad, pero en realidad el request va al project, organization, model o endpoint equivocado. Y en incidentes reales tampoco es raro descubrir que el lector estaba mirando un límite de ChatGPT, Codex o un wrapper, no de Platform API.

Por eso la pregunta útil no es "¿cuál es el rate limit de OpenAI API?", sino "¿qué límite disparó este 429?". Mientras no sepas quién es el owner, comprar créditos, rotar keys o endurecer el retry loop sigue siendo una apuesta.

Muchas guías en español mezclan retroceso exponencial, falta de créditos, cuota insuficiente y consejos de producto como si todos fueran el mismo tipo de 429. La forma útil de ordenar ese ruido no es repetir más recetas, sino leer los headers, contrastar con la página Limits y elegir la acción más pequeña que realmente corresponde.

Respuesta corta

PreguntaRespuesta breve
¿Qué suele significar un 429 en OpenAI API?Que el route actual chocó con un límite de solicitudes, tokens, cuota, facturación, scope o ventana de reset.
¿Qué se revisa primero?Los x-ratelimit headers y la página Limits de la cuenta.
¿Cuáles son los owners técnicos más frecuentes?Burst traffic, demasiada concurrencia y requests con demasiado presupuesto de tokens.
¿Cuáles son los owners no técnicos más frecuentes?Cuota insuficiente, billing issue, final de trial o superficie equivocada.
¿Qué hacer antes de pedir más capacidad?Bajar concurrencia, poner exponential backoff con jitter, recortar output, sacar trabajo no urgente a colas o Batch API.
¿Qué no hacer a ciegas?Rotar claves, spamear retries, asumir que créditos equivalen a throughput o confundir ChatGPT/Codex con Platform API.

Empieza por el owner, no por el retry loop

Si lees con cuidado la guía oficial de rate limits de OpenAI, el contrato es bastante claro. Tu cuenta tiene límites vivos en la página Limits. El usage tier influye en el headroom disponible. Los headers pueden decir cuánto presupuesto queda y cuándo se reabre la ventana. Y las mitigaciones razonables empiezan con backoff y traffic shaping, no con reintentar más rápido.

Eso cambia el orden mental. Un request-rate problem y un token-rate problem pueden verse igual desde fuera porque ambos devuelven 429, pero el arreglo no es el mismo. Un problema de cuota o billing puede parecer un rate problem, pero no se resuelve esperando unos segundos. Un route de project, organization o model mal elegido puede parecer saturación cuando en realidad el fallo es de scope.

La regla operativa que mejor funciona es esta:

  1. Lee el owner.
  2. Lee la señal de reset.
  3. Aplica la corrección mínima segura.
  4. Escala solo cuando el route, el billing y la forma del tráfico ya están comprobados.

Si tu duda real es de organization, project o key scope, la guía correcta es OpenAI API Key y Organization ID. Si el problema pertenece a límites de producto en Codex o ChatGPT, los siblings correctos son OpenAI Codex usage limits y Codex API key vs subscription.

Qué miden de verdad los límites de OpenAI

OpenAI no describe los rate limits como un único número fijo para todo el mundo. En operación importan varias capas:

  • Requests per minute: demasiadas llamadas en una ventana corta.
  • Tokens per minute: demasiado volumen de prompt más output, aunque el número de requests parezca moderado.
  • Usage tier: la capa de la cuenta afecta al headroom disponible.
  • Live account limits: el techo que manda vive en la página Limits, no en una tabla copiada.
  • Reset signals: los headers indican cuándo se reabre la ventana.

Esta estructura hace inseguras las tablas viejas del tipo "OpenAI permite X requests por minuto". Son útiles como anécdota histórica, pero peligrosas como regla operativa. Los docs públicos sirven para entender definiciones y patrones; la página Limits es la frontera real de tu cuenta.

También es clave separar request pressure y token pressure. Los problemas RPM llegan por burst, tight loops o concurrencia agresiva. Los problemas TPM aparecen con historiales largos, system prompts demasiado grandes, outputs sobredimensionados o colas de requests que piden más tokens de los que el caso realmente necesita. Si no haces esa separación, acabas aplicando el remedio barato al owner equivocado.

Y un matiz más: aunque tu promedio por minuto parezca correcto, un burst corto dentro de una ventana cuantizada puede fallar antes. Estar "por debajo del promedio" no garantiza que la forma instantánea del tráfico sea segura.

Lee el response antes de cambiar nada

El Cookbook y la guía de rate limits empujan a la misma disciplina: primero lee el response. Los retries fallidos siguen gastando presupuesto. Repetir sin mirar convierte un evento de límite en una espiral más larga.

Los headers más útiles son:

  • x-ratelimit-limit-requests
  • x-ratelimit-remaining-requests
  • x-ratelimit-reset-requests
  • x-ratelimit-limit-tokens
  • x-ratelimit-remaining-tokens
  • x-ratelimit-reset-tokens

Lectura de headers y página Limits: request limit, token limit, reset y techo de cuenta se revisan por separado

Cuando aparecen, esos headers te dan una clasificación inicial muy práctica:

SeñalQué suele indicarPrimera acción
remaining-requests casi en ceroLa frecuencia o la concurrencia son demasiado altasBaja parallelism, suaviza el burst y añade backoff
remaining-tokens casi en ceroPrompt y output son demasiado grandesRecorta prompt, output o mueve trabajo
Reset cortoEl route probablemente es correcto; el problema es la ventanaEspera al reset y añade jitter
Poco headroom en LimitsEl cuello está en la cuenta o en el routeOptimiza primero y luego decide si pedir más
Headers normales pero sigue fallandoPuede haber scope, billing, wrapper o endpoint incorrectoRevisa project, org, model y surface

En un incidente real conviene guardar status, error body, endpoint, model, contexto de project u organization y cualquier valor x-ratelimit. Eso convierte el diagnóstico en evidence, no en memoria.

Una clasificación mínima podría verse así:

ts
const resetRequests = res.headers.get("x-ratelimit-reset-requests"); const resetTokens = res.headers.get("x-ratelimit-reset-tokens"); const remainingRequests = res.headers.get("x-ratelimit-remaining-requests"); const remainingTokens = res.headers.get("x-ratelimit-remaining-tokens"); const owner = remainingRequests === "0" ? "requests" : remainingTokens === "0" ? "tokens" : "unknown"; // Si importan las dos ventanas, usa el reset más tardío.

No necesitas el código perfecto al primer intento. Necesitas no escoger la rama equivocada.

Separa el 429 por owner

1. Request-rate owner

Es el caso clásico de burst. Hay demasiadas llamadas, demasiada concurrencia o un retry loop demasiado agresivo para el route actual. Suele verse con remaining-requests bajo, reset corto y tráfico simultáneo. La solución principal es traffic shaping, no billing.

2. Token-rate owner

Aquí el número de requests puede no parecer alto, pero cada una cuesta demasiado. Historial largo, system prompt sobredimensionado, output cap irreal o contexto excesivo agotan TPM antes de lo esperado. La corrección más barata suele ser recortar tokens, no comprar nada.

3. Quota o billing owner

En esta rama, backoff deja de ser útil como arreglo principal. Si no hay cuota utilizable, el billing está roto o el budget está en el límite, ya no estás ante un problema por minuto. Toca verificar el estado de la cuenta, la tarjeta o el presupuesto. Si tu duda es realmente de créditos y trial, el sibling correcto es OpenAI API free trial.

4. Project, organization o model scope owner

El request puede ser sintácticamente correcto y aun así ir por el route equivocado. Projects distintos pueden tener perfiles diferentes. Un model o un organization distinto pueden cambiar disponibilidad y comportamiento. Copiar settings entre entornos no garantiza que el scope siga siendo el mismo.

5. Wrong product surface owner

Aquí se pierde mucho tiempo. Se mezclan límites de OpenAI Platform API con ventanas de ChatGPT, Codex o gateways compatibles. Un upgrade de ChatGPT no arregla por sí mismo un 429 de la API. Una ventana de uso de Codex no es lo mismo que throughput API. Un wrapper puede imponer su propio rate limit aunque la capa subyacente sea OpenAI-compatible.

Arregla el tráfico con acciones pequeñas y seguras

Una vez que conoces el owner, empieza por la mitigación mínima. Lo que OpenAI repite en sus guías es backoff con jitter, no resend inmediato.

La escalera habitual es esta:

  1. Espera al reset si el route es correcto.
  2. Baja concurrencia si el problema es burst.
  3. Añade exponential backoff con jitter.
  4. Recorta prompt y output si la presión está en tokens.
  5. Saca el trabajo no urgente a colas o Batch API.
  6. Pide más capacidad solo después de estabilizar route y traffic shape.

Escalera de mitigación: owner, concurrencia, backoff, recorte de tokens, Batch y solicitud de mayor límite

El error clásico en código es tratar el backoff como decoración. El retry path debería volverse más silencioso después de cada fallo. Un patrón mínimo:

ts
const base = 500; // ms const max = 15000; for (let attempt = 0; attempt < 6; attempt += 1) { const wait = Math.min(max, base * 2 ** attempt); const jitter = Math.random() * 0.25 * wait; await sleep(wait + jitter); }

En presión TPM, recortar tokens suele ser la corrección más barata. Baja el output esperado, acorta historial, elimina contexto inútil. Si el workload no necesita respuesta inmediata, considera Batch API o colas antes de seguir castigando el path síncrono.

Pide más throughput solo con evidencia estable

Muchas veces se intenta escalar demasiado pronto. Eso tapa si la aplicación habría quedado estable con mejor disciplina de tráfico.

Tiene sentido pedir más límites cuando se cumplen todas estas condiciones:

  • el route es correcto;
  • el billing está sano;
  • el owner está identificado;
  • los retries ya están acotados;
  • el presupuesto de prompt y output es razonable;
  • el workload sigue necesitando más capacidad sostenida.

En ese punto sí importan usage tiers e increase requests. Los docs públicos explican la mecánica general, pero el contrato real de subida vive en tu página Limits.

Antes de pedir más capacidad, conviene reunir:

  • model y endpoint concretos;
  • presión observada de requests y tokens;
  • comportamiento de reset;
  • perfil de concurrencia;
  • optimizaciones ya aplicadas;
  • y por qué Batch API o cola no bastan.

Ese paquete sirve tanto para una solicitud formal como para evitar que tu propio equipo pida más límites cuando el problema sigue siendo de arquitectura.

Stop rules

Algunos movimientos son tan frecuentes y tan contraproducentes que merecen su propio checklist.

Stop rules para OpenAI API 429: safe retry separado de cuota, billing, scope y superficie equivocada

No hagas esto por defecto:

  • Rotar keys. Si el mismo account, project o route sigue siendo el owner, no arregla el problema.
  • Comprar créditos sin revisar throughput. Pueden servir para cuota o billing, pero no elevan RPM o TPM automáticamente.
  • Subir un plan de ChatGPT o Codex para arreglar un 429 de Platform API.
  • Copiar números exactos de tutoriales viejos como si fueran el límite vivo.
  • Reintentar a ciegas. Los retries fallidos también consumen budget.

Piensa mejor con esta tabla:

Si el problema esHaz lo siguiente
Request burstBaja parallelism y añade jitter
Token pressureReduce prompt y output size
Reset cortoEspera y reintenta de forma segura
Billing o quotaRepara el estado de la cuenta
Project o model scopeCorrige route y scope
Superficie no APICambia a la guía de esa superficie

FAQ

¿Qué significa un 429 en OpenAI API?

Que el route actual superó un límite de requests, tokens, cuota, facturación, scope o reset-window. Primero hay que clasificar quién manda.

¿Dónde viven los límites actuales exactos?

En la página Limits de tu cuenta. Los docs públicos sirven para definiciones y headers; el techo vivo pertenece a la cuenta.

¿Añadir créditos garantiza más throughput?

No. Solo ayuda cuando el owner es cuota o billing. No sube automáticamente request-rate ni token-rate ceilings.

¿ChatGPT Plus, Pro o Codex arreglan un 429 de Platform API?

No. Son superficies distintas con contratos distintos.

¿Cuándo ayuda Batch API?

Cuando el trabajo no es inmediato. Si no necesitas respuesta síncrona, suele ser mejor sacar presión del path en tiempo real.

¿Cuándo conviene pedir más límites?

Después de confirmar route, billing, retries acotados y token budget razonable, y solo si aun así falta capacidad sostenida.

Conclusión práctica

La forma más rápida y honesta de resolver los límites de OpenAI API no es "reintentar más" ni "subir algo". Es identificar el owner, leer la señal de reset y aplicar la corrección mínima segura. Si el owner es requests, suaviza el burst. Si es tokens, reduce el payload. Si es billing o cuota, repara la cuenta. Si es scope, vuelve al project, organization, model o endpoint correcto. Y si el trabajo no es urgente, sácalo del path síncrono cuando Batch API o colas encajan mejor.

Share:

laozhang.ai

One API, All AI Models

AI Image

Gemini 3 Pro Image

$0.05/img
80% OFF
AI Video

Sora 2 · Veo 3.1

$0.15/video
Async API
AI Chat

GPT · Claude · Gemini

200+ models
Official Price
Served 100K+ developers
|@laozhang_cn|Get $0.1