> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Kling Videos Generation API 對接說明

> Kling video generation 整合指南 - Ace Data Cloud

本文將介紹一種 Kling Videos Generation API 對接說明，它是可以通過輸入自定義參數來生成Kling官方的視頻。

## 申請流程

要使用 Kling Videos Generation API，首先到 [Ace Data Cloud 控制台](https://platform.acedata.cloud/console/applications) 獲取您的 API Token，留作備用。

![](https://cdn.acedata.cloud/5hmkdg.jpg)

如果你尚未登錄或註冊，會自動跳轉到登錄頁面邀請你註冊和登錄，完成後會自動返回當前頁面。

**一個 API Token 即可調用平台所有服務，無需為每個服務單獨申請。** 首次申請會贈送免費額度，可免費體驗；額度不足時可在 [控制台](https://platform.acedata.cloud/console/coin) 充值通用餘額。

> 📘 完整文檔：[Kling Videos Generation API →](https://platform.acedata.cloud/documents/kling-videos)

## 基本使用

首先先了解下基本的使用方式，就是輸入提示詞 `prompt`、 生成行為 `action`、首幀參考圖片 `start_image_url` 以及模型 `model`，便可獲得處理後的結果，首先需要簡單地傳遞一個 `action` 字段，它的值為 `text2video`，它主要包含三種行為：文生視頻（`text2video`）、圖生視頻（`image2video`）、擴展視頻（`extend`），然後我們還需要輸入模型 `model`，目前主要有 `kling-v1`, `kling-v1-6`, `kling-v2-master`, `kling-v2-1-master`, `kling-v2-5-turbo`, `kling-v2-6`, `kling-v3`, `kling-v3-omni`, `kling-o1` 模型，具體的內容如下：

<p>
  <img src="https://cdn.acedata.cloud/ke1bok.png" width="500" className="m-auto" />
</p>

可以看到這裡我們設置了 Request Headers，包括：

* `accept`：想要接收怎樣格式的響應結果，這裡填寫為 `application/json`，即 JSON 格式。
* `authorization`：調用 API 的密鑰，申請之後可以直接下拉選擇。

另外設置了 Request Body，包括：

* `model`：生成視頻的模型，主要有 `kling-v1`, `kling-v1-6`, `kling-v2-master`, `kling-v2-1-master`, `kling-v2-5-turbo`, `kling-v2-6`, `kling-v3`, `kling-v3-omni`, `kling-o1` 模型。
* `mode`：生成視頻的模式，可選值為標準模式 `std`、極速模式 `pro` 和原生 4K 模式 `4k`。其中 `4k` 僅支持 `kling-v3` 和 `kling-v3-omni`，且與 `camera_control`（運鏡控制）不兼容。
* `action`：此次視頻生成任務的行為，主要包含三種行為，分別為：文生視頻（`text2video`）、圖生視頻（`image2video`）、擴展視頻（`extend`）。
* `start_image_url`：當選擇圖生視頻行為 `image2video` 就必須需要上傳的首幀參考圖片鏈接。
* `end_image_url`：圖生視頻時可選，指定尾幀。
* `duration`：視頻時長，單位秒。`kling-v3` 和 `kling-v3-omni` 支持 3-15 秒整數時長；`kling-o1` 僅支持 5 秒；其他模型支持 5 或 10 秒。
* `generate_audio`：是否同步生成音頻，可選，布爾值。支持 `kling-v3`、`kling-v3-omni` 以及 `kling-v2-6`（僅 pro 模式）。默認為 `false`。
* `aspect_ratio`：視頻寬高比，可選，支持 `16:9`、`9:16`、`1:1`，默認 `16:9`。
* `cfg_scale`：相關性強度，範圍 \[0,1]，越大越貼合提示詞。
* `camera_control`：可選，控制相機運動的對象參數，支持 type/simple 預設以及 horizontal、vertical、pan、tilt、roll、zoom 等配置。
* `negative_prompt`：可選，不希望出現的反向提示詞，最多 200 字符。
* `image_list`：Omni 參考圖片列表，適用模型 `kling-o1` 和 `kling-v3-omni`，用法見下文「Omni 全能參考」。
* `video_list`：Omni 參考視頻列表（支持視頻編輯），適用模型 `kling-o1` 和 `kling-v3-omni`，用法見下文「Omni 全能參考」。
* `prompt`：提示詞。
* `callback_url`：需要回調結果的URL。
* `async`：可選，設為 `true` 時接口立即返回 `task_id`，無需提供 `callback_url`，隨後通過對應的任務查詢接口輪詢獲取結果。

選擇之後，可以發現右側也生成了對應代碼，如圖所示：

<p>
  <img src="https://cdn.acedata.cloud/3yjql0.png" width="500" className="m-auto" />
</p>

點擊「Try」按鈕即可進行測試，如上圖所示，這裡我們就得到了如下結果：

```json theme={null}
{
  "success": true,
  "video_id": "900798310464749610",
  "video_url": "https://platform2.cdn.acedata.cloud/kling/6c68c267-065b-4423-b66b-a0e4c59ee0d5.mp4",
  "duration": "5.041",
  "state": "succeed",
  "task_id": "6c68c267-065b-4423-b66b-a0e4c59ee0d5"
}
```

返回結果一共有多個字段，介紹如下：

* `success`，此時視頻生成任務的狀態情況。
* `task_id`，此時視頻生成任務ID。
* `video_id`，此時視頻生成任務的視頻ID。
* `video_url`，此時視頻生成任務的視頻鏈接。
* `duration`，此時視頻生成任務的視頻鏈時長。
* `state`，此時視頻生成任務的狀態。

可以看到我們得到了滿意的視頻信息，我們只需要根據結果中 `data` 的視頻鏈接地址獲取生成的Kling視頻即可。

另外如果想生成對應的對接代碼，可以直接複製生成，例如 CURL 的代碼如下：

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/kling/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "kling-v3",
  "prompt": "White ceramic coffee mug on glossy marble countertop with morning window light. Camera slowly rotates 360 degrees around the mug, pausing briefly at the handle."
}'
```

## 模型能力矩陣

不同模型對參數的支持情況差異較大。以下矩陣整理自 [Kling 官方 video models 文檔](https://app.klingai.com/global/dev/document-api/apiReference/model/videoModels)，調用前請先核對目前 `model` / `mode` / `duration` 組合是否支持你所需的功能，否則會返回 `model/mode/duration(...) is not supported with image_tail` 等錯誤。

| 模型                  | 模式             | `end_image_url`（首尾帧） | `generate_audio`（伴音） | `camera_control`（运镜） | 备注                                           |
| ------------------- | -------------- | -------------------- | -------------------- | -------------------- | -------------------------------------------- |
| `kling-v1`          | std / pro      | ✅ 仅 `duration=5`     | ❌                    | ✅ 仅 `duration=5`     | `extend` 不支持 `negative_prompt` 与 `cfg_scale` |
| `kling-v1-6`        | std            | ❌                    | ❌                    | ❌                    | 多图生视频、`extend` 全模式可用                         |
| `kling-v1-6`        | pro            | ✅                    | ❌                    | ❌                    |                                              |
| `kling-v2-master`   | —              | ❌                    | ❌                    | ❌                    | 单一模式，仅 `duration=5/10`                       |
| `kling-v2-1-master` | —              | ❌                    | ❌                    | ❌                    | 单一模式，仅 `duration=5/10`                       |
| `kling-v2-5-turbo`  | std            | ❌                    | ❌                    | ❌                    |                                              |
| `kling-v2-5-turbo`  | pro            | ✅                    | ❌                    | ❌                    |                                              |
| `kling-v2-6`        | std            | ❌                    | ❌                    | ❌                    |                                              |
| `kling-v2-6`        | pro            | ✅                    | ✅                    | ❌                    | 唯一同时支持伴音的非 v3 模型                             |
| `kling-v3`          | std / pro      | ✅                    | ✅                    | ✅                    | `duration` 范围 3–15 秒                         |
| `kling-v3`          | 4k             | ✅                    | ✅                    | ❌                    | 4K 模式与运镜不兼容                                  |
| `kling-v3-omni`     | std / pro / 4k | ✅                    | ✅                    | ❌                    |                                              |
| `kling-o1`          | std / pro      | ✅                    | ❌                    | ❌                    | 仅支持 `duration=5`                             |

注意事项：

* `mode=4k` 仅 `kling-v3` 与 `kling-v3-omni` 支持；并且与 `camera_control`（运镜）互斥。
* `end_image_url` 只能在 `action=image2video` 时配合 `start_image_url` 使用。仅传 `end_image_url`（无 `start_image_url`）会被拒绝。
* `kling-v3` / `kling-v3-omni` 接受任意 3–15 秒的整数 `duration`；`kling-o1` 仅接受 5；其余模型只接受 5 或 10。
* `generate_audio` 默认 `false`。仅 `kling-v3`、`kling-v3-omni` 和 `kling-v2-6`（pro 模式）支持。

## 扩展视频功能

如果想对已经生成的Kling视频进行继续生成的话，可以将参数 `action` 设置为 `extend` ，并且输入需要继续生成视频的 ID，视频 ID 的获取是根据基本使用来获取，如下图所示：

<p>
  <img src="https://cdn.acedata.cloud/om6p6g.png" width="500" className="m-auto" />
</p>

这时候可以看到视频的 ID 为：

```
"video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c"
```

> 注意，这里的视频中 `video_id` 是生成后视频的 ID，如果你不知道如何生成视频，可以参考上文的基本使用来生成视频。

接下来我们要必须填下一步需要扩展的提示词来自定义生成视频，就可以指定如下内容：

* `model`：生成视频的模型，主要有 `kling-v1` 、`kling-v1-5` 和 `kling-v1-6` 模型。
* `mode`：生成视频的模式，可选值为标准模式 `std`、极速模式 `pro` 和原生 4K 模式 `4k`（仅 `kling-v3` 和 `kling-v3-omni` 支持，与运镜控制不兼容）。
* `duration`：此次视频生成任务的视频时长，主要包含5s和10s。
* `start_image_url`：当选择图生视频行为 `image2video` 就必须需要上传的首帧参考图片链接。
* `prompt`：提示词。

填写样例如下：

<p>
  <img src="https://cdn.acedata.cloud/ejimqy.png" width="500" className="m-auto" />
</p>

填写完毕之后自动生成了代码如下：

<p>
  <img src="https://cdn.acedata.cloud/52x4u5.png" width="500" className="m-auto" />
</p>

对应的 Python 代码：

```python theme={null}
import requests

url = "https://api.acedata.cloud/kling/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "extend",
    "model": "kling-v1",
    "video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c",
    "prompt": "白色陶瓷咖啡杯放在光滑的大理石台面上，晨光透过窗户照射。相机缓慢旋转360度围绕咖啡杯，短暂停留在把手处。",
    "duration": 10
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

点击运行，可以发现会得到一个结果，如下：

```json theme={null}
{
  "success": true,
  "video_id": "bbc3b105-ac72-4de2-8390-0cb37dc7d41e",
  "video_url": "https://cdn.klingai.com/bs2/upload-kling-api/7822108635/extendVideo/Cjil4mfBfs0AAAAAAKhr6A-0_raw_video_1.mp4",
  "duration": "9.6",
  "state": "succeed",
  "task_id": "3ece87e6-3ee3-4f5e-bd70-5ae5eca89a23"
}
```

可以看出，结果内容与上文的是一致的，这也就实现视频的扩展视频功能。

## Omni 全能参考（视频编辑 / 参考视频 / 多图参考）

`kling-o1` 与 `kling-v3-omni` 是两个独立模型，二者都支持「全能参考」能力。在文生视频（`action=text2video`）基础上，可额外传入参考图片或参考视频，实现**多图参考、参考视频以及直接编辑已有视频**。

**核心约定**：参考素材必须在 `prompt` 中以 `&lt;&lt;<image_1>>>`、`&lt;&lt;<video_1>>>` 的形式（序号从 1 开始）引用 `image_list` / `video_list` 中对应位置的素材，模型才会应用这些参考。若只传素材而不在提示词中引用，素材会被忽略。

> 安全说明：当前 API 不开放 `element_list`。Kling Element Library 的 ID 不是租户隔离的，在提供租户隔离的 Element Management API 之前，请使用 `image_list` 传入主体参考图。

Omni 请求不支持 `negative_prompt`、`cfg_scale` 或 `camera_control`，也不能使用 `mode=4k`。包含参考视频时，`generate_audio` 必须为 `false`。

### 参考视频与视频编辑（`video_list`）

`video_list` 用於傳入參考視頻，是本能力最常用的場景，數組元素字段如下：

* `video_url`：參考視頻鏈接，不可為空。要求：格式 MP4/MOV；分辨率 720px–2160px；時長 3–10 秒；幀率 24–60fps；文件大小 ≤200MB；最多 1 個視頻。
* `refer_type`：參考類型，可選 `base`（默認，**待編輯的基礎視頻**，即"直接對視頻進行編輯"，可增刪/修改元素、改構圖、換風格、換顏色、換天氣等）或 `feature`（**特徵參考**，參考其風格 / 運鏡 / 續拍下一鏡頭）。
* `keep_original_sound`：是否保留原視頻音頻，可選 `yes`（保留）或 `no`（移除）。

> 注意：存在參考視頻時，`generate_audio` 需為 `false`。`refer_type=base` 的視頻不可再指定首幀 / 尾幀。

對已有視頻進行編輯（把視頻改成動漫風格）的 CURL 示例如下：

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/kling/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "kling-o1",
  "mode": "std",
  "duration": 5,
  "prompt": "把 <<<video_1>>> 改成電影級動漫風格，保留原有的運動和構圖",
  "video_list": [
    {
      "video_url": "https://cdn.acedata.cloud/your-reference-video.mp4",
      "refer_type": "base",
      "keep_original_sound": "no"
    }
  ]
}'
```

### 多圖參考（`image_list`）

`image_list` 用於傳入參考圖片（元素 / 場景 / 風格等），數組元素字段如下：

* `image_url`：參考圖片鏈接，不可為空。要求：格式 .jpg/.jpeg/.png；文件大小 ≤10MB；最短邊 ≥300px；寬高比 1:2.5 \~ 2.5:1。
* `type`：可選。不傳時作為純參考圖；傳 `first_frame` / `end_frame` 時分別作為首幀 / 尾幀（等價於 `start_image_url` / `end_image_url`）。

使用時需在 `prompt` 中以 `&lt;&lt;<image_1>>>`、`&lt;&lt;<image_2>>>` 引用。數量限制：不存在參考視頻時參考圖片 ≤ 7；存在參考視頻時參考圖片 ≤ 4。僅傳首 / 尾幀時也可直接用 `start_image_url` / `end_image_url`，但尾幀必須與首幀一起使用。

> 注意：若同時傳入 `start_image_url` / `end_image_url` 與 `image_list`，首 / 尾幀會排在 `image_list` 之前，可能影響 `&lt;&lt;<image_N>>>` 的序號對應關係。建議二選一：需要首 / 尾幀時直接在 `image_list` 中用 `type` 指定，不要與 `start_image_url` / `end_image_url` 混用。

多圖參考生成視頻的 CURL 示例：

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/kling/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "kling-o1",
  "mode": "std",
  "duration": 5,
  "prompt": "讓 <<<image_1>>> 裡的人物站在 <<<image_2>>> 的場景中，電影感光線",
  "image_list": [
    { "image_url": "https://cdn.acedata.cloud/subject.png" },
    { "image_url": "https://cdn.acedata.cloud/scene.png" }
  ]
}'
```

## 異步回調

由於 Kling Videos Generation API生成的時間相對較長，大約需要 1-2 分鐘，如果 API 長時間無響應，HTTP 請求會一直保持連接，導致額外的系統資源消耗，所以本 API 也提供了異步回調的支持。

整體流程是：客戶端發起請求的時候，額外指定一個 `callback_url` 字段，客戶端發起 API 請求之後，API 會立馬返回一個結果，包含一個 `task_id` 的字段信息，代表當前的任務 ID。當任務完成之後，生成視頻的結果會通過 POST JSON 的形式發送到客戶端指定的 `callback_url`，其中也包括了 `task_id` 字段，這樣任務結果就可以通過 ID 關聯起來了。

下面我們通過示例來了解下具體怎樣操作。

首先，Webhook 回調是一個可以接收 HTTP 請求的服務，開發者應該替換為自己搭建的 HTTP 服務器的 URL。此處為了方便演示，使用一個公開的 Webhook 樣例網站 [https://webhook.site/，打開該網站即可得到一個](https://webhook.site/，打開該網站即可得到一個) Webhook URL，如圖所示：

![](https://cdn.acedata.cloud/tbcnai.png)

將此 URL 複製下來，就可以作為 Webhook 來使用，此處的樣例為 `https://webhook.site/624b2c78-6dbd-4618-9d2b-b32eade6d8c3`。

接下來，我們可以設置字段 `callback_url` 為上述 Webhook URL，同時填入相應的參數，具體的內容如圖所示：

<p>
  <img src="https://cdn.acedata.cloud/vdx12s.png" width="500" className="m-auto" />
</p>

點擊運行，可以發現會立即得到一個結果，如下：

```
{
  "task_id": "20068983-0cc9-4c6a-aeb6-9c6a3c668be0"
}
```

稍等片刻，我們可以在 `https://webhook.site/624b2c78-6dbd-4618-9d2b-b32eade6d8c3` 上觀察到生成視頻的結果，如圖所示：

![](https://cdn.acedata.cloud/zv5u2q.png)

內容如下：

```json theme={null}
{
    "success": true,
    "video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c",
    "video_url": "https://cdn.klingai.com/bs2/upload-kling-api/7822108635/text2video/CjJzzGfBfqcAAAAAAKdVMQ-0_raw_video_1.mp4",
    "duration": "5.1",
    "state": "succeed",
    "task_id": "20068983-0cc9-4c6a-aeb6-9c6a3c668be0"
}
```

可以看到結果中有一個 `task_id` 字段，其他的字段都和上文類似，通過該字段即可實現任務的關聯。

## 錯誤處理

在調用 API 時，如果遇到錯誤，API 會返回相應的錯誤代碼和信息。例如：

* `400 token_mismatched`：Bad request, possibly due to missing or invalid parameters.
* `400 api_not_implemented`：Bad request, possibly due to missing or invalid parameters.
* `401 invalid_token`：Unauthorized, invalid or missing authorization token.
* `429 too_many_requests`：Too many requests, you have exceeded the rate limit.
* `500 api_error`：Internal server error, something went wrong on the server.

### 錯誤響應示例

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "抓取失敗"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## 結論

透過本文檔，您已經了解了如何使用 Kling Videos Generation API 可透過輸入提示詞以及首幀參考圖片來生成視頻。希望本文檔能幫助您更好地對接和使用該 API。如有任何問題，請隨時聯繫我們的技術支持團隊。
