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

# Seedance 2.0 视频生成

> 使用豆包 Seedance 2.0 模型通过文本、图片和视频参考创建视频生成任务，采用 JSON 格式请求

## 概述

Seedance 2.0（`doubao-seedance-2`）是豆包推出的视频生成模型，通过文本提示词结合可选的图片和视频参考来创建视频。与使用 `multipart/form-data` 的 Sora 模型不同，Seedance 2.0 使用 `application/json` 格式，直接接受图片和视频 URL。

创建后，使用 [查询接口](/api-reference/video/result) 获取生成状态。任务完成后，使用 [内容端点](/api-reference/video/content) 下载视频。

### 支持的模型

* `doubao-seedance-2`

### 重要说明

<Warning>
  **异步处理**

  视频生成采用异步模式。创建任务后立即返回任务 ID，您需要使用 [查询接口](/api-reference/video/result) 获取生成进度和结果。
</Warning>

<Warning>
  **内容政策**

  生成的视频内容必须符合使用政策。禁止生成违法、暴力、色情或侵犯版权的内容。
</Warning>

<Tip>
  **资源管理**

  请及时下载生成的视频以避免资源过期。查看响应中的 `expires_at` 字段了解视频过期时间。
</Tip>

***

## 快速开始

### 基础示例：文本生成视频

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.wisgate.ai/v1/videos" \
    -H "Authorization: Bearer $WISDOM_GATE_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "prompt": "一只猫在街上走",
      "model": "doubao-seedance-2",
      "duration": 4,
      "size": "1280x720"
    }'
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.wisgate.ai/v1/videos"
  headers = {
      "Authorization": "Bearer WISDOM_GATE_KEY",
      "Content-Type": "application/json"
  }
  data = {
      "prompt": "一只猫在街上走",
      "model": "doubao-seedance-2",
      "duration": 4,
      "size": "1280x720"
  }

  response = requests.post(url, headers=headers, json=data)
  result = response.json()
  print(f"视频 ID: {result['id']}")
  print(f"状态: {result['status']}")
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.wisgate.ai/v1/videos", {
    method: "POST",
    headers: {
      Authorization: "Bearer WISDOM_GATE_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      prompt: "一只猫在街上走",
      model: "doubao-seedance-2",
      duration: 4,
      size: "1280x720",
    }),
  });

  const result = await response.json();
  console.log(`视频 ID: ${result.id}`);
  console.log(`状态: ${result.status}`);
  ```
</CodeGroup>

***

## 请求参数

### 请求体（JSON）

| 参数         | 类型             | 必填 | 说明                                                                   |
| ---------- | -------------- | -- | -------------------------------------------------------------------- |
| `prompt`   | string         | 是  | 描述待生成视频的文本提示词                                                        |
| `model`    | string         | 是  | 必须为 `doubao-seedance-2`                                              |
| `duration` | integer        | 否  | 视频时长（秒）。范围：4-15，默认：4                                                 |
| `size`     | string         | 否  | 输出分辨率。可选：`1280x720`、`720x1080`、`1920x1080`、`1080x1920`，默认：`1280x720` |
| `mode`     | string         | 否  | 生成模式。可选：`i2v` 或 `r2v`。详见 [模式说明](#模式说明)                               |
| `images`   | array\[string] | 否  | 图片 URL 数组，作为参考素材                                                     |
| `videos`   | array\[string] | 否  | 视频 URL 数组，作为参考素材                                                     |

***

## 模式说明

### i2v 模式（图片生成视频，首尾帧模式）

当 `mode` 设置为 `i2v` 且提供了 `images` 时：

* 数组中的 **第一张图片** 作为 **首帧**（必填）
* **第二张图片**（如提供）作为 **尾帧**（选填）
* 生成的视频将从首帧过渡到尾帧

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.wisgate.ai/v1/videos" \
    -H "Authorization: Bearer $WISDOM_GATE_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "prompt": "城市天际线从白天到夜晚的平滑过渡",
      "model": "doubao-seedance-2",
      "duration": 6,
      "size": "1280x720",
      "mode": "i2v",
      "images": [
        "https://example.com/first-frame.jpg",
        "https://example.com/last-frame.jpg"
      ]
    }'
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.wisgate.ai/v1/videos"
  headers = {
      "Authorization": "Bearer WISDOM_GATE_KEY",
      "Content-Type": "application/json"
  }
  data = {
      "prompt": "城市天际线从白天到夜晚的平滑过渡",
      "model": "doubao-seedance-2",
      "duration": 6,
      "size": "1280x720",
      "mode": "i2v",
      "images": [
          "https://example.com/first-frame.jpg",
          "https://example.com/last-frame.jpg"
      ]
  }

  response = requests.post(url, headers=headers, json=data)
  result = response.json()
  print(f"视频 ID: {result['id']}")
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.wisgate.ai/v1/videos", {
    method: "POST",
    headers: {
      Authorization: "Bearer WISDOM_GATE_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      prompt: "城市天际线从白天到夜晚的平滑过渡",
      model: "doubao-seedance-2",
      duration: 6,
      size: "1280x720",
      mode: "i2v",
      images: [
        "https://example.com/first-frame.jpg",
        "https://example.com/last-frame.jpg",
      ],
    }),
  });

  const result = await response.json();
  console.log(`视频 ID: ${result.id}`);
  ```
</CodeGroup>

### r2v 模式（参考生成视频）

当 `mode` 设置为 `r2v` 时，所有提供的图片和视频都将作为参考素材来引导视频生成。模型会综合所有参考的视觉信息来创建输出视频。

<Note>
  每张图片和每个视频文件必须小于 **4MB**。
