Seedance video URL: 24 hours, 100 downloads, and Sume artifacts

BytePlus keeps a Seedance 2.5 video URL for 24 hours, at most 100 downloads. What that means, and how to read and save a Sume job's hosted video artifact.

4 min readSume
All posts

Calling Seedance 2.5 directly on BytePlus, the video URL is retained for 24 hours and can be downloaded at most 100 times, so download or transfer it promptly. On Sume, a completed job returns a Sume-hosted artifact URL. The docs tell you to treat it as opaque, and to save the file you need rather than depend on a URL you cannot inspect.

BytePlus numbers are from its Seedance 2.5 tutorial, read 2026-10-01. For whether Sume URLs expire, see do Sume video URLs expire.

What are the BytePlus retention rules?

The tutorial lists: task records retained for 7 days; video URL retained for 24 hours (inaccessible after timeout); a maximum of 100 downloads. It says to download or transfer in a timely manner. A separate Draft task ID is valid for seven days from its created_at timestamp.

Seedance 2.5 retention on BytePlus, read 2026-10-01.
ItemAs written
Task recordsRetained for 7 days
Video URLRetained for 24 hours; inaccessible after timeout
DownloadsMaximum of 100
Draft task IDValid for seven days from created_at

Where does a Sume job's video live?

Completed Video 1.0 jobs return Sume-hosted video artifacts, with an artifacts entry whose url is on media.sume.com. For the generic video endpoint the docs read the finished file from the status payload: status["unsigned_urls"][0]. Treat artifact URLs as opaque: do not parse paths for workspace, job, or provider identifiers.

import requests

def save_video(polling_url: str, headers: dict, path: str) -> None:
    status = requests.get(polling_url, headers=headers).json()
    if status["status"] != "completed":
        raise RuntimeError("job not finished: " + status["status"])
    content_url = status["unsigned_urls"][0]
    with open(path, "wb") as f:
        f.write(requests.get(content_url).content)

What should I save from a job?

Keep the job id and the downloaded file. Copy the video to storage you control when it completes, as you would with a short-lived provider URL, and use the job id to read the result again. This post makes no claim about how long a Sume URL stays valid beyond what the docs state; the expiry post covers that question directly.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume