seedance-2-5
seedance-2.5 Video Generation
- Async API; returns task_id for polling
- Text-to-video / multimodal reference / edit / extend / first–last frame
- Up to 30s per job; up to 30 images + 10 videos + 10 audios as references
- Resolution 480p / 720p only; mp4 or mov output
POST
Main changes vs 2.0: max duration 15s → 30s; references 9 images + 3 videos + 3 audios → 30 images + 10 videos + 10 audios; audio-only reference supported; mov output added.
Note: resolution is 480p / 720p only (2.0’s 1080p / 4k are not available on 2.5).
Note: resolution is 480p / 720p only (2.0’s 1080p / 4k are not available on 2.5).
Authentication
string
requis
Bearer token auth. Get a key from the API Key page.
Request parameters
string
requis
Fixed value:
seedance-2.5boolean
défaut:"false"
Indique s’il faut modérer le contenu avant d’envoyer la tâche vidéo.Réponse en cas de détection :
true: vérifier les prompts et les images d’entrée avecomni-moderation-latestfalseou omis : ne pas envoyer de requête de modération, sans coût ni latence de modération supplémentaires (par défaut)
- Texte :
prompt,negative_prompt - Images :
image_urls,image_with_roles[].url,first_frame_image,last_frame_image - Ressources privées image
asset://: résoudre puis vérifier leur URL publique d’origine - Images Base64 : les vérifier après conversion en URL publique
video_urls, audio_urls ainsi que les ressources privées vidéo/audio ne sont pas vérifiés, car le modèle de modération ne prend pas en charge la vidéo ni l’audio.ID de modèles pris en charge : seedance-2.0, seedance-2.0-fast, seedance-2.0-mini, seedance-2.0-face, seedance-2.0-fast-face, seedance-2-0 (ancien nom) et seedance-2.5.L’appel de modération lui-même n’est pas facturé à l’utilisateur qui envoie la requête vidéo.Exemple :string
requis
Prompt. Reference media with
@图片1 / @视频1 / @音频1 (1-based index matching array order). English aliases in prompts may also be used depending on model behavior; keep indices aligned with arrays.Example: "Use @视频1 for first-person framing throughout, @音频1 as BGM, first frame is @图片1"string
défaut:"720p"
Resolution — only:
480p720p(default)
1080p / 2k / 4k return a sync 400.string
défaut:"adaptive"
Aspect ratio (field name
aspect_ratio is also accepted).Values: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive (default)integer
défaut:"5"
Duration in seconds:
4~30-1: model picks duration (pre-charge at the 30s cap; settle to actual length after completion)
boolean
défaut:"true"
Whether to generate audio (alias field name:
audio).true: with audio (default)false: silent video
boolean
défaut:"false"
Add an “AI generated” watermark. Default
false.integer
Random seed. Different seeds usually yield different results for the same request; the same seed is similar but not guaranteed identical.
string
défaut:"mp4"
Output container:
mp4(default)mov: higher color precision — recommended for edit / extend workflows
array<string>
Reference image URLs, all treated as
reference_image.Supports:- Public URL:
https://example.com/pic.jpg - Private asset:
asset://cm9xxxxxxxx
image_with_roles.array<object>
Images with explicit roles.Example:
If
video_urls / audio_urls are present, first_frame / last_frame are auto-converted to reference_image (multimodal reference job).array<string>
Reference videos (
reference_video).Input: video URL or asset ID (asset://...).See Reference video specs.array<string>
Reference audio URLs (
reference_audio). Public URLs or asset://....Max 10; total duration ≤ 30s (each clip 2~30s).2.5 supports audio-only reference (no image/video required).
boolean
défaut:"false"
When
true, the successful result also includes the last-frame image for chaining.array<object>
Tool list for enhancements such as web search.Example:
Media limits
Reference video specs
- Input: video URL or asset ID (
asset://...) - Container:
mp4,mov— codecs in the table below - Resolution:
480p,720p - Duration: each clip [2, 30] s; up to 10 reference videos; total duration of all videos ≤ 30s
- Per-video dimensions:
- Aspect ratio (width/height): [0.4, 2.5]
- Side length (px): [300, 6000]
- Total pixels: [640×640=409600, 3326×2494=8295044], i.e. width × height must fall in [409600, 8295044]
- Size: each video ≤ 200 MB
- Frame rate (FPS): [24, 60]
Supported codecs
Task types and constraints
The service infers task type from references and prompt intent. The last three types hard-constrainsize / duration; violations fail asynchronously after the job starts (e.g. InvalidParameter.TaskTypeConstraint):
Asset library
You can pass public URLs as references, or upload into the library first and useasset://. Prefer the library when:
- Real human faces must use the library — raw URLs are blocked by content moderation; only approved library assets can be used
- Assets are reused often — upload once, skip repeated moderation on later jobs, faster submits
- URLs are signed temporary links — the platform stores a durable copy on ingest so later use does not depend on the original URL staying alive
- Library assets are synced to all available channels so multi-channel routing can use them wherever the job lands
asset:// IDs work in both 2.0 and 2.5 generation requests. Full submit fields: also see Private avatar assets.
Upload assets
The response includes a local task
id. Poll with Get task status (GET /v1/tasks/{id}). After approval, list assets to obtain the asset:// ID.
Media limits (validated at submit)
Violations return 400 immediately (which asset index and which rule), without starting moderation or consuming moderation quota:
Error example:
For 30s video assets, submit with
If the platform cannot probe the media (e.g. network blip), it may pass through and leave the decision to moderation.
"model": "seedance-2.5" (2.0 cannot use assets longer than 15s).If the platform cannot probe the media (e.g. network blip), it may pass through and leave the decision to moderation.
Use in generation requests
Reference approved assets withasset:// in image_urls / image_with_roles / video_urls / audio_urls:
Management APIs (quick reference)
Asset APIs are free of charge (auth + rate limits only); they do not create billing records.
FAQ
Q: How long does moderation take?Images usually seconds; video and real-person assets may take minutes. Poll the task
id until a terminal status.
Q: Moderation failed with no clear reason?Some failures omit a detailed reason (often a transient fetch failure). The platform already retries once; if it still fails, change the URL (ensure it is publicly downloadable) and resubmit. Q: Same asset for both 2.0 and 2.5 — upload twice?
No. Upload once;
asset:// works for both generations. Cross-channel / cross-model sync is handled by the platform.
Q: Can I pass a real-person face as a raw URL?Real-person assets must go through the library first.
Billing
- Billed by seconds × resolution tier.
- With reference video input: billable seconds = total input video duration (≤30s) + output duration, at the input-reference rate tier.
duration = -1(auto): pre-charge at the 30s cap; settle to actual output after completion.- Omit
duration: generate and bill 5 seconds. - Failed jobs or content moderation blocks: full refund (charge only on successful output).
Request examples
Text-to-video (30s)
Multimodal reference (image + video + audio)
Video edit
First–last frame
Private asset
Web search
Common errors
Response (submit)
integer
Status code;
200 on successarray
Submit response with
status / task_idCompleted task (GET /v1/tasks/{task_id})
After submit, poll with Get task status. When status is completed, the payload looks like this.
Completed response example
Completed fields
Notes
- Failed tasks (
status=failed):costis always0(pre-charge fully refunded); reason indata.error.message usagemay be missing for a few seconds after completion (settlement lag); query again shortly