Ir al contenido
Toda la documentación

Referencia

Errores

Los errores llegan con la forma de OpenAI, con un code estable por el que puedes filtrar y un message escrito para personas. Una llamada rechazada o fallida no cuesta nada.

Revisado el 26 de octubre de 2026

La forma

Response
{
  "error": {
    "type": "rate_limit_error",
    "code": "daily_cap",
    "message": "This call needs up to $0.02 and the key has $0.01 left of its $2.00 daily cap, which resets at 00:00 UTC. …"
  }
}

Filtra por code, no por message: los mensajes pueden cambiar de redacción, los códigos se mantienen. type sigue el de OpenAI, así que los SDK lanzan la excepción que esperas.

Todos los códigos

EstadoCódigoCuándoSolución
401missing_keyNo se envió ninguna clave.Envíala como Authorization: Bearer sk-nokeep-…. Crea una en la consola, o prueba primero sk-nokeep-test.
401invalid_keyLa clave es incorrecta o fue revocada.Vuelve a copiar la clave de donde la guardaste; la consola solo muestra sus últimos cuatro caracteres. Si la perdiste, crea una nueva.
403account_frozenLas funciones de pago están pausadas en la cuenta a la que pertenece la clave.Escríbenos desde la página de contacto.
429rate_limitedLa clave envió más de 120 solicitudes en un minuto (20 para la clave de prueba, por dirección).Espera los segundos que indica Retry-After y vuelve a intentarlo.
429daily_capLa llamada podría superar el tope diario de la clave.Sube el tope en la consola, baja max_tokens o espera a las 00:00 UTC (Retry-After dice cuánto falta).
402insufficient_creditsLos créditos comprados de la cuenta no alcanzan para esta llamada.Recarga desde $5 en la consola, o baja max_tokens. Los créditos de un plan se quedan en la app.
400invalid_jsonEl cuerpo no es un objeto JSON.Envía Content-Type: application/json y un objeto JSON.
413too_largeLa solicitud pesa más de 12 MB.Envía las imágenes como enlaces en vez de data URLs, o envía menos a la vez.
404model_not_foundEl id del modelo no es uno de los nuestros.GET /v1/models lista los ids. Revisa si hay un error de escritura o si falta -uncensored.
400invalid_messagesmessages falta o está vacío, es demasiado largo, tiene un rol desconocido, o un mensaje de herramienta no tiene tool_call_id.Envía de 1 a 2000 mensajes, cada uno con rol system, developer, user, assistant o tool.
400unsupported_nn es mayor que 1.Envía una solicitud por cada respuesta que quieras.
400invalid_reasoning_effortEl modelo no acepta ese reasoning_effort.DeepSeek acepta none, low, high o max. GLM acepta low o high.
400unsupported_tool_choiceGLM recibió una función con nombre o "required" como tool_choice.Envía auto o none a GLM; elige sus propias herramientas. DeepSeek acepta todas las formas.
400unsupported_inputUna parte del contenido es de un tipo que el modelo no puede leer.Envía las imágenes a DeepSeek; GLM solo lee texto.
400too_many_imagesMás de diez imágenes en una solicitud.Envía diez como máximo.
422hard_limitLa solicitud cruza uno de los límites duros de los términos.No se cobró nada. Quita el mensaje del historial que reenvías, o la siguiente llamada también se detendrá.
400rejectedEl modelo no pudo aceptar la solicitud tal como se envió.Compara los parámetros con la lista del modelo en Modelos. No se cobró nada.
503busyEl modelo está ocupado.Reintenta tras los segundos de Retry-After. No se cobró nada.
503model_unavailableEl modelo está fuera de línea de nuestro lado.Usa el otro modelo por ahora; la página de estado muestra cuándo vuelve.
502upstream_errorEl modelo falló antes de escribir una palabra.Reintenta en un momento. No se cobró nada.
404not_foundLa ruta no existe.La API sirve GET /v1/models, GET /v1/models/{id}, GET /v1/status y POST /v1/chat/completions.
404api_closedLa API está apagada.Vuelve a intentarlo más tarde.
En un streamCódigoCuándoSolución
—stream_cutEl modelo se detuvo antes de terminar, a mitad del stream.Se cobra lo que escribió, nada más. Reintenta para obtener el resto, o continúa desde lo que llegó.

Cuáles reintentar

  • Reintenta 429 rate_limited, 503 busy y 502 upstream_error, después de los segundos de Retry-After cuando los haya.
  • No reintentes los 400, 401, 402, 404 ni 422: la misma petición recibe la misma respuesta.
  • Un 429 daily_cap espera a las 00:00 UTC. Sube el límite en su lugar.