Muse Image é o modelo de geração de imagens da Meta, o Muse Image 1.0, do Meta Superintelligence Labs. A Meta o descreve como um modelo que raciocina sobre o prompt antes de renderizar, com composição e renderização de texto precisas. No APIMODELS ele é um único id de modelo, muse-image (muse-image-1.0 também funciona), no endpoint unificado de imagens, e atende tanto texto para imagem quanto imagem para imagem: envie só um prompt para gerar, ou acrescente de 1 a 4 imagens de referência para editar uma foto, mudar o estilo dela ou juntar numa só imagem elementos de várias. Nos dois casos cada requisição devolve uma imagem de cerca de 2.5 megapixels, pelo mesmo preço. Máscaras e 4K não são suportados e retornam 400 em vez de serem ignorados em silêncio. Nem toda requisição tem sucesso; a cobrança só acontece quando uma imagem é entregue: $0.02 por imagem.
Tudo o que o Muse Image aceita e tudo o que não aceita, numa única tabela. Confira antes de integrar o modelo: texto para imagem, ou imagem para imagem com 1 a 4 imagens de referência; uma imagem por requisição, cerca de 2.5MP, sem 4K e sem máscaras.
| Item | Suportado | Não suportado |
|---|---|---|
| Entrada | Um prompt de texto de até 4000 caracteres, sozinho ou com 1 a 4 imagens de referência para imagem para imagem (edição, mudança de estilo, composição de várias imagens); a primeira é a principal | Máscaras (inpainting) |
| Imagens de referência | De 1 a 4, em PNG, JPEG ou WebP; até 10 MB cada e 24 MB no total; uma URL pública ou um data URI em base64 | Mais de 4 (400); outros formatos de imagem |
| Imagens por requisição | 1 (n precisa ser 1) | n maior que 1; para um lote, envie requisições em paralelo |
| Resolução | Cerca de 2.5MP no tamanho nativo de cada proporção: 1:1 1600×1600, 3:2 1920×1280, 16:9 2048×1152, 9:16 1152×2048, 21:9 2352×1008; um size menor, como 1024x1024, também volta no tamanho nativo | 4K, 2048x2048 ou qualquer size acima de cerca de 2.6MP (400); tamanhos exatos em pixels sob medida |
| Proporção | auto (o prompt decide) ou 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; um size no estilo OpenAI de até 16:1 | Outros valores de aspect_ratio; sizes mais alongados que 16:1 |
| Formato de saída | JPEG por padrão; PNG ou WebP com output_format | Fundo transparente (background: "transparent" retorna 400); outros formatos |
| Outros controles | — | negative_prompt, seed (os resultados não são repetíveis), níveis de qualidade (quality é aceito, mas não tem efeito) |
Valores e campos não suportados retornam 400 antes de a tarefa ser criada e não custam nada (a única exceção é quality, que é aceito e ignorado); as mensagens exatas estão em Erros, mais abaixo.
O Muse Image não tem sucesso em 100% das vezes. Uma requisição que passa na validação e cria uma tarefa ainda pode falhar:
Uma requisição que falha termina em state failed com o motivo em data.failMsg, e não é cobrada. As 7 requisições de teste que fizemos em 30 de outubro de 2026 devolveram imagem, mas isso é pouco demais para prometer uma taxa de sucesso, então não publicamos nenhuma. Planeje o fluxo contando com falhas ocasionais: repita os erros temporários, reescreva os prompts recusados e não presuma que a primeira tentativa vai entregar uma imagem.
Um único id de modelo e um único endpoint; o modo depende de você enviar ou não imagens de referência. Os dois custam o mesmo: $0.02 por imagem.
| Modo | O que enviar | O que o modelo faz |
|---|---|---|
| Texto para imagem | Só prompt | Tudo na imagem vem do prompt; com aspect_ratio em auto, o formato também. |
| Imagem para imagem (edição, mudança de estilo, composição) | prompt + de 1 a 4 imagens de referência: uma em image, várias em images (image_url e image_urls também funcionam) | A primeira imagem é a principal. O prompt diz o que fica e o que muda, e pode citar as outras ("a xícara da segunda imagem"). O resultado continua sendo uma imagem nova de cerca de 2.5MP. |
Coloque uma imagem de referência em image (ou image_url) e várias em images (ou image_urls); se enviar os dois, a imagem avulsa vem primeiro, e o total é de no máximo 4. Cada imagem é uma URL pública ou um data URI em base64, em PNG, JPEG ou WebP, com até 10 MB cada e 24 MB no total. Não há máscaras: descreva no prompt a área que deve mudar.
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 padrão a chamada é assíncrona: crie uma tarefa para obter um taskId e consulte GET /v1/images/generations?task_id= até state ser completed; a imagem está em data.resultUrls e a largura e a altura reais em data.images. Em failed, o motivo está em data.failMsg e nada é cobrado. Nos nossos testes cada imagem levou cerca de 35-70 segundos, então consultar a cada 5 segundos é suficiente. Para receber a imagem numa única chamada, passe um size no estilo OpenAI e não passe callback_url: a requisição fica aberta até a imagem ficar pronta, e a resposta é { created, data: [{ b64_json, url, width, height }], size }; "response_format": "url" omite a cópia em base64. O images.generate do SDK da OpenAI recebe essa mesma resposta numa única chamada.
Mesmo id de modelo e mesmo endpoint: acrescente imagens de referência à requisição, e o preço continua o mesmo. Use image para uma imagem e images para várias; a primeira é a principal. Diga no prompt o que fica e o que muda e, com várias imagens, para que serve cada uma. Consulte a tarefa exatamente como no exemplo de texto para imagem.
# ─── 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 | Sim | string | muse-image (muse-image-1.0 também funciona) |
| prompt | Sim | string | O que desenhar, até 4000 caracteres. Em imagem para imagem, diga o que fica e o que muda. |
| image / image_url | Não | string | Uma imagem de referência; ao enviá-la, a requisição passa a ser de imagem para imagem. Uma URL pública ou um data URI em base64, em PNG, JPEG ou WebP, de até 10 MB. Se for junto com images, ela vem primeiro e é a imagem principal. |
| images / image_urls | Não | string[] | Um array de 1 a 4 imagens de referência (no máximo 4 contando image); a primeira é a principal. Os mesmos formatos acima, até 10 MB cada e 24 MB no total. Mais de 4 retorna 400. |
| image_base64 / image_mime_type | Não | string | Uma imagem de referência também pode ir em base64 puro (sem o prefixo data:), com o tipo em image_mime_type, ex.: image/png. |
| aspect_ratio | Não | string | auto (padrão: o modelo escolhe o formato a partir do prompt) ou uma 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 | Não | string | Formato OpenAI "LARGURAxALTURA", ex.: 2048x1152. Define só as proporções (até 16:1): a imagem sai no tamanho nativo do modelo para essa proporção (cerca de 2.5MP), então um size menor como 1024x1024 também volta em 1600×1600. Um size acima de cerca de 2.6MP, como 3840x2160 ou 2048x2048, é recusado com 400: não existe 4K. size tem prioridade sobre aspect_ratio; sem callback_url a imagem volta na mesma resposta. |
| n | Não | number | Precisa ser 1 (o padrão): uma imagem por requisição. |
| output_format | Não | string | Formato de entrega: "jpeg" (padrão, qualidade 95), "png" ou "webp". Qualquer outro valor retorna 400. |
| quality | Não | string | É aceito, mas não tem efeito: não há níveis de qualidade. |
| callback_url | Não | string | Enviamos a tarefa concluída por POST para esta URL (o formato está na visão geral da API de imagens). |
Estes campos não são suportados e retornam 400: mask e mask_url (máscaras / inpainting), resolution: "4K", background: "transparent", negative_prompt e seed. Mais de 4 imagens de referência também retornam 400.
Cada imagem tem cerca de 2.5 megapixels. aspect_ratio ou size escolhem as proporções e o modelo escolhe os pixels: a mesma proporção sempre volta no mesmo tamanho nativo. Não existe 4K nem qualquer outro nível de resolução: size só define as proporções. Um size menor volta no tamanho nativo, e um size acima de cerca de 2.6 megapixels (3840x2160, 2048x2048) ou resolution "4K" é recusado com 400 em vez de ser entregue menor. A tabela mostra o que nossos 7 pedidos de teste de 30 de outubro de 2026 devolveram.
| Proporção | Tamanho entregue | Observações |
|---|---|---|
| 1:1 | 1600×1600 | um size de 1024x1024 também voltou em 1600×1600 |
| 16:9 | 2048×1152 | um size de 3840x2160 é recusado com 400: não existe 4K |
| 9:16 | 1152×2048 | — |
| 21:9 | 2352×1008 | — |
| auto | 1920×1280 | um único teste; sem proporção, o modelo escolhe o formato a partir do prompt |
| Modelo | model | Preço | Observações |
|---|---|---|---|
| Muse Image | muse-image | $0.02 por imagem | Um preço único para qualquer proporção e tamanho, com ou sem imagens de referência; uma imagem por requisição |
A cobrança só acontece quando uma imagem é entregue; uma requisição recusada com 400 não cria tarefa e não custa nada. Imagens de referência não custam nada a mais. Exemplos de preço: 10 imagens = $0.20, 100 imagens = $2.00.
Problemas de parâmetro voltam de forma síncrona como 400 na criação ({"code": 400, "msg": "..."}): nenhuma tarefa é criada e nada é cobrado. No modo de chamada única, os mesmos erros voltam no formato da OpenAI: {"error": {"message": "...", "type": "invalid_request_error"}}. Os textos de msg abaixo são a redação atual; os valores entre parênteses e depois de got dependem da sua requisição.
| msg | Causa / correção |
|---|---|
prompt is required | O prompt não foi enviado ou só tem espaços. |
prompt must be at most 4000 characters | O prompt passa de 4000 caracteres. Encurte-o. |
muse-image does not support masks (mask): describe what to change in prompt instead | Foi enviada uma máscara (mask ou mask_url). Não há inpainting: remova a máscara e descreva no prompt o que deve mudar. |
muse-image takes at most 4 reference images (got 5) | Mais de 4 imagens de referência somando image, image_url, images e image_urls (got mostra quantas você enviou). Envie no máximo 4; a primeira é a principal. |
muse-image generates one image per request (got n=2); submit one request per image | n é maior que 1. Envie 1 (ou omita); para várias imagens, envie várias requisições em 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 não está na lista (por exemplo 7:3). Use um valor da lista ou envie size no lugar. |
size must be "WIDTHxHEIGHT", e.g. 2048x1152 (got "…") | size não está escrito como LARGURAxALTURA (por exemplo, foi enviado "2K"). Use um valor como 2048x1152. |
output_format must be one of jpeg, png, webp (got "…") | output_format não é jpeg, png nem webp (por exemplo, foi enviado "gif"). Omita para receber JPEG. |
size 4000x200 is out of range (aspect ratio up to 16:1) | O size é mais alongado 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 | O size passa de cerca de 2.6 megapixels (por exemplo 3840x2160 ou 2048x2048; a mensagem mostra o size enviado). Não existe 4K: envie um size menor ou só 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 foi enviado como "4K". Não existe nível 4K; remova resolution. |
muse-image does not support transparent backgrounds | background foi enviado como "transparent". O Muse Image não tem fundo transparente: remova o campo ou use um modelo que suporte isso. |
muse-image does not support negative_prompt — describe what you want in prompt instead | Foi enviado negative_prompt. O Muse Image não tem prompt negativo: remova-o e descreva no prompt o que você quer. |
muse-image does not support seed: results are not repeatable | Foi enviado seed. O Muse Image não tem seed e o mesmo prompt gera uma imagem diferente a cada vez; remova-o. |
Teste no 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.