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-video-extend",
"prompt": "Extend @video1 backward: the character walks out of the frame, the camera slowly pulls back to reveal the empty street",
"video_urls": [
"https://example.com/original.mp4"
],
"duration": 12,
"quality": "720p",
"generate_audio": true,
"content_filter": true
}
'{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "seedance-2.5-video-extend",
"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-video-extend",
"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 Video Extend
- Extend an input video forward or backward
- Prompt must state the extension intent (e.g. “Extend @video1 backward, the character walks out of the frame”)
- Input the video to extend (required) + optional reference images (0–30) + reference videos (up to 10 in total) + reference audio (0–10)
- 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-video-extend",
"prompt": "Extend @video1 backward: the character walks out of the frame, the camera slowly pulls back to reveal the empty street",
"video_urls": [
"https://example.com/original.mp4"
],
"duration": 12,
"quality": "720p",
"generate_audio": true,
"content_filter": true
}
'{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "seedance-2.5-video-extend",
"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-video-extend",
"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
Text prompt describing the desired extension. Supports both Chinese and English, recommended no more than 500 characters for Chinese. Maximum prompt length: 10000 tokens
Details:
- The prompt must state the extension intent, e.g., "Extend @video1 backward, the character walks out of the frame"
- You can use natural language to specify the purpose of each material, e.g., "extend @video1 forward following the style of @image1"
- The model will automatically understand the correspondence between material numbers and their intended uses
"Extend @video1 backward: the character walks out of the frame, the camera slowly pulls back to reveal the empty street"
Input video URL array, required; 1–10 videos
Requirement: At least 1 video required — the video to extend. The first video is the video being extended; additional videos serve as references.
Role description:
| Media Type | Role | Typical Usage |
|---|---|---|
| Video | reference_video | The video to extend (first video), camera movement or motion reference (additional videos) |
Video requirements:
- Supported formats:
.mp4,.mov - Resolution: 480p, 720p, 1080p, 4K
- Duration per video:
2~30seconds, max 10 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
1 - 10 elements["https://example.com/original.mp4"]
Reference image URL array, optional; 1–30 images when provided
Requirement: video_urls is required for this model; images are optional supplementary references.
Role description:
| Media Type | Role | Typical Usage |
|---|---|---|
| Image | reference_image | Style reference, product image, scene reference (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
1 - 30 elements[
"https://example.com/ref1.jpg",
"https://example.com/ref2.jpg"
]
Reference audio URL array, optional; 1–10 clips when provided
Requirement: video_urls is required for this model; audio clips are optional supplementary references.
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 10 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
1 - 10 elements["https://example.com/bgm.mp3"]
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
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