Nuestra API limita la cantidad de veces que un usuario o cliente puede acceder a nuestros servicios durante un período determinado.
¿Por qué aplicamos límites de solicitudes?
Los límites de solicitudes son habituales en las API y se aplican por varios motivos:
- Ayudan a proteger la API contra el abuso o el uso indebido. Por ejemplo, alguien podría enviar una avalancha de solicitudes para intentar sobrecargar la API o interrumpir el servicio. Con los límites de solicitudes, OpenAI puede prevenir este tipo de actividad.
- Los límites de solicitudes ayudan a garantizar un acceso equitativo a la API. Si una persona u organización envía demasiadas solicitudes, la API podría responder con lentitud a los demás. Al limitar la cantidad de solicitudes que puede enviar cada usuario, OpenAI permite que la mayor cantidad posible de personas pueda usar la API sin demoras.
- Los límites de solicitudes pueden ayudar a OpenAI a gestionar la carga total de su infraestructura. Si la cantidad de solicitudes a la API aumenta de forma drástica, los servidores podrían sobrecargarse y su rendimiento podría verse afectado. Al establecer límites de solicitudes, OpenAI ayuda a que el servicio funcione de manera fluida y estable para todos los usuarios.
Lee el documento completo para entender mejor cómo funciona el sistema de límites de solicitudes de OpenAI. Incluimos ejemplos de código y posibles soluciones a problemas comunes. En la sección sobre niveles de uso también explicamos cómo aumentan automáticamente tus límites de solicitudes.
¿Cómo funcionan estos límites de solicitudes?
Los límites de solicitudes se basan en métricas como RPM (solicitudes por minuto), RPD (solicitudes por día), TPM (tokens por minuto), TPD (tokens por día), IPM (imágenes por minuto) y, para algunos modelos de audio en streaming, minutos de audio por minuto. Se aplica el primer límite que alcances. Por ejemplo, si tu límite es de 20 RPM y envías 20 solicitudes con apenas 100 tokens al punto de acceso ChatCompletions en un minuto, alcanzas el límite de solicitudes por minuto aunque no hayas enviado los 150 000 tokens que te permitiría un límite de 150 000 TPM.
Los límites de la cola de la API Batch se calculan a partir del total de tokens de entrada en cola para cada modelo. Los tokens de los trabajos por lotes pendientes cuentan para el límite de la cola. Cuando finaliza un trabajo, sus tokens dejan de contar para el límite de ese modelo.
Ten en cuenta lo siguiente:
- Los límites de solicitudes se definen por organización y por proyecto, no por usuario.
- Los límites de solicitudes varían según el modelo que uses.
- En los modelos de contexto largo, como GPT-5.5, las solicitudes de contexto largo tienen un límite aparte. Puedes consultar estos límites de solicitudes en la consola para desarrolladores.
- OpenAI establece un límite de uso mensual aprobado para cada organización. Este límite es independiente de los límites de gasto que puedes configurar para una organización o un proyecto.
- Algunas familias de modelos comparten límites de solicitudes. Los modelos que aparecen bajo un mismo “límite compartido” en la página de límites de tu organización comparten ese límite. Por ejemplo, si el límite compartido es de 3,5 millones de TPM, los tokens de todas las llamadas a cualquiera de los modelos de esa lista cuentan para ese mismo total.
- La ingesta de datos en almacenes de vectores también está sujeta a un límite de solicitudes por ID de almacén.
/vector_stores/{vector_store_id}/filesy/vector_stores/{vector_store_id}/file_batchescomparten un límite de 300 solicitudes por minuto para cada almacén de vectores. Para cargar volúmenes de datos más grandes, usa preferentemente/vector_stores/{vector_store_id}/file_batches.
Niveles de uso
Los tres niveles de uso de pago son Build, Launch y Grow. Tu organización sube de nivel automáticamente cuando el importe total de sus compras de créditos alcanza el umbral correspondiente. Por lo general, los niveles superiores ofrecen límites de solicitudes más altos para los distintos modelos.
Los niveles de uso indican qué límites de solicitudes se aplican. Que un modelo figure en la lista de límites no garantiza que puedas usarlo con tu organización, tu proyecto o tu clave de API. Si un modelo no aparece, comprueba su disponibilidad.
| Nivel | Requisito | Límite de uso |
|---|---|---|
| Gratuito | El usuario debe estar en un país o territorio admitido | $100 al mes |
| Build | $5 en compras acumuladas de créditos | $500 al mes |
| Launch | $100 en compras acumuladas de créditos | $5000 al mes |
| Grow | $500 en compras acumuladas de créditos | $200 000 al mes |
Límites de solicitudes del modo estándar
Para consultar los límites de cada modelo en tu nivel de uso, ve a Configuración > Organización > Límites y revisa Límites de solicitudes. Para subir de nivel, selecciona Subir de nivel en la sección Niveles de uso.
Los límites de solicitudes del modo estándar son distintos de los límites de solicitudes del modo ultrarrápido.
| Nivel | Modelo | RPM | TPM |
|---|---|---|---|
| Build | Astra, Sol, Terra | 5000 | 1 000 000 |
| Luna | 5000 | 2 000 000 | |
| Launch | Astra, Sol, Terra | 10 000 | 4 000 000 |
| Luna | 10 000 | 10 000 000 | |
| Grow | Astra, Sol, Terra | 15 000 | 40 000 000 |
| Luna | 30 000 | 180 000 000 |
Límites de gasto
Considera establecer límites de gasto para tu organización o tus proyectos a fin de controlar el gasto mensual en la API. Estos controles son independientes de los límites de uso mensuales indicados arriba.
| Control | Qué ocurre al alcanzar el importe configurado | Cuándo usarlo |
|---|---|---|
| Alerta de gasto | Se envía una notificación y el tráfico de la API continúa | Para monitorear el gasto sin interrumpir el tráfico |
| Límite estricto de gasto | Las solicitudes afectadas reciben un error 429 de la API |
Para aplicar un tope mensual a una organización o un proyecto |
Límites de solicitudes en los encabezados
Además de consultar tu límite de solicitudes en la página de tu cuenta, puedes ver en los encabezados de la respuesta HTTP cuántas solicitudes y tokens te quedan, junto con otros metadatos sobre tus límites.
Las respuestas pueden incluir los siguientes campos de encabezado:
| Campo | Valor de ejemplo | Descripción |
|---|---|---|
| Retry-After | 56 | Si está presente, indica cuántos segundos debes esperar como mínimo antes de reintentar una solicitud tras un error temporal de límite de solicitudes. |
| x-ratelimit-limit-requests | 60 | Cantidad máxima de solicitudes que puedes enviar antes de agotar el límite. |
| x-ratelimit-limit-tokens | 150000 | Cantidad máxima de tokens que puedes usar antes de agotar el límite. |
| x-ratelimit-remaining-requests | 59 | Cantidad de solicitudes que aún puedes enviar antes de agotar el límite. |
| x-ratelimit-remaining-tokens | 149984 | Cantidad de tokens que aún puedes usar antes de agotar el límite. |
| x-ratelimit-reset-requests | 1s | Tiempo que falta para que el límite basado en solicitudes vuelva a su valor inicial. |
| x-ratelimit-reset-tokens | 6m0s | Tiempo que falta para que el límite basado en tokens vuelva a su valor inicial. |
| x-ratelimit-limit-project-tokens | 60000 | Límite de tokens del proyecto. |
| x-ratelimit-remaining-project-tokens | 57000 | Cantidad de tokens que aún puedes usar antes de agotar el límite de tokens del proyecto. |
| x-ratelimit-reset-project-tokens | 3s | Tiempo que falta para que el límite de tokens del proyecto vuelva a su valor inicial. |
Los encabezados de tokens del proyecto pueden aparecer cuando se aplica un límite de tokens a ese proyecto. Retry-After puede aparecer en respuestas 429 debidas a un límite de solicitudes temporal y en respuestas 503 debidas a una sobrecarga temporal del modelo. Su presencia no implica que puedas resolver con un reintento los errores de cuota, de facturación u otros que requieran que tomes medidas.
Límites de solicitudes de ajuste fino
También puedes consultar en el panel los límites de solicitudes de ajuste fino de tu organización u obtenerlos a través de la API:
curl https://api.openai.com/v1/fine_tuning/model_limits \
-H "Authorization: Bearer $OPENAI_API_KEY"Disponibilidad de los modelos
El acceso a los modelos es independiente de los límites de solicitudes. Alcanzar el umbral de un nivel de uso no te da acceso a todos los modelos. Si un modelo que figura en la documentación no aparece en Playground o en la respuesta de GET /v1/models, o si una solicitud devuelve model_not_found, sigue estos pasos:
- Verifica el ID del modelo y el punto de acceso. Usa el ID exacto que aparece en la documentación del modelo, confirma que el modelo sea compatible con el punto de acceso que usas y revisa si hay avisos sobre su retiro o disponibilidad.
- Compara la organización, el proyecto y las credenciales. En Playground, selecciona la organización y el proyecto que quieres usar. Llama a Listar modelos con la misma clave de API que usaste en la solicitud fallida. Si esa solicitud incluía los encabezados
OpenAI-OrganizationuOpenAI-Project, envía los mismos valores. Aunque veas un modelo en tu sesión del panel, es posible que no puedas acceder a él con otra clave de API. - Revisa las restricciones del proyecto y los requisitos del modelo. Pide a alguien que tenga permisos para administrar el proyecto que revise los permisos de acceso a los modelos y la configuración de retención de datos del proyecto. Cumple los requisitos de acceso específicos del modelo y consulta en su documentación los avisos sobre su implementación gradual. Si el modelo no aparece, ese dato por sí solo no basta para determinar la causa.
- Actualiza la lista y vuelve a comprobar la disponibilidad. Después de cambiar la configuración de acceso, actualiza la lista de modelos o vuelve a cargar Playground. Si el modelo sigue sin estar disponible, comunícate con el equipo de soporte e indica el ID del modelo, los ID de la organización y del proyecto, la hora de la solicitud, el mensaje de error y, si está disponible, el valor del encabezado de respuesta
x-request-id. No compartas tu clave de API.
Mitigación de errores
Cómo manejar los aumentos rápidos de tráfico y la sobrecarga del modelo
La API puede devolver slow_down si la frecuencia de tus solicitudes aumenta demasiado rápido o server_is_overloaded si el modelo solicitado está sobrecargado temporalmente. Para distinguir ambos casos, revisa el código de estado HTTP y error.code:
| Estado HTTP | Tipo de error | Código de error | Qué significa | Qué hacer |
|---|---|---|---|---|
429 |
rate_limit_error |
slow_down |
La frecuencia de tus solicitudes aumentó demasiado rápido. | Respeta el tiempo indicado en Retry-After si está presente, reduce la frecuencia de tus solicitudes y luego auméntala gradualmente. |
503 |
service_unavailable_error |
server_is_overloaded |
El modelo solicitado está sobrecargado temporalmente. | Espera el tiempo indicado en Retry-After si está presente y vuelve a intentarlo. Si el error persiste, aumenta la espera entre reintentos. |
Si la respuesta no incluye Retry-After, aumenta la espera entre reintentos y añade una pequeña demora aleatoria.
Puedes recibir un error slow_down aunque tu tráfico se mantenga dentro de los límites de solicitudes por minuto y de tokens por minuto. El error indica que el tráfico aumentó demasiado rápido, independientemente de si agotaste esos límites.
Como regla general, una vez que tu tráfico alcance 1 millón de tokens de entrada por minuto (TPM), auméntalo como máximo un 50 % cada 15 minutos. El punto exacto a partir del cual se limita la velocidad de aumento del tráfico puede variar según el modelo y las condiciones del tráfico.
Los clientes empresariales cuyo tráfico de pago por uso alcanza con frecuencia los límites de aumento de tráfico pueden considerar el Nivel de capacidad para disponer de una capacidad más predecible en los modelos admitidos. Para GPT-5.6 y modelos posteriores, consulta el Nivel reservado. En cualquier nivel de capacidad, maneja las respuestas slow_down de la misma manera: respeta el tiempo indicado en Retry-After si está presente, reduce el tráfico y vuelve a aumentarlo gradualmente.
Actualiza los manejadores de errores existentes
Si tu aplicación ya manejaba las respuestas anteriores de limitación de tráfico y sobrecarga, revisa tanto el estado HTTP como error.code:
- En los puntos de acceso que antes devolvían
503con el códigoslow_downen ambos casos, los aumentos rápidos de tráfico ahora devuelven429conslow_down. La sobrecarga del modelo sigue devolviendo503, pero ahora usaserver_is_overloaded. - Antes, las solicitudes de video rechazadas por alguno de estos motivos antes de que se creara el trabajo devolvían
429con el tipoinvalid_request_errory el códigorate_limit_exceeded. Ahora, los aumentos rápidos de tráfico devuelven429conrate_limit_erroryslow_down. La sobrecarga del modelo devuelve503conservice_unavailable_erroryserver_is_overloaded. Los errores que aparecen en el estado de un trabajo de video se manejan por separado.
Contempla tanto 429 como 503 en los manejadores de errores de tu SDK. Por ejemplo, los SDK de Python, TypeScript y Ruby usan RateLimitError para 429 e InternalServerError para 503. El SDK de Java usa RateLimitException e InternalServerException. Mantén la compatibilidad con los códigos de respuesta anteriores mientras tu aplicación aún pueda recibirlos. Otros errores pueden usar los mismos estados HTTP, así que revisa el cuerpo del error antes de decidir cómo recuperarte.
En las solicitudes de streaming, estas respuestas de error HTTP se aplican antes de que comience la transmisión. Una vez iniciada, puedes recibir un error como evento de la transmisión. Si ya consumiste parte de la salida, no vuelvas a enviar la solicitud automáticamente.
¿Qué medidas puedo tomar para mitigar estos errores?
El OpenAI Cookbook incluye un notebook de Python que explica cómo evitar errores por límites de solicitudes, además de un script de ejemplo en Python para procesar solicitudes a la API por lotes sin exceder esos límites.
Ten cuidado al ofrecer acceso programático, funciones de procesamiento masivo o publicación automatizada en redes sociales. Considera habilitar estas funciones solo para clientes de confianza.
Para evitar el uso indebido automatizado y a gran escala, establece un límite de uso por usuario para un período determinado (diario, semanal o mensual). Considera aplicar un tope estricto o implementar un proceso de revisión manual para quienes excedan el límite.
Reintentos con espera exponencial
Cuando una solicitud supera un límite de solicitudes temporal, la API devuelve un error 429. La respuesta puede incluir un encabezado Retry-After que indica cuántos segundos debes esperar antes de volver a intentarlo. Toma ese valor como mínimo: espera al menos ese tiempo y añade una pequeña demora aleatoria para que varios clientes no reintenten al mismo tiempo.
Cada SDK oficial de OpenAI reintenta automáticamente las solicitudes que reciben respuestas 429 y 503 cuando cumplen las condiciones de reintento, según la configuración del SDK. El manejo de Retry-After, en especial cuando indica esperas largas, varía según la versión y la configuración del SDK. Comprueba cómo maneja los reintentos la versión que tienes instalada antes de asumir que admite cualquier tiempo de espera indicado por el servidor.
Si el servidor indica un tiempo de espera válido que supera el máximo admitido o configurado para los reintentos, detén los reintentos y pospón la solicitud. Si el SDK rechaza un tiempo de espera superior a su límite, puede devolver el error HTTP original. Sigue manejando por separado los errores de cancelación y de tiempo de espera: si se cancela la solicitud o vence el plazo, los reintentos pueden detenerse sin devolver ese error HTTP. El tiempo de espera máximo de cada intento no necesariamente limita la duración de toda la operación.
Si usas tu propio cliente HTTP, respeta el tiempo indicado en Retry-After cuando el encabezado esté presente y contenga un valor válido. Si falta o no es válido, usa una espera exponencial con una pequeña variación aleatoria. Limita tanto la cantidad de intentos como el tiempo total dedicado a reintentar. Si gestionas los reintentos en tu aplicación, desactiva los del SDK o inclúyelos en esos límites para que los bucles de reintentos anidados no multipliquen las solicitudes. No reintentes solicitudes que fallaron por errores de cuota, de facturación u otros que requieran que tomes medidas.
La espera exponencial consiste en esperar brevemente después de una solicitud fallida y aumentar el tiempo de espera después de cada reintento fallido. El proceso continúa hasta que la solicitud tenga éxito o se alcance el límite de reintentos configurado.
Este enfoque tiene varias ventajas:
- Los reintentos automáticos permiten recuperarse de los errores por límites de solicitudes sin que la aplicación deje de funcionar ni se pierdan datos.
- Con la espera exponencial puedes hacer los primeros reintentos rápidamente y, si fallan, esperar más tiempo entre los siguientes.
- Añadir una variación aleatoria al tiempo de espera ayuda a evitar que todos los reintentos ocurran al mismo tiempo.
Ten en cuenta que las solicitudes fallidas cuentan para tu límite por minuto, por lo que reenviar una solicitud continuamente no resolverá el problema.
Los siguientes ejemplos muestran cómo reintentar una solicitud que usa gpt-6-luna en la API Responses. Cada función que envuelve la llamada limita la cantidad de intentos y desactiva los reintentos automáticos del SDK.
Los siguientes ejemplos en Python muestran cómo aplicar una espera exponencial cuando no hay indicaciones válidas del servidor. No comprueban Retry-After. Antes de usarlos, incorpora el manejo de los tiempos de espera válidos que indique el servidor para que las funciones que envuelven las llamadas no reintenten antes de tiempo. Desactiva los reintentos del SDK o inclúyelos en los límites de reintentos de tu aplicación.
Reduce max_tokens para ajustarlo al tamaño de tus respuestas
Para calcular tu límite de solicitudes, se toma el mayor de dos valores: max_tokens y la cantidad estimada de tokens según el número de caracteres de tu solicitud. Procura que el valor de max_tokens se acerque lo más posible al tamaño de la respuesta que esperas.
Agrupación de solicitudes por lotes
Si tu caso de uso no requiere respuestas inmediatas, puedes usar la API Batch para enviar y ejecutar grandes lotes de solicitudes sin afectar tus límites de solicitudes síncronas.
Para los casos de uso que sí requieren respuestas síncronas, la API de OpenAI tiene límites independientes de solicitudes por minuto y de tokens por minuto.
Si alcanzas el límite de solicitudes por minuto, pero aún tienes capacidad disponible en tokens por minuto, puedes mejorar el rendimiento agrupando varias tareas en cada solicitud. Así podrás procesar más tokens por minuto, especialmente con nuestros modelos más pequeños.
Enviar un lote de prompts funciona igual que hacer una llamada normal a la API, con la diferencia de que pasas una lista de cadenas al parámetro prompt en lugar de una sola cadena. Consulta la guía de la API Batch para obtener más información.