Image generation with Muse Image
Muse Image generates and edits images from a conversation. Send interleaved text and reference images, get an image back, then keep refining it turn by turn, all through the same Responses API you already use for text. One model handles both generation and editing, and plain text-to-image and one-off edits are just special cases of the same conversational interface.
How it works
Muse Image takes text and, optionally, reference images, and returns an image. One model covers the whole workflow:
- Generate: describe an image and get it back.
- Edit: send an existing image with an instruction, and it changes only what you ask for while keeping the rest intact.
- Refine: keep going in the same conversation, and each turn builds on the last.
The main interface is the conversational Responses API. It accepts arbitrary interleaved text and image input and keeps conversation state across turns, so you can generate an image and then steer it toward the result you want. This interleaved, multi-turn flow is what Muse Image is built around.
For a one-off generation or edit with no conversation state, the single-shot images endpoints (/v1/images/generations and /v1/images/edits) are compatible with the OpenAI Images API, so an OpenAI client works by pointing base_url at https://api.meta.ai/v1.
Automatic grounding
Muse Image is agentic. Before it renders, it can look things up and use what it finds as references, so results stay accurate for real places, products, brands, styles, and current events:
- Visual references: for a real landmark, product, logo, or style, it can pull reference imagery from the web and match likeness, composition, and detail.
- Current facts: when a prompt depends on real-world information such as recent results, prices, or dates, it can look them up so any text or data in the image is right.
- Generated layouts: for infographics, charts, or other structured graphics, it can compute and arrange the elements before rendering.
This all happens on its own. You don't configure it, and this built-in search is part of the per-image price, so it carries no extra search-grounding charge. The intermediate lookups aren't surfaced as separate tool-call items, so you just get the finished image. On the Responses API you also get a short summary of what the model did in a reasoning item (see Read the response); the images endpoints return the finished image only. If you'd rather constrain it, you can turn specific tools off or cap refinement on the Responses API or the images endpoints.
Conversational generation
Use the Responses API to generate an image and then refine it across turns. Pass a text prompt (and optional reference images) as input; the response's output array carries the result.
pythonimport osfrom openai import OpenAIclient = OpenAI(base_url="https://api.meta.ai/v1",api_key=os.environ["MODEL_API_KEY"],)response = client.responses.create(model="muse-image-1.0",input="a red fox trotting through fresh snow, golden hour",)print(response.model_dump_json(indent=2))
typescriptimport OpenAI from 'openai';const apiKey = process.env.MODEL_API_KEY;if (!apiKey) {throw new Error('MODEL_API_KEY is not set');}const client = new OpenAI({baseURL: 'https://api.meta.ai/v1',apiKey,});const response = await client.responses.create({model: 'muse-image-1.0',input: 'a red fox trotting through fresh snow, golden hour',});console.log(JSON.stringify(response, null, 2));
pythonimport jsonimport osimport requestsresponse = requests.post("https://api.meta.ai/v1/responses",headers={"Authorization": f"Bearer {os.environ['MODEL_API_KEY']}","Content-Type": "application/json",},json={"model": "muse-image-1.0","input":