curl https://api.apipod.ai/v1/videos/generations \
-H "Authorization: Bearer $APIPOD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-fast",
"prompt": "Quick concept pass: astronaut walking on the moon at sunrise, 5 seconds.",
"image_urls": ["https://example.com/first.png"],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"generate_audio": true
}'import os
import requests
payload = {
"model": "seedance-2.0-fast",
"prompt": "Quick concept pass: astronaut walking on the moon at sunrise, 5 seconds.",
"image_urls": ["https://example.com/first.png"],
"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 (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.apipod.ai/v1/videos/generations"
payload := strings.NewReader("{\n \"model\": \"seedance-2.0-fast\",\n \"prompt\": \"Quick concept pass: astronaut walking on the moon at sunrise, 5 seconds.\"\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))
}falseconst options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'seedance-2.0-fast',
prompt: 'Quick concept pass: astronaut walking on the moon at sunrise, 5 seconds.'
})
};
fetch('https://api.apipod.ai/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"code": 200,
"message": "success",
"data": {
"task_id": "vid_task_01JEXAMPLE"
}
}Seedance 2.0 Fast
All-in-one Seedance 2.0 Fast: one model ID covers every scenario at Fast-tier speed, with the scenario inferred from your request materials.
curl https://api.apipod.ai/v1/videos/generations \
-H "Authorization: Bearer $APIPOD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-fast",
"prompt": "Quick concept pass: astronaut walking on the moon at sunrise, 5 seconds.",
"image_urls": ["https://example.com/first.png"],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"generate_audio": true
}'import os
import requests
payload = {
"model": "seedance-2.0-fast",
"prompt": "Quick concept pass: astronaut walking on the moon at sunrise, 5 seconds.",
"image_urls": ["https://example.com/first.png"],
"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 (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.apipod.ai/v1/videos/generations"
payload := strings.NewReader("{\n \"model\": \"seedance-2.0-fast\",\n \"prompt\": \"Quick concept pass: astronaut walking on the moon at sunrise, 5 seconds.\"\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))
}falseconst options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'seedance-2.0-fast',
prompt: 'Quick concept pass: astronaut walking on the moon at sunrise, 5 seconds.'
})
};
fetch('https://api.apipod.ai/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"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-2.0-fast"Generation or editing instructions, up to 30000 characters. It is recommended to keep the prompt to no more than 500 Chinese characters or 1,000 English words. Lengthy text will lead to scattered information, and the model may ignore details and only focus on key points, resulting in missing elements in the generated video.
30000Image URLs. Scenario inference applies: when images are the only media input and 1-2 URLs are provided they are treated as first/last frames (image-to-video); with other reference media present or more than 2 URLs, all images are treated as reference images. Pair with the role field to pin the semantics explicitly. Up to 9 images are supported; each image must be smaller than 30 MB.
9Explicit interpretation of image_urls. reference_images: all images are treated as reference images regardless of count. first_last_frame: images are treated as the first frame plus an optional last frame (max 2; cannot be combined with reference videos or audios). When omitted, the scenario is inferred from the materials.
reference_images, first_last_frame Reference video URLs. Up to 3 videos are supported; each video lasts 2-15 seconds and the total duration of all videos must not exceed 15 seconds.
3Reference audio URLs. Up to 3 audios are supported; each audio lasts 2-15 seconds and the total duration of all audios must not exceed 15 seconds. Audio cannot be used alone; include at least one image or video reference.
3Video duration in seconds, from 4 to 15.
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 4 <= x <= 15Generate video resolution.
480p, 720p Aspect ratio of the generated video. When the ratio is configured as adaptive, the model will automatically adapt the aspect ratio according to the generation scenario.
adaptive, 16:9, 4:3, 1:1, 3:4, 9:16, 21:9 Controls whether the generated video contains audio synchronized with the visuals.
Allow retrieving live information when the channel supports it.
Was this page helpful?