Saltar al contenido principal
POST
Esta API es asíncrona. Guarda el ID de tarea tras el envío y consulta GET /v1/tasks/{task_id} para obtener el estado y los resultados. En la respuesta de envío predeterminada, el ID está en data[0].task_id.

Cabeceras de solicitud

string
requerido
Usa una APIMart API Key con el formato Bearer <token>. Tanto el envío como las consultas requieren autenticación con la misma identidad de usuario.
string
Muy recomendable. Usa una clave nueva para cada generación independiente (1–191 caracteres ASCII visibles; se recomienda UUID). Sustituye <unique-operation-key> en los ejemplos. Tras un tiempo de espera agotado o un fallo de red, repite con el mismo endpoint, cuerpo, versión de respuesta y clave. Una vez recibido el ID, consulta únicamente esa tarea.

Parámetros de solicitud

string
requerido
Valor fijo: muse-image-ext.
string
requerido
Descripción del contenido deseado en chino o inglés. No puede quedar vacía tras quitar los espacios iniciales y finales. Es obligatoria incluso con imágenes de referencia.
string[]
Hasta 9 entradas de imágenes de referencia no vacías. Admite URL públicas, Data URI (como data:image/png;base64,...) o base64 sin prefijo. Omite el campo o envía [] para generar solo a partir del texto. Se recomiendan PNG, JPEG y WebP. El servidor debe acceder directamente a las URL sin cookies de inicio de sesión del navegador.El tamaño original combinado de todas las imágenes no debe superar 11 MiB (11.534.336 bytes). Es un límite total, no por imagen. base64 añade tamaño al cuerpo de la solicitud. No envíes URL blob:, rutas locales ni objetos File.
string
Admite las siete proporciones siguientes. Si se omite, texto a imagen usa 1:1; con referencias, sigue su composición. Una proporción explícita tiene prioridad. Para selección automática, omite el campo; no envíes "auto".1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3
string
Campo de compatibilidad que admite las siete proporciones anteriores o auto, pero no tamaños en píxeles como 1024x1024. Enviar solo size: "auto" equivale a no indicar proporción. Se recomienda aspect_ratio. Si ambos valores son válidos, aspect_ratio tiene prioridad, pero cada campo se valida por separado: una proporción válida no corrige un size inválido.
integer
predeterminado:"1"
Solo un resultado por solicitud. Únicamente se acepta el número 1. Los valores explícitos 0, negativos o mayores que 1 provocan un error.
Devuelve una URL WebP. El modelo decide las dimensiones; no se pueden elegir tamaños en píxeles ni niveles 1K / 2K / 4K. No envíes un resolution no vacío ni campos de duración.

Otros parámetros opcionales

string
URL base del backend para las notificaciones. La plataforma elimina las barras finales y añade /callback: https://your-backend.example/muse pasa a ser https://your-backend.example/muse/callback. Omítela si solo usas consultas periódicas.
string
Controla el idioma de los errores del Webhook, no el contenido generado. Valores: zh, en, ja, ko, ru, fr, de, id, pt, es. No admite etiquetas regionales como zh-CN. Para las consultas, pasa el idioma por separado como parámetro GET.

Generación con imágenes de referencia

Sustituye la URL de ejemplo por una imagen accesible. El ejemplo omite la proporción para seguir la composición de la referencia; añade aspect_ratio para fijarla. Añade más referencias a image_urls, hasta 9 en total.

Respuesta de envío

La respuesta predeterminada es HTTP 200, con data como array. submitted significa que la tarea se ha aceptado, no que haya terminado. Guarda data[0].task_id y consulta la tarea.
Con la cabecera X-APIMart-Response-Version: 2026-07-27, el envío devuelve HTTP 202. Lee el ID en data.id y la ruta de consulta en data.poll_url.
Esta versión no cambia la estructura de las respuestas GET. Si añades esta cabecera, no sigas leyendo el ID de envío en data[0].task_id.

Consultar estado y resultados

Usa el ID completo recibido al enviar y la misma identidad de usuario. language es opcional y define el idioma de los errores. Consulta todos los campos en Estado de tarea.
Consulta cada 5 segundos, sin solicitudes simultáneas para la misma tarea. Un tiempo de espera del cliente o detener las consultas no cancela la tarea del servidor. Guarda el ID y reanuda las consultas GET más tarde; no envíes automáticamente una nueva generación. Determina la finalización con data.status. HTTP 200 o progress: 100 por sí solos no indican éxito. Un polling_error durante el procesamiento tampoco es un fallo terminal. Ejemplo de respuesta de una tarea completada (URL de resultado ilustrativa):
En las respuestas de consulta, data es un objeto y url un array de cadenas. El primer resultado está en data.result.images[0].url[0]. Si existe, expires_at indica la caducidad en segundos Unix; guarda los archivos necesarios antes de esa fecha. actual_time mide el tiempo de procesamiento de la tarea, no la duración de reproducción del vídeo.

Limitaciones y gestión de errores

No se admiten vídeos o audios de referencia, máscaras, control del primer/último fotograma, extensiones ni remix. quality no tiene efecto. Omite seed, negative_prompt, width, height, response_format y output_format, ya que no son parámetros de generación de este modelo. async: false no activa la generación síncrona y stream no ofrece un flujo SSE de generación. Las tareas fallidas también pueden devolver HTTP 200; revisa data.status y data.error.message. Un error de red o 5xx al enviar puede ocurrir después de la aceptación, por lo que no debes reenviar inmediatamente con una clave nueva.