# Seedance 2.5 US Reference to Video API

> Παραγωγή, επεξεργασία και επέκταση βίντεο αναφοράς Seedance 2.5 από έως 30 εικόνες, 10 βίντεο και 10 ήχους

Η ρύθμιση `task` εναλλάσσεται μεταξύ παραγωγής με καθοδήγηση αναφοράς, επεξεργασίας βίντεο αναφοράς και επέκτασής του. Δέχεται έως 30 εικόνες, 10 βίντεο και 10 αρχεία ήχου ως αναφορές, που αναφέρονται ως @Image1 και παρόμοια. Παράγει 480p, 720p ή 1080p, auto ή 4 έως 30 δευτερόλεπτα, με αναλογίες από 21:9 έως 9:16. Υποστηρίζει `seed` και `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/el/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 |  |  | Text prompt που καθοδηγεί την παραγωγή βίντεο. |
| `task` |  | enum (string) | no | `reference` | `reference`, `editing`, `extension` | Επιλογή εργασίας βίντεο με τρεις συμπεριφορές: το `reference` καθοδηγεί την παραγωγή με παρεχόμενα μέσα, το editing τροποποιεί ένα βίντεο αναφοράς και το extension συνεχίζει ένα βίντεο. Τα editing και extension ορίζουν αυτόματα το `aspect_ratio` σε `auto`· το editing ορίζει επίσης το `duration` σε `auto`. |
| `image_urls` | `images` | array of image URL | no |  |  | Εικόνες αναφοράς για την καθοδήγηση του βίντεο, με όριο 30 εικόνων και συνολικό μέγιστο 50 αρχείων για όλους τους τύπους μέσων. Κάθε εικόνα μπορεί να έχει μέγεθος έως 30 MB και πρέπει να χρησιμοποιεί JPG, PNG, WebP, BMP, TIFF, GIF, HEIC ή HEIF. Χρησιμοποιήστε τις ετικέτες @Image1, @Image2 και τις επόμενες αριθμημένες ετικέτες για να προσδιορίσετε αυτές τις αναφορές στο prompt. |
| `video_urls` | `videos` | array of video URL | no |  |  | Δώστε έως 10 βίντεο αναφοράς ως αρχεία MP4 ή MOV για να καθοδηγήσετε την παραγωγή και προσδιορίστε τα στο prompt με τις ετικέτες @Video1, @Video2 και τις επόμενες αριθμημένες ετικέτες. Κάθε αρχείο πρέπει να έχει μέγεθος έως 200 MB και διάρκεια 1.8–30.2 δευτερόλεπτα, με συνολική διάρκεια όλων των κλιπ έως 30.2 δευτερόλεπτα. Οι απαιτούμενες ιδιότητες βίντεο είναι 24–60 FPS, αναλογία διαστάσεων 0.4–2.5 και 300–6,000 pixel σε κάθε πλευρά. |
| `audio_urls` | `audios` | array of audio URL | no |  |  | Οι αναφορές ήχου για την καθοδήγηση του βίντεο έχουν όριο συνολικής διάρκειας 30.2 δευτερολέπτων σε έως 10 αρχεία. Κάθε αρχείο πρέπει να χρησιμοποιεί MP3 ή WAV, να διαρκεί 1.8–30.2 δευτερόλεπτα και να έχει μέγεθος έως 15 MB. Προσδιορίστε τα αρχεία στο prompt με τις ετικέτες @Audio1, @Audio2 και τις επόμενες αριθμημένες ετικέτες. |
| `resolution` |  | enum (string) | no | `720p` | `480p`, `720p`, `1080p` | Ανάλυση εξόδου: το 480p δίνει προτεραιότητα στην ταχύτητα, το 720p προσφέρει ισορροπία και το 1080p υψηλή ποιότητα. |
| `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` | Επιλογή διάρκειας βίντεο: το `auto` αναθέτει την επιλογή στο μοντέλο με βάση το prompt, ενώ η ρητή διάρκεια πρέπει να είναι από 4 έως 30 δευτερόλεπτα. |
| `aspect_ratio` |  | enum (string) | no | `auto` | `auto`, `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` | Λόγος διαστάσεων εξόδου: το 16:9 δίνει οριζόντιο, το 9:16 κατακόρυφο, το 1:1 τετράγωνο και το 21:9 κινηματογραφικό υπερευρυγώνιο. Επιλέξτε `auto` για να επιλέξει το μοντέλο τον λόγο. |
| `generate_audio` |  | boolean | no | `true` |  | Ενεργοποιήστε το για να συνοδεύεται το βίντεο από συγχρονισμένο ήχο. Ο παραγόμενος ήχος περιλαμβάνει ομιλία συγχρονισμένη με τις κινήσεις των χειλιών, περιβαλλοντική ατμόσφαιρα και ηχητικά εφέ. |
| `bitrate_mode` |  | enum (string) | no | `standard` | `standard`, `high` | Επιλέξτε bitrate κωδικοποίησης εξόδου: το 'standard' διατηρεί την προεπιλογή, ενώ το 'high' ζητά από το μοντέλο να βελτιώσει την ποιότητα κωδικοποίησης εις βάρος μεγαλύτερου αρχείου. |
| `codec` |  | enum (string) | no | `auto` | `auto`, `H264`, `H265` | Επιλογή codec βίντεο: το `auto` αφήνει αμετάβλητη την προεπιλεγμένη συμπεριφορά codec, το `H264` επιλέγει H.264 και το `H265` επιλέγει H.265. |
| `seed` |  | integer \| null | no |  |  | Αρχική τιμή τυχαιότητας που χρησιμοποιείται για να είναι αναπαραγώγιμη η παραγωγή, χωρίς να εγγυάται ακριβή επανάληψη: η επαναχρησιμοποίησή της μπορεί και πάλι να δώσει ελαφρώς διαφορετικά αποτελέσματα. |
| `end_user_id` |  | string \| null | no |  |  | Μοναδικό αναγνωριστικό που έχει ανατεθεί στον τελικό χρήστη. |

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} | Αρχείο βίντεο που παράγεται από την παραγωγή. |
| `seed` | integer | Τιμή seed που εφαρμόζεται κατά την παραγωγή. |
| `draft_id` | string \| null | Αναγνωριστικό προσχεδίου για ολοκλήρωση στον ίδιο λογαριασμό εντός επτά ημερών· η απόκριση περιέχει null αν η λειτουργία προσχεδίων είναι απενεργοποιημένη. |

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