Introduction
Kling 3.0 Image to video takes an opening frame (image_url) and a prompt describing what happens after it, and returns 3 to 15 seconds at 720p, 1080p or 4K. Set last_image_url to pin a closing frame as well, so the clip has to arrive somewhere specific rather than just start somewhere. Turn generate_audio on for dialogue and ambience generated with the picture.
Choose a Kling 3.0 mode by starting material
| What you have at the start | Mode |
|---|---|
| a written scene or script | Kling 3.0 Text to video |
| an opening frame, and optionally a closing one | Kling 3.0 Image to video (you are here) |
| a character photo and a driving clip | Kling 3.0 Motion Control |
Key features & highlights
An opening frame and, if you set it, a closing one
The clip starts on your image exactly as it is. Add last_image_url and Kling works toward that frame instead of an open ending - in our test of a fog-bound pier walk, the last frame of the clip matched the closing image almost exactly, red scarf and all.
The frame decides the look, the prompt decides the motion
Describe only the action, the camera and the sound - not the wardrobe or the setting, which the opening frame already fixes. Our forecourt-lightning example never redescribes the woman or the gas station from its frame; it only adds the lightning strike, her walk into the rain and the thunder.
Aspect ratio follows the frame
There is no separate aspect_ratio field here: the output takes the shape of your opening image, from a wide landscape to a tall portrait crop.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Describe only what happens after the opening frame - the action, the camera and, with sound on, the sound. at least 1 characters · at most 2500 characters |
negative_prompt | No | Things to keep out of the clip - objects, looks or motion you do not want - up to 2,500 characters. Optional; it does not change the price. at most 2500 characters |
image_url | Yes | Opening frame. The clip starts from this image and takes its aspect ratio from it. |
last_image_url | No | Optional closing frame. On long clips the middle can wander more than the ends stay fixed. |
resolution | No | 720p, 1080p or 4K. Higher tiers cost more per second. |
generate_audio | No | Adds a generated soundtrack to the same clip. At 720p and 1080p it costs more per second than a silent run; at 4K the price is the same either way. Default: |
duration_seconds | No | Whole seconds, 3 to 15. Drives the price. |
shot_type | No | single keeps one setup for most of the run but can still cut on its own; multi lets Kling cut its own multi-shot edit. |
multi_prompt | No | The shot list for |
guidance_scale | No | How closely the clip follows the prompt, from 0 to 1 (default 0.5). Higher sticks to the wording more; lower leaves the model more freedom. |
Pricing
Billed per second of output. Resolution and the audio switch both change the rate.
| Resolution | Generate audio: No | Generate audio: Yes |
|---|---|---|
| $0.0672 / second | $0.1008 / second |
| $0.0896 / second | $0.1344 / second |
| $0.336 / second | $0.336 / second |
Use cases
Continue a character exactly as designed
When a person has to look the same from one clip to the next, generate or choose a still first, then animate it here instead of writing a fresh text-to-video prompt that would leave wardrobe and face to chance again.
Land a clip on a specific ending
Set a closing frame when the last beat of the shot matters - a held expression, a hand on a door, a figure walking into focus - rather than leaving the ending to the model.
Test a product or fashion still in motion
A still photo of a product or an outfit, with a prompt for a simple camera move, is enough to see how a static image reads once it moves and, with audio on, sounds.
Prompt guide & pro tips
Describe only what the frame does not already show
Our forecourt-lightning example keeps to what happens after the still: the flash, her step off the truck, the walk into the downpour. It never repeats her outfit or the setting, both of which the image already fixed.
Lock the shot when continuity matters
Across 15 seconds a detail in the background can drift. If a specific object or layout has to stay put, name it directly ("the same red truck stays parked behind her the whole time") rather than assuming the opening frame pins it for the full clip.
Say "one continuous shot, no cuts" for a single unbroken take
Our yacht-rail example cut to a second angle and shifted from dusk to daylight on a first attempt; adding that line to the front of the prompt, along with a description of the light staying the same, held both the framing and the color through the whole clip on the retest.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "kling/3.0/image-to-video",
"input": {
"duration_seconds": 5,
"generate_audio": false,
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "720p",
"shot_type": "single"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.












