Para obtener información general sobre los errores HTTP y las excepciones del SDK, consulta la guía de códigos de error común a las API.
Cómo examinar un error
Si falla una solicitud, revisa la respuesta HTTP. Si la falla ocurre durante un turno o al configurar el entorno, revisa los eventos y el estado guardado.
| Falla | Dónde buscar |
|---|---|
| Solicitud a la API | Revisa el código de estado HTTP y el objeto error de la respuesta. |
| Turno | Cuando recibas agent.session.turn.failed, recupera el turno y revisa status y error. |
| Sesión | Cuando recibas agent.session.failed, recupera la sesión y revisa status y error. |
| Entorno | Revisa environment.error en agent.session.environment.failed. Consulta la guía para solucionar problemas del sandbox. |
Para los errores estructurados, usa error.code en la lógica de la aplicación y error.message para explicar la falla.
En los errores de validación de solicitudes, error.param puede indicar qué campo debes corregir.
Asegúrate de que el controlador de errores funcione incluso si recibe un código desconocido o si falta param.
En la API beta (OpenAI-Beta: agents=v1), el valor de error de una sesión es una cadena de texto con un mensaje o null. Consulta el evento SSE error asociado para obtener el código de la falla de sesión.
Errores de solicitud a la API
Estos errores se refieren a la solicitud enviada a la API de agentes. Se distinguen de los errores de turno, que se devuelven una vez iniciado el trabajo.
| Código | Descripción |
|---|---|
400: invalid_request_error |
Causa: un valor de entrada o de configuración no es válido o es demasiado grande. Solución: corrige el campo que indica error.param o error.message. Consulta Cómo corregir datos de entrada no válidos. |
400: invalid_beta |
Causa: el encabezado OpenAI-Beta contiene un valor no válido. Solución: verifica qué encabezado requiere la versión de la API que usas. |
400: agent_not_persisted |
Causa: el agent_id que proporcionaste pertenece a un agente que solo existe dentro de una sesión. Solución: crea un agente guardado y usa su ID. |
400: invalid_otlp_endpoint, invalid_otlp_header |
Causa: el punto de acceso o los encabezados de seguimiento no son válidos. Solución: corrige la configuración de seguimiento. |
401: unauthorized; 403: forbidden |
Causa: falló la autenticación o quien realizó la solicitud no tiene acceso. Solución: consulta la guía general de autenticación y permisos. |
404: not_found_error, model_not_found |
Causa: el recurso o el modelo no está disponible para esta solicitud. Solución: verifica el ID, el modelo y el proyecto, y comprueba si se eliminó el recurso. |
409: conflict_error |
Causa: la operación es incompatible con el estado actual del recurso. Solución: lee el mensaje y recupera el estado actual antes de volver a intentarlo. |
409: executor_version_incompatible |
Causa: la versión del ejecutor no es compatible. Solución: actualiza el ejecutor y vuelve a intentarlo. |
424: mcp_server_startup_failed |
Causa: un servidor MCP no pudo iniciarse. Solución: revisa la configuración y las credenciales del servidor. Consulta Cómo solucionar problemas de conexión. |
429: files_api_rate_limit_exceeded |
Causa: las solicitudes de archivos superaron el límite de solicitudes de la API de archivos para tu usuario. Solución: reduce la cantidad de solicitudes simultáneas y sigue las indicaciones sobre los límites de solicitudes de la API de archivos. |
500: internal_error |
Causa: se produjo un error inesperado en el servicio. Solución: revisa el trabajo guardado antes de volver a intentarlo. Consulta la guía general sobre errores del servidor. |
503: service_unavailable_error, server_is_overloaded |
Causa: el servicio o una de sus dependencias presenta una interrupción temporal o una sobrecarga. Solución: sigue las indicaciones generales para el error 503 y revisa el trabajo guardado antes de volver a intentarlo. |
Límites de solicitudes de la API de archivos
Las solicitudes para crear sesiones o adjuntar archivos pueden devolver el código HTTP 429 con files_api_rate_limit_exceeded. La API de agentes verifica los archivos a través de la API de archivos. Estas verificaciones consumen parte de la cuota del usuario autenticado en la API de archivos. Cada archivo adjunto puede requerir una verificación por separado.
{
"error": {
"type": "rate_limit_error",
"code": "files_api_rate_limit_exceeded",
"message": "The Files API rate limit for your user has been exceeded. Reduce the rate of requests that access files, then try again.",
"param": null
}
}Reduce la cantidad de solicitudes simultáneas que acceden a los archivos. Limita el número de intentos y aumenta de forma exponencial el tiempo de espera entre ellos. Si vuelves a intentarlo de inmediato, puedes seguir agotando la cuota.
Esta respuesta HTTP indica que la operación falló. Es un caso distinto al de una sesión o un turno que falla de forma asíncrona después de que la respuesta confirma su creación. Para identificar este error, revisa error.code en lugar de comparar el texto del mensaje.
Errores de turno
Un turno que falló tiene status: "failed" y un objeto error con los campos code y message. Por ejemplo, si el modelo está sobrecargado, puedes recibir lo siguiente:
{
"code": "server_overloaded",
"message": "The model is temporarily overloaded. Please retry your request after a brief delay."
}Los códigos de error de turno no tienen un código de estado HTTP propio. Por ejemplo, un turno que falló usa server_overloaded, mientras que una respuesta HTTP puede usar server_is_overloaded.
| Código | Descripción |
|---|---|
invalid_request |
Causa: los datos de entrada o la configuración no son válidos. Solución: corrige los datos de entrada que indica el mensaje antes de volver a intentarlo. |
context_length_exceeded |
Causa: los datos de entrada superan la ventana de contexto del modelo. Solución: reduce los datos de entrada. Si la conversación es demasiado larga, inicia una nueva sesión con un resumen más breve. |
session_budget_exceeded |
Causa: la sesión alcanzó su presupuesto de uso. Solución: inicia una nueva sesión para continuar. |
credit_balance_exhausted |
Causa: la organización agotó sus créditos de la API. Solución: consulta las indicaciones sobre el saldo de créditos. |
project_spend_limit_exceeded |
Causa: el proyecto alcanzó el límite de gasto que se le aplica. Solución: consulta las indicaciones sobre el límite de gasto del proyecto. |
organization_spend_limit_exceeded |
Causa: la organización alcanzó el límite de gasto que se le aplica. Solución: consulta las indicaciones sobre el límite de gasto de la organización. |
organization_usage_limit_exceeded |
Causa: la organización alcanzó el límite de uso que le asignó OpenAI. Solución: consulta las indicaciones sobre el límite de uso de la organización. |
usage_limit_exceeded |
Causa: se alcanzó un límite de facturación o de uso sin que se indicara un código más específico. Solución: sigue las indicaciones generales sobre errores de facturación. |
rate_limit_exceeded |
Causa: se superó uno de los límites de solicitudes aplicables. Solución: sigue los pasos para volver a intentarlo. |
server_overloaded |
Causa: el servicio del modelo está sobrecargado temporalmente. Solución: espera un poco y retoma el trabajo pendiente. Si la sobrecarga persiste, cambia el modelo para los siguientes turnos. |
flex_unavailable |
Causa: el procesamiento Flex no está disponible temporalmente. Solución: vuelve a intentarlo más tarde o cambia el nivel de servicio de la sesión al procesamiento estándar ( default) para los siguientes turnos. |
connection_failed, request_timeout, server_error, internal_error |
Causa: una falla de conexión o del servicio, o el vencimiento del tiempo de espera, impidió que se completara el turno. Solución: revisa el trabajo guardado y luego vuelve a intentarlo con un límite de intentos. |
authentication_error |
Causa: no se pudo acceder al modelo debido a un problema de credenciales o permisos. Solución: consulta la guía general de autenticación y permisos. |
resource_not_found |
Causa: el modelo o recurso solicitado no está disponible. Solución: verifica el modelo y revisa la configuración de la sesión antes de volver a intentarlo. |
sandbox_error |
Causa: el entorno no pudo completar una operación. Solución: revisa el error del entorno y corrige el problema de configuración o conectividad. |
executor_version_incompatible |
Causa: el ejecutor no puede ejecutar este turno. Solución: actualiza el ejecutor y vuelve a intentarlo en la misma sesión si esta no ha fallado. |
active_turn_not_steerable |
Causa: el turno activo no admite más datos de entrada. Solución: espera a que termine antes de enviar otro mensaje. |
cyber_policy, misalignment_policy_violation |
Causa: los sistemas de seguridad bloquearon la solicitud. Solución: verifica que la solicitud cumpla con los requisitos de seguridad aplicables antes de enviar los datos de entrada corregidos. |
Errores de sesión y de entorno
Que un turno falle no siempre significa que la sesión haya fallado. Recupera la sesión para determinar si puedes continuar en ella. Si el valor de status es requires_action, atiende las acciones requeridas.
Si la sesión falló, corrige la causa y crea una nueva sesión con los datos de entrada que aún necesites.
| Código | Descripción |
|---|---|
environment_connection_failed, environment_connection_timeout |
Causa: el sandbox no pudo conectarse o tardó demasiado en hacerlo. Solución: revisa el inicio del ejecutor y el acceso a la red. Si alojas el entorno en tu propia infraestructura, revisa la configuración de la conexión. |
sandbox_error |
Causa: falló la configuración o la ejecución del sandbox. Solución: revisa los comandos de configuración, los paquetes, los archivos de entrada y el error del entorno. |
executor_version_incompatible |
Causa: la versión del ejecutor de la sesión no es compatible. Solución: actualiza el ejecutor antes de crear una nueva sesión. |
idle_timeout |
Causa: el entorno alojado caducó por inactividad. Solución: crea una nueva sesión y vuelve a proporcionar los datos de entrada. |
internal_error |
Causa: una falla interna impidió que la sesión o el entorno quedara listo para usarse. Solución: espera un poco y vuelve a intentar la configuración. Si sigue fallando, ponte en contacto con el equipo de soporte. |
Recuperación
Cómo volver a intentarlo tras una falla temporal
Usa este procedimiento cuando se alcance un límite de solicitudes, haya una sobrecarga, se agote el tiempo de espera o se produzca una falla temporal del servicio. Si hay problemas con los datos de entrada, las credenciales o los límites de facturación, resuélvelos antes de volver a intentarlo.
- Verifica el resultado. Si se creó una sesión, recupera la sesión, el turno y los elementos guardados. Si el turno sigue activo, continúa observando su progreso. Si se completó, usa su resultado.
- Revisa las acciones completadas. Es posible que un turno que falló ya haya modificado archivos o llamado a herramientas externas. Verifica los efectos de esas acciones antes de pedirle al agente que repita el trabajo.
- Espera y limita los reintentos. Sigue las indicaciones generales para los reintentos, respeta el tiempo indicado por
Retry-Afteren las respuestas HTTP y establece un límite de intentos o un plazo máximo. - Repite la solicitud o inicia un nuevo turno. Si recibes un error HTTP, verifica el resultado de la operación original y luego vuelve a intentarla. Si un turno falló, espera a que la sesión esté en estado
idley luego envía un mensaje de seguimiento en el que le pidas al agente que continúe solo con el trabajo pendiente. Así se inicia un nuevo turno en la conversación existente.
Revisa los resultados de las herramientas incluso cuando el turno se complete. Detén los reintentos automáticos si cambia el error o si se alcanza el límite de reintentos.
Cómo corregir datos de entrada no válidos
Corrige el campo que indica error.param o error.message antes de volver a enviar la solicitud.
Si el error se debe al tamaño, reduce el esquema de entrada y salida o el resultado de la herramienta antes de volver a intentarlo. Si la configuración del agente es demasiado grande, crea una nueva sesión con instrucciones y definiciones de herramientas más breves.
Para conocer los requisitos de carga y ver ejemplos, consulta Cómo resolver errores de carga. Si el mensaje indica que hay un problema con una imagen, revisa los datos o la URL de la imagen.
Flujos de eventos desconectados
Ni un evento error ni la desconexión del flujo de eventos confirman el estado final del turno.
Sigue los pasos de Cómo recuperar un flujo de eventos desconectado para volver a conectarte y revisar el trabajo guardado antes de reenviar los datos de entrada.
Si la sesión recuperada tiene status: "failed" o recibes agent.session.failed, deja de intentar reconectarte y sigue las indicaciones para recuperarte de una falla de sesión.
Si se producen errores persistentes, incluye el ID de la solicitud, el ID de la sesión y el ID del turno en tu solicitud de soporte.