Wan 3.0 video URL purged after 24 hours: what Sume returns
Alibaba keeps Wan 3.0 task ids and video URLs for 24 hours. Sume returns media.sume.com artifacts instead. What to store and when to download.

Alibaba says a Wan 3.0 task id is valid for 24 hours and the generated video is purged after the same window, so a direct integration has one day to download. Through Sume you do not hold Alibaba's URL at all: a completed job returns a Sume-hosted artifact on media.sume.com, and the job id is your durable handle. I still recommend downloading and keeping your own copy.
Alibaba's figures come from its Wan3.0 Video Generation API Reference, read on 2026-10-02. Sume's come from Video generation, Jobs and results and Sume basics.
What does Alibaba delete after 24 hours?
On Alibaba's page, two things carry a 24-hour validity: the task id you poll with, and the output video, which is automatically purged afterwards. The flow is asynchronous only, you create a task, then poll, with a recommended 15-second interval and PENDING, RUNNING, SUCCEEDED or FAILED states.
The practical consequence is a deadline. If your worker crashes, a webhook is missed, or a batch finishes overnight and nobody looks until the next day, a direct integration can lose both the status and the file.
What does Sume return instead?
Sume jobs are durable: the docs say to store the job id from the submit response so your integration can recover work after a process restart. A completed /v1/videos job lists unsigned_urls, and GET /v1/videos/{jobId}/content?index=0 streams the file. The Sume basics page describes media.sume.com as the public artifact contract for generated outputs.
What I could not find in the pages I read is a stated retention period for video artifacts. So the claim here is narrow: you are not racing a documented 24-hour upstream purge, and you should still treat artifact URLs as opaque and keep your own copy of anything you ship.
| Item | Wan 3.0 on Alibaba | Wan 3.0 on Sume |
|---|---|---|
| Handle you poll | task id, valid 24 hours | job id, durable, readable at /v1/jobs/{id} |
| Output file | purged after 24 hours | Sume-hosted artifact on media.sume.com |
| Documented retention | 24 hours | none stated in the pages read |
| Poll interval advice | 15 seconds | 30 seconds in the video guide |
How should I download and keep the file?
Poll the job, then fetch the content endpoint with your API key and write it to your own storage. This sketch stops on terminal states and does not resubmit a paid request after a failure.
import os, time, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
job = requests.post("https://api.sume.com/v1/videos", headers={**H, "Idempotency-Key": "wan-keep-001"},
json={"model": "wan-3.0", "prompt": "A paper boat crossing a puddle", "duration": 5}).json()
while True:
s = requests.get(job["polling_url"], headers=H).json()
if s["status"] in ("completed", "failed", "cancelled"):
break
time.sleep(30)
if s["status"] == "completed":
data = requests.get(f"https://api.sume.com/v1/videos/{job['id']}/content?index=0", headers=H).content
open("boat.mp4", "wb").write(data)
else:
print(s.get("error"))Should I still add a webhook?
Yes, with polling as the backup. Sume's webhook mode stores the callback and delivers terminal events only, and its docs tell you to keep polling alongside it. The Alibaba clock is the reason a direct integration needs both; on Sume the reason is simply that callbacks can fail like any HTTP delivery. See sweeping pending jobs when the webhook never arrives.
What about reading the cost?
The poll response carries usage.cost, the Sume billable amount, which is the provider list price times 1.25. Log it next to the saved file path so a month-end reconciliation can find each clip. Sume does not claim to mirror Alibaba's task id, so keep the Sume job id as your key.
Sources
Related posts
More in Developers
- WaveSpeed API v3 predictions/result vs Sume /v1/jobs/status/result
Porting from WaveSpeed's api/v3 submit and predictions/{id}/result to Sume: base URLs, Bearer auth, idempotency keys, status and result routes side by side.
- WaveSpeed polls at 2 seconds minimum; Sume: next_poll_after_seconds
WaveSpeed says start polling near 2 seconds and back off to 5-10. Sume returns next_poll_after_seconds so the server sets the pace. A runnable loop for each.
- Which Sume audio endpoint to call: TTS, STT, music, detach, timeline
A decision map for Sume's audio API: seven endpoints, what each takes in and returns, limits and list prices, and the order they chain in.
- Sume video tools: public URL or media import first? Per tool
Video captions takes a public HTTPS URL; trim, filter, inspect, frames, compose and detach need a workspace media.sume.com clip. A tool-by-tool input guide.
Written by Sume