Wan 3.0 polling every 15 seconds vs Sume's 30-second poll
Alibaba recommends polling Wan 3.0 every 15 seconds. Sume's video guide uses 30 seconds and a signed callback_url. Which to pick and why.

Alibaba recommends polling a Wan 3.0 task every 15 seconds; Sume's video guide uses a 30-second wait between polls and also offers callback_url so you can skip polling. If you call wan-3.0 through Sume, a 30-second poll plus a callback is the documented pattern, and exponential backoff is what the jobs page asks for.
Alibaba's number is from its Wan3.0 Video Generation API Reference, read 2026-10-02. Sume's are from Video generation, Jobs and results and Webhooks.
Why do the two recommendations differ?
They answer different questions. Alibaba's 15 seconds is advice for hitting its own task endpoint, where the task id lives 24 hours. Sume's 30 seconds is advice from the video guide, which says video generation typically takes 30 seconds to several minutes and warns against excessive API calls. Neither is a hard limit, and I found no per-endpoint rate figure for the status route in the pages I read.
A 5-second Wan 3.0 clip and a 30-second one will not take the same time, so a fixed interval wastes calls on long jobs and delays short ones. That is why the jobs page says to use exponential backoff rather than a constant sleep.
| Source | Interval advice | Terminal states |
|---|---|---|
| Alibaba, Wan 3.0 | 15 seconds | SUCCEEDED, FAILED |
| Sume video guide | 30 seconds between polls | completed, failed, cancelled |
| Sume jobs page | exponential backoff | completed, failed, canceled |
What does a sensible loop look like on Sume?
Start at 10 seconds, double up to a 60-second cap, and stop on a terminal status. Never resubmit the paid request because your own process timed out; the jobs page says so explicitly. Reuse the job id.
import os, time, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
j = requests.post("https://api.sume.com/v1/videos", headers={**H, "Idempotency-Key": "wan-poll-001"},
json={"model": "wan-3.0", "prompt": "Rain on a neon street, 6 seconds", "duration": 6}).json()
delay = 10
while True:
s = requests.get(j["polling_url"], headers=H).json()
print(s["status"], delay)
if s["status"] in ("completed", "failed", "cancelled"):
break
time.sleep(delay)
delay = min(delay * 2, 60)When should I use callback_url instead?
When a server can receive HTTPS. Pass callback_url on /v1/videos and Sume POSTs a terminal event, signed with HMAC SHA-256 over the timestamp and raw body in the x-sume-webhook-timestamp and x-sume-webhook-signature headers when signing is configured. The URL must be public HTTPS; localhost, private-network and non-HTTPS URLs are rejected. Sume sends terminal events only, no progress ticks.
Keep a polling job as backup. The webhooks page says the callback is stored, delivery can fail, and the polling fallback should stay in place. See Wan 3.0 callback URL for the receiving side.
Is there a polling difference for agents using MCP?
Yes. Remote MCP clients use jobs_wait, which holds for at most 55 seconds per call, default 50, and tells you to retry on wait_slice_expired. That is a held request, not a poll interval, and it is documented on the jobs page. The fixed numbers above apply to plain HTTP clients.
Sources
Related posts
More in Developers
- Wan 3.0 has six regional endpoints; Sume has one base URL
Alibaba's Wan 3.0 API is served from six regions with a workspace id in the URL. Sume's video API uses api.sume.com/v1/videos with no region field.
- 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.
- 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.
Written by Sume