Skip to main content
ByteDanceMediumUltra

Seedance 2.5

ByteDance's flagship multimodal video model with native audio, native 30-second single-pass generation, and large multimodal reference sets (up to 30 images, 10 videos, 10 audios). Supports text-to-video, image-to-video, first/last-frame control, video editing, extension, and lip-sync.

4920 credits
per 5s 720p video โ€” billed per second (480p 513/s, 720p 1100/s, 1080p 1335/s); with reference videos, billed per measured (input+output) second: 480p 308, 720p 660, 1080p 799 credits/s
Native 30-second generation in a single pass โ€” no stitching between clips
Audio and video generated together, so dialogue, sound effects, and music are synchronized from the start
Large reference sets: up to 30 images, 10 videos, and 10 audio files, addressed in the prompt as [Image1], [Video1], [Audio1]
Video editing and extension from a reference clip while preserving the original motion and camera work
Character consistency across shots when reference images are supplied

Run it right now

Test this model instantly in the Console Playground โ€” no code required

Sign in to try

Use with AI Assistant

Copy usage instructions for Claude, ChatGPT, or other AI

Quick Start

curl -X POST "https://api.core.today/v1/predictions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cdt_your_api_key" \
  -d '{
  "model": "bytedance/seedance-2.5",
  "input": {
    "prompt": "a golden retriever puppy running across a green meadow toward the camera, slow motion, warm afternoon light",
    "duration": 5,
    "resolution": "720p",
    "seed": 42
  }
}'

Parameters

ParameterTypeRequiredDefaultDescription
promptstringNo-Text prompt for video generation. Maximum 20000 characters (BytePlus states no hard cap; quality is best under ~1,000 English words). Optional when a media input (image, reference images/videos/audios) is supplied.
durationintegerYes5Video duration in seconds (4-30). Required โ€” upstream also accepts -1 for intelligent duration, but the resulting length is unknown at request time and cannot be billed accurately, so this gateway requires an explicit duration.
resolutionstringNo720pVideo resolution. 1080p is billed at a higher per-second rate.
480p720p1080p
imagestringNo-First-frame image for image-to-video or first/last-frame generation. Cannot be combined with reference images, videos, or audios.
last_frame_imagestringNo-Last-frame image. Requires a first-frame image. Cannot be combined with reference images, videos, or audios.
reference_imagesarrayNo-Reference images (up to 30) for character consistency, style guidance, and scene composition. Cannot be combined with first/last frame images. Reference them in your prompt as [Image1], [Image2], etc.
reference_videosarrayNo-Reference videos (up to 10, combined duration max 30s) for motion transfer, style reference, editing, and extension. Supplying any reference video switches billing to the higher video_in rate.
reference_audiosarrayNo-Reference audio files (up to 10, combined duration max 30s) for audio-driven generation and lip-sync. Requires at least one reference image or video.
aspect_ratiostringNoadaptiveVideo aspect ratio. 'adaptive' (default) lets the model choose the best ratio based on inputs. First/last-frame, editing, and extension modes require 'adaptive'.
adaptive16:94:31:13:49:1621:9
generate_audiobooleanNotrueGenerate synchronized audio with the video, including dialogue (use double quotes in prompt), sound effects, and background music.
watermarkbooleanNofalseAdd a watermark to the generated video.
output_formatstringNomp4Output video container format.
mp4mov
seedintegerNo-Random seed. Set for reproducible generation. Reproducibility is not guaranteed.

How to Provide File Input

There are 3 ways to provide files for the imagelast_frame_imagereference_imagesreference_videosreference_audios parameters:

Recommended

Image URL

Pass a publicly accessible URL directly. With the Storage API (POST /v1/files/upload-url) the file uploads straight to S3 (50MB per file) and you pass the returned file_url.

{
  "model": "bytedance/seedance-2.5",
  "input": {
    "prompt": "your prompt here",
    "image": "https://example.com/image.jpg"
  }
}

Direct Upload (Multipart)

Attach files directly to POST /v1/predictions/upload. No separate upload step, but the bytes pass through the API server so the whole request is capped at 10MB.

curl -X POST "https://api.core.today/v1/predictions/upload" \
  -H "X-API-Key: cdt_your_api_key" \
  -F "model=bytedance/seedance-2.5" \
  -F 'input={"prompt":"your prompt here"}' \
  -F "file:image=@your_file.png"
See the File Upload docs for more upload methods including Presigned URLs.

Common Parameters

Common parameters used when calling POST /v1/predictions.

ParameterTypeRequiredDefaultDescription
modelstringYes-Model identifier
inputobjectYes-Object containing the model-specific parameters from the table above
output_folderstringNo-Folder path for output files (max 256 chars, '..' not allowed)
webhook_urlstringNo-Webhook URL to call on completion
is_publicbooleanNofalseIf true, output files are also available via permanent public URLs

Examples

Text to video with native audio

A 5-second 720p clip generated from a prompt alone, with synchronized ambience produced in the same pass.

curl -X POST "https://api.core.today/v1/predictions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cdt_your_api_key" \
  -d '{
  "model": "bytedance/seedance-2.5",
  "input": {
    "prompt": "a golden retriever puppy running across a green meadow toward the camera, slow motion, warm afternoon light",
    "duration": 5,
    "resolution": "720p",
    "seed": 42
  }
}'

Multimodal reference โ€” character from an image, motion from a video

Combine reference images and a reference video, then describe how to merge them by addressing each input in the prompt.

curl -X POST "https://api.core.today/v1/predictions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cdt_your_api_key" \
  -d '{
  "model": "bytedance/seedance-2.5",
  "input": {
    "prompt": "The character from [Image1] performs the dance from [Video1] on a neon-lit stage.",
    "reference_images": [
      "https://example.com/character.jpg"
    ],
    "reference_videos": [
      "https://example.com/dance-reference.mp4"
    ],
    "duration": 8,
    "resolution": "720p",
    "aspect_ratio": "adaptive"
  }
}'

Tips & Best Practices

1Realistic-person references (even AI-generated faces) are rejected by the provider's real-person filter. Register the image first with POST /v1/assets, wait for status active, then pass asset://<asset_id> in reference_images or image. Registration is charged once; output can still be rejected by output moderation, which is refunded.
2Be specific about camera movement, lighting, and mood โ€” the model follows detailed direction well.
3For dialogue, put the spoken words in double quotes: The man stopped and said: "Remember this moment." The model generates matching lip movement and voice.
4Start at 5 seconds while iterating on style, then raise duration once you are happy with the look โ€” billing is per second of output.
5Reference videos switch billing to the video_in rate, which is roughly 4x the base rate. Use reference images alone when motion transfer is not needed.
6First/last-frame, editing, and extension modes require aspect_ratio: 'adaptive'.

Use Cases

Single-take 30-second product or brand films with synchronized voice-over
Dialogue scenes where the spoken lines are written in double quotes and lip-synced automatically
Outfit-change and product-showcase videos driven by reference images plus a motion reference video
Editing an existing clip โ€” replacing an object or background while keeping the original camera move
Extending an existing shot with consistent characters, environment, and style