Kwaivgi Kling Video O3 4k Image To Video
Playground
Try it on WavespeedAI!Kling Video O3 4K Image-to-Video transforms static images into dynamic cinematic 4K videos. Maintains subject consistency while adding natural motion, physics simulation, and seamless scene dynamics. Supports start/end frame control, multi-prompt, and optional audio generation. Ready-to-use REST API, best performance, no coldstarts, affordable pricing.
Features
Kling Video O3 4K Image-to-Video
Kling Video O3 4K Image-to-Video is Kuaishou’s flagship image animation model. Upload a reference image, describe the motion, and the model renders a cinematic 4K video with physics-aware movement, temporal consistency, and optional synchronized audio.
- Need to generate from text only? Try Kling Video O3 4K Text-to-Video
- Looking for a lower-cost option? Try Kling Video 2.1 Image-to-Video
Why Choose This?
-
Image-grounded generation Start from a reference image for precise visual control over characters, environments, and composition.
-
Start and end frame control Provide both a starting image and an end image to guide the motion arc and define exactly where the clip begins and finishes.
-
Physics-aware motion Understands real-world dynamics — fluid movement, fabric, hair, fire, and object interactions behave naturally throughout every frame.
-
Synchronized audio generation Enable the sound option to generate matching ambient audio and atmosphere alongside your video.
-
Multi-prompt support Chain multiple prompt segments to guide scene transitions and narrative flow within a single generation.
-
Element list control Lock in specific visual elements — characters, objects, or styles — to maintain consistency across the entire clip.
Parameters
| Parameter | Required | Description |
|---|---|---|
| image | Yes | Starting reference image to animate (URL or file upload). |
| prompt | Yes | Text description of the motion, camera style, lighting, and atmosphere. |
| end_image | No | Optional ending frame image to define where the clip finishes. |
| duration | No | Clip length in seconds (3-15, default: 5). |
| sound | No | Whether to generate synchronized audio for the video. Default: off. |
| shot_type | No | Editing mode: customize (default) or intelligent. |
| multi_prompt | No | Additional prompt segments to guide scene transitions and progressions. |
| element_list | No | List of visual elements to maintain consistency throughout the clip. |
How to Use
- Upload your image — provide the starting reference image via URL or drag-and-drop.
- Write your prompt — describe the motion, camera movement, lighting, and mood.
- Add an end image (optional) — upload a second image to define the final frame of the clip.
- Set duration — choose 3 to 15 seconds.
- Enable sound (optional) — check to generate matching audio alongside the video.
- Select shot_type (optional) — use intelligent for automatic scope, or customize for manual control.
- Add multi-prompt segments (optional) — click Add Item to guide scene transitions.
- Add element list items (optional) — see Notes below for how to use elements effectively.
- Submit — generate, preview, and download your video.
Pricing
$0.42 per second of video, regardless of whether audio is on or off.
| Duration | Cost |
|---|---|
| 3s | $1.26 |
| 5s | $2.10 |
| 10s | $4.20 |
| 15s | $6.30 |
Best Use Cases
- Cinematic Photo Animation — Bring still photography to life with natural, physics-accurate motion in 4K.
- Commercial & Brand Video — Animate product images and campaign visuals with professional-grade output.
- Social Media Content — Generate portrait or square clips from reference images for maximum engagement.
- Controlled Scene Generation — Use start and end frames to define precise visual transitions for storytelling.
- Immersive Audio-Visual Content — Combine image animation with sound generation for fully atmospheric clips.
Pro Tips
- Use a high-quality, well-composed source image — the model preserves and extends what it starts with.
- Providing an end image significantly improves motion direction and narrative coherence.
- Be specific in your prompt about camera movement (pan, zoom, dolly) and subject behavior.
- Enable sound for scenes with fire, water, crowds, or ambient environments for a much more immersive result.
- Start with a short duration to validate motion before committing to a longer run.
Notes
- Both image and prompt are required fields; all other parameters are optional.
- Duration range: 3 to 15 seconds.
- Audio does not affect pricing — $0.42 per second regardless.
- Ensure image URLs are publicly accessible.
- 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.
- Please follow Kuaishou’s content usage policies when crafting prompts.
Related Models
- Kling Video O3 4K Text-to-Video — Generate cinematic 4K video from text prompts without a reference image.
- Kling Video O3 4K Reference-to-Video — Generate video from multiple reference images with identity consistency.
- Kling Elements — Create reusable visual elements for consistent character and object rendering.
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-video-o3-4k/image-to-video" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"duration": 5,
"sound": false,
"shot_type": "customize"
}'
# 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 | - | The first frame image URL. | |
| prompt | string | No | - | The positive prompt for the generation. | |
| end_image | string | No | - | - | The last frame image URL. |
| duration | integer | No | 5 | 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 | The duration of the generated media in seconds (3-15). |
| sound | boolean | No | false | - | Whether to generate audio for the video. |
| shot_type | string | No | customize | customize, intelligent | Shot type for the generation. |
| multi_prompt | array | No | - | - | List of multi-prompt elements for the generation. |
| element_list | array | No | - | - | Element reference list. |
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 |