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

# Kling 3.0 & 3.0 Omni

参数及使用方式已对齐官方，详细参数可直接参考官方文档。

## 一、概述

本文档说明如何通过 Kling 3.0 原厂协议使用文生视频、图生视频、Omni 视频和动作控制能力。

四种能力均采用异步任务模式：

1. 调用对应的创建接口。
2. 保存创建响应中的 `data.id`。
3. 使用创建任务时的同一个 API Key 查询任务状态。
4. 任务成功后，从 `outputs` 中获取并保存生成的视频。

### 1.1 接口地址

| 能力 | 创建任务 | 查询任务 |
| - | - | - |
| 文生视频 | `POST /v3/kling/text-to-video/kling-3.0` | `GET /v3/kling/tasks` |
| 图生视频 | `POST /v3/kling/image-to-video/kling-3.0` | `GET /v3/kling/tasks` |
| Omni 视频 | `POST /v3/kling/omni-video/kling-3.0-omni` | `GET /v3/kling/tasks` |
| 动作控制 | `POST /v3/kling/motion-control/kling-3.0` | `GET /v3/kling/tasks` |

本文示例中的完整地址为 `https://{api_domain}` 加上表中的接口路径，其中 `{api_domain}` 为您使用的 API 域名。

### 1.2 鉴权

所有请求都需要携带 API Key。POST 请求还必须指定 JSON 内容类型：

```
Authorization: Bearer <YOUR_API_KEY>
Content-Type: application/json
```

### 1.3 响应结构

创建响应中的 `data` 为对象，常见字段如下：

| 字段 | 类型 | 说明 |
| - | - | - |
| `id` | string | Kling 系统生成的任务 ID，用于后续查询 |
| `external_id` | string | `options.external_task_id` 的回显；未设置时可能不返回 |
| `status` | string | 创建后的任务状态，通常为 `submitted` |

查询响应中的 `data` 为数组，每个任务包含以下字段：

| 字段 | 类型 | 说明 |
| - | - | - |
| `id` | string | 系统生成的任务 ID |
| `external_id` | string | 调用方自定义任务 ID（如有） |
| `status` | string | `submitted`、`processing`、`succeeded` 或 `failed` |
| `message` | string | 任务状态信息；失败时包含失败原因（如有） |
| `create_time` | integer | 创建时间，Unix 毫秒时间戳（如有） |
| `update_time` | integer | 更新时间，Unix 毫秒时间戳（如有） |
| `outputs` | array | 生成结果；成功任务通常包含一个 `type=video` 的结果 |

`outputs` 中的视频结果常见字段为 `type`、`id`、`url`、`watermark_url` 和 `duration`。其中 `url` 是无水印结果地址，`watermark_url` 是带水印结果地址，`duration` 为视频时长（秒）。

## 二、文生视频

官方参数说明：Text to Video

### 2.1 创建任务

```
POST https://{api_domain}/v3/kling/text-to-video/kling-3.0
```

常用请求字段：

| 字段 | 类型 | 必填 | 说明 |
| - | - | - | - |
| `prompt` | string | 是 | 视频生成提示词，不能为空，最长 3072 个字符 |
| `settings.multi_shot` | boolean | 否 | 是否生成多镜头视频，默认 `true` |
| `settings.resolution` | string | 否 | `720p`、`1080p` 或 `4k`，默认 `720p` |
| `settings.aspect_ratio` | string | 否 | `16:9`、`9:16` 或 `1:1`，默认 `16:9` |
| `settings.audio` | string | 否 | `off` 或 `native`，默认 `off` |
| `settings.duration` | integer | 否 | 3–15 秒，默认 5 秒 |
| `options.callback_url` | string | 否 | 任务状态变化时接收回调通知的地址 |
| `options.external_task_id` | string | 否 | 自定义任务 ID |
| `options.watermark_info.enabled` | boolean | 否 | 是否生成带水印结果，默认 `false` |

`multi_shot=true` 时可以按 Kling 官方格式在提示词中描述多镜头；每个镜头的时长之和应等于视频总时长。

### 2.2 创建示例

