Steam rises gently from the hot coffee, swirling in the morning light, subtle camera drift
Kling 3.0 Turbo Standard Image to Video API
kwaivgi/kling-v3-turbo-std/image-to-videoKling 3.0 Turbo Standard Image to Video animates a single first-frame image into 3–15 second 720p video, with composition-true subject preservation, native audio-visual lip sync, and up to 6-shot storyboard continuity. It keeps the source subject identity and framing intact while adding directed motion and matching dialogue sound. With multi_prompt, omitting top-level duration also allows shot totals of 1–2 seconds.
Upload the required image.
Your generated video will appear here
Add your prompt and required media, review the settings, then click Run.
Examples
REST API
Quick Start
Authenticate with the API, submit the prompt and settings, then retrieve the video using the task ID.
Connect to the Vidgo API
Create an API key, keep it only on your server, and send Authorization: Bearer VIDGO_API_KEY.
- Endpoint
- POST
https://api.vidgo.ai/api/generate/submit - Authentication
- Authorization: Bearer VIDGO_API_KEY
Submit one generation task
Fill in the parameters for this endpoint using the request example, then save the returned task_id to query progress and results.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "kwaivgi/kling-v3-turbo-std/image-to-video",
"input": {
"image_urls": [
"https://cdn.vidgo.ai/apis/models/kwaivgi/kling-v3-turbo-std/image-to-video/v1/01/input-01.png"
],
"prompt": "Steam rises gently from the hot coffee, swirling in the morning light, subtle camera drift",
"duration": 5
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"Wait for the result
Query with task_id, continue for not_started/running, and stop for finished/failed. On success, read data.files[].file_url.
Track status
GET https://api.vidgo.ai/api/generate/status/{task_id}Poll status with a 2-second base interval, and increase the interval for longer tasks. Continue only while status is not_started or running, and stop once finished or failed. You can also specify callback_url in the request payload to receive webhook notifications.
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "running",
"created_time": "2026-09-16T10:00:00Z"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "finished",
"files": [
{
"file_url": "https://storage.vidgo.ai/generated/video.mp4",
"file_type": "video"
}
],
"created_time": "2026-08-22T10:00:00Z",
"progress": 100,
"error_message": null
}
}Complete runnable example
Expand for a complete script with HTTP and business-code checks, task_id validation, polling, terminal-state handling, and a timeout boundary.
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "kwaivgi/kling-v3-turbo-std/image-to-video",
"input": {
"image_urls": [
"https://cdn.vidgo.ai/apis/models/kwaivgi/kling-v3-turbo-std/image-to-video/v1/01/input-01.png"
],
"prompt": "Steam rises gently from the hot coffee, swirling in the morning light, subtle camera drift",
"duration": 5
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
doneInput parameters
The table lists available input parameters, types, and defaults. Request examples also include the required top-level model field.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| image_urls | array | Yes | — | Exactly one public image URL used as the first frame. |
| prompt | string | No | — | 1–2500 characters. Mutually exclusive with multi_prompt. |
| duration | integer | No | Shot total / 5 | An explicit duration must be 3–15 seconds and equal the shot total when multi_prompt is set. Omit it to use the shot total (1–15 seconds); without multi_prompt it defaults to 5 seconds. |
| multi_prompt | array | No | — | 1–6 shots, each with a nonblank prompt and optional duration of 1–15 seconds (default 5). Total duration must not exceed 15 seconds. Mutually exclusive with a nonblank prompt. |
| multi_prompt[].prompt | string | Yes (if multi_prompt is set) | — | Shot prompt, max 2500 characters. |
| multi_prompt[].duration | integer | No | 5 | Shot duration from 1 to 15 seconds. |
| aspect_ratio | string | No | — | The output aspect ratio follows the input image; aspect_ratio has no effect on this endpoint. |
Response Fields
A successful submission returns a task ID. Status queries provide progress, output files, and error details when a task fails.
| Field | Type | Description |
|---|---|---|
| code | integer | Application result code; successful responses use 0 or 200. |
| message | string | Human-readable message or error detail when present. |
| data.task_id | string | Task ID used in the status endpoint path. |
| data.status | string | not_started, running, finished, or failed. |
| data.created_time | string | Task creation time in date-time format. |
| data.progress | integer | Task progress from 0 to 100, when included in the response. |
| data.files[] | array | All output files from a successful task, in response order. |
| data.files[].file_url | string | Public URL for a generated video. |
| data.files[].file_type | string | File type, such as video. |
| data.error_message | string | null | Failure detail when status is failed. |
Task Lifecycle
Continue querying while the status is not_started or running. End polling at finished or failed, then process the output files or error details respectively.
not_startedThe task was accepted and is waiting to begin.
runningGeneration is in progress. Continue polling the same task_id.
finishedGeneration succeeded. Read every video URL from data.files[].file_url.
failedGeneration stopped with an error. Read data.error_message and stop polling.
Polling and Errors
- AuthenticationFor a 401 response, check the Bearer API key in Authorization, update the credentials, and retry.
- ValidationFor a 400 response, use the response details to check required fields, parameter ranges, and available credits, then adjust and resubmit.
- Network and timeoutIf a status query encounters a network error or timeout, retain the original task_id and retry the query, then handle the result according to the returned task status.
- Polling intervalPoll status with a 2-second base interval, and gradually increase the interval for longer tasks.
- Terminal statesContinue only for not_started or running. Stop immediately on finished or failed.
- Callback optionProvide callback_url at the request top level to receive the final flat task object; polling remains available if delivery fails.
Endpoint limits
| Specification | Value | Details |
|---|---|---|
| Input mode | First-frame image with optional text prompt | image_urls requires exactly one image; prompt is optional. |
| Output | Video | Returns an asynchronous task ID. |
| Duration | 3–15 seconds | Integer range, default 5 seconds. |
| Resolution | 720p | Fixed by the Standard tier; not a request field. |
| Billing basis | Output seconds × 17 credits/sec | Default 5s is 85 credits ($0.425). |
Kling 3.0 Turbo Standard Image to Video
Kling 3.0 Turbo Standard Image to Video animates a single static first-frame image into 3–15 second 720p video. With composition-true subject preservation, native audio-visual lip sync, and up to 6-shot storyboard continuity, it suits product showcases, character performances, and high-volume short-form ad iteration. With multi_prompt, omitting top-level duration also allows shot totals of 1–2 seconds.
Why Choose This?
First-frame composition locked inTreat your still as the opening frame and keep subject look, wardrobe texture, and original framing intact as motion begins.
Native audio with faithful lip syncGenerate matching audio with the picture so dialogue lip shapes stay aligned—ready for delivery without a separate ADR pass.
Up to 6-shot storyboard continuityUse multi_prompt to stage 1–6 shots with framing, camera moves, and action while carrying character and setting cues across cuts.
Aspect ratio inherited from the stillOutput framing follows the first-frame image, so vertical posters, landscape product shots, or square art land in the matching canvas.
Flexible 3–15 second durationPick any integer length from 3 to 15 seconds (default 5) for hooks, product close-ups, or short ad beats.
Cost-efficient 720p Standard rateShip clear 720p clips at 17 credits per second ($0.085/sec)—built for high-volume drafts and short-form production.
Parameters
| Parameter | Requirement | Description |
|---|---|---|
| image_urls | Required | String array with exactly one public image URL used as the first frame. |
| prompt | Optional | String, 1–2500 characters. Mutually exclusive with multi_prompt. |
| duration | Optional | An explicit duration must be 3–15 seconds and equal the shot total when multi_prompt is set. Omit it to use the shot total (1–15 seconds); without multi_prompt it defaults to 5 seconds. Default Shot total / 5 |
| multi_prompt | Optional | 1–6 shots, each with a nonblank prompt and optional duration of 1–15 seconds (default 5). Total duration must not exceed 15 seconds. Mutually exclusive with a nonblank prompt. |
| aspect_ratio | Optional | The output aspect ratio follows the input image; aspect_ratio has no effect on this endpoint. |
How to Use
Provide the first-frame imageSet image_urls to exactly one publicly reachable image URL—this becomes the opening frame and composition anchor.
Write the motion promptOptionally add a prompt for camera moves, subject action, and sound cues; switch to multi_prompt for storyboard shots—the two are mutually exclusive.
Configure multi-shot storyboardingUse multi_prompt for 1–6 shots, each with a required prompt and optional duration defaulting to 5 seconds. The total must not exceed 15 seconds. Top-level duration can be omitted; if supplied, it must equal the total and be 3–15 seconds.
Set output durationChoose an integer length from 3 to 15 seconds; the Playground defaults to 5 seconds, and aspect ratio follows the first-frame image.
Review the cost and runCheck the cost shown on the Run button, confirm the first frame and prompt, then click Run.
Preview and download the videoWhen the task finishes, preview picture and sound in the output panel, then select Download video to save the 720p result.
Pricing
Billed by output video seconds. 1 credit = $0.005. The Standard tier is fixed at 720p.
| Usage | Rate | Details |
|---|---|---|
| 720p | 17 credits/sec ($0.085/sec) | Default 5s at 720p is 85 credits ($0.425). Official comparison $0.106/sec. |
Best Use Cases
E-commerce product still animationTurn product hero shots into short showcase clips with camera motion and ambience for detail pages and feed ads.
Character dialogue and lip-sync performanceStart from a character portrait or key art and generate talking or reaction shots with natural lip sync for hooks and virtual hosts.
Concept-art multi-shot adsUse one key visual as the opener, then stage close-up-to-wide beats with multi_prompt to land a full short-ad rhythm in one run.
Vertical social content draftsUpload a 9:16 first frame so the clip inherits vertical framing for Reels, Shorts, and similar short-form layouts.
Fast 720p creative iterationValidate motion and storyboard choices at the Standard rate, then move to a higher-resolution tier when the direction is locked.
Pro Tips
- Start with a clear subject and clean framing, and name face, wardrobe, and materials in the prompt so identity cues stay explicit.
- Describe motion from the pose already in the still—for example, “push along the body, then pull back as the car enters a rainy street”—instead of fighting the original composition.
- When using multi_prompt, label each shot’s duration and framing and keep character/setting descriptors consistent across cuts.
- For lip-synced speech, write the spoken line and tone in the prompt; native audio is generated with the picture.
- For vertical delivery, upload a vertical first frame so ratio follows the image; use 3–5 seconds for a single beat, or 8–15 seconds for multi-beat stories.
Usage notes
- Kling 3.0 Turbo Standard Image to Video requires exactly one public image in image_urls as the first frame; prompt and multi_prompt are mutually exclusive guides for motion.
- Output is fixed at 720p, with aspect ratio inherited from the first-frame image; duration can be 3–15 seconds (default 5).
- Billing is by output seconds at 17 credits/sec ($0.085/sec); the default 5-second clip costs 85 credits ($0.425).
- After an API submission, save the returned task_id to query progress and retrieve the final video URL.
Kling 3.0 Turbo Standard Image to Video API frequently asked questions
What is the Kling 3.0 Turbo Standard Image to Video API?
Kling 3.0 Turbo Standard Image to Video is a Kuaishou (Kling AI) model for animating a single first-frame image into short video. It generates 720p clips from exactly one first-frame image plus an optional prompt, with composition-true subject preservation, native audio-visual lip sync, and up to 6-shot storyboard continuity. Built on Kling 3.0 Turbo’s high-throughput generation and multi-shot consistency, it keeps the source subject identity and framing intact while adding directed motion and matching dialogue sound. You can call it programmatically or try it from the playground above. Without multi_prompt, duration is 3–15 seconds. With multi_prompt, omitting top-level duration also allows a shot total of 1 or 2 seconds.
How does Kling 3.0 Turbo Standard Image to Video use the first frame?
Provide exactly one public image URL in image_urls; that still becomes the opening frame and composition anchor. Optionally add a prompt for camera, action, and sound, or switch to multi_prompt for storyboard shots—see the Parameters table on this page for field details.
How does Kling 3.0 Turbo Standard Image to Video keep character consistency?
The model locks face, wardrobe, and framing from the first-frame image and carries character and setting cues across multi-shot cuts. Use a clear subject still and spell out appearance and clothing in the prompt to further stabilize identity across shots.
How do I configure multi_prompt on Kling 3.0 Turbo Standard Image to Video?
multi_prompt accepts 1–6 shots. Each shot needs a nonblank prompt and an optional integer duration of 1–15 seconds, defaulting to 5. The sum must not exceed 15 seconds. Omit top-level duration to use that sum, including totals of 1 or 2 seconds. If supplied, top-level duration must be an integer from 3 to 15 and equal the sum. multi_prompt cannot be combined with a nonblank top-level prompt. Edit storyboards in JSON mode; switching to the form keeps JSON mode and all shot settings.
How does aspect-ratio inheritance work on Kling 3.0 Turbo Standard Image to Video?
The output aspect ratio follows the input image; aspect_ratio has no effect on this endpoint.
Does Kling 3.0 Turbo Standard Image to Video include native audio?
Yes—results include native audio-visual sync with dialogue lip shapes aligned to speech. Write spoken lines, tone, or ambience cues in the prompt to further guide the soundtrack.
How should I choose Kling 3.0 Turbo Standard Image to Video?
Pick this Standard tier when you already have a still and want fast, cost-efficient drafts at fixed 720p (17 credits/sec). For the same first-frame workflow at higher delivery clarity, use Kling 3.0 Turbo Pro Image to Video (fixed 1080p); if you have no still and start from copy alone, choose the matching Text to Video variant.


