Saltar al contenido principal

Códigos de error

Cuando algo se rechaza, el motivo llega como un código corto legible por máquina. La consola convierte la mayoría en una notificación emergente en el idioma de su consola; un código que todavía no conoce muestra el mensaje propio de la API, que está en inglés. La API los devuelve como JSON.

{
"detail": {
"code": "OFFER_UNAVAILABLE",
"message": "This offer is no longer available"
}
}

Algunos códigos llevan campos adicionales junto a code y message: DISK_TOO_LARGE devuelve max_disk_gb y MACHINE_DISK_EXHAUSTED devuelve available_disk_gb, de modo que un cliente puede limitar el control deslizante y reintentar sin una segunda ida y vuelta.

Esos dos no son intercambiables, y limitar al equivocado produce un bucle infinito. max_disk_gb es el disco total de la máquina; available_disk_gb es lo que queda después de los demás inquilinos y de una reserva de 50 GB para el anfitrión. Por eso una máquina puede pasar DISK_TOO_LARGE y aun así responder MACHINE_DISK_EXHAUSTED — incluso una vacía, porque la reserva nunca se vende. Limite a available_disk_gb cuando lo reciba.

Autenticación y alcance de la organización​

EstadoCódigoCausaQué hacer
401TOKEN_INVALIDFalta el encabezado Authorization, el token está mal formado, la clave de API es desconocida o fue revocada, o se envió una clave de API a un endpoint de cuentaEnvíe un token bearer válido. Los endpoints de cuenta como /v1/me y /v1/ssh-keys necesitan una sesión iniciada, no una clave shk_
401TOKEN_EXPIREDEl token de sesión pasó su fecha de expiraciónInicie sesión de nuevo. Para scripts desatendidos, use una clave de API en su lugar
403NOT_A_MEMBERX-Org-Id nombra una organización a la que usted no perteneceQuite el encabezado para usar su organización personal, o pida una invitación a un administrador
403ORG_MISMATCHX-Org-Id no coincide con la organización en la que se creó la clave de APIQuite el encabezado, o use una clave que pertenezca a esa organización
403ADMIN_REQUIREDUna acción reservada a administradores —el pago, las invitaciones, la gestión de miembros, las claves de API del equipo— intentada como miembro o con una clave de APIPídaselo a un administrador, o repita la acción desde una sesión iniciada de administrador
400INVALID_ORG_IDX-Org-Id no es un id válidoCopie el id de GET /v1/orgs
403MFA_REQUIREDSu cuenta tiene inscrita la verificación en dos pasos, y el token de sesión no ha completado el segundo pasoVuelva a iniciar sesión e introduzca el código de su aplicación de autenticación. La consola lo lleva a ese paso por sí misma. Las claves de API no se ven afectadas
503AUTH_UNAVAILABLELa API no puede comprobar su inicio de sesión en este momento: no pudo leer las claves de firma o el estado de la verificación en dos pasosReintente en breve. Su sesión sigue siendo válida

Límites en cada solicitud​

EstadoCódigoCausaQué hacer
429RATE_LIMITEDDemasiadas solicitudes de un mismo llamante: un usuario con sesión iniciada, una clave de API o, para las solicitudes anónimas, una dirección IP. Cada solicitud a /v1 cuenta para un máximo de 600 por minuto; POST, PUT, PATCH y DELETE cuentan además para 60 por minuto. Una dirección IP cuyas solicitudes se rechazan como no autenticadas más de 60 veces por minuto también recibe este código, para cada credencial suya que todavía no haya funcionadoEspere los segundos del encabezado Retry-After (también retry_after_s en el cuerpo) y luego reintente. /v1/health nunca se limita
413PAYLOAD_TOO_LARGEEl cuerpo de la solicitud es mayor de lo que acepta el endpoint: 1 MiB en la mayoría de los endpoints, 4 MiB bajo /v1/templates. La respuesta incluye limit_bytesEnvíe un cuerpo más pequeño. El readme y el script de inicio de una plantilla tienen sus propios topes, muy por debajo de eso

