Kling Video Generation
Kling supports text-to-video, image-to-video, first-last-frame generation, and advanced prompt controls. Select the public model ID for standard or pro quality and silent or audio output.
Supported Models
| Model | Tier | Audio |
|---|---|---|
kling-v3-std-silent | Standard | Silent output. |
kling-v3-std-audio | Standard | Audio output. |
kling-v3-pro-silent | Pro | Silent output. |
kling-v3-pro-audio | Pro | Audio output. |
Endpoint
POST /v1/video/generations
GET /v1/videos/{task_id}
Authentication
Authorization: Bearer sk-***
Content-Type: application/json
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | One of the Kling v3 model IDs. |
prompt | string | Yes | Main prompt. In image mode, do not pass it together with extra_body.multi_prompt. |
image | string | Conditional | Reference image URL. If last_image is present, this is the first frame. |
last_image | string | Conditional | Last-frame image URL. |
aspect_ratio | string | No | 16:9, 9:16, or 1:1; image-to-video may not guarantee this ratio. |
duration | integer | No | Source range: 3 to 15 seconds. |
extra_body.negative_prompt | string | No | Content to avoid. |
extra_body.cfg_scale | number | No | Prompt adherence strength. Higher values generally follow the prompt more closely. |
extra_body.multi_prompt | array | No | Multi-shot prompt list for advanced image mode. |
extra_body.element_list | array | No | Element references. |
extra_body.shot_type | string | No | customize or intelligent. |
Text-To-Video Example
curl -X POST "{BASE_URL}/v1/video/generations" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-v3-std-silent",
"prompt": "A wide cinematic shot of a traveler walking through dusty desert ruins, cloak moving in the wind, slow pullback, natural motion.",
"aspect_ratio": "16:9",
"duration": 5,
"extra_body": {
"cfg_scale": 0.5,
"shot_type": "customize",
"negative_prompt": "blur, low detail"
}
}'
Image-To-Video Example
curl -X POST "{BASE_URL}/v1/video/generations" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-v3-pro-audio",
"prompt": "The person writes naturally in a notebook, subtle hand detail, small thoughtful pauses, soft classroom depth of field.",
"image": "https://example.com/start-frame.png",
"aspect_ratio": "16:9",
"duration": 6,
"extra_body": {
"cfg_scale": 0.6,
"shot_type": "intelligent",
"negative_prompt": "artifacts, distortion"
}
}'
First-Last-Frame Example
curl -X POST "{BASE_URL}/v1/video/generations" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-v3-pro-silent",
"prompt": "The portrait subject slowly turns toward the camera while keeping identity stable and motion natural.",
"image": "https://example.com/first-frame.png",
"last_image": "https://example.com/last-frame.png",
"duration": 8
}'
Query Task Status
curl "{BASE_URL}/v1/videos/task_xxx" \
-H "Authorization: Bearer sk-***"
{
"id": "task_xxx",
"task_id": "task_xxx",
"object": "video.generation.job",
"model": "kling-v3-pro-audio",
"status": "completed",
"progress": 100,
"video_url": "https://example.com/output.mp4"
}
Billing Notes
Kling billing depends on model tier, audio mode, output seconds, and generation mode. The task settlement record and current product pricing are the final billing source.
Common Errors
- Passing both
promptandextra_body.multi_promptin image mode. - Requesting a duration outside
3to15. - Assuming
aspect_ratiois guaranteed in image-to-video mode. - Using an audio model when silent output is expected.
- Passing private media URLs.