Kwaivgi Kling V3 Turbo Pro Text To Video API Documentation

Kwaivgi Kling V3 Turbo Pro Text To Video API Documentation

Playground

Try it on WaveSpeedAI!

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

Features

Kling V3 Turbo Pro Text-to-Video generates high quality 1080p videos from text prompts. It supports both single-prompt generation and multi-shot storyboard generation with per-shot durations.


Why Choose This?

  • High quality 1080p video generation
    Create polished pro-tier videos directly from text prompts.

  • Fast turbo inference
    Use the turbo version for faster generation while keeping strong visual quality.

  • Single prompt or multi-shot storyboard
    Generate a complete video from one prompt, or use multi_prompt to define multiple shots.

  • Per-shot duration control
    Set each storyboard segment duration when using multi_prompt.

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


Parameters

ParameterRequiredDescription
promptNoText prompt describing the video to generate. Mutually exclusive with multi_prompt.
multi_promptNoMulti-shot storyboard. Each item includes a prompt and duration. Mutually exclusive with prompt.
aspect_ratioNoOutput aspect ratio. Options: 16:9, 9:16, 1:1. Default: 16:9.
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. Enter a prompt — Describe the scene, subject, motion, and style you want.
  2. Or create a storyboard — Use multi_prompt to define multiple shots with individual durations.
  3. Choose aspect ratio — Select 16:9, 9:16, or 1:1.
  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 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

  • Text-to-video creation — Turn written concepts into finished video clips.
  • Storyboard generation — Build multi-shot videos with separate prompts per segment.
  • Advertising concepts — Prototype product, brand, or social video ideas.
  • Cinematic scene generation — Create visually rich scenes with controlled aspect ratio.
  • Creative iteration — Test variations of motion, camera direction, and scene style.

Pro Tips

  • Use clear subject, action, camera, and style details in the prompt.
  • Use multi_prompt when you need multiple shots instead of one continuous prompt.
  • Make the multi_prompt shot durations sum exactly to the selected total duration.
  • Use consistent wording across storyboard segments for better visual continuity.
  • Choose the aspect ratio before writing composition-heavy prompts.

Notes

  • Provide either prompt or multi_prompt.
  • 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'
{
  "aspect_ratio": "16:9",
  "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/text-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
promptstringNo-Text prompt to generate the video with. 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.
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, 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.