```bash theme={null}
curl -X POST 'https://{api_domain}/v3/kling/text-to-video/kling-3.0' \
  -H 'Authorization: Bearer <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "prompt": "A cinematic tracking shot of a red sports car driving along a coastal road at sunset",
    "settings": {
      "resolution": "1080p",
      "duration": 5,
      "audio": "native"
    },
    "options": {
      "external_task_id": "text-video-20260826-0001"
    }
  }'
```

创建成功后返回任务 ID：

```json theme={null}
{
  "code": 0,
  "message": "success",
  "request_id": "provider-request-id",
  "data": {
    "id": "kling-text-task-id",
    "external_id": "text-video-20260826-0001",
    "status": "submitted",
    "create_time": 1781080778802,
    "update_time": 1781080794151
  }
}
```

### 2.3 查询任务

```
GET https://{api_domain}/v3/kling/tasks?task_ids={task_id}
```

请保存 `data.id`。未传 `options.external_task_id` 时，`data.external_id` 可能不返回。

请使用创建任务时的同一个 API Key。任务 ID 不存在或不可访问时会返回 `task not found`。

也可以使用 `external_task_ids` 查询自定义任务 ID：

```
GET https://{api_domain}/v3/kling/tasks?external_task_ids={external_task_id}
```

`task_ids` 和 `external_task_ids` 每次必须且只能填写一个。两者均支持用英文逗号分隔 1–50 个 ID，响应中的 `data` 为数组并保持请求 ID 的顺序。

### 2.4 查询示例

```bash theme={null}
curl -X GET 'https://{api_domain}/v3/kling/tasks?task_ids=kling-text-task-id' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'
```

任务成功时返回：

```json theme={null}
{
  "code": 0,
  "message": "success",
  "request_id": "provider-request-id",
  "data": [
    {
      "id": "kling-text-task-id",
      "status": "succeeded",
      "outputs": [
        {
          "type": "video",
          "url": "https://your-result-cdn.example.com/text-video.mp4",
          "duration": 5
        }
      ]
    }
  ]
}
```

`status=processing` 表示任务仍在执行，建议每隔 10–30 秒查询一次；`status=failed` 表示任务失败，不应继续轮询。任务成功后，请及时保存 `outputs[type=video].url` 对应的文件，下载地址可能存在有效期。

### 2.5 计费说明

```
任务费用 = 对应分辨率和音频档位的每秒单价 × settings.duration
```

价格档位由 `settings.resolution` 和 `settings.audio` 决定。例如，`1080p`、`audio=native`、`duration=5` 的费用为“1080p 原生音频档每秒单价 × 5 秒”。未传 `duration` 时按默认 5 秒计费。

创建任务时按请求时长扣费；如果任务创建失败或最终生成失败，费用会自动退回。具体单价以您所使用服务的价格页面为准。

## 三、图生视频

官方参数说明：Image to Video

### 3.1 创建任务

```
POST https://{api_domain}/v3/kling/image-to-video/kling-3.0
```

常用请求字段：

| 字段 | 类型 | 必填 | 说明 |
| - | - | - | - |
| `contents` | array | 是 | 多模态内容列表，至少包含一项 |
| `contents[].type` | string | 是 | `prompt`、`first_frame`、`last_frame` 或 `element` |
| `settings.resolution` | string | 否 | `720p`、`1080p` 或 `4k`，默认 `720p` |
| `settings.multi_shot` | boolean | 否 | 是否生成多镜头视频，默认 `true` |
| `settings.audio` | string | 否 | `off` 或 `native`，默认 `off` |
| `settings.duration` | integer | 否 | 3–15 秒，默认 5 秒 |
| `options.callback_url` | string | 否 | 任务状态变化时接收回调通知的地址 |
| `options.external_task_id` | string | 否 | 自定义任务 ID |
| `options.watermark_info.enabled` | boolean | 否 | 是否生成带水印结果，默认 `false` |

`contents` 子项字段：

| type | 必填字段 | 说明 |
| - | - | - |
| `prompt` | `text` | 文本提示词，最长 3072 个字符 |
| `first_frame` | `url` | 首帧图片，支持 URL 或 Base64；必须提供 |
| `last_frame` | `url` | 尾帧图片，支持 URL 或 Base64；仅尾帧不支持，需同时提供首帧 |
| `element` | `element_id`、`id` | 主体 ID 和提示词中引用该主体的索引 ID；同一任务内 `id` 不得重复；最多支持指定 3 个主体 |

