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

# Seedance 2.0 mini

> ByteDance Seedance 2.0 mini video model — multimodal reference, editing, extension, first/last-frame, 480p/720p.

Seedance 2.0 Fast is ByteDance's latest video generation model available through Upmore API. It supports text-to-video, image-to-video, multimodal reference input, video editing, video extension, and synchronized audio generation.

## Key capabilities

| Feature                             | Description                                                                                       |
| ----------------------------------- | ------------------------------------------------------------------------------------------------- |
| Text-to-video                       | Generate video from text prompts                                                                  |
| Image-to-video (first frame)        | Use an image as the first frame                                                                   |
| Image-to-video (first + last frame) | Use two images as first and last frames                                                           |
| Multimodal reference                | Combine images, videos, and audio as references (1–9 images, up to 3 videos, up to 3 audio clips) |
| Video editing                       | Modify elements in an existing video using reference images                                       |
| Video extension                     | Extend and concatenate reference videos                                                           |
| Audio generation                    | Auto-generate synchronized voice, sound effects, and background music                             |
| Web search                          | Enhance generation with real-time internet content (text-to-video only)                           |
| Return last frame                   | Retrieve the last frame of generated video                                                        |

## Output specifications

| Property     | Value                                     |
| ------------ | ----------------------------------------- |
| Resolution   | 480p, 720p, 1080p                         |
| Aspect ratio | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive |
| Duration     | 4–15 seconds                              |
| Format       | mp4                                       |

## Workflow

```
1. POST /v1/video/generations  →  task_id
2. Poll GET /v1/video/generations/{task_id}  →  status
3. When status = "succeeded"  →  download video URL (valid 24 hours)
```

## Examples

### Text-to-video

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.upmore.net/v1/video/generations \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "doubao-seedance-2-0-mini",
      "content": [
        {
          "type": "text",
          "text": "A cat playing piano in a sunlit room, cinematic lighting"
        }
      ],
      "generate_audio": true,
      "ratio": "16:9",
      "duration": 8
    }'
  ```

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

  headers = {"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"}

  # Step 1: create task
  resp = requests.post(
      "https://api.upmore.net/v1/video/generations",
      headers=headers,
      json={
          "model": "doubao-seedance-2-0-mini",
          "content": [
              {"type": "text", "text": "A cat playing piano in a sunlit room, cinematic lighting"}
          ],
          "generate_audio": True,
          "ratio": "16:9",
          "duration": 8
      }
  )
  task_id = resp.json()["task_id"]

  # Step 2: poll for result
  while True:
      result = requests.get(
          f"https://api.upmore.net/v1/video/generations/{task_id}",
          headers=headers
      ).json()
      status = result["data"]["status"]
      if status == "SUCCESS":
          print("Video URL:", result["data"]["data"]["content"]["video_url"])
          break
      elif status == "FAILED":
          print("Failed:", result["data"].get("fail_reason"))
          break
      time.sleep(5)
  ```
</CodeGroup>

### Multimodal reference (image + video + audio)

```bash cURL theme={null}
curl https://api.upmore.net/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-mini",
    "content": [
      {
        "type": "text",
        "text": "Extend the video with a smooth camera pan, festive atmosphere"
      },
      {
        "type": "image_url",
        "image_url": {"url": "https://example.com/character.jpg"},
        "role": "reference_image"
      },
      {
        "type": "video_url",
        "video_url": {"url": "https://example.com/clip.mp4"},
        "role": "reference_video"
      },
      {
        "type": "audio_url",
        "audio_url": {"url": "https://example.com/bgm.mp3"},
        "role": "reference_audio"
      }
    ],
    "generate_audio": true,
    "ratio": "16:9",
    "duration": 11
  }'
```

### Video editing

