FLUX 3 Video

Black ForestVideo

Black Forest Labs' FLUX 3 Video: video with native audio up to 20 seconds from text or keyframes, 720p and 1080p.

Our price
$0.18
per second

First request

import time, requests

BASE, KEY = "https://api.altrouter.ai/v1", "ar-..."
h = {"Authorization": f"Bearer {KEY}"}

# 1. запускаем рендер - ответ приходит сразу, со статусом queued
job = requests.post(f"{BASE}/videos", headers=h, json={
    "model": "flux-3-video",
    "prompt": "a drone shot over a coastline",
}).json()

# 2. опрашиваем, пока не готово (рендер занимает минуты)
while job["status"] in ("queued", "in_progress"):
    time.sleep(10)
    job = requests.get(f"{BASE}/videos/{job['id']}", headers=h).json()

print(job["url"])

The interface is OpenAI-compatible: in existing code only the base_url, the key and the model id change — nothing else.

FLUX 3 Video against its price neighbours

FLUX 3 Video and its closest neighbours by price: prices and parameters from the AltRouter AI catalog
ModelPriceUnitDiscount
Wan 3.0 PrimeAlibaba$0.14secondOpen
Vidu Q3Vidu$0.16secondOpen
FLUX 3 Videothis pageBlack Forest$0.18second
Veo 3.1 FastGoogle$0.97clip−19%Open
Seedance 2.5ByteDance$0.39second−17%Open

Prices and parameters come from the same catalog as the price above; this is not a benchmark, it is comparable billing terms.

Limits

Rendering is asynchronous: POST /v1/videos returns immediately in queued and you poll GET /v1/videos/{id}. Funds are held when the job is created and captured only for a completed render — a failed one is not charged. At $0.18 per second, length multiplies the bill directly.

There is no subscription: every successful request is billed at the price above, and a failed one is not billed at all. There is no markup over the vendor's official price. No Black Forest account of your own is needed, and no VPN: requests go to api.altrouter.ai and we make the upstream call.

Rate limiting is shared across models and counted per key: 600 requests per minute by default, and a 429 with retry-after: 60 above it. An individual key can get its own limit and a spending cap per day, week, month or lifetime in the dashboard.

Full limits and credits

When to pick FLUX 3 Video, and when a neighbour

The cheaper neighbour is Vidu Q3: $0.16 per second of video against $0.18 for FLUX 3 Video. On the same volume the bill comes out 1.1× smaller. It is the sensible pick where the task is repetitive and high-volume — labelling, classification, short templated answers — the kind of work where quality is bounded by the prompt rather than the model.

The dearer neighbour is Veo 3.1 Fast: $0.97 per clip, or 5.4× the price. On catalog parameters it offers the same capabilities and the same order of context, so the premium is only justified if FLUX 3 Video falls short on your own task.

Guessing is more expensive than checking: the table above is prices and parameters, not a benchmark, and it cannot tell you which model does better on your own prompt. Switching costs one line — the model id in the request changes, the base_url and the key stay — so running both on your own data takes minutes.

API

An asynchronous endpoint: the call returns immediately in queued, and you poll GET /v1/videos/{id} for the result. The finished mp4 is re-hosted on our CDN, and only a completed render is charged.

POST/v1/videos
Body parameters
modelstringrequired"flux-3-video"
The model id.
promptstringrequired
The text description of the scene.
secondsinteger
Clip length; `duration` is accepted as an alias.
imagestringURL or base64
A reference frame - its presence routes to the model’s image-to-video variant.
durationnumber5–20default 5
Clip length in seconds (affects price).
resolutionenum720p · 1080pdefault 720p
Resolution tier (affects price).
aspect_ratioenumauto · 21:9 · 2:1 · 16:9 · 4:3 · 1:1 · 3:4 · 9:16default auto
Output aspect ratio.
audiobooleandefault true
Response

The same object comes back from GET /v1/videos/{id}; the finished file is also served directly from GET /v1/videos/{id}/content.

idstring
The render id (vid_…) - this is what you poll.
statusenumqueued · in_progress · completed · failed
The state of the render.
urlstring
The finished mp4 on our CDN - appears at status: completed.
secondsinteger
The clip length the price was computed on.
errorobject
Why it failed at status: failed: { code, message }.
Example
cURLPythonJavaScriptJSON
curl https://api.altrouter.ai/v1/videos \
  -H "Authorization: Bearer ar-..." \
  -H "Content-Type: application/json" \
  -d '{
  "model": "flux-3-video",
  "prompt": "a drone shot over a rocky coastline at sunrise",
  "resolution": "720p",
  "aspect_ratio": "auto"
}'
Errors
400Invalid request.
401Missing or invalid API key.
402Insufficient credits, or the key’s spending cap is exhausted.
404Model not found.
429Rate limit exceeded.

More from Black Forest