图片支持 `.jpg`、`.jpeg` 和 `.png`，文件不超过 50 MB，宽高不小于 300 像素，宽高比需在 1:2.5 到 2.5:1 之间。

### 3.2 创建示例

```bash theme={null}
curl -X POST 'https://{api_domain}/v3/kling/image-to-video/kling-3.0' \
  -H 'Authorization: Bearer <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [
      {
        "type": "prompt",
        "text": "The subject turns toward the camera while the wind moves naturally through the scene"
      },
      {
        "type": "first_frame",
        "url": "https://your-cdn.example.com/first-frame.png"
      }
    ],
    "settings": {
      "resolution": "1080p",
      "duration": 5,
      "audio": "off"
    },
    "options": {
      "external_task_id": "image-video-20260826-0001"
    }
  }'
```

创建成功时，`data.id` 为后续查询使用的任务 ID：

```json theme={null}
{
  "code": 0,
  "message": "success",
  "request_id": "provider-request-id",
  "data": {
    "id": "kling-image-task-id",
    "external_id": "image-video-20260826-0001",
    "status": "submitted",
    "create_time": 1781080778802,
    "update_time": 1781080794151
  }
}
```

### 3.3 查询任务

使用创建响应中的 `data.id` 查询任务：

```
GET https://{api_domain}/v3/kling/tasks?task_ids={task_id}
```

通过 `task_ids` 查询时，请使用创建任务时的同一个 API Key。也可以通过 `external_task_ids` 查询创建时传入的 `options.external_task_id`。查询参数支持 1–50 个英文逗号分隔的 ID。

### 3.4 查询示例

```bash theme={null}
curl -X GET 'https://{api_domain}/v3/kling/tasks?task_ids=kling-image-task-id' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'
```

任务成功时，视频地址位于 `outputs[type=video].url`：

```json theme={null}
{
  "code": 0,
  "message": "success",
  "request_id": "provider-request-id",
  "data": [
    {
      "id": "kling-image-task-id",
      "status": "succeeded",
      "outputs": [
        {
          "type": "video",
          "url": "https://your-result-cdn.example.com/image-video.mp4",
          "duration": 5
        }
      ]
    }
  ]
}
```

`status=processing` 时建议每隔 10–30 秒继续查询；`status=failed` 时停止轮询并根据错误信息修正输入。

### 3.5 计费说明

```
任务费用 = 对应分辨率和音频档位的每秒单价 × settings.duration
```

价格档位由 `settings.resolution` 和 `settings.audio` 决定，未传 `duration` 时按默认 5 秒计费。创建任务时按请求时长扣费；如果任务创建失败或最终生成失败，费用会自动退回。具体单价以您所使用服务的价格页面为准。

## 四、Omni 视频

官方参数说明：Omni Video

### 4.1 创建任务

```
POST https://{api_domain}/v3/kling/omni-video/kling-3.0-omni
```

常用请求字段：

| 字段 | 类型 | 必填 | 说明 |
| - | - | - | - |
| `contents` | array | 是 | 多模态内容列表，至少包含一项 |
| `contents[].type` | string | 是 | `prompt`、`first_frame`、`last_frame`、`refer_image`、`feature_video`、`base_video` 或 `element` |
| `settings.resolution` | string | 否 | `720p`、`1080p` 或 `4k`，默认 `720p` |
| `settings.multi_shot` | boolean | 否 | 是否生成多镜头视频，默认 `true` |
| `settings.aspect_ratio` | string | 否 | `16:9`、`9:16` 或 `1:1`，默认 `16:9`；没有首帧图或没有参考视频时必填 |
| `settings.audio` | string | 否 | `off`、`native` 或 `original`，默认 `off` |
| `settings.duration` | integer | 否 | 3–15 秒，默认 5 秒 |
| `options.callback_url` | string | 否 | 任务状态变化时接收回调通知的地址 |
| `options.external_task_id` | string | 否 | 自定义任务 ID |
| `options.watermark_info.enabled` | boolean | 否 | 是否生成带水印结果，默认 `false` |

`contents` 子项字段：

| type | 必填字段 | 说明 |
| - | - | - |
| `prompt` | `text` | 文本提示词，最长 3072 个字符 |
| `first_frame`、`last_frame`、`refer_image` | `url`；`id` 可选 | 图片素材，支持 URL 或 Base64；`id` 用于在提示词中引用素材，同一任务内不得重复 |
| `feature_video`、`base_video` | `url`；`id` 可选 | 视频素材，支持 URL；`id` 用于在提示词中引用素材，同一任务内不得重复 |
| `element` | `element_id`、`id` | 主体 ID 和提示词中引用该主体的索引 ID；同一任务内 `id` 不得重复 |

图片支持 `.jpg`、`.jpeg` 和 `.png`，文件不超过 50 MB，宽高不小于 300 像素，宽高比需在 1:2.5 到 2.5:1 之间。视频支持 `.mp4` 和 `.mov`，文件不超过 200 MB，时长为 3–15.5 秒。

音频组合规则：

* `feature_video`（特征参考视频）：`audio` 只能为 `off`（不支持音画同出），且 `multi_shot` 只能为 `true`。
* `base_video`（待编辑视频）：`audio` 不能为 `native`（可为 `off` 或 `original`），且不支持多镜头。`audio=original` 仅适用于包含参考视频的请求。
* 不包含视频输入时，可使用 `audio=off` 或 `audio=native`。

### 4.2 创建示例

以下示例使用参考图片生成视频：

```bash theme={null}
curl -X POST 'https://{api_domain}/v3/kling/omni-video/kling-3.0-omni' \
  -H 'Authorization: Bearer <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [
      {
        "type": "prompt",
        "text": "Keep the character consistent and create a cinematic walking shot"
      },
      {
        "type": "refer_image",
        "url": "https://your-cdn.example.com/character.png"
      }
    ],
    "settings": {
      "resolution": "1080p",
      "duration": 8,
      "audio": "native"
    },
    "options": {
      "external_task_id": "omni-video-20260826-0001"
    }
  }'
```

创建成功时返回：

```json theme={null}
{
  "code": 0,
  "message": "success",
  "request_id": "provider-request-id",
  "data": {
    "id": "kling-omni-task-id",
    "external_id": "omni-video-20260826-0001",
    "status": "submitted",
    "create_time": 1781080778802,
    "update_time": 1781080794151
  }
}
```

### 4.3 查询任务

使用创建响应中的 `data.id` 查询任务：

```
GET https://{api_domain}/v3/kling/tasks?task_ids={task_id}
```

通过 `task_ids` 查询时，请使用创建任务时的同一个 API Key。也可以通过 `external_task_ids` 查询创建时传入的 `options.external_task_id`。查询参数支持 1–50 个英文逗号分隔的 ID。

### 4.4 查询示例

```bash theme={null}
curl -X GET 'https://{api_domain}/v3/kling/tasks?task_ids=kling-omni-task-id' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'
```

任务成功时返回：

```json theme={null}
{
  "code": 0,
  "message": "success",
  "request_id": "provider-request-id",
  "data": [
    {
      "id": "kling-omni-task-id",
      "status": "succeeded",
      "outputs": [
        {
          "type": "video",
          "url": "https://your-result-cdn.example.com/omni-video.mp4",
          "duration": 8
        }
      ]
    }
  ]
}
```

`status=processing` 时建议每隔 10–30 秒继续查询；`status=failed` 时停止轮询并根据错误信息修正输入。

### 4.5 计费说明

```
任务费用 = 对应档位的每秒单价 × settings.duration
```

Omni 的价格档位按以下顺序判断：

1. `contents` 中包含 `feature_video` 或 `base_video`：使用对应分辨率的视频输入档。
2. 未使用视频输入且 `settings.audio=native`：使用对应分辨率的原生音频档。
3. 其他情况：使用对应分辨率的基础档。

未传 `duration` 时按默认 5 秒计费。创建任务时按请求时长扣费；如果任务创建失败或最终生成失败，费用会自动退回。具体单价以您所使用服务的价格页面为准。

## 五、动作控制

官方参数说明：Motion Control

### 5.1 创建任务

```
POST https://{api_domain}/v3/kling/motion-control/kling-3.0
```

常用请求字段：

| 字段 | 类型 | 必填 | 说明 |
| - | - | - | - |
| `contents` | array | 是 | 多模态内容列表，至少包含一项 |
| `contents[].type` | string | 是 | `prompt`、`image`、`video` 或 `element` |
| `settings.resolution` | string | 否 | `720p` 或 `1080p`，默认 `720p` |
| `settings.audio` | string | 否 | `off` 或 `original`，默认 `original` |
| `settings.character_orientation` | string | 是 | `image` 或 `video` |
| `options.callback_url` | string | 否 | 任务状态变化时接收回调通知的地址 |
| `options.external_task_id` | string | 否 | 自定义任务 ID |
| `options.watermark_info.enabled` | boolean | 否 | 是否生成带水印结果，默认 `false` |

`contents` 子项字段：

| type | 必填字段 | 说明 |
| - | - | - |
| `prompt` | `text` | 文本提示词，最长 2500 个字符 |
| `image` | `url` | 人物或外观参考图片，支持 URL 或 Base64 |
| `video` | `url` | 动作参考视频，支持 URL |
| `element` | `element_id`、`id` | 主体 ID 和提示词中引用该主体的索引 ID；同一任务内 `id` 不得重复；最多指定 1 个主体，且引用主体时生成视频只能参考视频中的人物朝向 |

图片支持 `.jpg`、`.jpeg` 和 `.png`，文件不超过 50 MB，宽高不小于 300 像素，宽高比需在 1:2.5 到 2.5:1 之间。视频支持 `.mp4` 和 `.mov`，文件不超过 100 MB，时长至少 3 秒；时长上限取决于 `character_orientation`：参考视频时最长 30 秒，参考图片时最长 10 秒。

`character_orientation=image` 表示生成人物朝向参考图片；`character_orientation=video` 表示生成人物朝向参考视频。动作控制不支持 `4k` 和 `audio=native`。

### 5.2 创建示例

```bash theme={null}
curl -X POST 'https://{api_domain}/v3/kling/motion-control/kling-3.0' \
  -H 'Authorization: Bearer <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [
      {
        "type": "prompt",
        "text": "Preserve the character identity and follow the reference motion"
      },
      {
        "type": "image",
        "url": "https://your-cdn.example.com/character.png"
      },
      {
        "type": "video",
        "url": "https://your-cdn.example.com/motion.mp4"
      }
    ],
    "settings": {
      "resolution": "1080p",
      "audio": "original",
      "character_orientation": "video"
    },
    "options": {
      "external_task_id": "motion-video-20260826-0001"
    }
  }'
```

创建成功时返回：

```json theme={null}
{
  "code": 0,
  "message": "success",
  "request_id": "provider-request-id",
  "data": {
    "id": "kling-motion-task-id",
    "external_id": "motion-video-20260826-0001",
    "status": "submitted",
    "create_time": 1781080778802,
    "update_time": 1781080794151
  }
}
```

### 5.3 查询任务

使用创建响应中的 `data.id` 查询任务：

```
GET https://{api_domain}/v3/kling/tasks?task_ids={task_id}
```

通过 `task_ids` 查询时，请使用创建任务时的同一个 API Key。也可以通过 `external_task_ids` 查询创建时传入的 `options.external_task_id`。查询参数支持 1–50 个英文逗号分隔的 ID。

### 5.4 查询示例

```bash theme={null}
curl -X GET 'https://{api_domain}/v3/kling/tasks?task_ids=kling-motion-task-id' \
  -H 'Authorization: Bearer <YOUR_API_KEY>'
```

任务成功时返回：

```json theme={null}
{
  "code": 0,
  "message": "success",
  "request_id": "provider-request-id",
  "data": [
    {
      "id": "kling-motion-task-id",
      "status": "succeeded",
      "outputs": [
        {
          "type": "video",
          "url": "https://your-result-cdn.example.com/motion-video.mp4",
          "duration": 6
        }
      ]
    }
  ]
}
```

`status=processing` 时建议每隔 10–30 秒继续查询；`status=failed` 时停止轮询并根据错误信息修正输入。

