muse-image
Muse Image on reAPI — Meta's image model. A prompt plus up to 9 reference images in seven aspect ratios, one WebP image per request, one flat price per image.
Muse Image, the image model from Meta Superintelligence Labs, live on reAPI.
One model id, muse-image, makes one picture from a prompt, or from a prompt
plus up to 9 reference images, in one of seven aspect ratios. Every request
costs the same flat price per image. See current pricing on the
model page.
Quick example
curl https://reapi.ai/api/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "muse-image",
"prompt": "A travel poster for a seaside town called Porto Azul: pastel houses stacked on a cliff above a turquoise bay, the headline PORTO AZUL in bold serif letters at the top, flat retro illustration style.",
"aspect_ratio": "3:4"
}'import requests
response = requests.post(
"https://reapi.ai/api/v1/images/generations",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"model": "muse-image",
"prompt": "A travel poster for a seaside town called Porto Azul: pastel houses stacked on a cliff above a turquoise bay, the headline PORTO AZUL in bold serif letters at the top, flat retro illustration style.",
"aspect_ratio": "3:4",
},
timeout=60,
)
response.raise_for_status()
task_id = response.json()["id"]const response = await fetch('https://reapi.ai/api/v1/images/generations', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'muse-image',
prompt:
'A travel poster for a seaside town called Porto Azul: pastel houses stacked on a cliff above a turquoise bay, the headline PORTO AZUL in bold serif letters at the top, flat retro illustration style.',
aspect_ratio: '3:4',
}),
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const { id: taskId } = await response.json();package main
import (
"encoding/json"
"fmt"
"net/http"
"strings"
"time"
)
func main() {
body := strings.NewReader(`{
"model": "muse-image",
"prompt": "A travel poster for a seaside town called Porto Azul: pastel houses stacked on a cliff above a turquoise bay, the headline PORTO AZUL in bold serif letters at the top, flat retro illustration style.",
"aspect_ratio": "3:4"
}`)
req, err := http.NewRequest("POST", "https://reapi.ai/api/v1/images/generations", body)
if err != nil { panic(err) }
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 60 * time.Second}
res, err := client.Do(req)
if err != nil { panic(err) }
defer res.Body.Close()
var task struct { ID string `json:"id"` }
if err := json.NewDecoder(res.Body).Decode(&task); err != nil { panic(err) }
fmt.Println(task.ID)
}Authentication
Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.
Authorization: Bearer YOUR_API_KEYEndpoint
POST /api/v1/images/generations
GET /api/v1/tasks/{id}Submission is async. The POST returns a task id right away; poll the task
endpoint until status is completed or failed. Polling does not consume
credits.
Request body
| Field | Type | Default | Notes |
|---|---|---|---|
model | string | — | muse-image. Required. |
prompt | string | — | Required, also with references. Must not be empty after trimming. Name the subject, setting, light and framing; with references, say what to keep and what to change. |
image_urls | string[] | — | 0–9 public HTTP(S) image URLs used as references for a new picture. PNG, JPEG or WebP, 11 MB in total. Leave it out for text to image. |
aspect_ratio | string | auto | 1:1 / 16:9 / 9:16 / 4:3 / 3:4 / 3:2 / 2:3. Leave it out for auto: 1:1 for text only, the references' shape otherwise. Do not send "auto". |
size | string | — | Alias of aspect_ratio: one of the ratios above, or auto. Pixel sizes such as 1024x1024 are refused. aspect_ratio wins when both are sent. |
n | integer | 1 | Only 1. Each request returns one image. |
There is no resolution, seed, negative prompt, mask or output format field. Fields outside this table are not refused: they are passed through to the model, which currently ignores them.
Checked by reAPI before anything is charged:
promptis present and not blankimage_urlsholds at most 9 public HTTP(S) URLs — base64 anddata:URIs are rejectedaspect_ratio,sizeandnhold one of their listed values
The reference files' format and total size are checked when the task starts. A request that breaks one ends as a failed task with the exact reason, and is refunded in full.
Modes
| Mode | How to select it |
|---|---|
| Text to image | No image_urls. Without aspect_ratio the image is square. |
| With references | 1–9 images in image_urls. Without aspect_ratio the image follows their shape. |
With references
{
"model": "muse-image",
"prompt": "Keep this exact jacket; show it folded in a flat lay of hiking gear on pine boards, soft morning light.",
"image_urls": ["https://example.com/jacket.png"],
"aspect_ratio": "9:16"
}Muse Image returns a new picture built from the references. There is no mask or inpainting field.
Troubleshooting
| Failure | What it means | What to do |
|---|---|---|
Synchronous 400 (code 20002) | No prompt | Add a prompt. Nothing was charged |
Synchronous 400 (codes 20003 / 20005) | A blank prompt, more than 9 references, a non-URL reference, or a value outside a field's list | The message names the field. Nothing was charged |
Task fails with code 80007 | The model refused the input, for example references over 11 MB in total | Fully refunded. Fix the input and send it again |
Task fails with code 80006 | The prompt or an image was rejected by content review | Fully refunded. Revise the prompt or images |
402 on submit | Not enough credits for the reserve | Top up |
Task stays processing | Generation usually takes one to a few minutes | Keep polling; a task that can never finish is failed and refunded automatically |
No data: URIs. reAPI rejects base64 inputs platform-wide — every URL
field must be a public HTTP(S) URL. Upload to your own object storage and pass
the URL.
Response envelope
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "muse-image",
"status": "completed",
"created_at": 1789689600,
"output": {
"image_urls": ["https://cdn.reapi.ai/media/tasks/018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e/0.webp"]
},
"error": null
}Poll GET /api/v1/tasks/{id} (see the Tasks reference)
until status === "completed", then read output.image_urls. The image is
WebP, the model's own format; the model chooses the pixel size. A failed task
carries error.code and error.message; see the
errors catalog.
Pricing
Muse Image bills one flat price per image:
credits = ceil(per_image_rate × 1 × 1000) 1 credit = $0.001Text-only and reference requests, and every aspect ratio, cost the same. The amount reserved when the task is accepted is the amount charged, and failed tasks are refunded in full.
The live per-image rate is on the model page.
Tips
- Name the subject, setting, light and framing; Muse Image follows a specific brief closely.
- With references, say exactly what must stay the same, such as the product's color or shape.
- Leave
aspect_ratioout to match a reference's shape; set it to crop for a channel. - Add
No text, no logos.to keep invented marks out of the picture. - Need a clip instead? Pass the finished image to Muse Video as a reference.