FLUX 3 Max is a post-trained, latency-optimized variant of FLUX 3 Video, the video model family from Black Forest Labs, with stronger prompt adherence and better visual quality. In our test on 2026-10-20 a 5-second 720p text-to-video clip was ready 9 seconds after submission through the API. One model id, flux-3-max, covers three modes: a prompt alone is text-to-video; a first frame (plus an optional last frame) is image-to-video; up to 10 timed keyframes is keyframes-to-video. Any whole length from 5 to 20 seconds, 720p or 1080p, with synced audio generated by default. Billed per output second: 720p at $0.221/s and 1080p at $0.377/s, with a special price of $0.085/s (720p) and $0.145/s (1080p) until November 7, 2026.
| Resolution | Per second | 5s | 10s | 20s |
|---|---|---|---|---|
| 720p (default) | $0.221 | $1.105 | $2.21 | $4.42 |
| 1080p | $0.377 | $1.885 | $3.77 | $7.54 |
Billed by resolution for the seconds you request, any whole number from 5 to 20. Until 00:00 UTC on November 7, 2026 a special price of $0.085/s (720p) and $0.145/s (1080p) applies, then the prices above return automatically. Charged only on success, refunded on failure.
All requests carry the API key in the header:
Authorization: Bearer YOUR_API_KEYhttps://api.apimodels.app/v1/video/generations·GET/v1/video/generations?task_id=# Text-to-video (prompt only; aspect_ratio "auto" = 16:9)
curl -X POST https://api.apimodels.app/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-3-max",
"prompt": "A street drummer plays on an upturned bucket at dusk, crowd clapping along, warm streetlights, handheld camera",
"duration": 5,
"resolution": "720p"
}'
# Image-to-video: first frame (+ optional last frame); "auto" follows the first image
curl -X POST https://api.apimodels.app/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-3-max",
"prompt": "The camera pushes in slowly as the lanterns light up one by one",
"first_frame_url": "https://example.com/first.jpg",
"last_frame_url": "https://example.com/last.jpg",
"duration": 8,
"resolution": "1080p"
}'
# Keyframes-to-video: up to 10 images pinned to moments (time in seconds, or frame_index at 24 fps)
curl -X POST https://api.apimodels.app/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-3-max",
"prompt": "A paper airplane flies from the desk, out of the window and over the rooftops",
"keyframes": [
{ "image_url": "https://example.com/desk.jpg", "time": 0 },
{ "image_url": "https://example.com/window.jpg", "time": 4 },
{ "image_url": "https://example.com/rooftops.jpg", "frame_index": 240 }
],
"duration": 10,
"resolution": "720p",
"aspect_ratio": "16:9",
"generate_audio": false
}'
# Response (async — a task is created):
# { "code": 200, "msg": "success", "data": { "taskId": "clxxx", "state": "pending" } }
# Poll until completed (result files are kept 30 days)
curl "https://api.apimodels.app/v1/video/generations?task_id=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
# { "code": 200, "data": { "state": "completed",
# "resultUrls": ["https://r2.apimodels.app/videos/clxxx.mp4"] } }| Field | Required | Type | Description |
|---|---|---|---|
| model | Yes | string | flux-3-max |
| prompt | Yes | string | Describe subject, action, camera motion, lighting, and the sound you want. |
| duration | No | number | Any whole second from 5 to 20, default 5. Billed for this many seconds. |
| resolution | No | string | 720p ($0.221/s, default) or 1080p ($0.377/s). |
| aspect_ratio | No | string | auto (default), 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16. auto is 16:9 for text-to-video and follows the first image otherwise. |
| first_frame_url | No | string | First frame (public URL). image, image_url or a single-item images array are accepted too. |
| last_frame_url | No | string | Last frame, used together with first_frame_url. |
| keyframes | No | array | 1-10 items of { image_url, frame_index } or { image_url, time } (seconds). Cannot be combined with first / last frame. |
| generate_audio | No | boolean | Default true: synced sound is generated. false returns a silent video. |
| reasoning_level | No | string | high (default) or low (faster). |
| seed | No | number | Random seed; random when omitted. |
| callback_url | No | string | We POST the result to this URL on completion; omit it and poll the GET endpoint instead. |
Try it in the Playground
Per second of output on apimodels.app: 720p $0.221/s and 1080p $0.377/s, any whole length from 5 to 20 seconds, so a 5-second 720p clip is $1.105 and a 10-second 1080p clip $3.77. Until November 7, 2026 a special price of $0.085/s (720p) and $0.145/s (1080p) applies. Only successful generations are charged; failures are refunded.
POST https://api.apimodels.app/v1/video/generations with model flux-3-max and a prompt. Optional: duration 5-20 (default 5), resolution 720p or 1080p (default 720p), aspect_ratio (auto, 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16), generate_audio (default true), reasoning_level high or low, seed; first_frame_url and last_frame_url for image-to-video, or keyframes for keyframes-to-video. Poll GET /v1/video/generations?task_id=xxx or pass callback_url.
Pass keyframes as 1-10 items of { image_url, frame_index } or { image_url, time }. frame_index is the frame number in a 24 fps video, from 0 to duration × 24, and must be unique; time is in seconds and is converted to a frame index. The model generates the motion between the pinned images. Keyframes cannot be combined with first_frame_url or last_frame_url; sending both returns a 400.
In our test on 2026-10-20, a 5-second 720p text-to-video clip was ready 9 seconds after submission through the API, at 1280x704 and 24 fps with audio. The vendor's own benchmark puts a 10-second video at about 11 seconds.
Reference videos, reference audio, and more than one reference image outside keyframes. Requests carrying them get a clear 400 at create time instead of being silently dropped. Put a single image in first_frame_url and several images in keyframes.