curl --request POST \
--url https://api.evolink.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "seedance-2.0-fast-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.0-fast-reference-to-video",
"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_request",
"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.0-fast-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"
}
}Seedance 2.0 Fast Reference-to-Video
- Input reference images (0–9) + reference videos (0–3) + reference audio (0–3) + text prompt to generate video
- Supports various creative scenarios including new generation, video editing, and video extension
- 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.0-fast-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.0-fast-reference-to-video",
"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_request",
"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.0-fast-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"
}
}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
"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, 0–9 images
Role description:
| Media Type | Role | Typical Usage |
|---|---|---|
| Image | reference_image | Style reference, product image, character appearance, 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
Note: You cannot provide only audio_urls; at least 1 image (image_urls) or 1 video (video_urls) must be included
9[
"https://example.com/ref1.jpg",
"https://example.com/ref2.jpg"
]
Reference video URL array, 0–3 videos
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
- Duration per video:
2~15seconds, max 3 videos, total duration of all videos ≤15seconds - Aspect ratio (width/height):
0.4~2.5 - Width/height pixels:
300~6000px - Frame pixels (width × height):
409,600~2,086,876(e.g., 640×640 ~ 2206×946) - Max size per video:
50MB - Frame rate:
24~60FPS - Total request body size must not exceed
64MB, do not use Base64 encoding - Using video references will increase costs (input video duration is counted in billing)
- Video URLs must be directly accessible by the server
Note: You cannot provide only audio_urls; at least 1 image (image_urls) or 1 video (video_urls) must be included
3["https://example.com/reference.mp4"]
Reference audio URL array, 0–3 clips
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~15seconds, max 3 clips, total duration of all audio ≤15seconds - 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
Note: Audio cannot be provided alone; at least 1 reference video or image must be included
3["https://example.com/bgm.mp3"]
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 | 864×496 | 1280×720 |
| 4:3 | 752×560 | 1112×834 |
| 1:1 | 640×640 | 960×960 |
| 3:4 | 560×752 | 834×1112 |
| 9:16 | 496×864 | 720×1280 |
| 21:9 | 992×432 | 1470×630 |
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
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