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-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-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-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": "draft_unavailable",
"message": "Draft mode is not available on the selected service right now. Retry later or send the request without draft.",
"type": "invalid_request_error"
}
}Seedance 2.5 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
- Supports draft mode: set
draft: trueto generate a 480p draft first. If you are satisfied, use Draft-to-Video to convert it into a 1080p final video. The two requests are billed separately - Asynchronous processing mode, use the returned task ID to query status
- Generated video links are valid for 24 hours, please save them promptly
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-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-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-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": "draft_unavailable",
"message": "Draft mode is not available on the selected service right now. Retry later or send the request without draft.",
"type": "invalid_request_error"
}
}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
Video generation model name
seedance-2.5-image-to-video "seedance-2.5-image-to-video"
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
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
5
Video resolution, defaults to 720p
Options:
480p: Lower clarity, lower cost720p: Standard clarity, this is the default1080p: Ultra HD clarity
Draft mode: When draft is true, only 480p is supported. If omitted, quality automatically defaults to 480p
480p, 720p, 1080p "720p"
Draft mode switch, defaults to false
Details:
true: Generate a 480p draft first, with faster turnaround and standard 480p billing- When enabled,
qualitymust be480por omitted. Any other resolution returns a 400 parameter error - Must be a top-level request body field. Placing it inside
model_paramsreturns a 400 parameter error
Convert to a final video:
- Once the draft is complete, querying the task returns
draft_expires_at - Before that time, pass the draft task ID to Seedance 2.5 Draft-to-Video to generate a 1080p final video with the same content
- The final video and draft are billed separately. If you are not satisfied with the draft, skip conversion and pay only for the draft
- The default validity period is 24 hours after the draft completes; the actual deadline is
draft_expires_at. Submit the conversion request early: expiration while queued also causes conversion to fail
Temporary unavailability: A 503 error may be returned when the service is temporarily unavailable. If the error code is draft_unavailable, retry later or remove draft to use normal generation mode
false
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"
Whether to generate synchronized audio, defaults to true
Options:
true: Video includes synchronized audio at no additional chargefalse: Output silent video
true
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
Task creation timestamp
1761313744
Task ID
"task-unified-1774857405-abc123"
Actual model name used
"seedance-2.5-image-to-video"
Specific type of the task
video.generation.task Task progress percentage (0-100)
0 <= x <= 1000
Task status
pending, processing, completed, failed "pending"
Video task details
Show child attributes
Show child attributes
Output type of the task
text, image, audio, video "video"
Usage and billing information
Show child attributes
Show child attributes