Muse Image es el modelo de generación de imágenes de Meta, Muse Image 1.0, de Meta Superintelligence Labs. Meta lo describe como un modelo que razona sobre el prompt antes de renderizar, con una composición y un renderizado de texto precisos. En APIMODELS es un único id de modelo, muse-image (muse-image-1.0 también funciona), en el endpoint unificado de imágenes, y sirve tanto para texto a imagen como para imagen a imagen: envía solo un prompt para generar, o añade de 1 a 4 imágenes de referencia para editar una foto, cambiarle el estilo o reunir en una sola imagen elementos de varias. En los dos casos cada petición devuelve una imagen de unos 2.5 megapíxeles, al mismo precio. Las máscaras y el 4K no están admitidos y devuelven un 400 en lugar de ignorarse en silencio. No todas las peticiones tienen éxito; solo se cobra cuando se entrega una imagen: $0.02 por imagen.
Todo lo que Muse Image acepta y todo lo que no, en una sola tabla. Revísala antes de construir sobre el modelo: texto a imagen, o imagen a imagen con 1 a 4 imágenes de referencia; una imagen por petición, unos 2.5MP, sin 4K y sin máscaras.
| Aspecto | Admitido | No admitido |
|---|---|---|
| Entrada | Un prompt de texto de hasta 4000 caracteres, solo o con 1 a 4 imágenes de referencia para imagen a imagen (edición, cambio de estilo, composición de varias imágenes); la primera es la principal | Máscaras (inpainting) |
| Imágenes de referencia | De 1 a 4, en PNG, JPEG o WebP; hasta 10 MB cada una y 24 MB en total; una URL pública o un data URI en base64 | Más de 4 (un 400); otros formatos de imagen |
| Imágenes por petición | 1 (n debe ser 1) | n mayor que 1; para un lote, envía peticiones en paralelo |
| Resolución | Unos 2.5MP al tamaño nativo de cada proporción: 1:1 1600×1600, 3:2 1920×1280, 16:9 2048×1152, 9:16 1152×2048, 21:9 2352×1008; un size más pequeño, como 1024x1024, vuelve igualmente al tamaño nativo | 4K, 2048x2048 o cualquier size de más de unos 2.6MP (un 400); tamaños exactos en píxeles a medida |
| Proporción | auto (decide el prompt) o 1:1, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 16:9, 9:16, 2:1, 1:2, 21:9, 9:21; un size al estilo OpenAI de hasta 16:1 | Otros valores de aspect_ratio; sizes más alargados que 16:1 |
| Formato de salida | JPEG por defecto; PNG o WebP con output_format | Fondo transparente (background: "transparent" devuelve un 400); otros formatos |
| Otros controles | — | negative_prompt, seed (los resultados no se pueden repetir), niveles de calidad (quality se acepta pero no tiene efecto) |
Los valores y campos no admitidos devuelven un 400 antes de crear la tarea y no cuestan nada (la única excepción es quality, que se acepta y se ignora); los mensajes exactos están en Errores, más abajo.
Muse Image no tiene éxito el 100% de las veces. Una petición que pasa la validación y crea una tarea todavía puede fallar:
Una petición fallida termina en state failed con el motivo en data.failMsg, y no se cobra. Las 7 peticiones de prueba que hicimos el 30 de octubre de 2026 devolvieron imagen, pero son demasiado pocas para prometer una tasa de éxito, así que no publicamos ninguna. Diseña tu flujo contando con fallos ocasionales: reintenta los errores temporales, reescribe los prompts rechazados y no des por hecho que el primer intento entregará una imagen.
Un único id de modelo y un único endpoint; el modo depende de si envías imágenes de referencia. Los dos cuestan lo mismo: $0.02 por imagen.
| Modo | Qué enviar | Qué hace el modelo |
|---|---|---|
| Texto a imagen | Solo prompt | Todo lo que aparece en la imagen sale del prompt; con aspect_ratio en auto, también la forma. |
| Imagen a imagen (edición, cambio de estilo, composición) | prompt + de 1 a 4 imágenes de referencia: una en image, varias en images (también valen image_url e image_urls) | La primera imagen es la principal. El prompt indica qué se mantiene y qué cambia, y puede referirse a las demás ("la taza de la segunda imagen"). El resultado sigue siendo una imagen nueva de unos 2.5MP. |
Pon una imagen de referencia en image (o image_url) y varias en images (o image_urls); si envías ambos, la imagen suelta va primero y el total es de 4 como máximo. Cada imagen es una URL pública o un data URI en base64, en PNG, JPEG o WebP, de hasta 10 MB cada una y 24 MB en total. No hay máscaras: describe en el prompt la zona que quieres cambiar.
Authorization: Bearer YOUR_API_KEYhttps://api.apimodels.app/v1/images/generations·GET/v1/images/generations?task_id=# ─── Text-to-image, one image per request ────────────────
curl -X POST https://api.apimodels.app/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "muse-image",
"prompt": "A bakery storefront at dawn, a hand-painted sign that reads \"MORNING LOAF\", warm window light",
"aspect_ratio": "3:2"
}'
# Response (async — a task is created):
# { "code": 200, "msg": "success", "data": { "taskId": "clxxx", "state": "pending", "model": "muse-image" } }
# ─── Poll for the result ──────────────────────────────────
curl "https://api.apimodels.app/v1/images/generations?task_id=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
# { "code": 200, "data": { "state": "completed", "resultUrls": ["https://r2.apimodels.app/..."],
# "images": [{ "url": "https://r2.apimodels.app/...", "width": 1920, "height": 1280 }] } }
# ─── One call, OpenAI style: an OpenAI-style size and no callback_url ──
curl -X POST https://api.apimodels.app/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "muse-image",
"prompt": "A minimalist travel poster of Kyoto in autumn, the title \"KYOTO\" in bold letters at the top",
"size": "2048x1152"
}'
# { "created": ...,
# "data": [{ "b64_json": "...", "url": "https://r2.apimodels.app/...", "width": 2048, "height": 1152 }],
# "size": "2048x1152" }Por defecto la llamada es asíncrona: crea una tarea para obtener un taskId y consulta GET /v1/images/generations?task_id= hasta que state sea completed; la imagen está en data.resultUrls y su ancho y alto reales en data.images. Con failed, el motivo está en data.failMsg y no se cobra nada. En nuestras pruebas cada imagen tardó unos 35-70 segundos, así que basta con consultar cada 5 segundos. Para recibir la imagen en una sola llamada, pasa un size al estilo OpenAI y no pases callback_url: la petición queda abierta hasta que la imagen esté lista y la respuesta es { created, data: [{ b64_json, url, width, height }], size }; con "response_format": "url" se omite la copia en base64. images.generate del SDK de OpenAI recibe esa misma respuesta en una sola llamada.
Mismo id de modelo y mismo endpoint: añade imágenes de referencia a la petición y el precio no cambia. Usa image para una imagen e images para varias; la primera es la principal. Indica en el prompt qué se mantiene y qué cambia y, con varias imágenes, para qué sirve cada una. Consulta la tarea igual que en el ejemplo de texto a imagen.
# ─── Image-to-image: 1 to 4 reference images, the first is the main image ──
# Same endpoint, model id and price ($0.02 per image) as text-to-image.
# image for one picture, images for several (image_url / image_urls also work);
# public URLs or base64 data URIs, PNG / JPEG / WebP, up to 10 MB each and 24 MB in total.
curl -X POST https://api.apimodels.app/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "muse-image",
"prompt": "Use the first image as the base and keep its lighting. Put the ceramic cup from the second image on the wooden table, next to the laptop",
"images": [
"https://example.com/desk-scene.jpg",
"https://example.com/ceramic-cup.png"
],
"aspect_ratio": "3:2"
}'
# Response (async — a task is created):
# { "code": 200, "msg": "success", "data": { "taskId": "clxxx", "state": "pending", "model": "muse-image" } }
# Poll the taskId exactly as in the text-to-image example.| Field | Required | Type | Description |
|---|---|---|---|
| model | Sí | string | muse-image (muse-image-1.0 también funciona) |
| prompt | Sí | string | Qué dibujar, hasta 4000 caracteres. En imagen a imagen, indica qué se mantiene y qué cambia. |
| image / image_url | No | string | Una imagen de referencia; al enviarla, la petición pasa a ser de imagen a imagen. Una URL pública o un data URI en base64, en PNG, JPEG o WebP, de hasta 10 MB. Si va junto con images, queda en primer lugar y es la imagen principal. |
| images / image_urls | No | string[] | Un array de 1 a 4 imágenes de referencia (4 como máximo contando image); la primera es la principal. Los mismos formatos de arriba, hasta 10 MB cada una y 24 MB en total. Más de 4 devuelve un 400. |
| image_base64 / image_mime_type | No | string | Una imagen de referencia también puede ir en base64 sin prefijo data:, con su tipo en image_mime_type, p. ej. image/png. |
| aspect_ratio | No | string | auto (por defecto: el modelo elige la forma según el prompt) o una de 1:1, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 16:9, 9:16, 2:1, 1:2, 21:9, 9:21. |
| size | No | string | Formato OpenAI "ANCHOxALTO", p. ej. 2048x1152. Solo fija las proporciones (hasta 16:1): la imagen sale al tamaño nativo del modelo para esa proporción (unos 2.5MP), así que un size más pequeño como 1024x1024 vuelve igualmente en 1600×1600. Un size de más de unos 2.6MP, como 3840x2160 o 2048x2048, se rechaza con un 400: no hay 4K. size tiene prioridad sobre aspect_ratio; sin callback_url la imagen llega en la misma respuesta. |
| n | No | number | Debe ser 1 (el valor por defecto): una imagen por petición. |
| output_format | No | string | Formato de entrega: "jpeg" (por defecto, calidad 95), "png" o "webp". Cualquier otro valor devuelve un 400. |
| quality | No | string | Se acepta pero no tiene efecto: no hay niveles de calidad. |
| callback_url | No | string | Enviamos por POST la tarea terminada a esta URL (el formato está en la vista general de la API de imágenes). |
Estos campos no están admitidos y devuelven un 400: mask y mask_url (máscaras / inpainting), resolution: "4K", background: "transparent", negative_prompt y seed. Más de 4 imágenes de referencia también devuelven un 400.
Cada imagen tiene unos 2.5 megapíxeles. aspect_ratio o size eligen las proporciones y el modelo elige los píxeles: la misma proporción siempre vuelve con el mismo tamaño nativo. No hay 4K ni ningún otro nivel de resolución: size solo fija las proporciones. Un size más pequeño vuelve al tamaño nativo, y un size de más de unos 2.6 megapíxeles (3840x2160, 2048x2048) o resolution "4K" se rechaza con un 400 en lugar de entregarse más pequeño. La tabla muestra lo que devolvieron nuestras 7 peticiones de prueba del 30 de octubre de 2026.
| Proporción | Tamaño entregado | Notas |
|---|---|---|
| 1:1 | 1600×1600 | un size de 1024x1024 también volvió en 1600×1600 |
| 16:9 | 2048×1152 | un size de 3840x2160 se rechaza con un 400: no hay 4K |
| 9:16 | 1152×2048 | — |
| 21:9 | 2352×1008 | — |
| auto | 1920×1280 | una sola prueba; sin proporción, el modelo elige la forma según el prompt |
| Modelo | model | Precio | Notas |
|---|---|---|---|
| Muse Image | muse-image | $0.02 por imagen | Un único precio para cualquier proporción y tamaño, con o sin imágenes de referencia; una imagen por petición |
Solo se cobra cuando se entrega una imagen; una petición rechazada con un 400 no crea tarea y no cuesta nada. Las imágenes de referencia no cuestan nada extra. Ejemplos de precio: 10 imágenes = $0.20, 100 imágenes = $2.00.
Los problemas de parámetros vuelven de forma síncrona como un 400 al crear la tarea ({"code": 400, "msg": "..."}): no se crea ninguna tarea y no se cobra nada. En el modo de una sola llamada, los mismos errores llegan con el formato de OpenAI: {"error": {"message": "...", "type": "invalid_request_error"}}. Los textos de msg de abajo son la redacción actual; los valores entre paréntesis y tras got dependen de tu petición.
| msg | Causa / solución |
|---|---|
prompt is required | Falta el prompt o solo tiene espacios en blanco. |
prompt must be at most 4000 characters | El prompt supera los 4000 caracteres. Acórtalo. |
muse-image does not support masks (mask): describe what to change in prompt instead | Se envió una máscara (mask o mask_url). No hay inpainting: quita la máscara y describe en prompt qué hay que cambiar. |
muse-image takes at most 4 reference images (got 5) | Más de 4 imágenes de referencia sumando image, image_url, images e image_urls (got indica cuántas enviaste). Envía 4 como máximo; la primera es la principal. |
muse-image generates one image per request (got n=2); submit one request per image | n es mayor que 1. Envía 1 (u omítelo); para varias imágenes, envía varias peticiones en paralelo. |
aspect_ratio must be one of auto, 1:1, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 16:9, 9:16, 2:1, 1:2, 21:9, 9:21 | aspect_ratio no está en la lista (por ejemplo 7:3). Usa un valor de la lista o envía size en su lugar. |
size must be "WIDTHxHEIGHT", e.g. 2048x1152 (got "…") | size no está escrito como ANCHOxALTO (por ejemplo, se envió "2K"). Usa un valor como 2048x1152. |
output_format must be one of jpeg, png, webp (got "…") | output_format no es jpeg, png ni webp (por ejemplo, se envió "gif"). Omítelo para recibir JPEG. |
size 4000x200 is out of range (aspect ratio up to 16:1) | El size es más alargado que 16:1. |
size 3840x2160 is larger than muse-image can render: output is about 2.5 megapixels (1600x1600 at 1:1, 2048x1152 at 16:9), there is no 4K — use a smaller size or just aspect_ratio | El size supera unos 2.6 megapíxeles (por ejemplo 3840x2160 o 2048x2048; el mensaje muestra el size que enviaste). No hay 4K: envía un size más pequeño o solo aspect_ratio. |
muse-image has no 4K output: images are about 2.5 megapixels (1600x1600 at 1:1, 2048x1152 at 16:9) — remove resolution | resolution llevaba "4K". No hay nivel 4K; quita resolution. |
muse-image does not support transparent backgrounds | background llevaba "transparent". Muse Image no tiene fondos transparentes: quita el campo o usa un modelo que los admita. |
muse-image does not support negative_prompt — describe what you want in prompt instead | Se envió negative_prompt. Muse Image no tiene prompt negativo: quítalo y describe en prompt lo que quieres. |
muse-image does not support seed: results are not repeatable | Se envió seed. Muse Image no tiene seed y el mismo prompt da una imagen distinta cada vez; quítalo. |
Pruébalo en el Playground.
Muse Image does text-to-image and image-to-image. Image-to-image takes 1 to 4 reference images (the first is the main image) as public URLs or base64 data URIs, PNG, JPEG or WebP, up to 10 MB each and 24 MB in total; masks (inpainting) are not supported, so describe the change in the prompt. Each request returns one image (n must be 1) of about 2.5 megapixels at the native size for its ratio (1:1 1600×1600, 16:9 2048×1152); there is no 4K, sizes above about 2.6 MP are rejected, and exact custom pixel sizes are not possible. aspect_ratio is auto or one of 13 ratios, and an OpenAI-style size goes up to 16:1. Output is JPEG by default, or PNG / WebP via output_format, with no transparent background. negative_prompt and seed are not supported (results are not repeatable), quality has no effect, and the prompt is up to 4,000 characters. Unsupported fields, masks and more than 4 reference images return a 400 before a task is created. Success is not 100%: the model can refuse content or hit a temporary error; a failed request returns the reason and is not charged, and we publish no success rate.
Yes. Add 1 to 4 reference images to the same request: image for one, images for several (image_url and image_urls also work), as public URLs or base64 data URIs, PNG, JPEG or WebP, up to 10 MB each and 24 MB in total. The first image is the main image. Say in the prompt what stays and what changes ("keep the person and the pose, change the background to a beach, oil-painting style"), and with several images say what each one is for ("use the first image as the base, put the cup from the second image on the table"). Reference images cost nothing extra: it is still $0.02 per image. Masks (inpainting) are not supported, and more than 4 reference images return a 400.
A flat $0.02 per image at every aspect ratio and size, with or without reference images, charged only when an image is delivered: 10 images cost $0.20 and 100 images $2.00. A request rejected with a 400 costs nothing.
About 2.5 megapixels, always at the model's native size for the ratio. In our tests 1:1 came back at 1600×1600, 16:9 at 2048×1152, 9:16 at 1152×2048 and 21:9 at 2352×1008, and an unsized request at 1920×1280. size only sets the proportions, and there is no 4K: a size above about 2.6 megapixels, such as 3840x2160 or 2048x2048, is rejected with a 400, while a smaller size such as 1024x1024 comes back at the native size. Images are delivered as JPEG (quality 95) by default; pass output_format png or webp to get those formats instead.
About 35-70 seconds per image in our tests (7 requests on 30 October 2026). Poll every 5 seconds or pass a callback_url; in one-call mode, give your HTTP client a timeout of at least 2 minutes.
Each request returns exactly one image and n above 1 returns a 400, so send several requests in parallel; each is billed at $0.02 and tracked on its own.
Yes. Point the OpenAI SDK at https://api.apimodels.app/v1 and call images.generate with model muse-image and a size such as 2048x1152; the image comes back in the same response as b64_json plus a url. Without the SDK, a request with an OpenAI-style size and no callback_url gets the same one-call response.