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

# 创建 Seedance 视频

> 在 CometAPI 上创建 Seedance 视频任务。Seedance 2.0 支持用于文生视频和参考图像生成的最高 4K 精确 WxH 值。

<Info>
  从下表中为 `WxH` 字段选择已文档化的 `size` 值。
</Info>

## 使用参考图像

只有 Seedance 2.0 模型接受 `input_reference`。添加一个 `input_reference` 文件以进行图像引导生成。对于高级多参考 Prompt，请按上传顺序重复使用同一个 multipart 字段。

Seedance 2.0 对 Prompt 如何将每张参考图像与场景关联起来很敏感。按顺序引用上传的文件，例如 `[Image 1]`、`[Image 2]` 和 `[Image 3]`，然后为每张图像分配明确的角色：

* 将 `[Image 1]` 用于主要主体、角色或产品。
* 将 `[Image 2]` 用于次要主体、道具或陪衬。
* 将 `[Image 3]` 用于背景、场景、光照或风格。

说明哪些内容应保持可识别、哪些可以变化，以及动作、镜头运动、视觉风格和场景。即使上传已被接受，模糊的 Prompt 也可能使生成的视频看起来像是未使用参考图像。

这种 Prompt 结构比仅列出图像更可靠：

```text theme={null}
Use the uploaded images in order: keep the boy wearing glasses and a blue T-shirt from [Image 1], add the corgi puppy from [Image 2], and use the lawn from [Image 3] as the setting. Create a 4-second 3D cartoon video with the boy and puppy sitting together, a slow camera push-in, soft daylight, and no extra characters.
```

## 按模型划分的时长

如果省略 `seconds`，CometAPI 会请求一个 5 秒的视频片段。需要特定时长时，请将 `seconds` 作为字符串发送。

| 模型系列                             | 支持情况 `seconds` | 默认值 | 边界行为        |
| -------------------------------- | -------------- | --- | ----------- |
| Seedance 2.0 和 Seedance 2.0 Fast | `4`-`15`       | `5` | 使用范围内的整数秒数。 |
| Seedance 1.5 Pro                 | `4`-`12`       | `5` | 使用范围内的整数秒数。 |
| Seedance 1.0 Pro                 | `2`-`10`       | `5` | 使用范围内的整数秒数。 |

## 按模型划分的尺寸支持情况

下表遵循官方 Seedance 分辨率映射，并将已发布的尺寸值集中列出。

对于 `1080p`，最右侧列列出了文档中规定的 `Seedance 1.5 Pro` 和 `Seedance 2.0` 值。`Seedance 2.0 Fast` 未列在该官方 `1080p` 表中。

`4K` 条目仅适用于 `doubao-seedance-2-0`。您可以将其用于文生视频，或用于包含 `input_reference` 的图生视频请求。它们不适用于 `doubao-seedance-2-0-fast`。请传递表中所示的准确 `WxH` 值。

| 分辨率类别   | 宽高比    | Seedance 1.0 系列的像素值 | Seedance 1.5 Pro / Seedance 2.0 / Seedance 2.0 Fast 的像素值 |
| ------- | ------ | ------------------- | -------------------------------------------------------- |
| `480p`  | `16:9` | `864x480`           | `864x496`                                                |
|         | `4:3`  | `736x544`           | `752x560`                                                |
|         | `1:1`  | `640x640`           | `640x640`                                                |
|         | `3:4`  | `544x736`           | `560x752`                                                |
|         | `9:16` | `480x864`           | `496x864`                                                |
|         | `21:9` | `960x416`           | `992x432`                                                |
| `720p`  | `16:9` | `1248x704`          | `1280x720`                                               |
|         | `4:3`  | `1120x832`          | `1112x834`                                               |
|         | `1:1`  | `960x960`           | `960x960`                                                |
|         | `3:4`  | `832x1120`          | `834x1112`                                               |
|         | `9:16` | `704x1248`          | `720x1280`                                               |
|         | `21:9` | `1504x640`          | `1470x630`                                               |
| `1080p` | `16:9` | `1920x1088`         | `1920x1080`                                              |
|         | `4:3`  | `1664x1248`         | `1664x1248`                                              |
|         | `1:1`  | `1440x1440`         | `1440x1440`                                              |
|         | `3:4`  | `1248x1664`         | `1248x1664`                                              |
|         | `9:16` | `1088x1920`         | `1080x1920`                                              |
|         | `21:9` | `2176x928`          | `2206x946`                                               |
| `4K`    | `16:9` | —                   | `3840x2160` (仅限 Seedance 2.0)                            |
|         | `4:3`  | —                   | `3326x2494` (仅限 Seedance 2.0)                            |
|         | `1:1`  | —                   | `2880x2880` (仅限 Seedance 2.0)                            |
|         | `3:4`  | —                   | `2494x3326` (仅限 Seedance 2.0)                            |
|         | `9:16` | —                   | `2160x3840` (仅限 Seedance 2.0)                            |
|         | `21:9` | —                   | `4398x1886` (仅限 Seedance 2.0)                            |

