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-image-to-video",
"prompt": "The camera slowly zooms in, the scene gradually comes to life",
"image_urls": [
"https://example.com/first-frame.jpg"
],
"duration": 5,
"quality": "720p",
"aspect_ratio": "adaptive"
}
'{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "seedance-2.5-flash-image-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-image-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 Image-to-Video
- Input 1 image for first-frame video generation, input 2 images for first-last-frame video generation, the model determines automatically
- 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-image-to-video",
"prompt": "The camera slowly zooms in, the scene gradually comes to life",
"image_urls": [
"https://example.com/first-frame.jpg"
],
"duration": 5,
"quality": "720p",
"aspect_ratio": "adaptive"
}
'{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "seedance-2.5-flash-image-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-image-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 or 1000 words for English. Maximum prompt length: 10000 tokens
Note:
- This model does not support
video_urlsoraudio_urlsinput
"The camera slowly zooms in, the scene gradually comes to life"
Image URL array, 1–2 images
Image count and behavior:
| Image Count | Behavior | Role |
|---|---|---|
| 1 image | First-frame image-to-video | Automatically set as first_frame |
| 2 images | First-last-frame image-to-video | 1st image → first_frame, 2nd image → last_frame |
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 - When providing first and last frames, both images can be identical. If aspect ratios differ, the first frame takes priority and the last frame will be automatically cropped to fit
- 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.
1 - 2 elements["https://example.com/first-frame.jpg"]
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
-1 5
Video aspect ratio, image-to-video only supports adaptive
Options:
adaptive: Automatically selects the closest aspect ratio based on the first-frame image proportions, the only value this model accepts- Fixed ratios such as
16:9or9:16cannot be specified for this model
adaptive "adaptive"
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