curl https://api.apipod.ai/v1/videos/generations \
-H "Authorization: Bearer $APIPOD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-extend",
"prompt": "延长@视频1,窗户打开后进入@视频2的美术馆室内,最后镜头进入@视频3的画内",
"video_urls": ["https://arkdocs.tos-cn-beijing.volces.com/videos/video-generation/r2v_extend_video1_75.mov", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video2.mp4", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video3.mp4"],
"duration": 11,
"resolution": "480p",
"web_search": false,
"generate_audio": true
}'import os
import requests
payload = {
"model": "seedance-2.5-extend",
"prompt": "延长@视频1,窗户打开后进入@视频2的美术馆室内,最后镜头进入@视频3的画内",
"video_urls": ["https://arkdocs.tos-cn-beijing.volces.com/videos/video-generation/r2v_extend_video1_75.mov", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video2.mp4", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video3.mp4"],
"duration": 11,
"resolution": "480p",
"web_search": False,
"generate_audio": True
}
response = requests.post(
"https://api.apipod.ai/v1/videos/generations",
headers={
"Authorization": f"Bearer {os.environ['APIPOD_API_KEY']}",
"Content-Type": "application/json",
},
json=payload,
timeout=60,
)
response.raise_for_status()
print(response.json())package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
payload := map[string]any{}
if err := json.Unmarshal([]byte(`{
"model": "seedance-2.5-extend",
"prompt": "延长@视频1,窗户打开后进入@视频2的美术馆室内,最后镜头进入@视频3的画内",
"video_urls": ["https://arkdocs.tos-cn-beijing.volces.com/videos/video-generation/r2v_extend_video1_75.mov", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video2.mp4", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video3.mp4"],
"duration": 11,
"resolution": "480p",
"web_search": false,
"generate_audio": true
}`), &payload); err != nil {
panic(err)
}
body, err := json.Marshal(payload)
if err != nil {
panic(err)
}
req, err := http.NewRequest(http.MethodPost, "https://api.apipod.ai/v1/videos/generations", bytes.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("APIPOD_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println(resp.Status)
}use reqwest::Client;
use serde_json::json;
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let payload = json!({
"model": "seedance-2.5-extend",
"prompt": "延长@视频1,窗户打开后进入@视频2的美术馆室内,最后镜头进入@视频3的画内",
"video_urls": ["https://arkdocs.tos-cn-beijing.volces.com/videos/video-generation/r2v_extend_video1_75.mov", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video2.mp4", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video3.mp4"],
"duration": 11,
"resolution": "480p",
"web_search": false,
"generate_audio": true
});
let response = Client::new()
.post("https://api.apipod.ai/v1/videos/generations")
.bearer_auth(env::var("APIPOD_API_KEY")?)
.json(&payload)
.send()
.await?
.error_for_status()?;
println!("{}", response.text().await?);
Ok(())
}const response = await fetch("https://api.apipod.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.APIPOD_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(
{
"model": "seedance-2.5-extend",
"prompt": "延长@视频1,窗户打开后进入@视频2的美术馆室内,最后镜头进入@视频3的画内",
"video_urls": ["https://arkdocs.tos-cn-beijing.volces.com/videos/video-generation/r2v_extend_video1_75.mov", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video2.mp4", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video3.mp4"],
"duration": 11,
"resolution": "480p",
"web_search": false,
"generate_audio": true
}
),
});
if (!response.ok) {
throw new Error(`APIPod request failed: ${response.status} ${await response.text()}`);
}
console.log(await response.json());{
"code": 200,
"message": "success",
"data": {
"task_id": "vid_task_01JEXAMPLE"
}
}Seedance 2.5 Video Extend
Seedance 2.5 Video Extend pins the omni-reference task type to video extension: provide the source video, describe the forward or backward continuation, and the output aspect ratio automatically follows the source video.
curl https://api.apipod.ai/v1/videos/generations \
-H "Authorization: Bearer $APIPOD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-extend",
"prompt": "延长@视频1,窗户打开后进入@视频2的美术馆室内,最后镜头进入@视频3的画内",
"video_urls": ["https://arkdocs.tos-cn-beijing.volces.com/videos/video-generation/r2v_extend_video1_75.mov", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video2.mp4", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video3.mp4"],
"duration": 11,
"resolution": "480p",
"web_search": false,
"generate_audio": true
}'import os
import requests
payload = {
"model": "seedance-2.5-extend",
"prompt": "延长@视频1,窗户打开后进入@视频2的美术馆室内,最后镜头进入@视频3的画内",
"video_urls": ["https://arkdocs.tos-cn-beijing.volces.com/videos/video-generation/r2v_extend_video1_75.mov", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video2.mp4", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video3.mp4"],
"duration": 11,
"resolution": "480p",
"web_search": False,
"generate_audio": True
}
response = requests.post(
"https://api.apipod.ai/v1/videos/generations",
headers={
"Authorization": f"Bearer {os.environ['APIPOD_API_KEY']}",
"Content-Type": "application/json",
},
json=payload,
timeout=60,
)
response.raise_for_status()
print(response.json())package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
payload := map[string]any{}
if err := json.Unmarshal([]byte(`{
"model": "seedance-2.5-extend",
"prompt": "延长@视频1,窗户打开后进入@视频2的美术馆室内,最后镜头进入@视频3的画内",
"video_urls": ["https://arkdocs.tos-cn-beijing.volces.com/videos/video-generation/r2v_extend_video1_75.mov", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video2.mp4", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video3.mp4"],
"duration": 11,
"resolution": "480p",
"web_search": false,
"generate_audio": true
}`), &payload); err != nil {
panic(err)
}
body, err := json.Marshal(payload)
if err != nil {
panic(err)
}
req, err := http.NewRequest(http.MethodPost, "https://api.apipod.ai/v1/videos/generations", bytes.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("APIPOD_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println(resp.Status)
}use reqwest::Client;
use serde_json::json;
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let payload = json!({
"model": "seedance-2.5-extend",
"prompt": "延长@视频1,窗户打开后进入@视频2的美术馆室内,最后镜头进入@视频3的画内",
"video_urls": ["https://arkdocs.tos-cn-beijing.volces.com/videos/video-generation/r2v_extend_video1_75.mov", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video2.mp4", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video3.mp4"],
"duration": 11,
"resolution": "480p",
"web_search": false,
"generate_audio": true
});
let response = Client::new()
.post("https://api.apipod.ai/v1/videos/generations")
.bearer_auth(env::var("APIPOD_API_KEY")?)
.json(&payload)
.send()
.await?
.error_for_status()?;
println!("{}", response.text().await?);
Ok(())
}const response = await fetch("https://api.apipod.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.APIPOD_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(
{
"model": "seedance-2.5-extend",
"prompt": "延长@视频1,窗户打开后进入@视频2的美术馆室内,最后镜头进入@视频3的画内",
"video_urls": ["https://arkdocs.tos-cn-beijing.volces.com/videos/video-generation/r2v_extend_video1_75.mov", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video2.mp4", "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_extend_video3.mp4"],
"duration": 11,
"resolution": "480p",
"web_search": false,
"generate_audio": true
}
),
});
if (!response.ok) {
throw new Error(`APIPod request failed: ${response.status} ${await response.text()}`);
}
console.log(await response.json());{
"code": 200,
"message": "success",
"data": {
"task_id": "vid_task_01JEXAMPLE"
}
}Extension Constraints
Seedance 2.5 Video Extend is the video-extension sub-task of the omni-reference family on the official discount route. Sending the source video plus explicit continuation wording pinsomni_reference_task_type=extend upstream, so the provider validates the constraints at submission time and rejects incompatible parameters immediately with a 400, instead of failing asynchronously minutes later.
- Source video: at least one reference video is required.
- Duration: 4-30 seconds (default 4), covering the extension length.
- Aspect ratio: not settable. The output keeps the source video aspect ratio; the field is not part of the contract and any passed value is silently ignored (adaptive is always sent).
- Reference materials: up to 30 images, 10 videos, and 10 audios; audio cannot be provided on its own.
- Prompt wording: use explicit continuation wording such as extend the video forward or continue the story backward, and address materials explicitly with
@视频N/@图Ntokens (for example,延长@视频1). Ambiguous extend-or-edit intents may still be re-judged by the model.
Authorizations
Use your APIPod API key as a Bearer token in the Authorization header.
Body
Public APIPod model ID.
"seedance-2.5-extend"Continuation instructions, up to 30000 characters. Use explicit extension wording such as extend the video forward or continue the story backward, and address materials explicitly with @视频N / @图N tokens (for example, 延长@视频1). It is recommended to keep the prompt to no more than 500 Chinese characters or 1,000 English words.
30000Reference video URLs. At least one is required (the source video to extend); up to 10 videos are supported.
1 - 10 elementsOptional reference image URLs (for example the character or style to keep). Up to 30 images are supported; each image must be smaller than 30 MB.
30Optional reference audio URLs. Up to 10 audios are supported; each audio lasts 2-30 seconds. Audio cannot be provided on its own.
10Output video duration in seconds, 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 4 <= x <= 30Generate video resolution.
480p, 720p, 1080p Controls whether the generated video contains audio synchronized with the visuals.
Was this page helpful?