VideosKling
Kling 3.0 Turbo Tasks
Use the newer async task API for Kling 3.0 Turbo text-to-video, image-to-video, and /kling/tasks queries.
Kling 3.0 Turbo does not use the /kling/v1/videos/* paths. Save data.id from the create response, or pass options.external_task_id for business-side lookup.
Text-to-Video: Create Task
POST /kling/text-to-video/kling-3.0-turbo
Headers
Content-Type: application/json
Authorization: Bearer {apikey}Body
| Field | Required | Notes |
|---|---|---|
prompt | Yes | Positive and negative prompt text, up to 3072 characters; 2500 or fewer is recommended. |
settings | No | Output settings. |
settings.resolution | No | 720p or 1080p; default 720p. |
settings.aspect_ratio | No | 16:9, 9:16, or 1:1; default 16:9. |
settings.duration | No | An integer from 3 to 15 seconds; default 5. |
options | No | Callback, watermark, and external task ID settings. |
options.callback_url | No | Callback URL for task status changes. |
options.external_task_id | No | Custom task ID, unique per user. |
options.watermark_info.enabled | No | Whether to also generate watermarked output; default false. |
cURL
curl --location "$KLING_BASE_URL/kling/text-to-video/kling-3.0-turbo" \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {apikey}' \
--data '{
"prompt": "A girl sat on the train, looking out the window with a melancholic expression, her head swaying with the train.",
"options": {
"callback_url": "https://xxx/callback",
"watermark_info": {
"enabled": false
},
"external_task_id": ""
},
"settings": {
"duration": 3,
"resolution": "720p",
"aspect_ratio": "9:16"
}
}'Image-to-Video: Create Task
POST /kling/image-to-video/kling-3.0-turbo
Headers
Content-Type: application/json
Authorization: Bearer {apikey}Body
| Field | Required | Notes |
|---|---|---|
contents | Yes | Prompt and first-frame reference materials. |
contents[].type | Yes | prompt or first_frame. |
contents[].text | Conditional | Required for type=prompt; up to 2500 characters. |
contents[].url | Conditional | Required for type=first_frame; accepts an image URL or Base64. |
settings.resolution | No | 720p or 1080p; default 720p. |
settings.duration | No | An integer from 3 to 15 seconds; default 5. |
options.callback_url | No | Callback URL for task status changes. |
options.external_task_id | No | Custom task ID, unique per user. |
options.watermark_info.enabled | No | Whether to also generate watermarked output; default false. |
The first-frame image must be .jpg, .jpeg, or .png, no larger than 50 MB, at least 300 px on each side, and have an aspect ratio between 1:2.5 and 2.5:1. Only a first frame is currently supported.
cURL
curl --location "$KLING_BASE_URL/kling/image-to-video/kling-3.0-turbo" \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {apikey}' \
--data-raw '{
"contents": [
{
"type": "prompt",
"text": "A girl sat on the train, looking out the window with a melancholic expression, her head swaying with the train."
},
{
"type": "first_frame",
"url": "https://p2-kling.klingai.com/kcdn/cdn-kcdn112452/kling-tob-release_note/image_25.png"
}
],
"settings": {
"resolution": "1080p",
"duration": 10
},
"options": {
"callback_url": "https://xxx/callback",
"external_task_id": "",
"watermark_info": {
"enabled": true
}
}
}'Create Task Response
Both create endpoints return the base task information:
{
"code": 0,
"message": "string",
"request_id": "string",
"data": {
"id": "893605946402811985",
"status": "submitted",
"create_time": 1781080778802,
"update_time": 1781080794151,
"external_id": "string"
}
}Query Task By ID
| Method | Path | Query |
|---|---|---|
GET | /kling/tasks | task_ids or external_task_ids |
curl "$KLING_BASE_URL/kling/tasks?external_task_ids=order-10001" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KLING_API_KEY"Query Tasks By Cursor
| Method | Path |
|---|---|
POST | /kling/tasks |
curl --location "$KLING_BASE_URL/kling/tasks" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KLING_API_KEY" \
--data '{
"start_time": "1781193600000",
"end_time": "1781516352968",
"cursor": "",
"limit": 500,
"filters": [
{ "key": "status", "values": ["succeeded"] },
{ "key": "product_type", "values": ["video"] }
]
}'