curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "seedance-2.5-flash-reference-to-video",
"prompt": "Use the first-person perspective framing of @video1 throughout, and use @audio1 as background music throughout. First-person perspective fruit tea promotional video...",
"image_urls": [
"https://example.com/ref1.jpg",
"https://example.com/ref2.jpg"
],
"video_urls": [
"https://example.com/reference.mp4"
],
"audio_urls": [
"https://example.com/bgm.mp3"
],
"duration": 10,
"quality": "720p",
"aspect_ratio": "16:9",
"generate_audio": true,
"content_filter": true
}
'{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "seedance-2.5-flash-reference-to-video",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": false,
"estimated_time": 165,
"video_duration": 8
},
"type": "video",
"usage": {
"billing_rule": "per_second",
"credits_reserved": 50,
"user_group": "default"
}
}{
"error": {
"code": "invalid_parameter",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: seedance-2.5-flash-reference-to-video",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"type": "<string>"
}
}Seedance 2.5 Flash Reference-to-Video
- Generate video from a text prompt with optional reference images (0–10), videos (0–5), and audio clips (0–5). References may be omitted entirely, and audio-only reference input is supported.
- Best suited for generating new footage: images, videos, and audio act as style, subject, camera-movement, and soundtrack references
- To rewrite or continue an existing video, switch to Video Edit / Video Extend: once this model’s prompt carries an editing or extension intent, the request is validated as an edit / extend task — it is accepted without an error and the task only fails while it runs
- Now supports AIGC realistic human materials
- Asynchronous processing mode, use the returned task ID to query status
- Generated video links are valid for 24 hours, please save them promptly
Draft limitation: Seedance 2.5 Flash does not support draft: true or draft-to-final conversion.
curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "seedance-2.5-flash-reference-to-video",
"prompt": "Use the first-person perspective framing of @video1 throughout, and use @audio1 as background music throughout. First-person perspective fruit tea promotional video...",
"image_urls": [
"https://example.com/ref1.jpg",
"https://example.com/ref2.jpg"
],
"video_urls": [
"https://example.com/reference.mp4"
],
"audio_urls": [
"https://example.com/bgm.mp3"
],
"duration": 10,
"quality": "720p",
"aspect_ratio": "16:9",
"generate_audio": true,
"content_filter": true
}
'{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "seedance-2.5-flash-reference-to-video",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": false,
"estimated_time": 165,
"video_duration": 8
},
"type": "video",
"usage": {
"billing_rule": "per_second",
"credits_reserved": 50,
"user_group": "default"
}
}{
"error": {
"code": "invalid_parameter",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: seedance-2.5-flash-reference-to-video",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"type": "<string>"
}
}Authorizations
##All endpoints require Bearer Token authentication##
Get API Key:
Visit the API Key Management Page to obtain your API Key
Add to request header:
Authorization: Bearer YOUR_API_KEY
Body
Text prompt describing the desired video. Supports both Chinese and English, recommended no more than 500 characters for Chinese. Maximum prompt length: 10000 tokens
Details:
- When referring to input materials in the prompt, prefer explicit tags such as
@image1,@video1, and@audio1instead of relying only on natural-language references such as "image 1", "video 1", or "audio 1" - Tag numbers follow the order of the corresponding URL array and start at 1: the first
image_urlsitem is@image1, the firstvideo_urlsitem is@video1, and the firstaudio_urlsitem is@audio1 - Natural-language numbering may still be understood, but explicit tags provide a clearer mapping between each material and its intended use
Avoid being classified as an edit / extend task:
- The task type is inferred from the prompt intent: wording such as "edit the video", "add", "remove / delete", "change / replace" is treated as video editing; wording such as "extend forward / backward", "continue" is treated as video extension
- Once classified as either task,
aspect_ratiomust beadaptive, and for video editingdurationmust be-1; otherwise the request is accepted without an error and the task later turnsfailedwith error codeInvalidParameter.TaskTypeConstraint. The pre-authorized quota is refunded, but the waiting time is wasted - If you really need editing / extension, use
seedance-2.5-flash-video-editorseedance-2.5-flash-video-extendinstead: parameters are validated at submission, so invalid values return an immediate synchronous error - For pure reference generation, rephrase words like "replace" or "remove" descriptively, e.g. "the shot features ..." or "rendered in the style of @image1"
"Use the first-person perspective framing of @video1 throughout, and use @audio1 as background music throughout. First-person perspective fruit tea promotional video..."
Reference image URL array, optional; 1–10 images when provided
Optional references: image_urls, video_urls, and audio_urls may all be omitted. Providing only audio_urls is also supported.
Role description:
| Media Type | Role | Typical Usage |
|---|---|---|
| Image | reference_image | Style reference, product image, first/last frame (specified via prompt) |
Image requirements:
- Supported formats:
.jpeg,.png,.webp - Aspect ratio (width/height):
0.4~2.5 - Width/height pixels:
300~6000px - Max size per image:
30MB - Total request body size must not exceed
64MB, do not use Base64 encoding - Image URLs must be directly accessible by the server
Media addresses: Publicly accessible HTTP(S) URLs and asset:// media IDs accessible to the selected upstream account are supported.
10[
"https://example.com/ref1.jpg",
"https://example.com/ref2.jpg"
]
Reference video URL array, optional; 1–5 videos when provided
Optional references: image_urls, video_urls, and audio_urls may all be omitted. Providing only audio_urls is also supported.
Role description:
| Media Type | Role | Typical Usage |
|---|---|---|
| Video | reference_video | Camera movement reference, motion reference, original video for editing/extension |
Video requirements:
- Supported formats:
.mp4,.mov - Resolution: 480p, 720p, 1080p, 4K
- Duration per video:
2~30seconds, max 5 videos, total duration of all videos ≤30seconds - Aspect ratio (width/height):
0.4~2.5 - Width/height pixels:
300~6000px - Frame pixels (width × height):
409,600~8,295,044(e.g., 640×640 ~ 3326×2494) - Max size per video:
200MB - Frame rate:
24~60FPS - Total request body size must not exceed
64MB, do not use Base64 encoding - Specific codec, resolution, and other media validity checks are performed by the model
- Using video references will increase costs (input video duration is counted in billing)
- Video URLs must be directly accessible by the server
Media addresses: Publicly accessible HTTP(S) URLs and asset:// media IDs accessible to the selected upstream account are supported.
5["https://example.com/reference.mp4"]
Reference audio URL array, optional; 1–5 clips when provided
Optional references: image_urls, video_urls, and audio_urls may all be omitted. Providing only audio_urls is also supported.
Role description:
| Media Type | Role | Typical Usage |
|---|---|---|
| Audio | reference_audio | Background music, sound effects, voice/dialogue reference |
Audio requirements:
- Supported formats:
.wav,.mp3 - Duration per clip:
2~30seconds, max 5 clips, total duration of all audio ≤30seconds - Max size per clip:
15MB - Total request body size must not exceed
64MB, do not use Base64 encoding - Audio URLs must be directly accessible by the server
Media addresses: Publicly accessible HTTP(S) URLs and asset:// media IDs accessible to the selected upstream account are supported.
5["https://example.com/bgm.mp3"]
Output video duration (seconds), defaults to 5 seconds
Details:
- Supports any integer value between
4–30seconds -1: automatic duration, the model picks a length within4–30seconds and billing follows the actual output length- Duration directly affects billing
If the prompt is classified as a video edit task, only -1 is accepted; an explicit number of seconds makes the task fail later, with no error at submission
-1 10
Video aspect ratio, defaults to adaptive
Options:
16:9(landscape),9:16(portrait),1:1(square),4:3,3:4,21:9(ultrawide)adaptive: Determined based on prompt intent, priority: video > image > prompt
Pixel values per resolution:
| Aspect Ratio | 480p | 720p |
|---|---|---|
| 16:9 | 854×480 | 1280×720 |
| 4:3 | 752×560 | 1112×834 |
| 1:1 | 640×640 | 960×960 |
| 3:4 | 560×752 | 834×1112 |
| 9:16 | 480×854 | 720×1280 |
| 21:9 | 992×432 | 1470×630 |
If the prompt is classified as a video edit / extend task, only adaptive is accepted; a fixed ratio makes the task fail later, with no error at submission
16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive "16:9"
Content filter, enabled by default true
Options:
true: Standard content safety check, this is the defaultfalse: Relaxes content restrictions, billed at +10% (1.1x). Illegal and prohibited content is always enforced regardless of this setting
Mutually exclusive with web search:
content_filter: falseandmodel_params.web_search: truecannot be used together; sending both returns a 400 parameter error- Keep
content_filter: true(the default) when web search is needed
true
Output container format, defaults to mp4
Options:
mp4: H.264 encoding with the best compatibility and standard color precision, this is the defaultmov: H.264 + yuv444p chroma sampling + PCM audio for higher color fidelity, recommended for color grading, keying and compositing workflows. Browser inline playback may not support it; download and play with VLC / mpv / ffplay. No extra charge
mp4, mov "mp4"
HTTPS callback URL for task completion
Callback timing:
- Triggered when the task is completed or failed
- Sent after billing confirmation is complete
Security restrictions:
- Only HTTPS protocol is supported
- Callbacks to private IP addresses are prohibited (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
- URL length must not exceed
2048characters
Callback mechanism:
- Timeout:
10seconds - Up to
3retries after failure (at1/2/4seconds after failure respectively) - Callback response body format is consistent with the task query endpoint response format
- A 2xx status code is considered successful; other status codes trigger retries
"https://your-domain.com/webhooks/video-task-completed"
Response
Video generation task created successfully