Video
Kling 3.0 Turbo
POST
Kling 3.0 Turbo
Parameters and usage are aligned with the official API. For detailed parameters, refer directly to the official documentation.
Request Fields:
After successful creation, the task ID is returned:
Please save
Use the same API Key that was used to create the task. You can also use
When the task succeeds, the response is:
The price tier is determined only by
Request Fields:
On successful creation, the response is:
When querying with
When the task succeeds, the video URL is located at
When
The price tier is determined only by
Common status codes: 400/1200 (invalid parameters or content type, correct based on
1. Overview
This document explains how to use text-to-video and image-to-video capabilities through the Kling 3.0 Turbo native protocol. Turbo uses the same native protocol as standard Kling 3.0, with identical request and response structures, differing only in capability scope, resolution tiers, and billing. Both capabilities use an asynchronous task model:- Call the corresponding creation API.
- Save the
data.idfrom the creation response. - Query the task status using the same API Key that was used to create the task.
- After the task succeeds, retrieve and save the generated video from
outputs.
1.1 API Endpoints
In the examples in this document, the full address is
https://{api_domain} plus the API path in the table, where {api_domain} is the API domain you use. Turbo only provides text-to-video and image-to-video; it does not support Omni video or motion control.
1.2 Authentication
All requests require an API Key. POST requests must also specify the JSON content type:1.3 Response Structure
Thedata in the creation response is an object. Common fields include id (the task ID generated by the Kling system, used for subsequent queries), external_id (the echo of options.external_task_id; may be omitted if not set), and status (the task status after creation, usually submitted).
The data in the query response is an array. Each task contains id, external_id, status (submitted, processing, succeeded, or failed), message, create_time, update_time, and outputs. Common fields for video results in outputs are type, id, url, watermark_url, and duration, where url is the non-watermarked result URL, watermark_url is the watermarked result URL, and duration is the video duration in seconds.
2. Text-to-Video
2.1 Create Task
Multi-shot video is implemented using a fixed format in
prompt: “Shot n, m, words; Shot n, m, words;” (separated by half-width punctuation). Here, n is the shot index (1 to 6 shots), m is the shot duration (each not less than 1, and the sum of all shot durations equals the total video duration), and words is the shot prompt (up to 512 characters).
2.2 Create Example
data.id. If options.external_task_id is not provided, data.external_id may not be returned.
2.3 Query Task
external_task_ids to query custom task IDs. For each request, exactly one of task_ids and external_task_ids must be provided. Both support 1–50 IDs separated by English commas. The data in the response is an array and preserves the order of the requested IDs.
2.4 Query Example
status=processing means the task is still running; it is recommended to query every 10–30 seconds. status=failed means the task failed and you should stop polling. After the task succeeds, save the file corresponding to outputs[type=video].url promptly, as the download URL may be valid for only a limited time.
2.5 Billing
settings.resolution (720p or 1080p). If duration is not provided, the default of 5 seconds is billed. Charges are applied at task creation based on the requested duration; if task creation fails or final generation fails, the fee is automatically refunded. Refer to the pricing page of the service you are using for specific unit prices.
3. Image-to-Video
3.1 Create Task
Images support
.jpg, .jpeg, and .png formats. Files must not exceed 50 MB, width and height must be at least 300 pixels, and the aspect ratio must be between 1:2.5 and 2.5:1. Image-to-video only supports a first frame image; “first frame + last frame” and “last frame only” are not supported yet. options.callback_url can also be provided, with the same usage as in text-to-video. Multi-shot video is also implemented using the fixed format in prompt.
3.2 Create Example
3.3 Query Task
Query the task usingdata.id from the creation response:
task_ids, use the same API Key that was used to create the task. You can also query using external_task_ids for the options.external_task_id passed at creation time. The query parameter supports 1–50 IDs separated by English commas.
3.4 Query Example
outputs[type=video].url:
status=processing, it is recommended to continue querying every 10–30 seconds. When status=failed, stop polling and correct the input based on the error message.
3.5 Billing
settings.resolution (720p or 1080p). If duration is not provided, the default of 5 seconds is billed. Charges are applied at task creation based on the requested duration; if task creation fails or final generation fails, the fee is automatically refunded. Refer to the pricing page of the service you are using for specific unit prices.
4. Common Errors and Notes
API errors use the following structure:message), 401/1000 (API Key missing or invalid), 403/1103 (no permission to perform the operation), 404/1203 (task does not exist or no permission to query), 429/1302 (requests too frequent, reduce frequency and use exponential backoff), 500/5000, 503/5001, 504/5002 (service exception or timeout, retry later; avoid uncontrolled repeated submissions). If message contains trace_id, provide it when contacting technical support.
Additional notes:
- The request body does not need
modelormodel_name; the model version is already included in the URL. - Persist
data.idafter creating the task; do not treatrequest_idas the task ID. - The maximum request body size is 64 MB; for larger images, it is recommended to use a publicly accessible URL for Kling.
- Input material URLs must be publicly accessible by Kling and cannot rely on intranet access, cookies, or temporary login sessions.
- Use a polling interval of 10–30 seconds for the query API, and set an overall timeout and exponential backoff.
- A POST timeout does not necessarily mean the task was not created; query first with
external_task_idbefore deciding whether to retry. - After receiving a successful status, save the file corresponding to
outputs[type=video].urlimmediately, as the result URL may expire.
5. Python Example
The following example uses the standardrequests library to demonstrate text-to-video creation and polling. For image-to-video, simply replace the creation API endpoint and request body.
Last modified on October 15, 2026