请为目标模型选择文档中规定的 `WxH` 值。准确的 `WxH` 支持情况仍取决于模型，因此在依赖未记录的尺寸之前，请检查生成完成的媒体。


## OpenAPI

````yaml api/openapi/video/seedance/post-seedance-create.openapi.json POST /v1/videos
openapi: 3.1.0
info:
  title: Seedance Video Generation API
  version: 1.0.0
  description: >-
    Create an asynchronous ByteDance Seedance video task through CometAPI.
    Seedance 2.0 models also accept one or more input_reference image files; for
    multiple files, repeat the same multipart field and bind each image in the
    prompt as [Image 1], [Image 2], and so on. Set size to an exact WxH value
    such as 1280x720. The standard doubao-seedance-2-0 model accepts these exact
    4K sizes for text-to-video and reference-image generation: 3840x2160,
    3326x2494, 2880x2880, 2494x3326, 2160x3840, and 4398x1886. These 4K sizes do
    not apply to doubao-seedance-2-0-fast. Save the returned id and poll GET
    /v1/videos/{id} until the status reaches completed.
servers:
  - url: https://api.cometapi.com
security:
  - bearerAuth: []
paths:
  /v1/videos:
    post:
      summary: Create a Seedance video task
      description: >-
        Submit a text-to-video or image-to-video job for any Seedance model
        family. The request body is multipart/form-data so that optional
        input_reference images can be uploaded in the same call. Set size to an
        exact WxH value. The standard doubao-seedance-2-0 model accepts these
        six exact 4K sizes for text-to-video and reference-image generation:
        3840x2160, 3326x2494, 2880x2880, 2494x3326, 2160x3840, and 4398x1886.
        These 4K sizes do not apply to doubao-seedance-2-0-fast. Image-to-video
        is supported only by the Seedance 2.0 models (doubao-seedance-2-0,
        doubao-seedance-2-0-fast); the 1.0 Pro and 1.5 Pro models accept text
        prompts only. For multiple reference images, repeat input_reference in
        upload order and describe each image's role in the prompt with labels
        such as [Image 1], [Image 2], and [Image 3]. The endpoint returns
        immediately with a task id; use GET /v1/videos/{id} to read the final
        result.
      operationId: seedance_create_video
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - prompt
                - model
              properties:
                prompt:
                  type: string
                  description: >-
                    Text prompt that describes the video. Required. When using
                    reference images, describe what each uploaded image should
                    control, such as the subject from [Image 1], the secondary
                    object from [Image 2], and the background or style from
                    [Image 3]. Also state the action, camera motion, visual
                    style, and scene.
                  example: >-
                    A slow cinematic camera push across a coastal landscape at
                    sunrise.
                model:
                  type: string
                  description: >-
                    Seedance model id. Only the two 2.0 models accept
                    input_reference.
                  enum:
                    - doubao-seedance-2-0
                    - doubao-seedance-2-0-fast
                    - doubao-seedance-1-5-pro
                    - doubao-seedance-1-0-pro
                  example: doubao-seedance-2-0
                seconds:
                  type: integer
                  description: >-
                    Video duration in seconds. The accepted range depends on the
                    model: doubao-seedance-2-0 and doubao-seedance-2-0-fast
                    accept 4 to 15, doubao-seedance-1-5-pro accepts 4 to 12, and
                    doubao-seedance-1-0-pro accepts 2 to 10. The default is 5
                    for every model.
                  minimum: 2
                  maximum: 15
                  default: 5
                  example: 5
                size:
                  type: string
                  description: >-
                    Output size as an exact WxH value, such as 1280x720. For
                    doubao-seedance-2-0 4K output, use 3840x2160, 3326x2494,
                    2880x2880, 2494x3326, 2160x3840, or 4398x1886. These 4K
                    values work for text-to-video and requests with
                    input_reference, but they do not apply to
                    doubao-seedance-2-0-fast. Exact WxH support remains
                    model-dependent, and an undocumented value can normalize to
                    another size or fail.
                  pattern: ^[1-9]\d{2,3}x[1-9]\d{2,3}$
                  examples:
                    - 1280x720
                    - 1920x1080
                    - 3840x2160
                    - 3326x2494
                    - 2880x2880
                    - 2494x3326
                    - 2160x3840
                    - 4398x1886
                    - 1112x834
                    - 960x960
                    - 834x1112
                    - 720x1280
                    - 1080x1920
                    - 1470x630
                  example: 1280x720
                input_reference:
                  type: string
                  format: binary
                  description: >-
                    Optional reference image uploaded as a multipart file.
                    Repeat this field to send multiple reference images; the
                    order of repeated fields is the order you should reference
                    in the prompt as [Image 1], [Image 2], and so on. Use JPEG
                    or PNG files for best compatibility. Only
                    doubao-seedance-2-0 and doubao-seedance-2-0-fast accept this
                    field; sending it with a 1.0 Pro or 1.5 Pro model returns
                    HTTP 400.
            encoding:
              input_reference:
                contentType: image/jpeg, image/png, image/webp
            examples:
              seedance_2_0_4k_text_to_video:
                summary: Seedance 2.0 4K text-to-video
                value:
                  prompt: >-
                    A slow cinematic camera push across a coastal landscape at
                    sunrise.
                  model: doubao-seedance-2-0
                  seconds: 4
                  size: 3840x2160
      responses:
        '200':
          description: Task created. Save the returned id and poll GET /v1/videos/{id}.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateVideoResponse'
              example:
                id: task_abc123
                task_id: task_abc123
                object: video
                model: doubao-seedance-2-0
                status: queued
                progress: 0
                created_at: 1776681149
        '400':
          description: >-
            The request is missing a required field or contains an out-of-range
            value.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                missing_prompt:
                  summary: prompt field missing
                  value:
                    code: invalid_request
                    message: prompt is required
                missing_model:
                  summary: model field missing
                  value:
                    error:
                      code: ''
                      message: model name is required
                      type: comet_api_error
                invalid_duration:
                  summary: seconds outside the per-model range
                  value:
                    code: InvalidParameter
                    message: >-
                      the parameter duration specified in the request is not
                      valid
                i2v_not_supported:
                  summary: input_reference sent with a 1.0 Pro or 1.5 Pro model
                  value:
                    code: InvalidParameter
                    message: >-
                      The parameter task_type specified in the request is not
                      valid: the specified task_type r2v does not support model
                      seedance-1-5-pro
        '401':
          description: The API key is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalid_token:
                  summary: Bearer token rejected
                  value:
                    error:
                      code: ''
                      message: invalid token
                      type: comet_api_error
      x-codeSamples:
        - lang: Shell
          label: Text-to-video 4K (Seedance 2.0, exact 3840x2160)
          source: |-
            curl https://api.cometapi.com/v1/videos \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              -F 'prompt="A slow cinematic camera push across a coastal landscape at sunrise"' \
              -F 'model="doubao-seedance-2-0"' \
              -F 'seconds="4"' \
              -F 'size="3840x2160"'
        - lang: Python
          label: Text-to-video 4K (Seedance 2.0, exact 3840x2160)
          source: |
            import os
            import requests

            response = requests.post(
                "https://api.cometapi.com/v1/videos",
                headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                data={
                    "prompt": "A slow cinematic camera push across a coastal landscape at sunrise",
                    "model": "doubao-seedance-2-0",
                    "seconds": "4",
                    "size": "3840x2160",
                },
                timeout=30,
            )

            response.raise_for_status()
            print(response.json())
        - lang: JavaScript
          label: Text-to-video 4K (Seedance 2.0, exact 3840x2160)
          source: >
            const form = new FormData();

            form.append("prompt", "A slow cinematic camera push across a coastal
            landscape at sunrise");

            form.append("model", "doubao-seedance-2-0");

            form.append("seconds", "4");

            form.append("size", "3840x2160");


            const response = await fetch("https://api.cometapi.com/v1/videos", {
              method: "POST",
              headers: { Authorization: `Bearer ${process.env.COMETAPI_KEY}` },
              body: form,
            });


            const result = await response.json();

            console.log(result);
        - lang: Shell
          label: Single reference image (Seedance 2.0)
          source: |-
            curl https://api.cometapi.com/v1/videos \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              -F 'prompt="Use [Image 1] as the main visual reference. Preserve the subject identity, clothing colors, and overall composition from [Image 1]. Create a 4-second video with a gentle camera push-in, subtle natural motion, warm daylight, and a realistic cinematic style."' \
              -F 'model="doubao-seedance-2-0"' \
              -F 'seconds="4"' \
              -F 'size="720x1280"' \
              -F 'input_reference=@"/path/to/reference.png"'
        - lang: Python
          label: Single reference image (Seedance 2.0)
          source: >
            import os

            import requests


            prompt = "Use [Image 1] as the main visual reference. Preserve the
            subject identity, clothing colors, and overall composition from
            [Image 1]. Create a 4-second video with a gentle camera push-in,
            subtle natural motion, warm daylight, and a realistic cinematic
            style."


            with open("/path/to/reference.png", "rb") as image:
                response = requests.post(
                    "https://api.cometapi.com/v1/videos",
                    headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                    data={
                        "prompt": prompt,
                        "model": "doubao-seedance-2-0",
                        "seconds": "4",
                        "size": "720x1280",
                    },
                    files=[("input_reference", ("reference.png", image, "image/png"))],
                    timeout=30,
                )

            response.raise_for_status()

            print(response.json())
        - lang: JavaScript
          label: Single reference image (Seedance 2.0)
          source: >
            import { readFile } from "node:fs/promises";


            const prompt = "Use [Image 1] as the main visual reference. Preserve
            the subject identity, clothing colors, and overall composition from
            [Image 1]. Create a 4-second video with a gentle camera push-in,
            subtle natural motion, warm daylight, and a realistic cinematic
            style.";

            const image = await readFile("/path/to/reference.png");


            const form = new FormData();

            form.append("prompt", prompt);

            form.append("model", "doubao-seedance-2-0");

            form.append("seconds", "4");

            form.append("size", "720x1280");

            form.append("input_reference", new Blob([image], { type: "image/png"
            }), "reference.png");


            const response = await fetch("https://api.cometapi.com/v1/videos", {
              method: "POST",
              headers: { Authorization: `Bearer ${process.env.COMETAPI_KEY}` },
              body: form,
            });


            const result = await response.json();

            console.log(result);
        - lang: Shell
          label: Multiple reference images (Seedance 2.0)
          source: |-
            curl https://api.cometapi.com/v1/videos \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              -F 'prompt="Use the uploaded images in order: keep the boy wearing glasses and a blue T-shirt from [Image 1], add the corgi puppy from [Image 2], and use the lawn from [Image 3] as the setting. Create a 4-second 3D cartoon video with the boy and puppy sitting together, a slow camera push-in, soft daylight, and no extra characters."' \
              -F 'model="doubao-seedance-2-0"' \
              -F 'seconds="4"' \
              -F 'size="720x1280"' \
              -F 'input_reference=@"/path/to/seelite_ref_1.png"' \
              -F 'input_reference=@"/path/to/seelite_ref_2.png"' \
              -F 'input_reference=@"/path/to/seelite_ref_3.png"'
        - lang: Python
          label: Multiple reference images (Seedance 2.0)
          source: >
            import os

            import requests


            prompt = "Use the uploaded images in order: keep the boy wearing
            glasses and a blue T-shirt from [Image 1], add the corgi puppy from
            [Image 2], and use the lawn from [Image 3] as the setting. Create a
            4-second 3D cartoon video with the boy and puppy sitting together, a
            slow camera push-in, soft daylight, and no extra characters."


            with open("/path/to/seelite_ref_1.png", "rb") as image_1,
            open("/path/to/seelite_ref_2.png", "rb") as image_2,
            open("/path/to/seelite_ref_3.png", "rb") as image_3:
                response = requests.post(
                    "https://api.cometapi.com/v1/videos",
                    headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                    data={
                        "prompt": prompt,
                        "model": "doubao-seedance-2-0",
                        "seconds": "4",
                        "size": "720x1280",
                    },
                    files=[
                        ("input_reference", ("seelite_ref_1.png", image_1, "image/png")),
                        ("input_reference", ("seelite_ref_2.png", image_2, "image/png")),
                        ("input_reference", ("seelite_ref_3.png", image_3, "image/png")),
                    ],
                    timeout=30,
                )

            response.raise_for_status()

            print(response.json())
        - lang: JavaScript
          label: Multiple reference images (Seedance 2.0)
          source: >
            import { readFile } from "node:fs/promises";


            const prompt = "Use the uploaded images in order: keep the boy
            wearing glasses and a blue T-shirt from [Image 1], add the corgi
            puppy from [Image 2], and use the lawn from [Image 3] as the
            setting. Create a 4-second 3D cartoon video with the boy and puppy
            sitting together, a slow camera push-in, soft daylight, and no extra
            characters.";

            const image1 = await readFile("/path/to/seelite_ref_1.png");

            const image2 = await readFile("/path/to/seelite_ref_2.png");

            const image3 = await readFile("/path/to/seelite_ref_3.png");


            const form = new FormData();

            form.append("prompt", prompt);

            form.append("model", "doubao-seedance-2-0");

            form.append("seconds", "4");

            form.append("size", "720x1280");

            form.append("input_reference", new Blob([image1], { type:
            "image/png" }), "seelite_ref_1.png");

            form.append("input_reference", new Blob([image2], { type:
            "image/png" }), "seelite_ref_2.png");

            form.append("input_reference", new Blob([image3], { type:
            "image/png" }), "seelite_ref_3.png");


            const response = await fetch("https://api.cometapi.com/v1/videos", {
              method: "POST",
              headers: { Authorization: `Bearer ${process.env.COMETAPI_KEY}` },
              body: form,
            });


            const result = await response.json();

            console.log(result);
        - lang: Shell
          label: Text-to-video (exact 1920x1080)
          source: |-
            curl https://api.cometapi.com/v1/videos \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              -F 'prompt="A slow cinematic camera push across a coastal landscape at sunrise"' \
              -F 'model="doubao-seedance-1-5-pro"' \
              -F 'seconds="4"' \
              -F 'size="1920x1080"'
        - lang: Python
          label: Text-to-video (exact 1920x1080)
          source: |
            import os
            import requests

            response = requests.post(
                "https://api.cometapi.com/v1/videos",
                headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                data={
                    "prompt": "A slow cinematic camera push across a coastal landscape at sunrise",
                    "model": "doubao-seedance-2-0",
                    "seconds": "4",
                    "size": "1920x1080",
                },
                timeout=30,
            )

            response.raise_for_status()
            print(response.json())
        - lang: JavaScript
          label: Text-to-video (exact 1920x1080)
          source: >
            const form = new FormData();

            form.append("prompt", "A slow cinematic camera push across a coastal
            landscape at sunrise");

            form.append("model", "doubao-seedance-1-5-pro");

            form.append("seconds", "4");

            form.append("size", "1920x1080");


            const response = await fetch("https://api.cometapi.com/v1/videos", {
              method: "POST",
              headers: { Authorization: `Bearer ${process.env.COMETAPI_KEY}` },
              body: form,
            });


            const result = await response.json();

            console.log(result);
components:
  schemas:
    CreateVideoResponse:
      type: object
      required:
        - id
        - object
        - model
        - status
        - progress
        - created_at
      properties:
        id:
          type: string
          description: Task id. Use it as the path parameter for GET /v1/videos/{id}.
        task_id:
          type: string
          description: Alias of id returned for compatibility. The value matches id.
        object:
          type: string
          description: Object type, always video.
        model:
          type: string
          description: Echo of the requested model id.
        status:
          type: string
          description: Initial task status. Newly created tasks are returned as queued.
          enum:
            - queued
            - in_progress
            - completed
            - failed
            - error
        progress:
          type: integer
          minimum: 0
          maximum: 100
          description: Completion percentage. 0 at creation.
        created_at:
          type: integer
          description: Task creation time as a Unix timestamp in seconds.
      additionalProperties: true
    ErrorResponse:
      description: >-
        Error body. The endpoint returns one of two shapes depending on where
        the validation fails.
      oneOf:
        - type: object
          properties:
            code:
              type:
                - string
                - 'null'
              description: Short error code such as invalid_request or InvalidParameter.
            message:
              type: string
              description: Human-readable error message.
          required:
            - message
          additionalProperties: true
        - type: object
          properties:
            error:
              type: object
              properties:
                code:
                  type:
                    - string
                    - 'null'
                message:
                  type: string
                type:
                  type: string
                  description: Error category, for example comet_api_error.
              required:
                - message
                - type
              additionalProperties: true
          required:
            - error
          additionalProperties: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication. Use your CometAPI key.

````