cURL
curl https://api.apipod.ai/v1/videos/generations \
-H "Authorization: Bearer $APIPOD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-lite-r2v",
"prompt": "A cinematic tracking shot through a rain-soaked neon street, realistic motion, synchronized ambient sound.",
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"video_urls": [
"https://cdn.example.com/reference.mp4"
],
"audio_urls": [
"https://cdn.example.com/reference.mp3"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"generate_audio": true
}'import os
import requests
payload = {
"model": "seedance-2.0-lite-r2v",
"prompt": "A cinematic tracking shot through a rain-soaked neon street, realistic motion, synchronized ambient sound.",
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"video_urls": [
"https://cdn.example.com/reference.mp4"
],
"audio_urls": [
"https://cdn.example.com/reference.mp3"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"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.0-lite-r2v",
"prompt": "A cinematic tracking shot through a rain-soaked neon street, realistic motion, synchronized ambient sound.",
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"video_urls": [
"https://cdn.example.com/reference.mp4"
],
"audio_urls": [
"https://cdn.example.com/reference.mp3"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"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.0-lite-r2v",
"prompt": "A cinematic tracking shot through a rain-soaked neon street, realistic motion, synchronized ambient sound.",
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"video_urls": [
"https://cdn.example.com/reference.mp4"
],
"audio_urls": [
"https://cdn.example.com/reference.mp3"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"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.0-lite-r2v",
"prompt": "A cinematic tracking shot through a rain-soaked neon street, realistic motion, synchronized ambient sound.",
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"video_urls": [
"https://cdn.example.com/reference.mp4"
],
"audio_urls": [
"https://cdn.example.com/reference.mp3"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"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.0 Lite
Seedance 2.0 Lite Reference to Video
Seedance 2.0 Lite 参考生视频是特价版满血路由,基于图片、视频与音频参考素材生成视频。Seedance 系列强调提示词遵循、连贯运动、多镜头叙事和音画同步。该模型为特价版满血路由:真人素材在提交生成前会经素材服务统一送审,请求中直接传入公开 URL 即可。
POST
https://api.apipod.ai
/
v1
/
videos
/
generations
cURL
curl https://api.apipod.ai/v1/videos/generations \
-H "Authorization: Bearer $APIPOD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-lite-r2v",
"prompt": "A cinematic tracking shot through a rain-soaked neon street, realistic motion, synchronized ambient sound.",
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"video_urls": [
"https://cdn.example.com/reference.mp4"
],
"audio_urls": [
"https://cdn.example.com/reference.mp3"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"generate_audio": true
}'import os
import requests
payload = {
"model": "seedance-2.0-lite-r2v",
"prompt": "A cinematic tracking shot through a rain-soaked neon street, realistic motion, synchronized ambient sound.",
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"video_urls": [
"https://cdn.example.com/reference.mp4"
],
"audio_urls": [
"https://cdn.example.com/reference.mp3"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"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.0-lite-r2v",
"prompt": "A cinematic tracking shot through a rain-soaked neon street, realistic motion, synchronized ambient sound.",
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"video_urls": [
"https://cdn.example.com/reference.mp4"
],
"audio_urls": [
"https://cdn.example.com/reference.mp3"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"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.0-lite-r2v",
"prompt": "A cinematic tracking shot through a rain-soaked neon street, realistic motion, synchronized ambient sound.",
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"video_urls": [
"https://cdn.example.com/reference.mp4"
],
"audio_urls": [
"https://cdn.example.com/reference.mp3"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"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.0-lite-r2v",
"prompt": "A cinematic tracking shot through a rain-soaked neon street, realistic motion, synchronized ambient sound.",
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"video_urls": [
"https://cdn.example.com/reference.mp4"
],
"audio_urls": [
"https://cdn.example.com/reference.mp3"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"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"
}
}授权
在 Authorization 请求头中使用 Bearer APIPod_API_KEY。
请求体
application/json
APIPod 公开模型 ID。
Allowed value:
"seedance-2.0-lite-r2v"生成或编辑指令。 最大字符串长度:1000。
可公开访问的源图片或参考图 URL。
可公开访问的参考视频 URL。
可公开访问的参考音频 URL。
视频时长,单位为秒。 最小值:4。 最大值:15。
可用选项:
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 输出分辨率档位。
可用选项:
720p, 1080p, 2k, 4k 输出宽高比。
可用选项:
adaptive, 1:1, 3:4, 4:3, 9:16, 16:9, 21:9 添加上游水印。
在通道支持时允许检索实时信息。
为视频生成同步音频。
返回生成视频的尾帧,用于续作工作流。
⌘I