ModelSell Docs
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

FieldRequiredNotes
promptYesPositive and negative prompt text, up to 3072 characters; 2500 or fewer is recommended.
settingsNoOutput settings.
settings.resolutionNo720p or 1080p; default 720p.
settings.aspect_ratioNo16:9, 9:16, or 1:1; default 16:9.
settings.durationNoAn integer from 3 to 15 seconds; default 5.
optionsNoCallback, watermark, and external task ID settings.
options.callback_urlNoCallback URL for task status changes.
options.external_task_idNoCustom task ID, unique per user.
options.watermark_info.enabledNoWhether 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

FieldRequiredNotes
contentsYesPrompt and first-frame reference materials.
contents[].typeYesprompt or first_frame.
contents[].textConditionalRequired for type=prompt; up to 2500 characters.
contents[].urlConditionalRequired for type=first_frame; accepts an image URL or Base64.
settings.resolutionNo720p or 1080p; default 720p.
settings.durationNoAn integer from 3 to 15 seconds; default 5.
options.callback_urlNoCallback URL for task status changes.
options.external_task_idNoCustom task ID, unique per user.
options.watermark_info.enabledNoWhether 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

MethodPathQuery
GET/kling/taskstask_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

MethodPath
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"] }
    ]
  }'

On this page