Kwaivgi Kling V3.0 Pro Motion Control
Playground
Try it on WavespeedAI!Kling 3.0 Standard Motion Control transfers motion from reference videos to animate still images. Upload a character image and a motion clip (dance, action, gesture), and the model extracts the movement to generate smooth, realistic video. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.
Features
Kling V3.0 Pro Motion Control
Kling V3.0 Pro Motion Control is the premium tier motion transfer model, applying movements from a driving video to a character image with superior quality and detail preservation. Upload a character image and a motion video — the model generates a high-fidelity video with the character mimicking the movements.
Why Choose This?
-
Pro-tier quality Superior visual fidelity and motion accuracy compared to the standard version.
-
Motion transfer Apply movements from any driving video to your character image.
-
Enhanced character preservation Better maintains the visual identity and fine details of your character.
-
Flexible orientation Choose whether the character follows the image or video orientation.
-
Audio preservation Option to keep the original video sound in the output.
-
Prompt Enhancer Built-in tool to automatically improve your descriptions.
Parameters
| Parameter | Required | Description |
|---|---|---|
| image | Yes | Character reference image (URL or upload) |
| video | Yes | Driving video with motion to transfer (URL or upload) |
| character_orientation | Yes | Orientation mode: “image” or “video” |
| prompt | No | Optional text to guide the motion transfer |
| negative_prompt | No | Elements to avoid in the output |
| keep_original_sound | No | Retain original video audio (default: enabled) |
How to Use
- Upload character image — provide the character you want to animate.
- Upload driving video — provide the video with the motion to transfer.
- Select character_orientation — choose “image” or “video”:
- image: Character follows the image’s orientation (max video: 10s)
- video: Character follows the video’s orientation (max video: 30s)
- Add prompt (optional) — describe any style or motion preferences.
- Add negative prompt (optional) — specify elements to avoid.
- Keep original sound (optional) — toggle to retain or remove audio.
- Run — submit and download your motion-controlled video.
Pricing
| Duration | Cost |
|---|---|
| ≤3 s | $0.504 |
| 5 s | $0.84 |
| 10 s | $1.68 |
| 20 s | $3.36 |
| 30 s (max) | $5.04 |
Billing Rules
- Minimum charge: 3 seconds
- Maximum duration: 30 seconds (or 10 seconds if character_orientation = “image”)
- Rate: $0.84 per 5 seconds
Best Use Cases
- Professional Production — High-quality character animation for commercial use.
- Virtual Presenters — Create premium talking or moving avatars.
- Dance & Performance Videos — Transfer complex dance moves with superior detail.
- Marketing & Advertising — Generate polished character videos for campaigns.
- Gaming & Entertainment — Animate game characters or mascots with pro-level quality.
Pro Tips
- Use clear, front-facing character images for best identity preservation.
- Ensure the driving video has clear, visible movements for accurate transfer.
- Choose “image” orientation when character pose should match the reference image.
- Choose “video” orientation for longer videos (up to 30s) or when following video perspective.
- Pro tier is recommended for final production work where quality is paramount.
- Use Std version for iterations, then switch to Pro for final renders.
Notes
- image, video, and character_orientation are all required fields.
- character_orientation = “image”: Maximum video duration is 10 seconds.
- character_orientation = “video”: Maximum video duration is 30 seconds.
- Minimum billing duration: 3 seconds.
- Ensure uploaded file URLs are publicly accessible.
Related Models
- Kling V3.0 Std Motion Control — Standard tier at lower cost.
- DreamActor V2 — ByteDance’s motion transfer model.
- Kling V3.0 Pro Image-to-Video — Pro image-to-video generation.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/kwaivgi/kling-v3.0-pro/motion-control" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"keep_original_sound": true
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| image | string | Yes | - | Supported image formats:.jpg /.jpeg /.png The size of the image file should not exceed 10MB, the width and height of the image should be no less than 300px, and the aspect ratio of the image should be between 1:2.5 and 2.5:1 | |
| video | string | Yes | - | Supported video formats:.mp4/.mov The size of the video file should not exceed 10MB, the width and height of the video should be no less than 300px, and the aspect ratio of the video should be between 1:2.5 and 2.5:1 | |
| character_orientation | string | Yes | - | image, video | The duration of the generated media in seconds. |
| prompt | string | No | - | The positive prompt for the generation. | |
| negative_prompt | string | No | - | The negative prompt for the generation. | |
| keep_original_sound | boolean | No | true | - | Whether to retain the original video sound |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated content (empty when status is not completed). |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |