curl --request POST \
--url https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reference_images": [
"https://example.com/person.jpg",
"https://example.com/scene.jpg"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
reference_images: ['https://example.com/person.jpg', 'https://example.com/scene.jpg']
})
};
fetch('https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v"
payload = { "reference_images": ["https://example.com/person.jpg", "https://example.com/scene.jpg"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v"
payload := strings.NewReader("{\n \"reference_images\": [\n \"https://example.com/person.jpg\",\n \"https://example.com/scene.jpg\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reference_images\": [\n \"https://example.com/person.jpg\",\n \"https://example.com/scene.jpg\"\n ]\n}")
.asString();const url = 'https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
reference_images: ['https://example.com/person.jpg', 'https://example.com/scene.jpg']
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reference_images' => [
'https://example.com/person.jpg',
'https://example.com/scene.jpg'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reference_images\": [\n \"https://example.com/person.jpg\",\n \"https://example.com/scene.jpg\"\n ]\n}"
response = http.request(request)
puts response.read_bodyimport Foundation
let parameters = ["reference_images": ["https://example.com/person.jpg", "https://example.com/scene.jpg"]] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"reference_images": [
"https://example.com/person.jpg",
"https://example.com/scene.jpg"
]
}'{
"code": 0,
"message": "success",
"data": {
"status": "pending",
"task_id": "task-abc123",
"model_id": "model-123",
"get_result": {
"method": "GET",
"url": "https://api.modellix.ai/api/v1/tasks/task-abc123"
}
}
}Seedance 2.5 R2V
[Core Function] Seedance 2.5 R2V is ByteDance Dreamina Seedance 2.5 reference-to-video generation from up to 30 reference images. [Strengths] It supports optional reference audio, fixed or adaptive aspect ratio, 480p/720p/1080p, 4-30 second duration, and mp4 or mov output. [Best For] Highly recommended for: multi-image character consistency and image-led storytelling on Seedance 2.5. [Limitations] Do NOT send first_frame_image, last_frame_image, or video_urls. Do NOT use audio_urls alone. Do NOT use this model when the user requires 4k output. [Routing] Prefer this model when the user provides reference images without a driving video. Use Seedance 2.5 I2V for first-frame or first-and-last-frame animation, Seedance 2.5 T2V for text-only requests, and Seedance 2.5 V2V when reference video is required.
curl --request POST \
--url https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reference_images": [
"https://example.com/person.jpg",
"https://example.com/scene.jpg"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
reference_images: ['https://example.com/person.jpg', 'https://example.com/scene.jpg']
})
};
fetch('https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v"
payload = { "reference_images": ["https://example.com/person.jpg", "https://example.com/scene.jpg"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v"
payload := strings.NewReader("{\n \"reference_images\": [\n \"https://example.com/person.jpg\",\n \"https://example.com/scene.jpg\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reference_images\": [\n \"https://example.com/person.jpg\",\n \"https://example.com/scene.jpg\"\n ]\n}")
.asString();const url = 'https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
reference_images: ['https://example.com/person.jpg', 'https://example.com/scene.jpg']
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reference_images' => [
'https://example.com/person.jpg',
'https://example.com/scene.jpg'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reference_images\": [\n \"https://example.com/person.jpg\",\n \"https://example.com/scene.jpg\"\n ]\n}"
response = http.request(request)
puts response.read_bodyimport Foundation
let parameters = ["reference_images": ["https://example.com/person.jpg", "https://example.com/scene.jpg"]] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.modellix.ai/api/v1/bytedance/seedance-2.5-r2v' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"reference_images": [
"https://example.com/person.jpg",
"https://example.com/scene.jpg"
]
}'{
"code": 0,
"message": "success",
"data": {
"status": "pending",
"task_id": "task-abc123",
"model_id": "model-123",
"get_result": {
"method": "GET",
"url": "https://api.modellix.ai/api/v1/tasks/task-abc123"
}
}
}Authorizations
API Key authentication. Format: Bearer YOUR_API_KEY.
Body
Seedance 2.5 reference-to-video. reference_images is required. Do not pass first_frame_image or last_frame_image.
Required. Reference image URLs (1-30). Do not pass first_frame_image or last_frame_image.
1 - 30 elements[
"https://example.com/a.jpg",
"https://example.com/b.jpg"
]
Optional. Video description. Maximum 10000 characters. Use @Image1 and @Audio1 when referencing inputs.
1 - 10000"Animate the scene gently with natural motion"
Optional. Reference audio URLs (1-10). Must accompany reference_images; audio-only is not supported.
1 - 10 elements["https://example.com/voice.mp3"]
Aspect ratio of the generated video.
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive "adaptive"
Specifies the resolution tier for the generated video. Seedance 2.5 supports 480p, 720p, and 1080p
480p, 720p, 1080p "720p"
Video duration in seconds. Allowed values are integers from 4 to 30
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 5
Random number seed for reproducibility. Use -1 for random. Identical seeds cannot guarantee completely identical results
-1 <= x <= 4294967295-1
Whether to keep the camera fixed during generation
false
Whether to generate an audio track with the video
true
Output video container. mp4 for general playback; mov for higher color precision in editing workflows
mp4, mov "mp4"
Task expiration time in seconds
3600 <= x <= 259200172800
Whether to return the last frame of the generated video
false
Task type hint for multimodal reference only (requires reference_images). Do not pass this field for first-frame or first-last-frame generation. auto infers the type from the prompt and inputs. reference generates a new video from reference images; ratio and duration have no special constraints.
auto, reference "auto"