```bash cURL theme={null}
curl https://api.upmore.net/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-mini",
    "content": [
      {
        "type": "text",
        "text": "Replace the water bottle in the video with the perfume bottle from the image, keep camera movement unchanged"
      },
      {
        "type": "image_url",
        "image_url": {"url": "https://example.com/perfume.jpg"},
        "role": "reference_image"
      },
      {
        "type": "video_url",
        "video_url": {"url": "https://example.com/original.mp4"},
        "role": "reference_video"
      }
    ],
    "generate_audio": true,
    "ratio": "16:9",
    "duration": 5
  }'
```

### Web search enhanced (text-to-video only)

```bash cURL theme={null}
curl https://api.upmore.net/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-0-mini",
    "content": [
      {
        "type": "text",
        "text": "Macro shot of cherry blossoms in spring, petals falling slowly"
      }
    ],
    "generate_audio": true,
    "ratio": "16:9",
    "duration": 11,
    "tools": [{"type": "web_search"}]
  }'
```

## Parameters

| Parameter                 | Type    | Required    | Description                                                                          |
| ------------------------- | ------- | ----------- | ------------------------------------------------------------------------------------ |
| `model`                   | string  | Yes         | `seedance-fast`                                                                      |
| `content`                 | array   | Yes         | Input content array (text, image\_url, video\_url, audio\_url items)                 |
| `content[].type`          | string  | Yes         | `text`, `image_url`, `video_url`, or `audio_url`                                     |
| `content[].text`          | string  | Text items  | Text prompt (max 500 Chinese chars / 1000 English words)                             |
| `content[].image_url.url` | string  | Image items | Image URL, Base64 data URI, or `asset://<ID>`                                        |
| `content[].video_url.url` | string  | Video items | Video URL or `asset://<ID>` (mp4/mov, max 50 MB, 2–15s)                              |
| `content[].audio_url.url` | string  | Audio items | Audio URL, Base64 data URI, or `asset://<ID>` (wav/mp3, max 15 MB)                   |
| `content[].role`          | string  | Conditional | `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` |
| `generate_audio`          | boolean | No          | Generate synchronized audio. Default: `true`                                         |
| `resolution`              | string  | No          | `480p`, `720p`, or `1080p`. Default: `720p`                                          |
| `ratio`                   | string  | No          | `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `adaptive`. Default: `adaptive`         |
| `duration`                | integer | No          | 4–15 seconds. Default: `5`                                                           |
| `tools`                   | array   | No          | `[{"type": "web_search"}]` for web search (text-to-video only)                       |
| `watermark`               | boolean | No          | Add watermark. Default: `false`                                                      |

### Input modes

| Mode                                | Content items                       | `role` values                                           |
| ----------------------------------- | ----------------------------------- | ------------------------------------------------------- |
| Text-to-video                       | 1× text                             | —                                                       |
| Image-to-video (first frame)        | text (optional) + 1× image\_url     | `first_frame` or omit                                   |
| Image-to-video (first + last frame) | text (optional) + 2× image\_url     | `first_frame` + `last_frame`                            |
| Multimodal reference                | text (optional) + image/video/audio | `reference_image`, `reference_video`, `reference_audio` |
| Video editing                       | text + image\_url + video\_url      | `reference_image` + `reference_video`                   |
| Video extension                     | text + video\_url(s)                | `reference_video`                                       |

> **Note:** First frame, first+last frame, and multimodal reference are mutually exclusive — do not mix them in the same request.

### Resolution pixel values

| Resolution | 16:9      | 4:3       | 1:1       | 3:4       | 9:16      | 21:9     |
| ---------- | --------- | --------- | --------- | --------- | --------- | -------- |
| 480p       | 864x496   | 752x560   | 640x640   | 560x752   | 496x864   | 992x432  |
| 720p       | 1280x720  | 1112x834  | 960x960   | 834x1112  | 720x1280  | 1470x630 |
| 1080p      | 1920x1080 | 1664x1248 | 1440x1440 | 1248x1664 | 1080x1920 | 2208x944 |
