Black Forest Labs Flux 3 Video Extend Draft API Documentation

Black Forest Labs Flux 3 Video Extend Draft API Documentation

Playground

Try it on WaveSpeedAI!

FLUX 3 Video Extend Draft quickly continues a required input video into a draft clip with prompt-guided next-scene motion, optional synchronized audio, and flexible 5-20 second duration for rapid iteration.

Features

FLUX 3 Draft Video Extend quickly continues a required input video into a draft extension guided by your prompt. Use it to test what should happen next, how the camera should move, and how the visual style should continue before moving to a final-quality workflow.


Why Choose This?

  • Video extension draft generation
    Continue an existing video with a prompt-guided draft extension.

  • Fast continuation testing
    Test next-scene action, visual continuity, subject behavior, camera movement, pacing, and atmosphere.

  • Prompt-guided scene development
    Describe how the video should continue after the source clip ends.

  • Optional synchronized audio
    Generate matching audio for early ambience, effects, music, or dialogue tests.

  • Flexible duration
    Choose a draft extension duration from 5 to 20 seconds.

  • Multiple aspect ratios
    Supports landscape, portrait, square, and cinematic formats.


Parameters

ParameterRequiredDescription
promptYesDescribe the next action, scene development, camera movement, mood, lighting, and visual continuity.
videoYesInput MP4 video used as the starting point. The source must be under 50 MB and under 15 seconds.
aspect_ratioNoOutput aspect ratio. Options: 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, or 9:16.
durationNoDuration of the draft extension in seconds. Range: 5–20. Default: 5.
generate_audioNoGenerate synchronized audio for the draft extension. Default: true.

How to Use

  1. Upload the source video — Provide an MP4 video under 50 MB and under 15 seconds.
  2. Write the prompt — Describe the next event, action, camera movement, lighting, mood, and continuity direction.
  3. Choose aspect ratio — Select the output format that matches your target use case.
  4. Set duration — Choose a draft extension duration from 5 to 20 seconds.
  5. Configure audio optional — Enable generate_audio when you want to test ambience, effects, music, or dialogue.
  6. Submit — Generate the draft continuation and review the extended result.

Pricing

Pricing is based on billed extension duration.

Billed duration is rounded up to the next whole second and capped at 20 seconds. Audio generation does not add a separate charge.

Billing UnitPrice
Per 5s$0.60
Per second$0.12

Example Costs

DurationBilled DurationCost
5s5s$0.60
10s10s$1.20
15s15s$1.80
20s20s$2.40

Best Use Cases

  • Next-scene testing — Explore different continuations after an existing clip ends.
  • Alternative endings — Generate multiple draft endings from the same source video.
  • Product demo extension — Continue product motion, camera movement, or feature reveals.
  • Character action continuation — Extend character movement, gestures, reactions, or performance.
  • Advertising drafts — Test campaign ideas, transitions, and pacing from existing footage.
  • Social video concepts — Extend short clips into draft vertical, square, or widescreen content.

Pro Tips

  • Begin with the next visible action instead of repeating the entire source video.
  • State continuity requirements such as lighting, subject appearance, environment, camera movement, and mood.
  • Describe what should happen immediately after the source video ends.
  • Keep the draft prompt focused on one clear continuation event.
  • Use shorter durations for quick tests and longer durations when the continuation needs more time to develop.
  • Use a clean source video with a clear ending moment for smoother continuation.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "prompt": "A cinematic ocean wave at sunrise, highly detailed",
  "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
  "aspect_ratio": "21:9",
  "duration": 5,
  "generate_audio": true
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/black-forest-labs/flux-3/video-extend-draft" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-The text prompt describing the video you want to generate.
videostringYes-URL of the input video. MP4, under 50 MB and under 15 seconds.
aspect_ratiostringNo-21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16The aspect ratio of the generated media.
durationintegerNo55 ~ 20Video length in seconds (5-20).
generate_audiobooleanNotrue-Whether to generate audio for the video.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.statusstringTask status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses.
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.statusstringStatus: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.