curl https://api.pipellm.ai/v2/videos \
-H "Authorization: Bearer $PIPELLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0-mini",
"prompt": "A cat walking across a sunlit kitchen floor",
"duration": 4,
"aspect_ratio": "16:9",
"resolution": "480p",
"audio": false
}'
import os
import requests
response = requests.post(
"https://api.pipellm.ai/v2/videos",
headers={
"Authorization": f"Bearer {os.environ['PIPELLM_API_KEY']}",
"Content-Type": "application/json",
},
json={
"model": "seedance-2-0-mini",
"prompt": "A cat walking across a sunlit kitchen floor",
"duration": 4,
"aspect_ratio": "16:9",
"resolution": "480p",
"audio": False,
},
)
print(response.json())
{
"id": "gen-xxxxxxxx",
"object": "video",
"model": "seedance-2-0-mini",
"provider": "volcengine",
"status": "queued",
"progress": 0,
"created_at": 1726400000,
"updated_at": 1726400000
}
Create a video
Create an asynchronous video generation task.
POST
/
v2
/
videos
curl https://api.pipellm.ai/v2/videos \
-H "Authorization: Bearer $PIPELLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0-mini",
"prompt": "A cat walking across a sunlit kitchen floor",
"duration": 4,
"aspect_ratio": "16:9",
"resolution": "480p",
"audio": false
}'
import os
import requests
response = requests.post(
"https://api.pipellm.ai/v2/videos",
headers={
"Authorization": f"Bearer {os.environ['PIPELLM_API_KEY']}",
"Content-Type": "application/json",
},
json={
"model": "seedance-2-0-mini",
"prompt": "A cat walking across a sunlit kitchen floor",
"duration": 4,
"aspect_ratio": "16:9",
"resolution": "480p",
"audio": False,
},
)
print(response.json())
{
"id": "gen-xxxxxxxx",
"object": "video",
"model": "seedance-2-0-mini",
"provider": "volcengine",
"status": "queued",
"progress": 0,
"created_at": 1726400000,
"updated_at": 1726400000
}
Creates a video task and returns the provider-neutral task envelope. Poll
Unknown fields are rejected. Duration lives on
GET /v2/videos/{id} until the task completes.
See supported models and billing for Mini, standard 2.0, Fast and 2.5 limits and a full poll loop.
string
required
Use
doubao-seedance-2-0-mini-260615, seedance-2.0, doubao-seedance-2-0-fast-260128, or doubao-seedance-2-5-260628. Mini also accepts seedance-2-0-mini and seedance-2.0-mini.string
required
Text description of the video to generate.
array
Optional media inputs. Each item needs
type and url. Mini allows at most 9 images, 3 videos, and 3 audios. Combined reference-video duration must be ≤ 15s. Standard, Fast and 2.5 accept up to 9 images only.Show inputs[]
Show inputs[]
integer
Output seconds: 4–15 for Mini, standard and Fast; 4–30 for 2.5. Default
5.string
adaptive, 16:9, 9:16, 1:1, 4:3, 3:4, or 21:9. Mini defaults to 16:9.string
480p, 720p, or 1080p. Only 2.5 also accepts 1080p; the other models accept 480p and 720p. Default 480p.boolean
Whether to generate audio. Mini defaults to
false.object
Provider-keyed native options. Not supported on these four model profiles.
curl https://api.pipellm.ai/v2/videos \
-H "Authorization: Bearer $PIPELLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0-mini",
"prompt": "A cat walking across a sunlit kitchen floor",
"duration": 4,
"aspect_ratio": "16:9",
"resolution": "480p",
"audio": false
}'
import os
import requests
response = requests.post(
"https://api.pipellm.ai/v2/videos",
headers={
"Authorization": f"Bearer {os.environ['PIPELLM_API_KEY']}",
"Content-Type": "application/json",
},
json={
"model": "seedance-2-0-mini",
"prompt": "A cat walking across a sunlit kitchen floor",
"duration": 4,
"aspect_ratio": "16:9",
"resolution": "480p",
"audio": False,
},
)
print(response.json())
{
"id": "gen-xxxxxxxx",
"object": "video",
"model": "seedance-2-0-mini",
"provider": "volcengine",
"status": "queued",
"progress": 0,
"created_at": 1726400000,
"updated_at": 1726400000
}
outputs[] after completion, not on the task top level.
string
Public task ID (
gen-...). Use this on GET and DELETE. Upstream IDs stay internal.string
Always
video.string
Model name from the request.
string
Upstream provider that accepted the task, for example
volcengine.string
queued, in_progress, completed, failed, cancelled, or expired.integer
Optional 0–100 progress.
array
object
Present when
status is failed. Contains code and message.Errors
Mini and standard 2.0 are billed after acceptance. Fast and 2.5 settle on completion from actual video tokens. Validation failures return400 and are not billed. Same envelope as Errors. Unknown JSON fields are rejected.
400 invalid_request_error
400 invalid_request_error
Missing
model / prompt, unsupported Mini duration or resolution, wrong input role, too many references, or provider_options on Mini.{
"error": {
"type": "invalid_request_error",
"code": "400",
"message": "Mini image inputs require role=reference_image"
}
}
401 authentication_error
401 authentication_error
{
"error": {
"type": "authentication_error",
"code": "401",
"message": "Incorrect API key provided. Please visit https://console.pipellm.ai/account/api-keys to find your API key."
}
}
402 insufficient_balance
402 insufficient_balance
Quote is taken at create time. Insufficient balance rejects the request before a task is created.
{
"error": {
"type": "insufficient_balance",
"code": "402",
"message": "Insufficient balance. Please recharge your account at https://console.pipellm.ai/billing."
}
}
429 rate_limit_error
429 rate_limit_error
See Rate Limits.
{
"error": {
"type": "rate_limit_error",
"code": "429",
"message": "Rate limit exceeded. Your current limit is 120 requests per minute (approximately 2.00 requests per second). Please visit https://console.pipellm.ai/billing to upgrade your plan for higher limits."
}
}
Was this page helpful?