How long can a Seedance 2.5 product clip be on Sume?

On Sume, seedance-2.5 accepts 4 to 30 seconds at 480p, 720p or 1080p. How to pick a length for a product clip and poll the job until it completes.

5 min readSume
All posts

A seedance-2.5 clip on Sume can run from 4 to 30 seconds, at 480p, 720p or 1080p. For a product clip, pick the shortest length that shows the one thing the shopper needs to see, and make several short clips rather than one long one.

Shoppable creator video is the format Best Buy says it will use when it debuts on TikTok Shop in late October 2026 (read 2026-10-04). The page gives no length guidance, so check each channel's own limits.

What are the request limits?

From the video docs. Limits are per model, and the video endpoint is asynchronous: it returns a job with an id and a polling_url.

Video request parameters, from Sume docs, read 2026-10-04
ParameterNotes
modelFor example seedance-2.5, or sume/auto to let Sume pick
durationInteger seconds; seedance-2.5 accepts 4 to 30
resolutionFor example 720p or 1080p; seedance-2.5 takes 480p, 720p, 1080p
aspect_ratioFor example 16:9, 9:16, 3:2; the accepted set is per model
frame_imagesFirst or last frame images for image-to-video
generate_audioBoolean; defaults to the model's audio capability

What length should a product clip be?

Start with one idea per clip. A rotation, a pour, a hand using a control. If a single clip needs more than about ten seconds to make sense, it is usually two ideas, so split it and join them later with a timeline render. This is a working rule, not a Sume limit; test it against how your own viewers behave.

How do you wait for it?

Poll the polling_url from the response until the status is completed or failed. Long jobs can take a while, so poll at an interval of ten seconds or more rather than in a tight loop.

import os, time, requests

H = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
job = requests.post(
    "https://api.sume.com/v1/videos",
    headers=H,
    json={
        "model": "seedance-2.5",
        "prompt": "Slow 360 degree turn of a ceramic mug on a wooden table",
        "duration": 8,
        "resolution": "1080p",
        "aspect_ratio": "16:9",
    },
    timeout=60,
).json()
while True:
    s = requests.get(job["polling_url"], headers=H, timeout=30).json()
    if s["status"] in ("completed", "failed"):
        break
    time.sleep(10)
print(s["status"], s.get("unsigned_urls"))

How do you control cost?

Length and resolution drive price, so confirm the current rate for seedance-2.5 in GET /v1/catalog or on the API pricing page before a batch. Make a test clip at 480p to check the idea, then regenerate the winner at the resolution you will publish.

Sources

Related posts

More in Models

All Models posts

Written by Sume