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

# Seedance2.0

### 概述

当前文档主要提供了 seedance2.0 的对接调用案例，文档中共提供了 5 个调用案例，建议可以从案例开始逐个尝试。

| 方式         | 输入组合            | 说明                        |
| :--------- | :-------------- | :------------------------ |
| 案例 A（推荐起步） | 图 + 文           | 先稳定调通，最容易定位问题             |
| 案例 B       | 图 + 视频 + 文      | 把视频当“运动参考”，保持画面风格由图控制     |
| 案例 C       | 图 + 音频 + 文      | 用于节奏感/氛围感增强，注意音频不能单独输入    |
| 案例 D（完整版）  | 图 + 视频 + 音频 + 文 | 商业成片场景，建议在 A/B/C 验证后再使用   |
| 案例 E（首尾帧）  | 首帧 + 末帧 + 文     | 指定首尾帧生成过渡视频，用于精准控制起始和结束画面 |

如接口鉴权对接上有问题，可参考接口文档。

接口文档：
[https://docs.tkhub.ai/api-reference/视频生成/创建视频生成任务](https://docs.tkhub.ai/api-reference/%E8%A7%86%E9%A2%91%E7%94%9F%E6%88%90/%E5%88%9B%E5%BB%BA%E8%A7%86%E9%A2%91%E7%94%9F%E6%88%90%E4%BB%BB%E5%8A%A1)

### 环境地址

* **测试环境**: `http://116.62.234.39:3000`
* **生产环境**: `https://api.tkhub.ai`

### API 接口

#### 1. 提交视频生成任务

`POST /v1/video/generations`

##### 认证

请在请求头中包含您的 API 密钥（具体调用说明请参考接口文档）：

```
Authorization: Bearer sk-Your-API-Key
```

curl 请求示例：

```bash theme={null}
curl --location --request POST 'http://116.62.234.39:3000/v1/video/generations' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer sk-xxxxxxx' \
--data-raw '{
    "model": "bytedance/seedance-2.0",
    "prompt": "一辆汽车乘风破浪，冲向悉尼歌剧院",
    "duration": 4,
    "resolution": "720p"
}'
```

##### 案例说明

###### 案例 A：图 + 文

```json theme={null}
{
  "model": "bytedance/seedance-2.0",
  "prompt": "一辆汽车乘风破浪，冲向悉尼歌剧院",
  "images": [
    "https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2026%2F0402%2F8548d314j00tcvcze002pd000u000k0g.jpg&thumbnail=660x2147483647&quality=80&type=jpg",
    "https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2026%2F0402%2Fde89a202j00tcvcze001md000u000gwg.jpg&thumbnail=660x2147483647&quality=80&type=jpg"
  ],
  "duration": 4,
  "resolution": "480p"
}
```

###### 案例 B：图 + 视频 + 文

```json theme={null}
{
  "model": "bytedance/seedance-2.0",
  "prompt": "变身成龙之后，飞到一片雪山和溪流的上空",
  "images": [
    "https://gips3.baidu.com/it/u=1039279337,1441343044&fm=3028&app=3028&f=JPEG&fmt=auto&q=100&size=f1024_1024"
  ],
  "duration": 4,
  "resolution": "480p",
  "metadata": {
    "generate_audio": true,
    "referenceVideoUrls": [
      "https://test-fshows-public.oss-cn-hangzhou.aliyuncs.com/tasks/files/2026/04/07/task_dFOdVscFv6UTM5dHIJWMqOx8GyB0I2aR.mp4?x-oss-credential=LTAI5t7i5hp8ySNLqncEfobz%2F20260407%2Fcn-hangzhou%2Foss%2Faliyun_v4_request&x-oss-date=20260407T061837Z&x-oss-expires=604800&x-oss-signature=31c2e1becff32ef95712ea025b1e146aebb7dd316901178924b5fccd916acdb2&x-oss-signature-version=OSS4-HMAC-SHA256"
    ]
  }
}
```

###### 案例 C：图 + 音频 + 文

```json theme={null}
{
  "model": "bytedance/seedance-2.0",
  "prompt": "一辆汽车乘风破浪，冲向悉尼歌剧院,并且化身为龙，祥云满天",
  "images": [
    "https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2026%2F0402%2F8548d314j00tcvcze002pd000u000k0g.jpg&thumbnail=660x2147483647&quality=80&type=jpg",
    "https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2026%2F0402%2Fde89a202j00tcvcze001md000u000gwg.jpg&thumbnail=660x2147483647&quality=80&type=jpg"
  ],
  "duration": 4,
  "resolution": "480p",
  "metadata": {
    "generate_audio": true,
    "referenceAudioUrls": [
      "https://cdn.pixabay.com/audio/2025/04/15/audio_981caf755e.mp3"
    ]
  }
}
```

###### 案例 D：图 + 视频 + 音频 + 文

```json theme={null}
{
  "model": "bytedance/seedance-2.0",
  "prompt": "一辆汽车乘风破浪，飞快开过湖面",
  "images": [
    "https://gips3.baidu.com/it/u=1039279337,1441343044&fm=3028&app=3028&f=JPEG&fmt=auto&q=100&size=f1024_1024"
  ],
  "duration": 4,
  "resolution": "480p",
  "metadata": {
    "generate_audio": true,
    "referenceAudioUrls": [
      "https://m704.music.126.net/20260403152936/0c5c6b4d74b62e8e07b59a6afd2a859b/jdyyaac/obj/w5rDlsOJwrLDjj7CmsOj/12203537925/19e4/d4a5/9bca/fb0b1bba558830f1784d5be84cd06d0c.m4a?vuutv=Bi266B79ZekVeTaQslMd38H0MXDXrRMbIKA8uNzy6v/vgxlr/hJTaDng/ucIisQxUsGFD/pgw8FscqnFEL9khw6+7B7K8ejly4zDBODON3M=&authSecret=0000019d52287574050f0aaf7e9e0007"
    ],
    "referenceVideoUrls": [
      "https://test-fshows-public.oss-cn-hangzhou.aliyuncs.com/tasks/files/2026/04/03/task_pUsPrPyNoRCZjYNEeck1Rxzoq447zkf1.mp4?x-oss-credential=LTAI5t7i5hp8ySNLqncEfobz%2F20260403%2Fcn-hangzhou%2Foss%2Faliyun_v4_request&x-oss-date=20260403T065307Z&x-oss-expires=604800&x-oss-signature=00f3c1b8c0aaf47f98eeef951a179e214a51032f47c7c7e670cc059cbf852130&x-oss-signature-version=OSS4-HMAC-SHA256"
    ]
  }
}
```

###### 案例 E：首尾帧 + 文

通过指定首帧与末帧图片，生成从起始画面到结束画面的过渡视频，适用于需要精准控制起止画面的场景。

```json theme={null}
{
  "model": "bytedance/seedance-2.0",
  "prompt": "A cinematic reveal from still portrait to dynamic ending frame",
  "duration": 8,
  "resolution": "720p",
  "ratio": "16:9",
  "metadata": {
    "frame_mode": "first-last",
    "first_image": "https://example.com/first-frame.jpg",
    "last_image": "https://example.com/last-frame.jpg"
  }
}
```

curl 请求示例：

```bash theme={null}
curl --location --request POST 'http://116.62.234.39:3000/v1/video/generations' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer sk-xxxxxxx' \
--data-raw '{
    "model": "bytedance/seedance-2.0",
    "prompt": "A cinematic reveal from still portrait to dynamic ending frame",
    "duration": 8,
    "resolution": "720p",
    "ratio": "16:9",
    "metadata": {
        "frame_mode": "first-last",
        "first_image": "https://example.com/first-frame.jpg",
        "last_image": "https://example.com/last-frame.jpg"
    }
}'
```

##### 请求参数详解

###### model (模型)

* **类型**: string
* **是否必填**: 是
* **描述**: 模型标识符（例如：“bytedance/seedance-2.0”）
* **示例**: “bytedance/seedance-2.0”

###### prompt (提示词)

* **类型**: string
* **是否必填**: 是
* **描述**: 要生成的视频内容描述文本
* **示例**: “一辆汽车乘风破浪，冲向悉尼歌剧院”

###### images (参考图)

* **类型**: array
* **是否必填**: 否
* **描述**: 用于参考的图片 URL 数组
* **格式**: 字符串数组
* **示例**: \["[https://example.com/image1.jpg](https://example.com/image1.jpg)", "[https://example.com/image2.jpg](https://example.com/image2.jpg)"]

###### duration (时长)

* **类型**: number
* **是否必填**: 否
* **描述**: 生成视频的时长（秒）
* **默认值**: 4
* **范围**: 1-10（因模型而异）
* **示例**: 4

###### resolution (分辨率)

* **类型**: string
* **是否必填**: 否
* **描述**: 视频分辨率
* **可选值**: “720p”, “480p”（因模型而异）
* **默认值**: “720p”
* **示例**: “720p”

###### ratio (画面比例)

* **类型**: string
* **是否必填**: 否
* **描述**: 视频画面宽高比，常配合首尾帧模式使用
* **示例**: "16:9"

###### metadata (元数据)

* **类型**: object
* **是否必填**: 否
* **描述**: 用于高级功能的额外元数据
* **包含属性**:
  * `referenceVideoUrls`: 参考视频 URL 数组
  * `referenceAudioUrls`: 参考音频 URL 数组
  * `generate_audio`: 是否自动生成音频
  * `frame_mode`: 帧模式（如 "first-last"，用于首尾帧生成）
  * `first_image`: 首帧图片 URL（配合 `frame_mode` 使用）
  * `last_image`: 末帧图片 URL（配合 `frame_mode` 使用）

###### metadata.referenceVideoUrls (参考视频)

* **类型**: array
* **是否必填**: 否
* **描述**: 视频生成时引用的视频 URL 数组，通常作为“运动参考”
* **格式**: 字符串数组
* **示例**: \["[https://example.com/video.mp4](https://example.com/video.mp4)"]

###### metadata.referenceAudioUrls (参考音频)

* **类型**: array
* **是否必填**: 否
* **描述**: 视频生成时引用的音频 URL 数组
* **格式**: 字符串数组
* **示例**: \["[https://cdn.pixabay.com/audio/2025/04/15/audio\_981caf755e.mp3](https://cdn.pixabay.com/audio/2025/04/15/audio_981caf755e.mp3)"]

###### metadata.generate\_audio (音频生成开关)

* **类型**: boolean
* **是否必填**: 否
* **描述**: 控制是否在视频生成过程中自动生成音频的开关
* **默认值**: false
* **可选值**:
  * `true`: 启用音频生成，系统会根据提示词和参考内容自动生成匹配的背景音频
  * `false`: 禁用音频生成，生成的视频将无音频

###### metadata.frame\_mode (帧模式)

* **类型**: string
* **是否必填**: 否
* **描述**: 帧模式，用于指定使用首尾帧生成过渡视频；启用后须同时提供 `first_image` 与 `last_image`
* **可选值**: "first-last"（首尾帧模式）
* **示例**: "first-last"

###### metadata.first\_image (首帧图片)

* **类型**: string
* **是否必填**: 否（启用 `frame_mode=first-last` 时必填）
* **描述**: 视频起始帧的图片 URL，配合 `frame_mode` 使用
* **格式**: 字符串
* **示例**: "[https://example.com/first-frame.jpg](https://example.com/first-frame.jpg)"

###### metadata.last\_image (末帧图片)

* **类型**: string
* **是否必填**: 否（启用 `frame_mode=first-last` 时必填）
* **描述**: 视频结束帧的图片 URL，配合 `frame_mode` 使用
* **格式**: 字符串
* **示例**: "[https://example.com/last-frame.jpg](https://example.com/last-frame.jpg)"

##### 响应示例

###### 提交任务响应示例

```json theme={null}
{
  "id": "task_90EKfyW3j6661gcwGKu3MH6KiWa1apxF",
  "task_id": "task_90EKfyW3j6661gcwGKu3MH6KiWa1apxF",
  "object": "video",
  "model": "bytedance/seedance-2.0",
  "status": "queued",
  "progress": 0,
  "created_at": 1775540697
}
```

#### 2. 查询视频生成任务状态

`GET /v1/video/generations/{task_id}`

##### 调用示例

###### 查询任务状态示例

```bash theme={null}
curl --location --request GET 'http://116.62.234.39:3000/v1/video/generations/abcd1234efgh' \
--header 'Authorization: Bearer sk-ItqPxzQkxHCgCvniQNAVhQaHpXBoMWwNq9AjyjGBIEuNA67k'
```

###### 查询任务响应示例

```json theme={null}
{
  "code": "success",
  "message": "",
  "data": {
    "id": 70,
    "created_at": 1775536340,
    "updated_at": 1775536502,
    "task_id": "task_VRjTVeqdHPbdjKxeCah9zDgHL7I88xca",
    "platform": "59",
    "user_id": 1,
    "group": "default",
    "channel_id": 4,
    "quota": 2000,
    "action": "generate",
    "status": "SUCCESS",
    "fail_reason": "",
    "result_url": "https://test-fshows-public.oss-cn-hangzhou.aliyuncs.com/tasks/files/2026/04/07/task_VRjTVeqdHPbdjKxeCah9zDgHL7I88xca.mp4?x-oss-credential=LTAI5t7i5hp8ySNLqncEfobz%2F20260407%2Fcn-hangzhou%2Foss%2Faliyun_v4_request&x-oss-date=20260407T043502Z&x-oss-expires=604800&x-oss-signature=72531281a62c20e480ad5095776d10cd8f5c3bc6a0496ad52b0624b544980a44&x-oss-signature-version=OSS4-HMAC-SHA256",
    "submit_time": 1775536340,
    "start_time": 1775536352,
    "finish_time": 1775536449,
    "progress": "100%",
    "properties": {
      "input": "",
      "upstream_model_name": "bytedance/seedance-2.0",
      "origin_model_name": "bytedance/seedance-2.0"
    },
    "data": {
      "id": "cgt-20260407123217-d6h4q",
      "seed": 39555,
      "draft": false,
      "model": "dreamina-seedance-2-0-260128",
      "ratio": "16:9",
      "usage": {
        "total_tokens": 40594,
        "completion_tokens": 40594
      },
      "status": "succeeded",
      "content": {
        "video_url": "https://ark-acg-ap-southeast-1.tos-ap-southeast-1.volces.com/dreamina-seedance-2-0/02177553634005600000000000000000000ffffc0a88f20b19e47.mp4?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=AKLTYWJkZTExNjA1ZDUyNDc3YzhjNTM5OGIyNjBhNDcyOTQ%2F20260407%2Fap-southeast-1%2Ftos%2Frequest&X-Tos-Date=20260407T043404Z&X-Tos-Expires=86400&X-Tos-Signature=18f6dbd4a725effa7c062b7e709f4b81a88e9cc7d10564f5620eee16219dd0ee&X-Tos-SignedHeaders=host"
      },
      "duration": 4,
      "created_at": 1775536339,
      "resolution": "480p",
      "updated_at": 1775536448,
      "service_tier": "default",
      "generate_audio": false,
      "framespersecond": 24,
      "execution_expires_after": 172800
    }
  }
}
```

##### 响应字段说明

* **id**: 视频生成任务的唯一标识符
* **object**: 对象类型（始终为 “video”）
* **created**: 创建时的 Unix 时间戳
* **model**: 用于生成的模型名称
* **status**: 处理状态（“processing” 处理中, “completed” 已完成, “failed” 失败）
* **url**: 生成视频的下载链接（可用时提供）
* **duration**: 实际视频时长（秒）
* **resolution**: 实际视频分辨率

### 注意事项

* 示例中使用的 API 密钥仅供演示。
* 支持的分辨率可能因模型而异。
* 最大时长限制因模型而异。
* 图片和音频 URL 必须是公开可访问的。
* 处理时间取决于视频长度、分辨率和服务器负载。
* 使用首尾帧模式（`frame_mode=first-last`）时，`first_image` 与 `last_image` 必须同时提供，且建议两张图片的宽高比与 `ratio` 一致。
