File size: 3,270 Bytes
0749636
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
---
language:
  - en
license: other
pipeline_tag: text-to-video
tags:
  - seedance
  - text-to-video
  - image-to-video
inference: false
---

# Seedance API

**Model Page:** [Seedance API](https://apiframe.ai/models/seedance-2.5)

Community model card for calling Seedance through a REST API.

This repo documents the `seedance-2.5` model as exposed by Apiframe: ByteDance Seedance 2.5, text-to-video and image-to-video, 4–30s single-pass clips, native synced audio, up to 30 reference images / 10 reference videos / 10 reference audio tracks. Related ids on the same endpoint: `seedance-2`, `seedance-2-fast`, `seedance-2-mini`.

This repository does not host weights. Seedance is a closed model. Inference runs remotely.

<video src="https://apiframe.ai/models-examples/seedance-2.5-keeper-spiral-staircase-dusk.mp4" width="280" muted controls></video>

## Model description

| | |
|---|---|
| Architecture | Seedance 2.5 |
| Task | text-to-video; image-to-video |
| Output | 1 video (`videoUrl`) |
| Duration | 4–30 seconds |
| Aspect ratios | `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` |
| Resolutions | `480p`, `720p` |
| Typical latency | ~300s |

## How to use

```bash
pip install requests
```

```python
import os
import time
import requests

API = "https://api.apiframe.ai/v2"
headers = {
    "X-API-Key": os.environ["APIFRAME_API_KEY"],
    "Content-Type": "application/json",
}

job = requests.post(
    f"{API}/videos/generate",
    headers=headers,
    json={
        "model": "seedance-2.5",
        "prompt": "A golden retriever puppy running through a meadow of wildflowers on a sunny day",
        "seedanceParams": {
            "duration": 8,
            "resolution": "720p",
            "aspect_ratio": "16:9",
            "generate_audio": True,
        },
    },
).json()

while True:
    result = requests.get(f"{API}/jobs/{job['jobId']}", headers=headers).json()
    if result["status"] in ("COMPLETED", "FAILED"):
        break
    time.sleep(2)

print(result.get("result"))
```

`result["videoUrl"]` is the CDN URL. Pass `webhookUrl` on the generate call if you do not want to poll.

Start/end frames and reference media are mutually exclusive. Do not send `start_image` together with `reference_image_urls`, `reference_video_urls`, or `reference_audio_urls`.

### Image-to-video

```python
import os
import requests

headers = {
    "X-API-Key": os.environ["APIFRAME_API_KEY"],
    "Content-Type": "application/json",
}

requests.post(
    "https://api.apiframe.ai/v2/videos/generate",
    headers=headers,
    json={
        "model": "seedance-2.5",
        "prompt": "slow dolly in, lantern light on wet stone, rain outside",
        "seedanceParams": {
            "start_image": "https://example.com/frame.jpg",
            "duration": 8,
            "resolution": "720p",
            "aspect_ratio": "16:9",
        },
    },
)
```

Swap `model` for `seedance-2` (up to 4K, 15s), `seedance-2-fast`, or `seedance-2-mini`.

## Limitations

- Closed model. No weights, fine-tuning, or local inference.
- Requires an Apiframe API key (`X-API-Key`).
- Commercial use follows ByteDance's terms.
- Generated media is retained on the CDN for 90 days.

## License

Outputs are subject to ByteDance's terms. This card is documentation only.