# Seedance 2.5 US Reference to Video API

> Tạo, chỉnh sửa và mở rộng video tham chiếu Seedance 2.5 từ tối đa 30 ảnh, 10 video và 10 tệp âm thanh

Thiết lập `task` chuyển đổi giữa tạo có hướng dẫn tham chiếu, chỉnh sửa video tham chiếu và mở rộng video. Nhận tối đa 30 ảnh, 10 video và 10 tệp âm thanh làm tham chiếu, được trích dẫn dưới dạng @Image1 và tương tự. Đầu ra là 480p, 720p hoặc 1080p, auto hoặc dài 4 đến 30 giây, với tỷ lệ khung hình từ 21:9 đến 9:16. Hỗ trợ `seed` và `bitrate_mode`.

- Model id: `bytedance/seedance-2.5/us/reference-to-video`
- Made by: ByteDance
- Category: Reference to Video
- Output: video
- Charged by usage (up to $6.944 per run; the rest of the hold is refunded): $0.0107 / 1000 tokens (cheapest run $0.416 (416 API credits))
- Run: `POST https://api.doitong.ru/v1/run/bytedance/seedance-2.5/us/reference-to-video`
- Quote: `POST https://api.doitong.ru/v1/quote/bytedance/seedance-2.5/us/reference-to-video`
- Docs page: https://doitong.com/vi/developers/models/bytedance/seedance-2.5/us/reference-to-video

## Pricing

Price: **$0.0107 / 1000 tokens**. Charged by actual usage at $0.0107 / 1000 tokens: up to $6.944 per run (the quote gives the maximum for your input), the rest is refunded automatically after the run.

The full example input below holds up to $6.944 = 6944 API credits (up to 648.9 × 1000 tokens × $0.0107) when it starts.

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). This model is charged by usage: `POST https://api.doitong.ru/v1/quote/bytedance/seedance-2.5/us/reference-to-video` with the same JSON body returns the most the run can cost for that input (`credits`, debited when the run starts); after the run you pay the usage the model reports and the rest is refunded automatically. An input whose maximum would exceed the per-run limit is refused with 422. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

Send either the canonical name or the native field name (not both). Canonical names are the same across models.

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `prompt` |  | string \| null | no |  |  | Lời nhắc văn bản định hướng việc tạo video. |
| `task` |  | enum (string) | no | `reference` | `reference`, `editing`, `extension` | Lựa chọn tác vụ video với ba hành vi: `reference` định hướng việc tạo bằng phương tiện được cung cấp, editing thay đổi video tham chiếu và extension tiếp tục video đó. editing và extension đều tự động đặt `aspect_ratio` thành `auto`; editing cũng đặt `duration` thành `auto`. |
| `image_urls` | `images` | array of image URL | no |  |  | Các tham chiếu hình ảnh để định hướng video, giới hạn 30 hình ảnh và tối đa 50 tệp trên tất cả phương thức. Mỗi hình ảnh tối đa 30 MB và phải dùng JPG, PNG, WebP, BMP, TIFF, GIF, HEIC hoặc HEIF. Dùng @Image1, @Image2 và các nhãn đánh số tiếp theo để xác định các tham chiếu này trong lời nhắc. |
| `video_urls` | `videos` | array of video URL | no |  |  | Cung cấp tối đa 10 video tham chiếu dưới dạng tệp MP4 hoặc MOV để định hướng việc tạo sinh và xác định chúng trong lời nhắc bằng @Video1, @Video2 và các nhãn đánh số tiếp theo. Mỗi tệp không lớn hơn 200 MB, có thời lượng 1.8–30.2 giây; tổng thời lượng các đoạn tối đa 30.2 giây. Thuộc tính video bắt buộc là 24–60 FPS, tỷ lệ khung hình 0.4–2.5 và mỗi chiều 300–6,000 pixel. |
| `audio_urls` | `audios` | array of audio URL | no |  |  | Tham chiếu âm thanh để định hướng video có giới hạn tổng thời lượng 30.2 giây trên tối đa 10 tệp. Mỗi tệp phải dùng MP3 hoặc WAV, dài 1.8–30.2 giây và tối đa 15 MB. Xác định các tệp trong lời nhắc bằng @Audio1, @Audio2 và các nhãn đánh số tiếp theo. |
| `resolution` |  | enum (string) | no | `720p` | `480p`, `720p`, `1080p` | Độ phân giải đầu ra: 480p ưu tiên tốc độ, 720p cân bằng và 1080p cho chất lượng cao. |
| `duration` |  | enum (string) | no | `auto` | `auto`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `17`, `18`, `19`, `20`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30` | Lựa chọn thời lượng video: `auto` giao quyền lựa chọn cho mô hình dựa trên lời nhắc, còn thời lượng chỉ định phải từ 4 đến 30 giây. |
| `aspect_ratio` |  | enum (string) | no | `auto` | `auto`, `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` | Tỷ lệ khung hình đầu ra: 16:9 cho khung hình ngang, 9:16 cho khung hình dọc, 1:1 cho hình vuông và 21:9 cho khung hình siêu rộng điện ảnh. Chọn `auto` để mô hình chọn tỷ lệ. |
| `generate_audio` |  | boolean | no | `true` |  | Bật tùy chọn này để kèm âm thanh đồng bộ với video. Âm thanh được tạo bao gồm lời nói khớp với chuyển động môi, âm thanh môi trường và hiệu ứng âm thanh. |
| `bitrate_mode` |  | enum (string) | no | `standard` | `standard`, `high` | Chọn bitrate mã hóa đầu ra: 'standard' giữ mặc định, còn 'high' yêu cầu mô hình cải thiện chất lượng mã hóa nhưng tạo tệp lớn hơn. |
| `codec` |  | enum (string) | no | `auto` | `auto`, `H264`, `H265` | Lựa chọn codec video: `auto` giữ nguyên hành vi codec mặc định, `H264` chọn H.264 và `H265` chọn H.265. |
| `seed` |  | integer \| null | no |  |  | Seed ngẫu nhiên dùng để giúp việc tạo sinh có thể tái lập, nhưng không đảm bảo lặp lại chính xác: dùng lại seed vẫn có thể cho kết quả hơi khác. |
| `end_user_id` |  | string \| null | no |  |  | Mã định danh duy nhất được gán cho người dùng cuối. |

File parameters (`images`, `videos`, `audios`) take a public `https://` URL, a `data:` URI up to 10 MB, or the `file_url` of an upload from `POST /files`.

