Video · Text to video · Image to video · Video to video
Seedance 2 API
ByteDance Seedance 2. High-quality video from text, images, or video editing.
- Price
- From $0.23 per run from $0.0563/s
- Typical time
- ~2 min
- Model id
seedance_2
Seedance 2 runs on one varg API key and one credit balance, the same as every other model here. You pay the provider's price, with no markup.
curl -X POST https://api.varg.ai/v2/tools/video/call \
-H "Authorization: Bearer $VARG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance_2",
"prompt": "a cat jumping over a fence, cinematic",
"aspect_ratio": "16:9",
"duration": 5
}'Seedance 2 pricing
From $0.23 per run. Prices are in US dollars and are the provider's own, with no markup. Seedance 2 has 13 routes: "model": "seedance_2" picks one automatically, or pass a route key as "model" to pin it. For the exact price of a request, send the same body to POST https://api.varg.ai/v2/estimate.
- piapi from $0.11/s
piapi:seedance-2-less-restrictionText to video, Image to video ByteDance Seedance 2.0 Pro via PiAPI — permissive review (NSFW ok), +10%. No retry on content rejection. Explicit opt-in via exact model_key only.
- Resolution 480p
- $0.11/s
- Resolution 1080p
- $0.55/s
- Other
- $0.22/s
- Minimum charge
- $0.44
- Most one request can cost
- $8.25
- Typical time
- ~5 min
- piapi from $0.088/s
piapi:seedance-2-fast-less-restrictionText to video, Image to video ByteDance Seedance 2.0 Fast via PiAPI — permissive review (NSFW ok), +10%. No retry on content rejection. Explicit opt-in via exact model_key only.
- Resolution 480p
- $0.088/s
- Other
- $0.176/s
- Minimum charge
- $0.36
- Most one request can cost
- $2.64
- Typical time
- ~4 min
- piapi from $0.077/s
piapi:seedance-2-mini-less-restrictionText to video, Image to video ByteDance Seedance 2.0 Mini via PiAPI — permissive review (NSFW ok), +10%. No retry on content rejection. Explicit opt-in via exact model_key only.
- Resolution 480p
- $0.077/s
- Other
- $0.154/s
- Minimum charge
- $0.31
- Most one request can cost
- $2.31
- Typical time
- ~4 min
- byteplus from $0.0704/s
byteplus:dreamina-seedance-2-0-260128Text to video, Image to video, Video to video ByteDance Seedance 2.0 on BytePlus ModelArk (official API) — text, first/last frame, or up to 9 image + 3 video + 3 audio references; 480p-4k, 4-15 s or auto, native audio. Settled on BytePlus usage (tokens) + markup.
- Resolution 480p
- $0.0704/s
- Resolution 1080p
- $0.3767/s
- Resolution 4k
- $0.7777/s
- Other
- $0.1522/s
- Minimum charge
- $0.29
- Most one request can cost
- $14.19
- Typical time
- ~3 min
- fal from $0.108/s
fal:bytedance/seedance-2.0/fast/image-to-videoImage to video ByteDance Seedance 2.0 image-to-video, fast tier — animate a start frame (optional end frame), synchronized audio, lower latency and cost.
- Resolution 480p
- $0.108/s
- Other
- $0.2419/s
- Minimum charge
- $0.43
- Most one request can cost
- $3.63
- Typical time
- ~3 min
- fal from $0.108/s
fal:bytedance/seedance-2.0/fast/reference-to-videoImage to video ByteDance Seedance 2.0 reference-to-video, fast tier — up to 9 reference images, 3 videos, 3 audio clips as inputs (@Image1/@Video1/@Audio1 in the prompt).
- Resolution 480p
- $0.108/s
- Other
- $0.2419/s
- Minimum charge
- $0.43
- Most one request can cost
- $3.63
- Typical time
- ~3 min
- fal from $0.135/s
fal:bytedance/seedance-2.0/text-to-videoText to video ByteDance Seedance 2.0 text-to-video, standard tier — cinematic output with native audio, multi-shot editing, up to 4k.
- Resolution 480p
- $0.135/s
- Resolution 1080p
- $0.682/s
- Resolution 4k
- $1.556/s
- Other
- $0.3034/s
- Minimum charge
- $0.54
- Most one request can cost
- $4.56
- Typical time
- ~3 min
- piapi from $0.10/s
piapi:seedance-2Text to video, Image to video ByteDance Seedance 2.0 Pro via PiAPI — strict moderation. t2v, first/last frames, omni reference (9 refs). 480p/720p/1080p.
- Resolution 480p
- $0.10/s
- Resolution 1080p
- $0.50/s
- Other
- $0.20/s
- Minimum charge
- $0.40
- Most one request can cost
- $7.50
- Typical time
- ~5 min
- piapi from $0.08/s
piapi:seedance-2-fastText to video, Image to video ByteDance Seedance 2.0 Fast via PiAPI — strict moderation, lower cost. 480p/720p.
- Resolution 480p
- $0.08/s
- Other
- $0.16/s
- Minimum charge
- $0.32
- Most one request can cost
- $2.40
- Typical time
- ~4 min
- piapi from $0.07/s
piapi:seedance-2-miniText to video, Image to video ByteDance Seedance 2.0 Mini via PiAPI — strict moderation, lowest cost. 480p/720p (default 720p).
- Resolution 480p
- $0.07/s
- Other
- $0.14/s
- Minimum charge
- $0.28
- Most one request can cost
- $2.10
- Typical time
- ~4 min
- byteplus from $0.0704/s
byteplus:dreamina-seedance-2-0-260128-less-restrictionText to video, Image to video, Video to video ByteDance Seedance 2.0 on BytePlus ModelArk, less restriction — references BytePlus refuses as realistic people are uploaded to the asset library and resubmitted. 480p-4k, 4-15 s or auto, native audio.
- Resolution 480p
- $0.0704/s
- Resolution 1080p
- $0.3767/s
- Resolution 4k
- $0.7777/s
- Other
- $0.1522/s
- Minimum charge
- $0.29
- Most one request can cost
- $14.19
- Typical time
- ~4 min
- byteplus from $0.0563/s
byteplus:dreamina-seedance-2-0-fast-260128Text to video, Image to video, Video to video ByteDance Seedance 2.0 fast on BytePlus ModelArk (official API) — the quicker, cheaper 2.0: text, frames or references; 480p/720p, 4-15 s or auto, native audio. Settled on BytePlus usage (tokens) + markup.
- Resolution 480p
- $0.0563/s
- Other
- $0.1218/s
- Minimum charge
- $0.23
- Most one request can cost
- $2.19
- Typical time
- ~2 min
- byteplus from $0.0563/s
byteplus:dreamina-seedance-2-0-fast-260128-less-restrictionText to video, Image to video, Video to video ByteDance Seedance 2.0 fast on BytePlus ModelArk, less restriction — references BytePlus refuses as realistic people are uploaded to the asset library and resubmitted. 480p/720p, 4-15 s or auto.
- Resolution 480p
- $0.0563/s
- Other
- $0.1218/s
- Minimum charge
- $0.23
- Most one request can cost
- $2.19
- Typical time
- ~3 min
Seedance 2 inputs
The JSON body of the request. Media inputs are URLs: upload a local file with POST /v2/files and pass the URL it returns. Full JSON Schema, no key needed: api.varg.ai/v2/tools/video?model=seedance_2
| Field | What it does |
|---|---|
model string required | seedance_2 picks a route automatically. To pin one, pass a route key from Pricing above. |
prompt string | — |
files array of { url } | — |
aspect_ratio string | Allowed e.g. 16:9 | 9:16 | 1:1 | 4:3 | 3:4 | 21:9 | auto |
resolution string | Quality tier. Supported by this model: 480p, 720p, 1080p, 4k. Unsupported tiers fall back to the nearest available. Allowed 480p | 720p | 1080p | 4k |
audio boolean | Set true to generate the video with a native audio track. |
duration integer | Length in seconds. Supported by this model's routes: piapi: integer 4-15; byteplus: integer 4-15 or -1 or "auto"; fal: 4-15 or "auto". A non-numeric value such as "auto" is routed to a route whose schema accepts it; when none does, the request is rejected. Allowed 4–15 |
Provider options
Optional, under provider_options.<provider>. Only the options of the provider that runs the job apply; pin a route to choose it.
provider_options.piapi
| Field | What it does |
|---|---|
input.mode string | Allowed text_to_video | first_last_frames | omni_reference |
input.audio boolean | No audio generated if false |
input.prompt string | — |
input.duration integer | Allowed 4–15 |
input.audio_urls array of URL strings | — |
input.image_urls array of URL strings | — |
input.resolution string | Allowed 480p | 720p | 1080p |
input.video_urls array of URL strings | — |
input.aspect_ratio string | Allowed 21:9 | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | auto |
input.auto_upload_assets boolean | -less-restriction only: auto-ingest raw URLs as ephemeral private assets |
input.asset_retention_hours integer | Allowed 3–8 |
task_type string | Allowed seedance-2-less-restriction | seedance-2-fast-less-restriction | seedance-2-mini-less-restriction | seedance-2 | seedance-2-fast | seedance-2-mini |
provider_options.byteplus
| Field | What it does |
|---|---|
ratio string | Allowed 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptive |
duration integer | Allowed 4–15 |
watermark boolean | — |
resolution string | Allowed 480p | 720p | 1080p | 4k |
generate_audio boolean | Generate a native audio track. |
return_last_frame boolean | Also return the last frame as an image URL (chain clips). |
safety_identifier string | — |
execution_expires_after integer | Seconds a task may wait in the queue before it expires unrun (default 1 h, the BytePlus minimum — an expired task fails over to the next provider; at most 6 h — the job times out at 7 h). Allowed 3600–21600 |
provider_options.fal
| Field | What it does |
|---|---|
prompt string | The text prompt describing the desired motion and action for the video |
audio_urls array of URL strings | — |
image_urls array of URL strings | — |
video_urls array of URL strings | — |
duration string | Allowed 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | auto |
image_url string (URL) | URL of the starting frame image to animate (JPEG/PNG/WebP, max 30 MB) |
resolution string | Allowed 480p | 720p | 1080p | 4k |
end_user_id string | — |
aspect_ratio string | Allowed auto | 21:9 | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 |
bitrate_mode string | Allowed standard | high |
end_image_url string (URL) | Optional last-frame image; the video transitions from image_url to this |
generate_audio boolean | — |
Call the Seedance 2 API
POST https://api.varg.ai/v2/tools/video/call with Authorization: Bearer $VARG_API_KEY. It answers 202 with a job right away.
1. Send the request
curl -X POST https://api.varg.ai/v2/tools/video/call \
-H "Authorization: Bearer $VARG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance_2",
"prompt": "a cat jumping over a fence, cinematic",
"aspect_ratio": "16:9",
"duration": 5
}'JavaScript
const headers = {
Authorization: `Bearer ${process.env.VARG_API_KEY}`,
'Content-Type': 'application/json',
}
const res = await fetch('https://api.varg.ai/v2/tools/video/call', {
method: 'POST',
headers,
body: JSON.stringify({
"model": "seedance_2",
"prompt": "a cat jumping over a fence, cinematic",
"aspect_ratio": "16:9",
"duration": 5
}),
})
const job = await res.json() // { id: "job_…", status: "queued" }Python
import os
import requests
headers = {"Authorization": f"Bearer {os.environ['VARG_API_KEY']}"}
job = requests.post(
"https://api.varg.ai/v2/tools/video/call",
headers=headers,
json={
"model": "seedance_2",
"prompt": "a cat jumping over a fence, cinematic",
"aspect_ratio": "16:9",
"duration": 5
},
).json() # {"id": "job_…", "status": "queued"}2. Get the result
Poll the job until its status is completed, failed or cancelled; Seedance 2 typically takes about 2 min. The result is at output.outputs[0].url.
curl https://api.varg.ai/v2/jobs/$JOB_ID \
-H "Authorization: Bearer $VARG_API_KEY"
# Poll until "status" is completed, failed or cancelled.
# The result is in output.outputs[0].urlJavaScript
let current = job
while (!['completed', 'failed', 'cancelled'].includes(current.status)) {
await new Promise((resolve) => setTimeout(resolve, 3000))
current = await (await fetch(`https://api.varg.ai/v2/jobs/${current.id}`, { headers })).json()
}
console.log(current.output?.outputs?.[0]?.url)Python
import time
while job["status"] not in ("completed", "failed", "cancelled"):
time.sleep(3)
job = requests.get(f"https://api.varg.ai/v2/jobs/{job['id']}", headers=headers).json()
print(job["output"]["outputs"][0]["url"])Or take a webhook instead of polling
Add options.webhook_url and varg POSTs the finished job to it.
{
"model": "seedance_2",
"prompt": "a cat jumping over a fence, cinematic",
"aspect_ratio": "16:9",
"duration": 5,
"options": {
"webhook_url": "https://your-app.com/varg-webhook"
}
}From Claude, ChatGPT or Cursor (MCP)
The varg MCP server, https://mcp.varg.ai/mcp, runs Seedance 2 with call_tool. Sign in with varg, no API key to paste. How to connect it
{
"tool": "video",
"input": {
"model": "seedance_2",
"prompt": "a cat jumping over a fence, cinematic",
"aspect_ratio": "16:9",
"duration": 5
},
"wait": true
}Seedance 2 API: questions
- How much does Seedance 2 cost on varg?
- Seedance 2 costs from $0.23 per run on varg (from $0.0563/s on the cheapest route). varg charges the provider's price with no markup, from one credit balance. For the exact price of a request before you run it, send the same body to POST https://api.varg.ai/v2/estimate.
- How do I call the Seedance 2 API?
- Send POST https://api.varg.ai/v2/tools/video/call with the header "Authorization: Bearer $VARG_API_KEY" and a JSON body that includes "model": "seedance_2". The call answers 202 with a job right away. Poll GET https://api.varg.ai/v2/jobs/{id} until "status" is "completed", then read output.outputs[0].url, or pass options.webhook_url to be called back.
- Can I use Seedance 2 from Claude, ChatGPT or Cursor?
- Yes. Add the varg MCP server (https://mcp.varg.ai/mcp) to Claude, ChatGPT, Cursor or any other MCP client and sign in with varg, with no API key to paste. The agent runs Seedance 2 with call_tool, passing tool "video" and "model": "seedance_2".
- How long does a Seedance 2 request take?
- Typically about 2 min on the fastest route, by the catalog's estimate. The API answers at once with a job id, so nothing waits on an open connection while it runs.
For AI agents: this page as Markdown is varg.ai/models/seedance_2.md, and every model is listed in varg.ai/models/llms.txt.