Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La API de OpenAI devuelve 429 con el tipo insufficient_quota de error cuando tu cuenta se quedó sin créditos o superó un límite de gasto o uso. Es el mismo código de estado que el de un límite de tasa, pero esperar unos segundos no lo soluciona. El acceso vuelve solo después de que alguien agregue créditos, aumente un límite o se restablezca el período mensual. OpenAI dice que volver a intentarlo tras errores de facturación, gasto o cuota no restaurará el acceso a la API y que debe inspeccionar error.code para encontrar la causa específica. Para obtener más información, vea Códigos de error.
¿Qué aspecto tienen los errores de cuota de OpenAI?
Cada uno de estos errores devuelve 429. El error.type puede seguir siendo insufficient_quota, así que comprueba error.code para saber cuál te ha salido.
error.code |
Qué significa | Cómo se restablece el acceso |
|---|---|---|
credit_balance_exhausted |
Su organización no tiene créditos de prepago restantes. | Agregar créditos. |
organization_spend_limit_exceeded |
Tu organización ha alcanzado su límite de gasto mensual en todos los proyectos. | Aumente o quite el límite o espere al restablecimiento mensual. |
project_spend_limit_exceeded |
El proyecto ha alcanzado su límite de gasto mensual. Otros proyectos siguen funcionando. | Aumentar o quitar el límite del proyecto o esperar el restablecimiento mensual. |
organization_usage_limit_exceeded |
Su organización alcanzó el límite de uso mensual que OpenAI le asignó. Es independiente de los límites de gasto establecidos. | Solicite un límite aprobado superior o póngase en contacto con el soporte técnico de OpenAI. |
Compárelos con errores de "Se alcanzó el límite de frecuencia", como rate_limit_exceeded y slow_down. Son temporales, y volver a intentarlo tras una breve espera suele funcionar. Para obtener más información, consulte Errores de "límite de tasa alcanzado" de OpenAI.
Cómo gestionar los errores de cuota de OpenAI
- Lee
error.code, no solo el estado. Un429solo no le indica si debe reintentarlo o no. Considera los 4 códigos de la tabla como "detener", y los códigos de límite de frecuencia como "esperar y volver a intentarlo". - Deja de volver a intentarlo. No envíe la solicitud de nuevo y no deje que un bucle de reintento siga llamando a la API. Hasta que alguien corrija el problema de facturación, todas las solicitudes fallan de la misma forma.
- Pausa las llamadas que darían error. Un error de cuota significa que las siguientes solicitudes de la misma organización o proyecto también fallan. Omítelas en lugar de enviarlas una a una y esperar a que se produzca el error.
- Informe al usuario. Explique que la característica de inteligencia artificial no está disponible por ahora y mantenga el resto de la aplicación en funcionamiento.
- Avísate a ti mismo. Registre el código con una gravedad alta o avise a quien sea responsable de facturación. La solución está fuera de tu código, así que alguien tiene que saberlo.
El SDK de Python de OpenAI reintenta las 429 respuestas dos veces por defecto. Independientemente de lo que reintente, tu código acabará recibiendo RateLimitError el código de facturación, y ahí es donde debes detenerte:
import logging
import openai
from openai import OpenAI
client = OpenAI()
logger = logging.getLogger(__name__)
BILLING_CODES = {
"credit_balance_exhausted",
"organization_spend_limit_exceeded",
"project_spend_limit_exceeded",
"organization_usage_limit_exceeded",
}
billing_error: str | None = None
def ask(prompt: str) -> str:
global billing_error
if billing_error:
raise RuntimeError("AI features are paused until billing is fixed.")
try:
response = client.responses.create(model="gpt-4.1", input=prompt)
return response.output_text
except openai.RateLimitError as error:
if error.code in BILLING_CODES:
billing_error = error.code
logger.critical("OpenAI billing error: %s", error.code)
raise
La marca permanece establecida hasta que se reinicie la aplicación. Bórralo de otra forma si tu aplicación lleva mucho tiempo en funcionamiento, por ejemplo, mediante una acción de administración después de que alguien haya solucionado el problema de facturación.
Cómo probar que la aplicación controla los errores de cuota de OpenAI
Rara vez se ve un error de cuota durante el desarrollo. La cuenta de prueba tiene créditos y su uso es bajo. Por lo tanto, la forma en que pruebes la administración de cuotas determina si detectas los errores antes que tus usuarios.
| Approach | Lo que encuentras | Lo que te pierdes |
|---|---|---|
| A la espera de la producción | Errores reales | Todo sigue igual hasta que un usuario lo detecte, y la función de IA permanece inactiva hasta que alguien se dé cuenta. |
| Simula la API en tus pruebas o deja que tu agente de programación escriba la simulación | Si se ejecuta tu rama de parada | El cuerpo y los códigos de error reales de OpenAI y la directiva de reintento del SDK. La aplicación también necesita una opción solo para pruebas para llegar al mock. |
| Usa tus créditos reales o establece un límite de gasto diminuto | Comportamiento real | Cuesta dinero y bloquea todas las demás aplicaciones que comparten la organización o el proyecto. |
| Interceptar el tráfico real de la aplicación y devolver errores de cuota a petición | Direcciones URL reales, el SDK real y la directiva de reintento, y el propio formato de error de OpenAI | Nada en la aplicación cambia, por lo que no prueba el código de forma aislada. Mantenga las pruebas unitarias para eso. |
Pruébalo en tu app
Dev Proxy intercepta las solicitudes de la aplicación a api.openai.com y devuelve errores de OpenAI, mientras que la aplicación sigue llamando a las direcciones URL reales. El openai-throttling preajuste mezcla un credit_balance_exhausted error con los errores de límite de tasa. Devuelve 429 con tipo insufficient_quota y sin encabezado Retry-After, por lo que puedes comprobar que la aplicación se detiene en lugar de volver a intentarlo.
Descargue el preajuste e inicie Dev Proxy con él:
devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
Para probar solo los errores de cuota, edita el archivo openai-errors.json del preajuste y mantén solo la respuesta credit_balance_exhausted. Para probar los códigos de límite de gasto y de uso, añade respuestas con la misma estructura y un code diferente.
A continuación, ejecute la aplicación como de costumbre y observe lo que hace. Para instalar Dev Proxy, consulte Configurar Dev Proxy.