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-edit",
"prompt": "Edit the video: remove all passers-by in @video1, keep only the main character",
"video_urls": [
"https://example.com/original.mp4"
],
"quality": "720p",
"generate_audio": true,
"content_filter": true
}
'{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "seedance-2.5-video-edit",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"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-edit",
"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"
}
}Seedance 2.5 Video Edit
- Video editing on an input video — replace subjects, add/remove objects, restyle or repaint regions
- Prompt must state the editing intent (e.g. “Edit the video: remove the background music of @video1”)
- Input the video to edit (required) + optional reference images (0–30) + reference videos (up to 10 in total) + reference audio (0–10)
- 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
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-edit",
"prompt": "Edit the video: remove all passers-by in @video1, keep only the main character",
"video_urls": [
"https://example.com/original.mp4"
],
"quality": "720p",
"generate_audio": true,
"content_filter": true
}
'{
"created": 1761313744,
"id": "task-unified-1774857405-abc123",
"model": "seedance-2.5-video-edit",
"object": "video.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"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-edit",
"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"
}
}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-video-edit "seedance-2.5-video-edit"
Text prompt describing the desired edit. Supports both Chinese and English, recommended no more than 500 characters for Chinese. Maximum prompt length: 10000 tokens
Details:
- The prompt must state the editing intent, e.g., "Edit the video: remove the background music of @video1"
- You can use natural language to specify the purpose of each material, e.g., "replace the character in @video1 with the person in @image1"
- The model will automatically understand the correspondence between material numbers and their intended uses
"Edit the video: remove all passers-by in @video1, keep only the main character"
Input video URL array, required; 1–10 videos
Requirement: At least 1 video required — the video to edit. The first video is the video being edited; additional videos serve as references.
Role description:
| Media Type | Role | Typical Usage |
|---|---|---|
| Video | reference_video | The video to edit (first video), camera movement or motion reference (additional videos) |
Video requirements:
- Supported formats:
.mp4,.mov - Resolution: 480p, 720p, 1080p, 4K
- Duration per video:
4~30seconds (the first video is the edit target), 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, replacement subject (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"]
Output video duration (seconds), defaults to -1
Details:
- Only
-1is supported: the output length follows the input video (may be up to 0.4s shorter) - Custom durations are rejected
- Duration directly affects billing
-1 -1
Video resolution, defaults to 720p
Options:
480p: Lower clarity, lower cost720p: Standard clarity, this is the default1080p: Ultra HD clarity
480p, 720p, 1080p "720p"
Video aspect ratio, defaults to adaptive
Options:
adaptive: the output ratio follows the first input video, the only value this model accepts- Fixed ratios such as
16:9or9:16are rejected
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, failed, or cancelled
- 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-video-edit"
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