curl https://api.apipod.ai/v1/videos/generations \
-H "Authorization: Bearer $APIPOD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-1.5-pro-i2v",
"prompt": "Animate the subject with a slow camera push-in, natural motion, and soft cinematic lighting.",
"duration": 5,
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"resolution": "720p",
"aspect_ratio": "adaptive",
"generate_audio": true
}'import os
import requests
payload = {
"model": "seedance-1.5-pro-i2v",
"prompt": "Animate the subject with a slow camera push-in, natural motion, and soft cinematic lighting.",
"duration": 5,
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"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-1.5-pro-i2v",
"prompt": "Animate the subject with a slow camera push-in, natural motion, and soft cinematic lighting.",
"duration": 5,
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"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-1.5-pro-i2v",
"prompt": "Animate the subject with a slow camera push-in, natural motion, and soft cinematic lighting.",
"duration": 5,
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"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-1.5-pro-i2v",
"prompt": "Animate the subject with a slow camera push-in, natural motion, and soft cinematic lighting.",
"duration": 5,
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"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 1.5 Pro Image to Video
Seedance 1.5 Pro Image to Video is a standard route that animates a required first-frame image and can use an optional last frame where the public schema allows…
curl https://api.apipod.ai/v1/videos/generations \
-H "Authorization: Bearer $APIPOD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-1.5-pro-i2v",
"prompt": "Animate the subject with a slow camera push-in, natural motion, and soft cinematic lighting.",
"duration": 5,
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"resolution": "720p",
"aspect_ratio": "adaptive",
"generate_audio": true
}'import os
import requests
payload = {
"model": "seedance-1.5-pro-i2v",
"prompt": "Animate the subject with a slow camera push-in, natural motion, and soft cinematic lighting.",
"duration": 5,
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"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-1.5-pro-i2v",
"prompt": "Animate the subject with a slow camera push-in, natural motion, and soft cinematic lighting.",
"duration": 5,
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"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-1.5-pro-i2v",
"prompt": "Animate the subject with a slow camera push-in, natural motion, and soft cinematic lighting.",
"duration": 5,
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"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-1.5-pro-i2v",
"prompt": "Animate the subject with a slow camera push-in, natural motion, and soft cinematic lighting.",
"duration": 5,
"image_urls": [
"https://cdn.example.com/reference-1.jpg"
],
"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"
}
}Authorizations
Use your APIPod API key as a Bearer token in the Authorization header.
Body
Public APIPod model ID.
"seedance-1.5-pro-i2v"The video description (4-2000 characters).
2000The generated video's duration.
4, 5, 6, 7, 8, 9, 10, 11, 12 First and last frame images, with support for uploading only the first frame image.
The aspect ratio of the generated video. When using adaptive, the model will adaptively adjust the aspect ratio of the video according to different video generation scenarios.
adaptive, 16:9, 4:3, 1:1, 3:4, 9:16, 21:9 The generated video's resolution.
480p, 720p, 1080p Enable to keep the camera view static and stable. Disable for dynamic camera movement.
Enable to create sound effects for the video (Additional cost applies).
Was this page helpful?