FLUX 3 Video turns a prompt or a row of keyframes into a short clip that already has sound in the MP4. Black Forest Labs released it in July 2026. You can pin down a story beat by beat with up to ten frames, or hand it an existing clip and have it carry on, soundtrack included. Black Forest Labs lists multilingual dialogue and text inside the frame among its abilities.
What you can make
- A scene that follows a planned sequence of keyframes
- A longer piece built by continuing a clip and keeping its audio
- Wide 21:9 openers with a title visible in the shot
- Short clips with signs, captions or labels inside the frame
Settings that matter
duration: 5 to 20 seconds. Start at 5 while testing ideas.resolution:hd(720p, default) orfhd(1080p).aspect_ratio: auto, 21:9, 2:1, 16:9, 4:3, 1:1, 3:4 or 9:16.- Keyframes: up to 10 in order. The first opens the clip, the last ends it, the rest are spread evenly between.
video_url: a public MP4 to continue. Continuation is billed at a higher per-second rate.- Sound is on by default (
generate_audio). Write dialogue in the spoken language and say who talks.
Starter prompt
Night market in Bangkok, slow dolly forward between food
stalls, steam rising, a vendor says in Thai "two minutes",
neon sign reading "OPEN LATE" above, sizzling and chatterChange the place, the line of dialogue and the sign text; keep one camera move per clip.
Questions
What does a FLUX 3 Video clip cost?
The rate is from $0.344 per second, and continuing from video_url costs more per second. Draft at hd and 5 seconds. Failed clips cost $0.
Is the low-cost draft mode available?
Not on Kadraris. Black Forest Labs has a draft mode that can be finalized later, but it is not exposed here. Short hd tests do the same job.
How do I get past 20 seconds?
Generate up to 20 seconds, then pass that file as video_url and describe what happens next. For general tips, see how to make AI video.
FLUX 3 Video in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-3-video",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "auto",
"resolution": "hd",
"duration": 5
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "flux-3-video",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"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://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_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": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"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));
Input fields
| 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 |
Fetch this list as JSON with GET /v1/models/flux-3-video.