Despliegue​

EstadoCódigoCausaQué hacer
402INSUFFICIENT_BALANCESu saldo no cubre una hora del consumo de la organización con esta instancia en marcha —su GPU y su disco, más la GPU y el disco de las instancias en ejecución, iniciándose o en creación y el disco de las detenidas— cuando la despliega o la inicia. Estar por encima de cero no basta. La respuesta incluye balance_micro y required_microAgregue créditos. Solo un administrador puede recargar
409OFFER_UNAVAILABLELa última unidad libre de esa forma fue tomada entre el momento en que usted la abrió y el momento en que desplegó, o por otro despliegue mientras se reservaba el suyoVuelva al mercado y elija otra oferta. El recuento de una tarjeta es una instantánea; el despliegue es lo que decide
404OFFER_NOT_FOUNDA GET /v1/offers/{id} se le pasó un id que no existe o que fue retirado del catálogo. Un despliegue contra una oferta desconocida devuelve OFFER_UNAVAILABLE en su lugarVuelva a listar las ofertas y use un id vigente
422DISK_TOO_LARGEEl disk_gb solicitado es mayor que el total de la máquina. La respuesta incluye max_disk_gbSolicite como máximo max_disk_gb, o elija una máquina con un disco más grande
409MACHINE_IN_MAINTENANCELa máquina está reservada para desconectarse demasiado pronto como para arrancar una instancia en ella. La respuesta incluye next_maintenanceElija otra máquina, o vuelva después de la ventana. Una ventana más lejana no bloquea el despliegue: se muestra en la oferta
409MACHINE_DISK_EXHAUSTEDEl disco de la máquina ya está comprometido con otros inquilinos. Lleva varios a la vez, y el disco se vende contra lo que queda, no contra el total — así que esto puede seguir a un disk_gb que superó DISK_TOO_LARGE. La respuesta incluye available_disk_gb y requested_disk_gbReintente en available_disk_gb o por debajo, o elija otra máquina. available_disk_gb puede ser 0
422OFFER_NOT_VM_CAPABLEUna plantilla con modo de lanzamiento vm se dirigió a una máquina que no puede ejecutar máquinas virtualesDespliegue la plantilla en una oferta con capacidad de VM, o elija una plantilla en otro modo de lanzamiento
404TEMPLATE_NOT_FOUNDEl id de la plantilla no existe, o la plantilla fue eliminadaUse una plantilla de la galería, o un hash_id que le hayan dado
404SSH_KEY_NOT_FOUNDEl ssh_key_id no es una de sus clavesListe GET /v1/ssh-keys y use un id de su propia cuenta. Las claves pertenecen a un usuario, no a una organización
402PAYMENTS_FROZENHay una disputa de pago abierta contra la organización. Desplegar e iniciar una instancia detenida quedan en pausa hasta que se cierre, y mientras tanto las instancias detenidas liberan sus GPU, donde su máquina lo permiteEspere a que se cierre la disputa. Consulte Transacciones y gasto y Mientras haya una disputa de pago abierta
409INSTANCE_LIMIT_REACHEDLa organización ya tiene 25 instancias que no están destruidas. Las detenidas y las que están en error cuentan para el límite, no solo las que se ejecutan. La respuesta incluye limitDestruya las instancias que ya no necesite —detener una no libera un cupo— y vuelva a desplegar
422TEMPLATE_COMING_SOONLa imagen de la plantilla aún no se ha publicado, así que no se puede lanzarElija otra plantilla. La consola muestra estas plantillas como aún no disponibles
422TEMPLATE_CUDA_TOO_NEWLa plantilla fija una pila de CUDA más antigua —su cuda_max— y la máquina informa una versión de CUDA más nueva. El contenedor arrancaría, pero su framework no tiene kernels para esa GPUElija una máquina cuya versión de CUDA esté en el techo de la plantilla o por debajo, o una plantilla hecha para GPU más nuevas
422TEMPLATE_ARCH_UNSUPPORTEDLa plantilla declara una arquitectura distinta de x86_64. Todos los hosts de Superheat son x86_64Use una imagen amd64
409OFFER_NOT_PINNABLELa máquina detrás de la oferta no está registrada en el plano de control, así que el despliegue no puede fijarse a ella. Esas ofertas se ocultan del mercado, así que esto suele indicar un id de oferta obsoletoVuelva a listar las ofertas y elija otra
422TEMPLATE_REQUIRES_OWNERLa plantilla descarga de un registro privado, y solo la organización propietaria puede desplegarla: su contraseña de registro nunca se usa en nombre de otrosDuplique la plantilla, introduzca sus propias credenciales de registro en la copia y despliegue esa copia

