Black Forest Labs Flux 3 Video Edit API Documentation

Black Forest Labs Flux 3 Video Edit API Documentation

Playground

Try it on WaveSpeedAI!

FLUX 3 Video Edit applies prompt-guided changes to existing videos while preserving motion, timing, and framing, supporting precise video modification, visual style updates, scene refinements, creative edits, ads, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

FLUX 3 Video Edit makes targeted changes to an existing video using natural-language instructions. Change an object’s appearance, adjust the environment, or restyle a scene while preserving the source motion, timing, and framing.


Why Choose This?

  • Prompt-guided video editing
    Edit an existing video by describing the changes you want in natural language.

  • Motion and timing preservation
    Keep the source video’s motion, pacing, camera movement, and framing while applying visual changes.

  • Targeted visual changes
    Modify objects, environments, style, lighting, or scene details without generating a new clip from scratch.

  • Simple 720p workflow
    Upload a short MP4 video, write an edit prompt, and receive a 720p edited video.

  • Focused short-clip editing
    Designed for short video edits where the original timing and structure should remain consistent.


Parameters

ParameterRequiredDescription
videoYesSource MP4 video to edit. The input must be under 50 MB and under 15 seconds.
promptYesNatural-language edit instruction describing the changes to apply. Maximum length: 4096 characters.

The output is a 720p edited video. This endpoint does not expose duration, resolution, aspect ratio, audio-generation, or seed controls. Output timing follows the source clip.


How to Use

  1. Upload a source video — Provide a short MP4 video under 50 MB and under 15 seconds.
  2. Write an edit prompt — Describe the specific changes you want to apply.
  3. Submit — Run the video edit request.
  4. Retrieve the output — Get the edited video URL from the prediction outputs.

Pricing

Pricing is based on input video duration.

The price is $0.03 per billable second for 720p video.

Input DurationBillable SecondsCost
1s1$0.03
5s5$0.15
5.1s6$0.18
10s10$0.30
14.5s15$0.45

prompt does not add a separate charge. Billing is based on input duration, not a post-generation measurement of the output.


Best Use Cases

  • Object appearance edits — Change the look, material, color, or style of objects in a video.
  • Environment changes — Adjust backgrounds, locations, atmosphere, or scene details.
  • Style transfer — Restyle a clip while preserving its original motion and timing.
  • Short-form creative edits — Modify short clips for social media, ads, concepts, or campaign assets.
  • Prompt-based iteration — Test different edit directions on the same source video.

Pro Tips

  • Describe what should change and what should stay the same.
  • Use clear source footage with the motion and framing you want to preserve.
  • Keep the prompt focused on one main edit direction for more stable results.
  • Mention lighting, background, object appearance, and style when they matter.
  • Use short clips for faster iteration and easier review.
  • This endpoint edits a supplied clip; it does not extend the duration or expose output resolution controls.

Notes

  • video and prompt are required.
  • The source video must be an MP4 file under 50 MB and under 15 seconds.
  • The output is a 720p edited video.
  • Output timing follows the source clip.
  • The endpoint does not expose duration, resolution, aspect ratio, audio-generation, or seed controls.
  • The billing cap does not make videos above the input duration limit supported.

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'
{
  "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
  "prompt": "A cinematic ocean wave at sunrise, highly detailed"
}
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-edit" \
  -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
videostringYes-URL of the input MP4 video. The video must be under 50 MB and under 15 seconds.
promptstringYes-Describe how to edit the input video. The clip is re-rendered while preserving its motion, timing, and framing. Maximum 4096 characters.

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.