FLUX 3 ships today as two models: FLUX 3 Image for stills and FLUX 3 Video for motion, both behind an API. This article maps the live endpoints, your first request, the draft workflow, image API, pricing, and limits.
Two paths exist: the official BFL API at bfl.ai hosts the image and video endpoint under one key, while fal.ai wraps the video endpoints with a draft mode and a low-cost enhance step. Our FLUX 3 guide covers the model family.
Where the API lives today
FLUX 3 is reachable through four routes; the one you pick changes fields and billing. The BFL API is the only host of the image endpoint; fal.ai adds the draft mode and OpenRouter with Vercel AI Gateway list the image model.
| Path | Endpoint | Status |
|---|---|---|
| BFL official image | POST https://api.bfl.ai/v1/flux-3-image | Live since 2026-10-01 |
| BFL official video | POST /v1/flux-3-video | Preview since 2026-08-04 |
| fal.ai video | blackforestlabs/flux-3/text-to-video, image-to-video, draft, draft-enhance | Live |
| OpenRouter / Vercel AI Gateway | image model | Listed |

Your API keys
On BFL you sign up at dashboard.bfl.ai, add credits, and create a key shown only once; on fal you export a FAL_KEY from dashboard.fal.ai. Both meter against the key, so a leak bills you until revoked. If you used FLUX.2, the BFL flow matches our FLUX.2 API getting started guide.
Your first request on fal
A direct POST to the fal.run text-to-video endpoint is the fastest start:
curl --request POST \
--url https://fal.run/blackforestlabs/flux-3/text-to-video \
--header "Authorization: Key $FAL_KEY" \
--header "Content-Type: application/json" \
--data '{
"prompt": "A red panda walks along a mossy log in a sunlit forest, one continuous unbroken shot. Ambient birdsong and rustling leaves."
}'
The response carries video.url and seed; record the seed for reproducibility.
| Parameter | Default | Allowed values | Description |
|---|---|---|---|
prompt | — | required | The scene you want, in one continuous shot. |
aspect_ratio | auto | auto, 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 | Canvas shape; auto follows the prompt. |
resolution | 720p | 720p, 1080p | Output resolution. |
duration | auto | auto or integer 5–20 | Length in seconds. |
generate_audio | true | boolean | Whether ambient sound is synthesized. |
safety_tolerance | 2 | 0–4 | Lower is stricter filtering. |
These six fields cover every text-to-video call. aspect_ratio defaults to auto, resolution to 720p, duration to auto, generate_audio to true, and safety_tolerance to 2; the client polls to completion for you.
Draft workflow: preview cheap, enhance once
Full-quality video is costly, so fal splits it in two: the draft endpoint renders a 720p preview at $0.06 per second and returns a draft_cache package you keep, then you enhance only the takes worth finishing. The official Python client makes the handoff clean:
import fal_client
def on_queue_update(update):
if isinstance(update, fal_client.InProgress):
for log in update.logs:
print(log["message"])
# Step 1 — generate a cheap draft and keep its cache package
draft = fal_client.subscribe(
"blackforestlabs/flux-3/text-to-video/draft",
arguments={
"prompt": "A red panda walks along a mossy log in a sunlit forest, one continuous unbroken shot. Ambient birdsong and rustling leaves.",
},
with_logs=True,
on_queue_update=on_queue_update,
)
print(draft)
# Step 2 — enhance only the draft you keep, same seed, same motion
result = fal_client.subscribe(
"blackforestlabs/flux-3/draft-enhance",
arguments={
"draft_cache_url": draft["draft_cache"]["url"],
},
with_logs=True,
on_queue_update=on_queue_update,
)
print(result)
Enhance costs $0.29 per second at 1080p with no separate audio charge; it consumes draft_cache so the same seed and motion continue. Pass the cache to draft_cache_url.
Previewing three ten-second drafts costs 3 × $0.60 = $1.80, plus $2.90 to enhance one, for $4.70 total, against $8.70 for three full 1080p clips. fal also grants five free text-to-video draft runs per day.
Image API: endpoint, elements, references
The image API lives only at POST https://api.bfl.ai/v1/flux-3-image; one endpoint does both. For fixed regions you append a JSON element table:
[
{
"id": "background_1",
"bbox": [0, 0, 1000, 1000],
"desc": "A flat field of warm cream with a subtle paper texture."
},
{
"id": "bottle_1",
"bbox": [300, 380, 850, 620],
"desc": "A tall frosted glass bottle standing upright."
},
{
"id": "plaque_1",
"bbox": [60, 60, 200, 940],
"desc": "A narrow vertical nameplate along the left edge."
}
]
Each entry has id, bbox, and desc. The bbox order is [top, left, bottom, right] on a 0–1000 grid that stretches with the canvas, so the same numbers shift across resolutions; you cite an element in the prompt by its id. Editing accepts one to ten reference images, URLs or base64 capped at 16MP, numbered ref_image_0 upward, and they are not billed. Tiers run 768sq to 4K, and aspect_ratio defaults to auto following the first reference. Our FLUX 3 vs FLUX 2 breakdown compares the generations; use the BFL-documented request body.
Pricing: per image and per second
Image generation is billed per picture; prompts and references are free, and failed or blocked requests cost nothing.
| Resolution | Price per image |
|---|---|
| 768² | $0.041 |
| 1K | $0.048 |
| 1.5K | $0.07 |
| 2K | $0.10 |
| 4K | $0.607 |
Video is billed per second by mode and resolution; t2v and i2v share one table, while v2v and draft have their own lines.
| Mode | Resolution | Price per second |
|---|---|---|
| t2v / i2v | 720p (hd) | $0.17 |
| t2v / i2v | 1080p (fhd) | $0.29 |
| t2v / i2v | qhd | $0.40 |
| t2v / i2v | uhd | $0.80 |
| v2v | — | $0.41–$0.95 |
| draft | 720p (hd) | $0.06 |
BFL discounts image generation 50% until 2026-10-08 15:00 UTC, after which prices return to the list rates above. Budget launches before that cutoff, or expect the image table to double.
Limits and open questions
Video carries three limits: five to twenty integer seconds, so fractional lengths are rejected; multiple coordinated actions in one shot are hard, so split scenes; low-motion clips may return little audio, so name sounds in the prompt. Image edits leave outside pixels mostly unchanged, but elements can spill past their box. Unpublished: the fal image billing basis, parameter counts, and checkpoint size are not shared; confirm rates on the official pricing page.
Frequently asked questions
Which endpoint should I use for images? The official BFL API at api.bfl.ai is the primary image path, and OpenRouter or the Vercel AI Gateway also list the image model. The fal side publishes video first, so check fal’s image listing for current availability rather than assuming parity with BFL.
How much does a 10-second video cost? At 720p a ten-second clip is 10 × $0.17 = $1.70, and at 1080p it is 10 × $0.29 = $2.90. Previewed as a draft first, the ten-second draft is only 10 × $0.06 = $0.60 before you enhance.
Is there a free tier? fal grants five text-to-video draft runs per day to every logged-in user. BFL has no free API tier, so every image and video call there is billed.
Can I self-host FLUX 3? FLUX 3 Dev has not been released, so there is no official local build yet. If you want a local FLUX model now, FLUX.2 [dev] runs today and our local ComfyUI guide walks through setup.
FLUX 3 gives you a working image and video API today through BFL and fal.ai, and the draft workflow makes video affordable. Start with one text-to-video call, preview with drafts, and enhance only the takes you keep.