Skip to content

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.

POST 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
Authorization string Required
Your API Key (e.g., Bearer <API_KEY>).

Body

model string Required
The model ID (e.g., ByteDance-Seedance-1.5-pro, SIRAYA-Seedance-2.0, SIRAYA-Seedance-2.5).
prompt string Required
A text description for the video content.
seconds integer
The duration of the video in seconds. Supported values: 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.
resolution string
Video resolution: 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).
aspect_ratio string
Aspect ratio of the video: 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.
image_url string
Input image URL for image-to-video generation.
seed integer
Random seed for reproducibility. The same seed produces the same video.
generate_audio boolean
Whether to generate an audio track for the video. 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_images array
First-frame and/or last-frame image control. Each item has a frame_type (first_frame or last_frame) and an image_url. Cannot be used together with input_references.
input_references array
Multi-modal reference materials (image, video, audio) to influence style or content, edit an existing video, or extend one. Supported by 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.
output_format string Default: mp4
Output video container: mp4 (standard, broadest playback compatibility) or mov (higher color precision — recommended for editing/extension workflows). SIRAYA-Seedance-2.5 only.
extra_body map
Specific parameters.
async boolean Default: false
When 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.
callbackUrl string
Only used when async is true. A URL the router will POST to once generation completes (or fails), so you don't have to poll.
curl https://llm.siraya.ai/v1/videos/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API_KEY>" \
  -d '{
    "model": "ByteDance-Seedance-1.5-pro",
    "prompt": "A shiba inu running on the beach",
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "seconds": 5
  }'
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

{
    "data": [
        {
            "url": "https://resources.siraya.ai/video/generated%2Fsiraya_123.mp4",
            "revised_prompt": ""
        }
    ],
    "created": 1760347750
}

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_references and describe the desired first frame in your prompt. The model will follow the description but cannot guarantee pixel-level accuracy. Use frame_images when 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_ratioSIRAYA-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) 415, or omit to let the model choose
SIRAYA-Seedance-2.5 Only -1 (required) 430, 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.

{
  "model": "SIRAYA-Seedance-2.5",
  "prompt": "Video edit: remove everyone except the main subject.",
  "input_references": [
    {
      "type": "video",
      "url": "https://your-domain.com/original.mp4",
      "role": "reference_video"
    }
  ],
  "aspect_ratio": "adaptive",
  "seconds": -1,
  "output_format": "mov"
}