Kwaivgi Kling Video O3 4k Reference To Video

Kwaivgi Kling Video O3 4k Reference To Video

Playground

Try it on WaveSpeedAI!

Kling Video O3 4K Reference-to-Video generates creative 4K videos using character, prop, or scene references from multiple viewpoints. Extracts subject features and creates new video content while maintaining identity consistency across frames. Supports multi-reference images, video guidance, and optional audio generation. Ready-to-use REST API, best performance, no cold starts, affordable pricing.

Features

Kling Video O3 4K Reference-to-Video generates premium 4K video from reference images with optional video guidance. Upload reference images to establish character identity and appearance, optionally provide a reference video for motion guidance, and describe the scene — the model produces cinematic 4K video with identity consistency.


Why Choose This?

  • 4K quality The highest visual fidelity and motion realism in the Kling family.

  • Multi-reference images Upload up to 7 reference images (or up to 4 with a reference video).

  • Video-guided generation Optional reference video for motion and scene guidance.

  • Keep original sound Preserve the audio from the reference video in the output.

  • Sound generation Optional AI-generated sound effects when no reference video is provided.

  • Multi-prompt and element list support Chain prompt segments for scene transitions and lock in specific visual elements for consistency throughout the clip.


Parameters

ParameterRequiredDescription
promptNoText description of the video scene, characters, and motion.
imagesNoReference images: up to 4 with video, up to 7 without.
soundNoGenerate AI audio (only when no reference video). Default: disabled.
aspect_ratioNoOutput ratio: 16:9 (default), 9:16, 1:1.
durationNoVideo length in seconds (3-15, default: 5).
shot_typeNoEditing mode: customize (default) or intelligent.
multi_promptNoAdditional prompt segments to guide scene transitions and progressions.
element_listNoList of visual elements to maintain consistency throughout the clip.

How to Use

  1. Write your prompt — describe the scene, characters, and action.
  2. Upload reference images — add character or scene references.
  3. Configure audio — keep original sound from the reference video, or enable AI sound generation.
  4. Select aspect ratio — match your target platform.
  5. Set duration — choose any length from 3 to 15 seconds.
  6. Select shot_type (optional) — use intelligent for automatic scope, or customize for manual control.
  7. Add multi-prompt segments (optional) — click Add Item to guide scene transitions.
  8. Add element list items (optional) — see Notes below for how to use elements effectively.
  9. Run — submit and download your video.

Pricing

$0.42 per second of video, regardless of whether audio is on or off.

DurationCost
3s$1.26
5s$2.10
10s$4.20
15s$6.30

Best Use Cases

  • Character Consistency — Generate videos with identity-consistent characters from reference images.
  • Video Remixing — Use a reference video for motion guidance with new characters or elements.
  • Marketing & Ads — Create promotional videos featuring specific people or products.
  • Storytelling — Produce narrative scenes with consistent character appearance across clips.
  • Long-Form Scenes — Up to 15 seconds for extended scene development.

Pro Tips

  • Use multiple reference images from different angles for better identity preservation.
  • When using a reference video, the image limit is 4; without a video, you can use up to 7.
  • Enable keep_original_sound to preserve audio from your reference video.
  • Sound generation is only available when no reference video is provided.
  • Use shorter durations (3-5s) for testing, longer (10-15s) for final production.
  • Match aspect ratio to your platform: 16:9 for YouTube, 9:16 for TikTok and Reels, 1:1 for Instagram.
  • Use multi_prompt to build smooth narrative progressions across the clip.

Notes

  • All parameters are optional.
  • Duration range: 3 to 15 seconds.
  • Audio does not affect pricing — $0.42 per second regardless.
  • Reference images limit: up to 4 with video, up to 7 without.
  • When a reference video is provided, sound generation is replaced by keep_original_sound.
  • Using element_list: First use Kling Elements to generate your element and note its name and ID. Then simply write the element name naturally in your prompt, and enter the corresponding element ID in the element_list field.
  • Ensure uploaded image and video URLs are publicly accessible.

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'
{
  "sound": false,
  "aspect_ratio": "16:9",
  "duration": 5,
  "shot_type": "customize"
}
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/reference-to-video" \
  -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=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 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) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringNo-The positive prompt for the generation.
imagesarray<string>No-0 ~ 7 itemsReference images. With a reference video: image elements ≤ 4; without a reference video: ≤ 7
soundbooleanNofalse-Whether to generate audio for the video.
aspect_ratiostringNo16:916:9, 9:16, 1:1The aspect ratio of the generated video.
durationintegerNo53, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15The duration of the generated media in seconds (3-15).
shot_typestringNocustomizecustomize, intelligentShot type for the generation.
multi_promptarray<object>No-0 ~ 6 itemsList of multi-prompt elements for the generation.
element_listarray<object>No-0 ~ 3 itemsElement reference list.

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.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
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.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
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.