Seedance 2.5 30-second clip via API: the request, poll and price
Send model seedance-2.5 with duration 30 to POST /v1/videos on Sume, poll the job, and expect about $17 at 720p 16:9. Request and Python poll loop.

Send model: "seedance-2.5" and duration: 30 to POST https://api.sume.com/v1/videos, then poll the returned polling_url until the job is completed. At 720p and 16:9 the 30-second clip costs about $17.33 on Sume.
ByteDance launched Seedance 2.5 on 2026-07-31 and says it generates up to 30 seconds per generation, with multi-round extensions. Sume lists the model as seedance-2.5 with a 4 to 30 second range, so a single request can ask for the full length.
The request
The route is asynchronous: you receive a job id and a polling URL immediately, then download from unsigned_urls[0] once the status is completed. Send an Idempotency-Key so a retry returns the original job instead of a second charge.
curl -X POST https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedance-2.5-30s-001" \
-d '{"model": "seedance-2.5", "prompt": "A chef plates a dish, slow push-in, kitchen ambience", "duration": 30, "resolution": "720p", "aspect_ratio": "16:9"}'Poll and download
The docs suggest a moderate polling interval of about 30 seconds. The poll response carries usage.cost, the Sume billable amount.
import os, time, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
job = requests.post(
"https://api.sume.com/v1/videos",
headers=H,
json={"model": "seedance-2.5", "prompt": "A chef plates a dish, kitchen ambience",
"duration": 30, "resolution": "720p", "aspect_ratio": "16:9"},
).json()
while True:
time.sleep(30)
s = requests.get(job["polling_url"], headers=H).json()
if s["status"] == "completed":
print(s["unsigned_urls"][0], s["usage"]["cost"])
break
if s["status"] in ("failed", "cancelled"):
print(s.get("error", s["status"]))
breakWhat the 30 seconds cost
Sume bills Seedance on video tokens: width x height x seconds x 24 fps / 1024, at the provider list rate times 1.25.
| Resolution | Price for 30 s |
|---|---|
| 480p | $8.06 |
| 720p | $17.33 |
| 1080p | $42.65 |
Before you submit
Pick 480p while you iterate on the prompt, then re-run the winner at 1080p.
- Check
GET /v1/videos/modelsfor the live range; this post reflects the docs on 2026-10-07. bitrate_modeis not offered on Seedance 2.5.- Sume reserves the price at submit and reports the final amount in
usage.cost.
Why 30 seconds in one request matters
Before 30-second models, a half-minute spot meant two or three 10 to 15 second renders stitched in an editor, with a visible seam where the character or lighting drifted. A single duration: 30 job keeps one continuous take, and ByteDance's launch post frames Seedance 2.5 around exactly this: narrative coherence across longer clips with flexible referencing.
The cost of that convenience is a larger single charge, which is why the price table above matters. A failed 30-second job at 1080p is the most expensive mistake you can make on this route.
- Draft at 480p for about $8.06 per 30 seconds, then re-run only the approved prompt at higher resolution.
- Keep the
Idempotency-Keyper creative, not per attempt. - Store
usage.costfrom the poll response next to the prompt so you can reconcile with the wallet.
Choosing aspect ratio and audio
Seedance 2.5 on Sume accepts 21:9, 16:9, 4:3, 1:1, 3:4 and 9:16, plus auto and adaptive. Vertical 9:16 at 720p is 720x1280, the same pixel area as 16:9, so the price is effectively the same for a vertical social clip.
Audio is optional through generate_audio. If the clip is a silent b-roll plate, switch it off and keep the track for the edit.
Sources
Related posts
More in Developers
- Seedance 2.5 30-second job: set a 20-minute client deadline in Python
A 30-second Seedance 2.5 job outlives any HTTP timeout. Submit async to Sume, poll with next_poll_after_seconds, and set the deadline in your client.
- Seedance 2.5 API in Python: a 30-second clip with an audio reference
Submit a 30-second Seedance 2.5 job on Sume with requests: an image and an audio reference in input_references, polling, download, and limits to check.
- Seedance 2.5 estimate vs usage.cost: reconcile a job in Node
Compute the Seedance 2.5 price from width, height and seconds, submit one job to Sume, and compare it with usage.cost on the poll. A runnable Node 18 script.
- Seedance 2.5 reference limits: 30 images on the vendor page, 9 on Sume
ByteDance lists up to 30 images, 10 video and 10 audio references for Seedance 2.5. Sume's Video Router validates fewer: 9, 3, 3, and 12 in total. Read both.
Written by Sume