FLUX.2 [pro] is the production tier of Black Forest Labs' FLUX.2 family, released in November 2025. It generates photoreal images from text and from up to 8 reference images, with accurate text rendered inside the image. Each request returns one image at 1K or 2K, in 7 aspect ratios (1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3) plus auto when you send references. Exact pixel sizes are not available in Jantaris yet; for output up to 4 MP use FLUX.2 [max]. Prompts can be up to 5,000 characters.
Best for
- Photoreal product and lifestyle photography
- Keeping a product or character consistent across up to 8 references
- Packaging and signage mockups with readable text
- Production pipelines that need a fixed 1K or 2K output
Prompting tips
- Describe the shot the way a photographer would: camera, lens, aperture, lighting setup.
- Give each reference a job in the prompt: product, model, background, style.
autoratio only works when reference images are attached.- Put in-image text in quotes and specify font style and placement.
FAQ
How much does the FLUX.2 [pro] API cost?
It costs from $0.0688 per image on Jantaris. You see the estimated cost before submitting, and a failed generation is refunded in full.
What is the maximum resolution of FLUX.2 [pro]?
On Jantaris it is the 2K preset. Exact pixel dimensions are not exposed yet, and FLUX.2 [max] goes up to 4 MP.
FLUX.2 [pro], [max] or [flex]?
[pro] is the production default. FLUX.2 [max] targets the highest quality and detail, while FLUX.2 [flex] is the flexible tier with the same 1K and 2K presets.
How to call FLUX.2 [pro] via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-2-pro",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "1:1",
"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-2-pro",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "1:1",
"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-2-pro",
"input": {
"prompt": "Product photo of a matte black ceramic coffee cup on a travertine table, soft window light, 50mm",
"aspect_ratio": "1:1",
"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 | ≤ 5000 chars | |
aspect_ratio | string | 1:1 4:3 3:4 16:9 9:16 3:2 2:3 auto | 1:1 |
resolution | string | 1K 2K | 1K |
image_urls | array | max 8 |
The same schema is available from GET /v1/models/flux-2-pro.