### 5.5 计费说明

```
任务费用 = 对应分辨率的动作控制每秒单价 × 成功视频的实际时长
```

动作控制的价格档位由 `settings.resolution` 决定。任务成功后，按照响应中 `outputs[type=video].duration` 的实际时长收费；任务失败不收费。具体单价以您所使用服务的价格页面为准。

## 六、常见错误和注意事项

接口错误采用以下结构：

```json theme={null}
{
  "code": 1203,
  "message": "task not found (trace_id: platform-trace-id)",
  "request_id": "",
  "data": null
}
```

`request_id` 在部分错误中可能为空。如果 `message` 包含 `trace_id`，联系技术支持时请一并提供。

| HTTP | code | 常见场景 | 处理建议 |
| - | - | - | - |
| 400 | 1200 | JSON、参数、内容类型或查询参数不合法 | 根据 `message` 修正请求 |
| 401 | 1000 | API Key 缺失或无效 | 检查 `Authorization` 请求头 |
| 403 | 1103 | 当前账号无权执行该请求 | 检查账号状态或联系技术支持 |
| 404 | 1203 | 任务不存在或无权查询 | 检查任务 ID 与创建任务所用 API Key |
| 429 | 1302 | 请求过于频繁 | 降低频率并采用指数退避 |
| 500 | 5000 | 服务暂时异常 | 使用 `message` 中的 trace ID 联系技术支持 |
| 503 | 5001 | Kling 服务暂时不可用 | 稍后重试 |
| 504 | 5002 | 请求 Kling 服务超时 | 稍后重试，避免无控制地重复提交 |

其他注意事项：

* 请求体不需要增加 `model` 或 `model_name`，模型版本已包含在 URL 中。
* 各接口章节列出该能力的专用字段；未列出的官方扩展字段请以对应的 Kling 官方文档为准。
* 创建任务后请持久化 `data.id`，不要把 `request_id` 当作任务 ID；`request_id` 只是单次 HTTP 请求的标识。
* 单次请求体最大 64 MB；较大的图片或视频建议使用 Kling 可公开访问的公网 URL。
* 输入素材 URL 必须可被 Kling 公开访问，不能依赖内网、Cookie 或临时登录状态。
* 使用 `external_task_id` 时，请生成不可猜测且全局唯一的值，并妥善保存。
* 查询接口使用 10–30 秒轮询间隔，并设置整体超时和指数退避。
* POST 超时不代表任务一定没有创建成功；请先用 `external_task_id` 查询，再决定是否重试。
* 异步任务失败时，`data[].status` 为 `failed`，请根据错误信息修正输入后重新创建，不要继续轮询同一任务。
* 收到成功状态后请立即保存 `outputs[type=video].url` 对应文件，结果 URL 可能过期。
* `callback_url` 可按 Kling 官方协议传入，但仍建议通过查询接口确认最终状态。

## 七、Python 调用示例

以下示例使用标准 `requests` 库，演示文生视频的创建和轮询。图生视频、Omni 和动作控制只需替换创建接口及请求体。

```python theme={null}
import os
import time

import requests


api_domain = os.environ["API_DOMAIN"]
api_key = os.environ["PLATFORM_API_KEY"]
headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json",
}

payload = {
    "prompt": "A calm cinematic landscape at sunrise",
    "settings": {
        "resolution": "1080p",
        "duration": 5,
        "audio": "off",
    },
    "options": {
        "external_task_id": "python-example-20260826-0001",
    },
}

created = requests.post(
    f"https://{api_domain}/v3/kling/text-to-video/kling-3.0",
    headers=headers,
    json=payload,
    timeout=60,
)
created.raise_for_status()
task_id = created.json()["data"]["id"]

while True:
    response = requests.get(
        f"https://{api_domain}/v3/kling/tasks",
        headers={"Authorization": f"Bearer {api_key}"},
        params={"task_ids": task_id},
        timeout=30,
    )
    response.raise_for_status()
    task = response.json()["data"][0]
    if task["status"] == "succeeded":
        video = next(item for item in task["outputs"] if item["type"] == "video")
        print(video["url"])
        break
    if task["status"] == "failed":
        raise RuntimeError(task)
    time.sleep(20)
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.