## Example input

Required parameters only:

```json
{}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/bytedance/seedance-2.5/us/reference-to-video?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.ru/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/bytedance/seedance-2.5/us/reference-to-video?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/bytedance/seedance-2.5/us/reference-to-video", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.ru/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "bytedance/seedance-2.5/us/reference-to-video",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "bytedance/seedance-2.5/us/reference-to-video",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 6944,
    "usd": "6.944",
    "charged": 6944,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "output": {
    "video": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_name": "0-output.mp4",
      "file_size": 1843200
    },
    "seed": 42,
    "draft_id": "string"
  },
  "outputs": [
    {
      "type": "video",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_size": 1843200,
      "width": 1280,
      "height": 720,
      "duration": 5,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `video` | object {url, content_type, file_name, file_size} | Tệp video được tạo sinh. |
| `seed` | integer | Giá trị seed được áp dụng trong quá trình tạo sinh. |
| `draft_id` | string \| null | Mã định danh bản nháp để hoàn tất trong cùng tài khoản trong vòng bảy ngày; phản hồi chứa null nếu chế độ bản nháp bị tắt. |

## Related models

- [Seedance 2.5 US Text to Video](https://doitong.com/developers/models/bytedance/seedance-2.5/us/text-to-video.md) (`bytedance/seedance-2.5/us/text-to-video`): $0.0107 / 1000 tokens
- [Seedance 2.5 US Image to Video](https://doitong.com/developers/models/bytedance/seedance-2.5/us/image-to-video.md) (`bytedance/seedance-2.5/us/image-to-video`): $0.0107 / 1000 tokens
- [Seedance 2.0 Fast Reference to Video](https://doitong.com/developers/models/bytedance/seedance-2.0/fast/reference-to-video.md) (`bytedance/seedance-2.0/fast/reference-to-video`): from $0.113 / second
- [Seedance 2.0 Reference to Video](https://doitong.com/developers/models/bytedance/seedance-2.0/reference-to-video.md) (`bytedance/seedance-2.0/reference-to-video`): from $0.141 / second
- [Wan 3.0 Reference to Video](https://doitong.com/developers/models/alibaba/wan-3.0/reference-to-video.md) (`alibaba/wan-3.0/reference-to-video`): from $0.05 / second
- [Seedance 2.0 Mini](https://doitong.com/developers/models/bytedance/seedance-2.0/mini/reference-to-video.md) (`bytedance/seedance-2.0/mini/reference-to-video`): $0.007 / 1000 tokens
- [Seedance 2.0 US Reference to Video](https://doitong.com/developers/models/bytedance/seedance-2.0/us/reference-to-video.md) (`bytedance/seedance-2.0/us/reference-to-video`): from $0.0096 / 1000 tokens
- [Alibaba V2.6 · Reference to Video · Flash](https://doitong.com/developers/models/wan/v2.6/reference-to-video/flash.md) (`wan/v2.6/reference-to-video/flash`): from $0.05 / second of output video

## Links

- HTML page: https://doitong.com/developers/models/bytedance/seedance-2.5/us/reference-to-video
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=bytedance/seedance-2.5/us/reference-to-video
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/bytedance/seedance-2.5/us/reference-to-video