</Note>

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.wisgate.ai/v1/videos" \
    -H "Authorization: Bearer $WISDOM_GATE_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "prompt": "参考图1和图2，设计一个带有平滑线条流动和背景光影流动的淡入淡出动画。",
      "model": "doubao-seedance-2",
      "duration": 4,
      "size": "1280x720",
      "mode": "r2v",
      "images": [
        "https://example.com/reference1.jpg",
        "https://example.com/reference2.jpg"
      ],
      "videos": [
        "https://example.com/reference-video.mp4"
      ]
    }'
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.wisgate.ai/v1/videos"
  headers = {
      "Authorization": "Bearer WISDOM_GATE_KEY",
      "Content-Type": "application/json"
  }
  data = {
      "prompt": "参考图1和图2，设计一个带有平滑线条流动和背景光影流动的淡入淡出动画。",
      "model": "doubao-seedance-2",
      "duration": 4,
      "size": "1280x720",
      "mode": "r2v",
      "images": [
          "https://example.com/reference1.jpg",
          "https://example.com/reference2.jpg"
      ],
      "videos": [
          "https://example.com/reference-video.mp4"
      ]
  }

  response = requests.post(url, headers=headers, json=data)
  result = response.json()
  print(f"视频 ID: {result['id']}")
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.wisgate.ai/v1/videos", {
    method: "POST",
    headers: {
      Authorization: "Bearer WISDOM_GATE_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      prompt:
        "参考图1和图2，设计一个带有平滑线条流动和背景光影流动的淡入淡出动画。",
      model: "doubao-seedance-2",
      duration: 4,
      size: "1280x720",
      mode: "r2v",
      images: [
        "https://example.com/reference1.jpg",
        "https://example.com/reference2.jpg",
      ],
      videos: ["https://example.com/reference-video.mp4"],
    }),
  });

  const result = await response.json();
  console.log(`视频 ID: ${result.id}`);
  ```
</CodeGroup>

***

## 完整工作流

### 第一步：创建视频任务

```python theme={null}
import requests

url = "https://api.wisgate.ai/v1/videos"
headers = {
    "Authorization": "Bearer WISDOM_GATE_KEY",
    "Content-Type": "application/json"
}
data = {
    "prompt": "一只猫在街上走",
    "model": "doubao-seedance-2",
    "duration": 5,
    "size": "1280x720"
}

response = requests.post(url, headers=headers, json=data)
result = response.json()
video_id = result["id"]
print(f"已创建视频任务: {video_id}")
```

### 第二步：轮询状态并下载

使用返回的 `id` 通过 [查询接口](/api-reference/video/result) 查询状态。当状态为 `completed` 时，视频下载链接可通过 `meta_data.url` 获取：

```python theme={null}
import time

status_url = f"https://api.wisgate.ai/v1/videos/{video_id}"

while True:
    response = requests.get(status_url, headers={"Authorization": "Bearer WISDOM_GATE_KEY"})
    result = response.json()
    status = result["status"]
    progress = result.get("progress", 0)
    print(f"状态: {status}, 进度: {progress}%")

    if status == "completed":
        video_url = result["meta_data"]["url"]
        print(f"视频 URL: {video_url}")

        # 下载视频
        video_response = requests.get(video_url, stream=True)
        with open("generated_video.mp4", "wb") as f:
            for chunk in video_response.iter_content(chunk_size=8192):
                f.write(chunk)
        print("视频下载成功！")
        break
    elif status == "failed":
        print(f"错误: {result.get('error')}")
        break

    time.sleep(10)
```

***

## 支持的分辨率

| 尺寸          | 方向 | 说明        |
| ----------- | -- | --------- |
| `1280x720`  | 横屏 | 标准 HD（默认） |
| `720x1080`  | 竖屏 | 竖向格式      |
| `1920x1080` | 横屏 | 全高清       |
| `1080x1920` | 竖屏 | 竖向全高清     |

***

## 最佳实践

### 1. 提示词优化

使用具体、详细的描述，包含场景、动作和风格：

**好的提示词：**

```
金色麦田在日落微风中摇曳的电影航拍镜头，温暖的光线投下长长的阴影，4K 画质
```

**差的提示词：**

```
麦田
```

### 2. 时长选择

根据内容复杂度选择合适的时长：

* **4-6 秒**：最适合简单场景，生成最快
* **7-10 秒**：适合中等复杂度场景
* **11-15 秒**：适合包含多个元素的复杂场景

### 3. 参考素材质量

使用图片或视频作为参考时：

* 确保 URL 可公开访问
* 每个文件大小不超过 4MB
* 使用高质量、清晰的参考素材以获得最佳效果
* 在 `i2v` 模式下，确保首帧和尾帧图片的风格和分辨率一致

### 4. 模式选择

* 当需要精确控制视频的起始帧（和可选的结束帧）时，使用 **i2v** 模式
* 当希望模型使用多个参考素材作为风格/内容引导时，使用 **r2v** 模式

***

## 常见问题

### Seedance 2.0 和 Sora 模型有什么区别？

Seedance 2.0 使用 `application/json` 格式，直接接受图片和视频 URL；而 Sora 模型使用 `multipart/form-data` 进行文件上传。Seedance 2.0 还支持首尾帧控制（`i2v` 模式）和多参考生成（`r2v` 模式）等独特功能。

### 参考文件的大小限制是什么？

每张图片和每个视频参考文件必须小于 **4MB**。

### 可以提供多少张图片/视频？

`i2v` 模式下最多提供 2 张图片（首帧必填，尾帧选填）。`r2v` 模式下可以提供多张图片和视频作为参考。

### 不提供图片或视频可以使用 Seedance 2.0 吗？

可以。如果不提供 `mode`、`images` 或 `videos` 参数，模型将仅根据文本提示词生成视频（纯文本生成视频）。

***
