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

# Seedance 2.0 Mini

> ByteDance's Seedance 2.0 Mini lightweight video generation model with multimodal reference, video editing, extension, audio generation, and web search.

Seedance 2.0 Mini is the lightweight model in ByteDance's Seedance 2.0 family, available through Anyfast API. It keeps the full Seedance 2.0 multimodal toolkit — text-to-video, image-to-video, multimodal reference input, video editing, video extension, and synchronized audio generation — while delivering faster generation at lower cost, making it well suited for high-volume scenarios such as e-commerce content, marketing assets, and UGC creation.

## 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 (0–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 not supported)          |
| Aspect ratio | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive |
| Duration     | 4–15 seconds                              |
| Format       | mp4                                       |
| Frame rate   | 24 fps                                    |

## 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://www.anyfast.ai/v1/video/generations \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "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://www.anyfast.ai/v1/video/generations",
      headers=headers,
      json={
          "model": "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://www.anyfast.ai/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)

Reference assets in the prompt with `@image1`, `@video1`, `@audio1` — numbered per media type by their order in the `content` array.

> **Important:** Assets must be passed in strict order: `text`, `image_url`, `video_url`, `audio_url`. Do not reorder them — doing so may cause errors. When multiple assets are included, do not mix in other asset types.

```bash cURL theme={null}
curl https://www.anyfast.ai/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-mini",
    "content": [
      {
        "type": "text",
        "text": "The character from @image1 dances in the scene from @video1, with @audio1 as background music"
      },
      {
        "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://www.anyfast.ai/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-mini",
    "content": [
      {
        "type": "text",
        "text": "Replace the water bottle in @video1 with the perfume bottle from @image1, 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://www.anyfast.ai/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "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-2.0-mini`                                                                  |
| `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` or `720p`. Default: `720p`. (1080p not supported)                             |
| `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.

### Referencing assets in prompts

Inside the text prompt, you can refer to media items using `@<type><N>` placeholders — numbered **per media type by their order** in the `content` array:

| Placeholder               | Refers to                          |
| ------------------------- | ---------------------------------- |
| `@image1`, `@image2`, ... | The 1st, 2nd, ... `image_url` item |
| `@video1`, `@video2`, ... | The 1st, 2nd, ... `video_url` item |
| `@audio1`, `@audio2`, ... | The 1st, 2nd, ... `audio_url` item |

Example: `"The character from @image1 walks through the scene in @video1 with @audio1 as background"`.

> **Note:** Assets must be passed in strict order: `text`, `image_url`, `video_url`, `audio_url`. Do not reorder them — doing so may cause errors. When multiple assets are included, do not mix in other asset types.

### 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 |

<script src="/feedback.js" />
