WAN 3.0 is LIVE — 30s in one shot | Try in Video Generator →

kwaivgi/

Kling O3 Omni 4K Video Edit edits input videos in 4K with natural-language instructions and optional image references, supporting prompt-guided video modification, visual style updates, scene refinements, motion control, and high-quality cinematic editing. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

video-to-video
Input
Enable Safety Checker

Idle

$2.31per run

Next:

ExamplesView all

Transform the video into a dark Western fantasy scene while preserving the woman’s identity, facial features, body movement, walking pace, and original camera motion. Turn the vintage hotel corridor into the interior of an ancient gothic castle, with tall stone arches, candlelit walls, dark wooden doors, drifting mist near the floor, and moonlight entering through narrow windows. Replace her modern black coat with an elegant dark green medieval traveling cloak with subtle silver embroidery, leather boots, and a fitted fantasy-style outfit underneath. Transform the red envelope into an old sealed parchment letter with a glowing crimson wax seal. Keep her original walking and turning actions unchanged. Maintain the same composition and camera tracking, but give the entire scene a mysterious high-end Western fantasy movie aesthetic, realistic materials, cinematic candlelight, deep shadows, subtle atmospheric fog.

Related Models

README

Kling O3 Omni 4K Video Edit

Kling O3 Omni 4K Video Edit edits an existing video in 4K using natural-language instructions. Provide an input video and describe the changes you want to apply, then optionally add image references or Kling element IDs to guide subject, object, scene, or style edits.

Why Choose This?

  • Prompt-guided video editing
    Describe the desired changes in natural language instead of building a manual editing pipeline.

  • Context-aware video edits
    Use the input video as the base context while applying subject, object, scene, or style changes.

  • 4K video output
    Generate high-resolution edited videos for polished delivery workflows.

  • Image reference support
    Add optional image references to guide replacement objects, scene details, or visual style.

  • Element reference support
    Use element_list to reference reusable Kling elements by element_id.

  • Original sound preservation
    Keep the original input audio with keep_original_sound.

Parameters

ParameterRequiredDescription
promptYesDescribe the changes to apply to the input video.
videoYesInput video to edit.
imagesNoOptional images that guide an element, scene, or style edit. Supports up to 4 image URLs.
keep_original_soundNoKeep the original audio from the input video. Default: true.
element_listNoElement reference list. Supports up to 3 items. Each item uses an element_id returned by kwaivgi/kling-elements or kwaivgi/kling-elements-advanced.

How to Use

  1. Upload the input video — Provide the video you want to edit.
  2. Write your edit prompt — Describe what should change and what should remain consistent.
  3. Add image references optional — Use images when replacement objects, scene details, or style references are needed.
  4. Add element references optional — Use element_list when you want to guide the edit with existing Kling element IDs.
  5. Configure sound optional — Keep keep_original_sound enabled when the original video audio should be preserved.
  6. Submit — Generate the final 4K edited video.

Pricing

Pricing is based on input video duration.

Input duration is rounded up to the next whole second, with a minimum billed duration of 3 seconds and a maximum billed duration of 16 seconds.

Billing UnitPrice
Per second$0.462
Per 5 seconds$2.31

Example Costs

Billed DurationCost
3 seconds$1.386
5 seconds$2.31
10 seconds$4.62
16 seconds$7.392

images, element_list, prompt, and keep_original_sound do not add separate charges in the current pricing formula.

Best Use Cases

  • Video restyling — Change the visual style, tone, lighting, or atmosphere of an existing clip.
  • Subject and object edits — Modify characters, products, props, or scene elements while preserving video context.
  • Element-guided editing — Use existing Kling element IDs for stronger subject or object guidance.
  • Commercial video edits — Refine product clips, ads, campaign assets, and social media videos.
  • 4K creative delivery — Produce high-resolution edited videos for polished output.
  • Reference-guided transformations — Combine prompt instructions, image references, and element IDs for more controlled edits.

Pro Tips

  • Keep edit prompts focused on the specific change you want.
  • Describe what should remain unchanged, especially subject motion, camera movement, background, or lighting.
  • Use image references when subject, object, or style consistency matters.
  • Use element_list when you already have reusable Kling element IDs.
  • Keep element_list focused; too many unrelated elements can reduce edit control.
  • Enable keep_original_sound when the input video's audio should be retained.
  • Use clean source videos with clear subjects and stable motion for better edit results.

Notes

  • prompt and video are required.
  • images supports up to 4 reference images.
  • element_list supports up to 3 element references.
  • Each element_list item must include an element_id.
  • element_id should come from kwaivgi/kling-elements or kwaivgi/kling-elements-advanced.
  • Input duration is billed from 3 to 16 seconds.
  • Edit mode uses the input video as the base context, and output duration follows the input video.
  • Native generated audio is unavailable with a base video, but original input audio can be retained.

Related Models

Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

Kling Video O3 4k Video Edit API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/kwaivgi/kling-video-o3-4k/video-edit with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Kling Video O3 4k Video Edit below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
    "keep_original_sound": true
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/kwaivgi/kling-video-o3-4k/video-edit" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; 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 has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  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
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/kwaivgi/kling-video-o3-4k/video-edit";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "prompt": "A cinematic shot of a city at sunset, soft golden light",
        "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
        "keep_original_sound": true
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
    "keep_original_sound": True
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/kwaivgi/kling-video-o3-4k/video-edit", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout", "deleted"}:
        raise RuntimeError(result)
    time.sleep(2)

Kling Video O3 4k Video Edit API — Frequently asked questions

What is the Kling Video O3 4k Video Edit API?

Kling Video O3 4k Video Edit is a Kuaishou model for video editing, exposed as a REST API on WaveSpeedAI. Kling O3 Omni 4K Video Edit edits input videos in 4K with natural-language instructions and optional image references, supporting prompt-guided video modification, visual style updates, scene refinements, motion control, and high-quality cinematic editing. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Kling Video O3 4k Video Edit API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/kwaivgi/kwaivgi-kling-video-o3-4k-video-edit.

How much does Kling Video O3 4k Video Edit cost per run?

Kling Video O3 4k Video Edit starts at $2.31 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Kling Video O3 4k Video Edit accept?

Key inputs: `prompt`, `images`, `video`, `element_list`, `keep_original_sound`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/kwaivgi/kwaivgi-kling-video-o3-4k-video-edit.

How do I get started with the Kling Video O3 4k Video Edit API?

Sign up for a free WaveSpeedAI account to claim starter credits, copy your API key from /accesskey, then call the endpoint shown in the API tab of the playground. The playground also auto-generates a code sample in Python, JavaScript, or cURL for the parameters you've set.

Can I use Kling Video O3 4k Video Edit outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (Kuaishou). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Kling O3 Omni 4K Video Edit API on WaveSpeedAI