Alibaba task_status UNKNOWN: map DashScope states to Sume job states
Model Studio reports PENDING, RUNNING, SUCCEEDED, FAILED, CANCELED and UNKNOWN. Sume has five job states and no twin for UNKNOWN. A small map and a rule.

Five of Alibaba's six task states map one-to-one onto Sume's five job statuses, and UNKNOWN has no twin. Model Studio's async video API reports task_status as PENDING, RUNNING, SUCCEEDED, FAILED, CANCELED or UNKNOWN. Sume reports queued, processing, completed, failed and canceled, so a ported poll loop needs one extra rule for the sixth value.
The mapping
Alibaba's reference says you start a task with the header X-DashScope-Async: enable, and that the task id and the video URL are valid for 24 hours. The page suggests polling about every 15 seconds. Sume instead hands back a next_poll_after_seconds hint on the status call, and its job id is stored in the job ledger.
| DashScope task_status | Sume sume_status | Terminal |
|---|---|---|
| PENDING | queued | No |
| RUNNING | processing | No |
| SUCCEEDED | completed | Yes |
| FAILED | failed | Yes |
| CANCELED | canceled | Yes |
| UNKNOWN | no equivalent | Do not guess |
A map with an escape hatch
This is my mapping, not a table either vendor publishes. The needs_attention bucket stands for UNKNOWN or any new value: stop the loop, log the raw status, and look. Never answer an unknown state by resubmitting a paid job.
DASHSCOPE_TO_SUME = {
"PENDING": "queued", "RUNNING": "processing", "SUCCEEDED": "completed",
"FAILED": "failed", "CANCELED": "canceled",
}
def sume_state(task_status):
# UNKNOWN has no Sume twin: treat it as "stop and look", never as "retry the paid call"
return DASHSCOPE_TO_SUME.get(task_status, "needs_attention")
print([sume_state(s) for s in ("PENDING", "RUNNING", "SUCCEEDED", "UNKNOWN")])What changes besides the names
Sume has no X-DashScope-Async header; POST /v1/videos is async by design and returns 202 with an id. Wan 3.0 is in Sume's catalog as wan-3.0, with 2 to 30 second clips, so the duration range is not the obstacle.
The expiry is the part to check. Alibaba's task id and URL last 24 hours. Sume's completed job returns Sume-hosted media URLs, and the docs I read do not state a retention window for them, so ask before you build on a long one. Download what you need and store the job id either way.
Sources
Related posts
More in Comparisons
- Animate a still for 8 seconds: Grok Imagine $0.10 or Omni Flash $1.00
Animating a still for 8 seconds costs $0.10 on Grok Imagine Video 1.5 and $1.00 to $1.50 on Gemini Omni Flash 1.1 at 720p to 1080p on Sume.
- Cartesia credits to dollars vs Sume TTS: per minute and per hour
Cartesia plans work out to $0.0374 to $0.05 per 1,000 characters; Sume TTS is $0.0475 (Cartesia list x 1.25). 1,000 minutes: $29.90 to $40 vs $38.
- Cartesia Pro $5 plan vs Sume TTS at 100K, 1M and 10M characters
Cartesia Pro is $5 a month with 100K credits and $65 per extra million; Sume TTS is $47.50 per million characters. Monthly totals at three volumes, worked.
- Change a person's outfit in a video: Omni edit or H3 Max Recast
Two ways to change what someone wears in a clip on Sume: a text edit with Gemini Omni Flash, or Recast with a photo of the person. Rates for 10 seconds.
Written by Sume