FLUX 3 Video is Black Forest Labs' July 2026 video model. It generates 5 to 20 second clips with native audio muxed into the MP4, at hd or fhd (720p or 1080p), in eight aspect ratio options including auto and 21:9. It supports text-to-video, 1 to 10 ordered keyframes (start, end and evenly spaced middles), and continuation of an existing clip with its audio. Published capabilities include multilingual dialogue and in-frame text. Black Forest Labs also offers a low-cost draft mode, but Jantaris does not expose it yet.
Best for
- Story beats locked down with a sequence of keyframes
- Continuing a clip while keeping its soundtrack
- Cinematic 21:9 intros with a title in frame
- Clips with on-screen titles or signage
Prompting tips
- Order keyframes deliberately: the first is the start, the last is the end, and the rest are spaced evenly between them.
- For continuation, pass a public MP4 in
video_urland describe what happens next; continuation bills at a higher per-second rate. - Write dialogue in the language it should be spoken and say who speaks.
- Put in-frame text in quotes and describe where it appears.
FAQ
How much does the FLUX 3 Video API cost?
The rate is from $0.344 per second; continuing a clip from video_url bills at a higher per-second rate. Draft at hd and 5 seconds to test ideas cheaply. Failed generations are not charged.
How long can FLUX 3 Video clips be?
5 to 20 seconds per request, and you can continue an existing clip to go further.
Can I use the draft mode?
Not yet. Black Forest Labs offers low-cost drafts that can be finalized later, but Jantaris does not expose that mode. Test ideas at hd with a short duration instead.
How to call FLUX 3 Video 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-video",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "auto",
"resolution": "hd",
"duration": 5
}
}'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-video",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "auto",
"resolution": "hd",
"duration": 5
}
}).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-video",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "auto",
"resolution": "hd",
"duration": 5
}
}),
})).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 4:3 1:1 3:4 9:16 | auto |
resolution | string | hd fhd | hd |
duration | integer | 5-20 | 5 |
generate_audio | boolean | true | |
image_url | string | ||
end_image_url | string | ||
image_urls | array | max 10 | |
video_url | string |
The same schema is available from GET /v1/models/flux-3-video.