Todos los códigos de esa tabla se devuelven antes de conservar nada, así que un rechazo no crea nada ni cuesta nada.

Acciones sobre la instancia​

EstadoCódigoCausaQué hacer
404INSTANCE_NOT_FOUNDEl id de la instancia no existe en la organización a la que está dirigida la solicitudRevise el id, y revise que esté en la organización correcta
409INVALID_STATELa acción no es válida desde el estado actual de la instancia: detener algo que ya se está deteniendo, iniciar algo que ya está en ejecución. Destruir está permitido desde todos los estados salvo destroyedEspere a que la instancia llegue a running o stopped y luego reintente. El campo allowed_actions de la instancia lista lo que es válido ahora. Consulte Estados de la instancia
409HOST_UNREACHABLEInició una instancia detenida, y la máquina en la que vive no está conectada en este momento. La instancia sigue stoppedIníciela de nuevo más tarde
409START_REFUSEDEl host rechazó reanudar la instancia, o ya no conserva su carga de trabajo; el mensaje dice cuál de las dos. La instancia sigue stoppedSi el host ya no conserva la carga de trabajo, destruya la instancia y vuelva a desplegar. Si no, reintente más tarde
409CAPACITY_UNAVAILABLEInició una instancia cuyas GPU se liberaron —el saldo llegó a cero, o una disputa de pago congeló los pagos— y otro cliente está usando una de ellas ahora. Un inicio tiene que recuperar las mismas GPU en la misma máquina. La instancia sigue stopped, con su discoReintente más tarde. Si no puede esperar, copie sus datos y destrúyala. Consulte Detener vs. destruir
503START_UNAVAILABLELa reanudación no pudo completarse en este momento. La instancia sigue stopped; si la reanudación termina llegando, pasa a running por su cuentaReintente en breve

Por qué falló una instancia​

Estos no son rechazos de una petición: son el error_code que lleva una instancia cuando cae en error, o cuando una detención o un inicio no se completó y la instancia volvió a running o stopped. La página de la instancia muestra la explicación en el idioma de su consola —bajo Qué salió mal en una instancia con error, y bajo La última acción no se completó en una en ejecución o detenida—, con el código debajo para que pueda citarlo al soporte. En cualquier otro estado la página oculta estos campos, porque describen un estado anterior. En la API son error_code y error_message de la instancia.

Códigos que pone la propia plataforma. La explicación sustituye al error_message en inglés de la API:

