Estructura de respuesta y códigos de error de la Open API de HappyOyster, incluidos códigos de negocio, escenarios típicos y sugerencias de manejo.
Este documento describe la estructura de respuesta y los códigos de error de la Open API de HappyOyster. Se aplica a todos los endpoints de la Open API de los modelos Adventure, Directing y Acting.
Estructura de respuesta
Una vez que una solicitud supera la autenticación de la pasarela (tanto para éxitos como para errores de negocio), la respuesta siempre devuelve HTTP 200 con la siguiente estructura JSON como cuerpo:
{
"code": 0,
"message": null,
"data": {}
}
| Campo | Tipo | Descripción |
|---|---|---|
code | integer | Código de retorno de negocio. 0 significa éxito; un valor distinto de0 significa un error de negocio — consulte la lista de códigos de error a continuación. |
message | string | null | Mensaje de error legible por humanos. null cuando code=0. |
data | object | null | Carga útil de negocio. En caso de éxito, contiene el objeto de respuesta específico del endpoint; en caso de error, generalmente null. |
Los fallos de la capa de pasarela, como la verificación de AK, firma o marca de tiempo, se rechazan directamente, por lo que esas respuestas no siguen esta estructura y normalmente se devuelven con un código de estado HTTP 4xx / 5xx — consulte Código de error.
Lista de códigos de error
| code | Descripción | Escenarios típicos y manejo |
|---|---|---|
0 | Éxito | Solicitud exitosa; lea data. |
400000 | Parámetros de solicitud inválidos | mode no coincide con el modelo actual; prompt o firstFrameImage falta; prompt es demasiado largo; creationModel / uploadMode / resolution / aspectRatio / perspective tiene un valor ilegal; el formato de la imagen o del ID cifrado es inválido. Corrija los parámetros según la documentación de la API y reintente. |
400001 | Error al obtener o almacenar la URL de la imagen | La URL de la imagen del primer fotograma o de referencia es inaccesible o ha caducado. Verifique la accesibilidad y validez de la URL, y luego reintente crear el mundo. |
401010 | ticket inválido o caducado | Ingresar al viaje (enter-travel). Llame nuevamente a get-travel-credential para obtener un nuevo ticket. |
401011 | ticket ya utilizado | Ingresar al viaje. El ticket es de un solo uso; obtenga uno nuevo. |
403001 | El mundo no existe, fue eliminado, no le pertenece o no pertenece al modelo actual | Consulta, intercambio de credenciales, ingreso al viaje y filtrado de listas. Al eliminar, este código se devuelve solo para IDs entre cuentas, entre espacios de trabajo o entre modelos; un ID ya inexistente bajo la misma cuenta devuelve code=0, deleted=false. |
403002 | El mundo no está ready o no disponible | Intercambio de credenciales, ingresar al viaje. Sondee el estado de compilación hasta que esté ready antes de operar. |
403003 | Este endpoint permite solo la API Key principal | Gestión de mundos, lista de viajes, artefactos, etc. Llame con la API Key principal (comienza con sk-). |
403004 | El contenido de entrada falló la política de seguridad de contenido | Crear mundo, enviar instruct. Ajuste el contenido de texto y reintente. |
403005 | La imagen de entrada falló la verificación de derechos de autor o propiedad intelectual | Crear mundo. Reemplace con una imagen compatible y reintente. |
403007 | Cuota de función o servicio no habilitada | Crear, intercambio de credenciales, ingresar al viaje. Confirm que la capacidad del modelo correspondiente esté habilitada. |
403008 | Configuración de capacidad temporalmente no disponible | Crear, intercambio de credenciales, ingresar al viaje. Reintente más tarde o contacte al proveedor de servicios para aumentar la escala. |
404000 | El viaje no existe, no le pertenece, no pertenece al modelo actual o no tiene artefactos disponibles | Consulta de estado del viaje, control, finalización, consulta de artefactos. |
409000 | La solicitud entra en conflicto con el estado actual del recurso | Endpoints de control como pausar, reanudar, finalizar e instruir; también se devuelve al llamar a un endpoint que un modelo no admite. |
429001 | La concurrencia para la especificación actual está llena | Ingresar al viaje. Reintente más tarde o aumente la especificación de concurrencia. |
429002 | Capacidad disponible insuficiente | Ingresar al viaje. Reintente más tarde. |
500000 | Error interno del sistema | Excepciones no clasificadas; también puede devolverse al llamar a un endpoint no admitido (p. ej., rewind en algunos modelos). |
500001 | Error al asignar recursos de transmisión | Ingresar al viaje. Reintente más tarde. |
El acceso entre modelos no revela si el recurso existe: los endpoints de World devuelven code=403001 y los endpoints de Travel devuelven code=404000.
errorCode de fallo de viaje
Al consultar el estado del viaje o la lista de viajes, los elementos con status=failed incluyen adicionalmente el campo estructurado errorCode y una descripción en inglés errorMessage (consulte la documentación de la API correspondiente para la estructura de respuesta de fallo). El texto de errorMessage para el mismo errorCode puede diferir entre los endpoints de consulta y la respuesta de Finalizar viaje; ramifique según errorCode, no según errorMessage.
| errorCode | errorMessage | Descripción |
|---|---|---|
TRAVEL_SESSION_INIT_FAILED | Failed to allocate inference resources. | La sesión de inferencia no se pudo inicializar al ingresar al viaje, generalmente debido a recursos de inferencia insuficientes |
TRAVEL_NO_STREAM_AUTO_END | No video stream was received before timeout. | El cliente no recibió la transmisión antes del tiempo de espera; finalice el viaje pasando failCode en la solicitud de Finalizar viaje |
TRAVEL_STREAM_CREATE_FAILED | Failed to create the video stream. | Error al crear el canal de transmisión |
CONTENT_VIDEO_MODERATION_REJECTED | Something went wrong. | La imagen de la experiencia fue interrumpida por la política de seguridad de contenido |
TRAVEL_RUNTIME_FAILED | The experience was interrupted by a runtime error. | Otros fallos de tiempo de ejecución, o el servidor no registró una razón específica |
Cualquier errorCode no listado puede tratarse como un fallo desconocido.