Kwaivgi Kling V3 Turbo Pro Image To Video API Documentation

Kwaivgi Kling V3 Turbo Pro Image To Video API Documentation

Playground

Try it on WaveSpeedAI!

Kling V3 Turbo Pro converts first-frame images and optional prompts into high quality 1080P videos with fast pro-tier inference and multi-shot storyboard support. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Kling V3 Turbo Pro Image-to-Video generates high quality 1080p videos from a first-frame reference image. It supports optional text guidance and multi-shot storyboard generation.


Why Choose This?

  • First-frame image animation
    Turn a still image into a high quality video using the image as the starting frame.

  • High quality 1080p output
    Use the pro-tier model for stronger detail and visual quality.

  • Optional prompt guidance
    Add a prompt to guide motion, camera movement, and scene behavior.

  • Multi-shot storyboard support
    Use multi_prompt to define multiple prompted segments with separate durations.

  • Standard video output
    The generated video is returned as a URL in the standard WaveSpeed prediction response.


Parameters

ParameterRequiredDescription
imageYesFirst-frame reference image URL. JPG and PNG images work best.
promptNoOptional text prompt to guide the generated video. Mutually exclusive with multi_prompt.
multi_promptNoMulti-shot storyboard. Each item includes a prompt and duration. Mutually exclusive with prompt.
durationNoTotal video duration in seconds. Options: 3 to 15. Default: 5. For multi_prompt, shot durations must sum to this value.

How to Use

  1. Upload an image — Provide the first-frame reference image.
  2. Enter a prompt (optional) — Describe the desired motion, camera movement, or scene change.
  3. Or create a storyboard — Use multi_prompt to define multiple prompted segments.
  4. Set duration — Choose the total video duration. For multi_prompt, set each shot duration so their sum equals the selected total.
  5. Submit — Generate the animated video output.

Output

Returns generated video URL(s) in the standard WaveSpeed prediction response.

The generated video is returned as MP4 video.


Pricing

Pricing is $0.14 per second.

WaveSpeed bills by the selected total duration. For multi_prompt, shot durations must sum to that total; they are not added again for billing.

Generated DurationPrice
3s$0.42
5s$0.70
10s$1.40
15s$2.10

Billing Rules

  • Billing is based on generated video duration.
  • The duration parameter is the total generated video duration.
  • For multi_prompt, shot durations must sum to duration; billing does not add them a second time.
  • Each second costs $0.14.

Best Use Cases

  • Image animation — Animate still images into short video clips.
  • Product motion concepts — Create motion previews from product or object images.
  • Character and scene animation — Add movement to portraits, scenes, or illustrated frames.
  • Storyboard generation — Build multi-shot videos from one starting image.
  • Creative video prototyping — Quickly test image-driven video directions.

Pro Tips

  • Use a sharp, high quality image with a clear subject.
  • Add motion and camera details in the prompt for stronger control.
  • Use multi_prompt when you want multiple guided segments.
  • Make the multi_prompt shot durations sum exactly to the selected total duration.
  • Make sure the image URL is publicly accessible.

Notes

  • image is required.
  • prompt is optional.
  • prompt and multi_prompt are mutually exclusive.
  • duration is the total video duration for both single-prompt and multi_prompt generation.
  • multi_prompt supports per-shot durations.
  • For multi_prompt, the shot durations must sum exactly to the selected duration (3–15 seconds).

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'
{
  "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
  "duration": 5,
  "cfg_scale": 0.5
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/kwaivgi/kling-v3-turbo-pro/image-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="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
imagestringYes-First-frame reference image. Supported formats: .jpg/.jpeg/.png; max 50MB; min 300px per side; aspect ratio within 1:2.5 to 2.5:1.
promptstringNo-Optional text prompt to guide the video. Mutually exclusive with multi_prompt.
multi_promptarray<object>No-0 ~ 6 itemsMulti-shot storyboard. Shot durations must add up to duration. Mutually exclusive with prompt.
durationintegerNo53, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15Video length in seconds.
cfg_scalenumberNo0.50 ~ 1Flexibility in video generation; The higher the value, the lower the model's degree of flexibility, and the stronger the relevance to the user's prompt.

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.