error_codeLo que dice la consola
provision_failedEl planificador no aceptó este despliegue. No se cobró nada: destrúyela e inténtalo de nuevo.
provision_lostEl despliegue nunca llegó al planificador. No se cobró nada: destrúyela e inténtalo de nuevo.
provision_timed_outLa carga de trabajo nunca se colocó en su máquina. Destrúyela e inténtalo de nuevo.
dispatch_job_missingEl planificador ya no tiene la carga de trabajo de esta instancia. Destrúyela y despliégala de nuevo.
stop_timed_outLa máquina no confirmó la detención. La instancia sigue en ejecución y facturando; se está reintentando detenerla.
start_timed_outLa máquina no confirmó la reanudación. Sigue detenida: intenta iniciarla de nuevo.
workload_completedLa carga de trabajo terminó por sí sola. Su GPU se liberó: destruye la instancia.
machine_unreachableLa máquina de esta instancia no estaba conectada cuando se inició. Sigue detenida: inténtalo más tarde.
start_refusedLa máquina se negó a reanudar esta instancia. Sigue detenida.
workload_goneLa máquina ya no tiene la carga de trabajo de esta instancia. Destrúyela y despliégala de nuevo.
gpus_unavailableLas GPU que usaba esta instancia en su máquina las está usando otra persona ahora mismo. Sigue detenida con su disco: intenta iniciarla más tarde o destrúyela.
dispatch_unavailableNo se pudo contactar con el planificador para reanudar esta instancia. Sigue detenida: inténtalo de nuevo en breve.
gateway_unavailableNo se pudo contactar con la máquina para reanudar esta instancia. Sigue detenida: inténtalo de nuevo en breve.

Códigos que el planificador registra sobre la carga de trabajo en su máquina. La consola muestra la explicación y, debajo, como Detalles, el error_message del propio host, que a menudo es la razón exacta: un estado de salida, una imagen que falta:

error_codeLo que dice la consola
workload_failedEl contenedor falló en su máquina.
workload_lostLa máquina perdió el rastro del contenedor.
workload_exit_nonzeroEl contenedor terminó con un error.
workload_terminalLa carga de trabajo ya había terminado en su máquina.
start_timeoutEl contenedor no arrancó a tiempo. Una imagen muy grande puede tardar en descargarse más de lo permitido.
deadline_exceededLa carga de trabajo alcanzó su límite de tiempo.
machine_lostLa máquina se desconectó.
machine_goneLa máquina salió de la flota.
unknown_to_gatewayLa máquina no tiene registro de esta carga de trabajo.
placement_errorNo se pudo colocar la carga de trabajo en una máquina.
drainLa máquina se retiró del servicio por mantenimiento.
manual_rescheduleSoporte trasladó esta carga de trabajo a otra máquina.
image_not_provisioning_capableEsta imagen no se puede iniciar con el modo de arranque de esta plantilla.
launch_mode_unsupportedNinguna máquina admite el modo de arranque de esta plantilla.
vm_not_supportedEsta máquina no puede ejecutar máquinas virtuales.

Un código que no está en ninguna de las dos tablas se muestra igualmente, tal cual, con el mensaje que envió la API. Qué hacer a continuación está en Solución de problemas.

Explorar ofertas​

EstadoCódigoCausaQué hacer
422INVALID_CURSOREl cursor de GET /v1/offers no es uno que haya emitido la API, o se emitió para otro sortDevuelva sin cambios el next_cursor de la página anterior con el mismo sort, u omítalo para empezar de nuevo. Consulte Ofertas

Plantillas​

EstadoCódigoCausaQué hacer
403TEMPLATE_IMMUTABLEIntentó editar o eliminar una plantilla del sistema curada por SuperheatDuplíquela primero y luego edite su copia
409TEMPLATE_NAME_TAKENSu organización ya tiene una plantilla con ese nombre, sin distinguir mayúsculas y minúsculasElija otro nombre
404TEMPLATE_NOT_FOUNDEl id o el hash_id no resuelve a una plantilla que usted pueda verConfirme que el enlace compartido esté completo y vigente: el hash_id cambia cuando cambia la receta de lanzamiento
422INVALID_TABEl parámetro de consulta tab del listado de plantillas no es una de las pestañas de la galeríaUse un valor de pestaña admitido
422INVALID_CURSOREl cursor del listado de plantillas no es uno que haya emitido la APIDevuelva sin cambios el next_cursor de la página anterior, u omítalo para empezar de nuevo
409PUBLIC_TEMPLATE_LIMIT_REACHEDSu organización ya tiene 50 plantillas públicas. La respuesta incluye limitHaga privada una de ellas, o elimine una, antes de publicar otra

Claves SSH​

EstadoCódigoCausaQué hacer
422INVALID_SSH_KEYEl valor no es una línea de clave pública OpenSSH, el material de la clave no es base64 válido, o el tipo no está admitidoPegue todo el contenido del archivo .pub, en una sola línea, empezando por el tipo de clave. Consulte Tipos de clave admitidos
409DUPLICATE_SSH_KEYYa agregó una clave con la misma huella digitalUse la clave que ya tiene, o elimine primero la entrada anterior
404SSH_KEY_NOT_FOUNDEl id de la clave no es suyoLas claves son por usuario. La clave de otro miembro nunca es visible para usted

Equipo e invitaciones​

EstadoCódigoCausaQué hacer
400PERSONAL_ORGIntentó invitar a alguien a una organización personalCree primero una organización real y luego invite desde ahí
404INVITE_NOT_FOUNDEl token de la invitación es incorrecto, la invitación fue retirada, o se envió a una dirección de correo electrónico distinta de aquella con la que tiene iniciada la sesiónInicie sesión con la dirección invitada, o pida a un administrador un enlace nuevo
410INVITE_REVOKEDQuien envió la invitación ya no es administrador de la organización, así que ya no es válidaPida una invitación nueva a un administrador actual
410INVITE_USEDLa invitación ya fue aceptadaPida un enlace de invitación nuevo
410INVITE_EXPIREDLa invitación pasó su fecha de expiraciónPida un enlace de invitación nuevo
404MEMBER_NOT_FOUNDEl usuario no es miembro de esta organizaciónActualice la página del equipo: puede que ya lo hayan quitado
400LAST_ADMINQuitar a ese miembro, o bajarle el rol, dejaría a la organización sin ningún administradorAscienda primero a otro miembro a administrador

Créditos​

EstadoCódigoCausaQué hacer
422INVALID_AMOUNTFalta el monto personalizado de la recarga o está fuera del rango aceptadoElija un paquete de $10, $25 o $100, o un monto personalizado entre $5 y $1,000
403ADMIN_REQUIREDEl pago se intentó desde una cuenta de miembro o con una clave de APIPida a un administrador de la organización que agregue créditos
422INVALID_TIME_ZONEGET /v1/billing/spend-daily recibió un tz que no es un nombre de zona horaria IANA que la API conozcaEnvíe un nombre como Europe/Berlin, u omita tz para usar UTC

Claves de API​

EstadoCódigoCausaQué hacer
404API_KEY_NOT_FOUNDEl id de la clave no existe en esta organizaciónVuelva a listar sus claves y use un id vigente
403ADMIN_REQUIREDUna clave de API intentó crear o revocar otra clave de API, o un miembro intentó gestionar una clave de nivel de equipoCree y revoque las claves desde una sesión iniciada

Solicitudes que no pasan la validación​

Una solicitud cuyo cuerpo o cadena de consulta no coincide con el esquema se rechaza antes de llegar a cualquiera de las comprobaciones anteriores. Devuelve 422 con una lista de errores de campo bajo detail en lugar de un code:

{
"detail": [
{
"type": "less_than_equal",
"loc": ["body", "disk_gb"],
"msg": "Input should be less than or equal to 20000"
}
]
}

La entrada loc nombra el campo problemático. Los límites que conviene recordar son disk_gb entre 10 y 20,000, un label de 64 caracteres como máximo, y tail en el endpoint de logs entre 1 y 1,000. En plantillas y despliegues: como máximo 100 entradas de entorno (en la plantilla y en env_overrides), cada valor de hasta 4,096 caracteres; como máximo 32 puertos; como máximo 32 selectores de restricciones; cuda_min, cuda_max y arch de hasta 32 caracteres; limit de los listados de plantillas y de ofertas entre 1 y 200; q del listado de ofertas de hasta 100 caracteres.

Relacionado​