Seedance
Seedance is an advanced video generation model series supporting text-to-video and image-to-video generation, with multi-modal reference inputs, video editing, and video extension available since the 2.0 series. SIRAYA-Seedance-2.5 extends this further with audio-only references and coherent single-shot videos up to 30 seconds long.
https://llm.siraya.ai/v1/videos/generations
Supported Models
| Model ID | Description |
|---|---|
ByteDance-Seedance-1.0-pro |
Base version |
ByteDance-Seedance-1.0-pro-fast |
Base fast version |
ByteDance-Seedance-1.5-pro |
Advanced version |
SIRAYA-Seedance-2.0 |
Supports multi-modal references |
SIRAYA-Seedance-2.0-fast |
Fast version, supports multi-modal references |
SIRAYA-Seedance-2.0-mini |
Lower-cost version, supports multi-modal references (480p/720p only) |
SIRAYA-Seedance-2.5 |
Latest version — up to 30s videos, audio-only references, mov output, 50 reference assets |
Header
Bearer <API_KEY>).
Body
ByteDance-Seedance-1.5-pro, SIRAYA-Seedance-2.0, SIRAYA-Seedance-2.5).
4 to 15 (4 to 30 for SIRAYA-Seedance-2.5), or -1 to let the model choose automatically. -1 is required whenever input_references includes a video reference, for both the Seedance 2.0 family and SIRAYA-Seedance-2.5 — see Video Editing & Extension.
480p, 720p, 1080p, 4k. SIRAYA-Seedance-2.0-fast, SIRAYA-Seedance-2.0-mini, and SIRAYA-Seedance-2.5 support only 480p and 720p (no 1080p/4k).
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, or adaptive (model picks automatically). For video editing, video extension, and first-frame/first-last-frame requests, the Seedance 2.0 family accepts a specified ratio or adaptive, while SIRAYA-Seedance-2.5 only supports adaptive — see Video Editing & Extension.
SIRAYA-Seedance-2.5 natively supports prompts and generated audio in 11 languages: Chinese, English, Spanish, Indonesian, Malay, Thai, Arabic, Portuguese, Vietnamese, Japanese, and Korean.
frame_type (first_frame or last_frame) and an image_url. Cannot be used together with input_references.
SIRAYA-Seedance-2.0, SIRAYA-Seedance-2.0-fast, SIRAYA-Seedance-2.0-mini, and SIRAYA-Seedance-2.5. Cannot be used together with frame_images. See input_references for per-model limits.
mp4 (standard, broadest playback compatibility) or mov (higher color precision — recommended for editing/extension workflows). SIRAYA-Seedance-2.5 only.
false, the request waits for generation to finish and returns the completed video URL. When true, it returns immediately with a video id you poll for status. See Asynchronous generation.
async is true. A URL the router will POST to once generation completes (or fails), so you don't have to poll.
import requests
url = "https://llm.siraya.ai/v1/videos/generations"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <API_KEY>"
}
data = {
"model": "ByteDance-Seedance-1.5-pro",
"prompt": "A shiba inu running on the beach",
"resolution": "720p",
"aspect_ratio": "16:9",
"seconds": 5
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
Example Response
Mode Exclusivity
The following three modes are mutually exclusive — only one can be used per request:
| Mode | Parameter | Use Case |
|---|---|---|
| First-frame control | frame_images (first_frame) |
Pin the exact first frame |
| First + last frame control | frame_images (first_frame + last_frame) |
Pin both start and end frames |
| Multi-modal reference | input_references |
Style/content reference, video editing, or video extension |
Note: If you need both reference materials and first-frame control, use
input_referencesand describe the desired first frame in your prompt. The model will follow the description but cannot guarantee pixel-level accuracy. Useframe_imageswhen exact frame consistency is required.
frame_images
Specifies the starting and/or ending frame images for the video. The AI generates content between the provided frames.
"frame_images": [
{
"frame_type": "first_frame",
"image_url": "https://your-domain.com/start.jpg"
}
]
| Field | Description |
|---|---|
frame_type |
first_frame (start frame) or last_frame (end frame) |
image_url |
Publicly accessible URL of the image |
input_references (Seedance 2.0 and 2.5)
Pass image, video, or audio files as generation references via input_references. Supported by SIRAYA-Seedance-2.0, SIRAYA-Seedance-2.0-fast, SIRAYA-Seedance-2.0-mini, and SIRAYA-Seedance-2.5.
Reference material with a human face
If the reference image or video contains a human face (not a celebrity or public figure), you can't pass a public URL — it must first be uploaded as a trusted asset and referenced as asset://{assetId}. See Using Assets with Seedance 2.0 for the full workflow, including motion-reference and character-consistency use cases.
"input_references": [
{
"type": "image",
"url": "https://your-domain.com/character.jpg",
"role": "reference_image"
}
]
| Field | Description |
|---|---|
type |
image, video, or audio |
url |
Publicly accessible URL of the reference material |
role |
reference_image, reference_video, or reference_audio |
Reference limits by model:
| Model | Max references | Audio-only references |
|---|---|---|
SIRAYA-Seedance-2.0 / SIRAYA-Seedance-2.0-fast / SIRAYA-Seedance-2.0-mini |
15 total (9 images + 3 videos + 3 audio) | Not supported — needs at least one image or video |
SIRAYA-Seedance-2.5 |
50 total (30 images + 10 videos + 10 audio) | Supported |
Video Editing & Extension (Seedance 2.0 and 2.5)
SIRAYA-Seedance-2.0 (and -fast/-mini) and SIRAYA-Seedance-2.5 classify every input_references request into one of five task types, based on the reference roles and the intent expressed in prompt: text-to-video, reference-to-video, video editing, video extension, or first-frame/first-last-frame generation. Editing and extension are triggered the same way on both families — pass a reference_image/reference_video/reference_audio and phrase the prompt accordingly. Where the two families differ is aspect_ratio flexibility:
| Task | Trigger | aspect_ratio — Seedance 2.0 family |
aspect_ratio — SIRAYA-Seedance-2.5 |
|---|---|---|---|
| Video editing | A reference + a prompt with an editing verb (e.g. "edit", "add", "remove", "replace") | A specified ratio, or adaptive to match the input video |
Only adaptive — matches the input video |
| Video extension | A reference + a prompt with an extension verb (e.g. "extend", "continue") | A specified ratio, or adaptive to match the input video |
Only adaptive — matches the input video |
| First-frame(s) generation | frame_images with first_frame and/or last_frame |
A specified ratio, or adaptive to match the first-frame image |
Only adaptive — matches the first frame |
| Text-to-video / reference-to-video | No editing or extension wording | Any supported value | Any supported value |
Required: seconds must be -1 when a video reference is present
If input_references includes any item with "type": "video", you must explicitly set seconds to -1 — this covers video editing, video extension, and any reference-to-video request that includes a video reference. Omitting seconds or passing any other value returns an error. The output duration is then determined automatically from the input video (matched for editing, extended for extension).
| Model group | Request includes a video reference | No video reference (text-to-video, image/audio-only) |
|---|---|---|
Seedance 2.0 family (SIRAYA-Seedance-2.0 / -fast / -mini) |
Only -1 (required) |
4–15, or omit to let the model choose |
SIRAYA-Seedance-2.5 |
Only -1 (required) |
4–30, or omit to let the model choose |
Misclassification triggers an async error
An unsupported aspect_ratio/seconds combination for the classified task type doesn't fail immediately — the request queues normally, and the error is returned asynchronously once the model finishes classifying the task. For reference-to-video requests, avoid editing/extension wording in your prompt, or the model may misclassify the task and reject it.