FLUX 3 Image is the image model of Black Forest Labs' FLUX 3 family (the video model is FLUX 3 Video). It generates or edits one image per request from a prompt and up to 10 reference images. Reference order matters: in the prompt you call them ref_image_0, ref_image_1 and so on. Resolution comes in five tiers: 768sq, 1K, 1.5K, 2K and 4K, and the aspect ratio is one of 15 formats from 21:9 to 9:21, or auto. You can guide where elements go with boxes (0-1000 coordinates) written into the prompt text.
Best for
- Swapping an object in a photo: "the chair from ref_image_1 in the room from ref_image_0"
- Posters and mockups where text and product must sit in a set place
- Quick 768sq previews before a 2K render
- Scenes assembled from several products or characters shot separately
Prompting tips
- When editing, say plainly what stays the same: the window, the floor, the camera angle.
- Keep the reference order stable, the model knows them by number.
- Put the layout in the prompt as a table with
id,bboxanddesc- boxes guide placement, they are not masks. - 4K costs several times more than 2K, so save it for the final version.
FAQ
How much does FLUX 3 Image cost?
The price depends on resolution: from $0.0984 per image. The full tier table is on this page and in pricing. Failed generations are free.
Does FLUX 3 Image support seed or a negative prompt?
No. This model does not accept seed, pixel dimensions, steps, guidance or a negative prompt. You steer it with the prompt, resolution, aspect ratio and references.
FLUX 3 Image or FLUX.2 [pro]?
FLUX.2 [pro] is cheaper at 1K and 2K. FLUX 3 Image takes more references (10 instead of 8), has a 4K tier and supports layout boxes in the prompt. For simple 1K graphics FLUX.2 is enough.
How to call FLUX 3 Image via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-3-image",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "auto",
"resolution": "1k"
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "flux-3-image",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "auto",
"resolution": "1k"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "flux-3-image",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "auto",
"resolution": "1k"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Parameters
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ||
aspect_ratio | string | auto 21:9 2:1 16:9 3:2 7:5 4:3 5:4 1:1 4:5 3:4 5:7 2:3 9:16 1:2 9:21 | auto |
resolution | string | 768sq 1k 1.5k 2k 4k | 1k |
image_urls | array | max 10 |
The same schema is available from GET /v1/models/flux-3-image.









