Wan 3.0 X-DashScope-Async header and polling vs Sume
Alibaba needs an X-DashScope-Async: enable header and suggests polling about every 15 seconds. Sume is async by default and hands you a polling_url.

Alibaba's Wan 3.0 create call needs the header X-DashScope-Async: enable, then you poll the task about every 15 seconds. Sume's /v1/videos needs no such header: video is asynchronous, the submit response returns pending with a polling_url, and the docs sample sleeps 30 seconds between polls. When you port, delete the header and poll the URL you were given.
What is the same and what is different?
Details follow (read 2026-10-09).
| Step | Alibaba Wan 3.0 | Sume wan-3.0 |
|---|---|---|
| Opt in to async | X-DashScope-Async: enable | none; always async |
| Poll target | GET /api/v1/tasks/{task_id} | polling_url from the submit response |
| Poll cadence | about every 15 seconds (page example) | 30 seconds in the docs sample |
| Done | SUCCEEDED | completed |
What does the request look like after the port?
Build both to see the difference. Nothing is sent here.
import json, urllib.request as u
body = json.dumps({"model": "wan-3.0", "prompt": "A barista pours latte art", "duration": 5}).encode()
req = u.Request(
"https://api.sume.com/v1/videos",
data=body,
headers={"Authorization": "Bearer demo", "Content-Type": "application/json"},
method="POST",
)
print(req.get_method(), req.full_url)
print(sorted(k.lower() for k in req.headers))How often should you poll?
Follow the Sume docs sample and wait 30 seconds, or use a callback_url and a slow fallback poll. Faster polling on a long job spends your read budget for nothing; see rate limits for the per-plan budgets.
If you also keep an Alibaba path, give each client its own loop and its own state table, because the status words differ.
Sources
Related posts
More in Developers
- Empty job_id next to job_ids: how Sume MCP treats placeholders
Some agent clients fill every optional tool field with empty strings, zeros and empty arrays. What Sume's MCP drops, what it keeps, and what still errors.
- On a 402, try a cheaper rung: a Python ladder with fresh keys
A 402 on Sume means nothing was reserved, so a cheaper request can go straight through. Python ladder: Seedance 720p, 480p, then Wan 480p, one key per rung.
- Sume failed job says [redacted_url]: what was removed
A [redacted_url] in a Sume job error is by design: URLs, provider ids, env names and secrets are masked, and the provider reason is capped at 300 characters.
- Is there a lipsync-1.0 endpoint on Sume? Old paths 404; use Fabric
Sume's old /v1/lipsync-1.0 paths return 404 and its model ids return model_not_found. Send the same still and audio to veed/fabric-1.0 or H3 Max lip-sync.
Written by Sume