Wan 3.0 has no fine-tuning or batch mode; what Sume requests allow
Alibaba's Wan 3.0 docs list batch inference, fine-tuning and function calling as unsupported. Sume adds its own limit: non-empty provider.options is a 400.

On Sume you cannot batch, fine-tune or pass provider options to Wan 3.0, and Alibaba's own documentation says the model does not support batch inference, fine-tuning or function calling either (read 2026-10-04). A request that tries to tune the provider is refused with a 400.
What you can do is submit many independent jobs, with one idempotency key per job.
What does Alibaba say Wan 3.0 does not support?
Alibaba's Model Studio page for Wan 3.0, updated September 28, 2026, lists three unsupported features: batch inference, fine-tuning and function calling. It also gives a rate limit of 300 requests per minute across regions and a 30-second maximum clip.
| Feature | Alibaba Model Studio | Sume /v1/videos |
|---|---|---|
| Batch inference | not supported | no batch call; one job per request |
| Fine-tuning | not supported | not offered |
| Function calling | not supported | not applicable to video |
| Provider passthrough | n/a | non-empty provider.options returns 400 unsupported_parameter |
| Maximum clip | 30 s | 30 s |
| Safe retries | not stated | Idempotency-Key replays the original job |
What happens if you send provider options?
Sume's video router runs one backend per model in v1, so there is nothing to forward to. A non-empty provider.options returns 400 unsupported_parameter, and allowed_passthrough_parameters is an empty list for every model. An empty options object is accepted.
The same strictness applies to seed and size. No v1 model accepts them, and the request is rejected instead of ignoring the field.
How do you run a lot of Wan jobs without batch?
Submit jobs one by one, each with its own Idempotency-Key, and poll them. A replay of the same key returns the original job, so a network retry does not create a second charge.
Because Alibaba documents a limit of 300 requests per minute, keep any bulk submit loop well below that if you also call Alibaba directly. For Sume requests, read the response status and back off on any 429.
- One request per clip; no list endpoint to submit many at once.
- Stable key per clip, such as a SKU id plus a version number.
- Poll
polling_url; readusage.costonce the job iscompleted.
What does a safe bulk loop look like?
A small loop with one key per item.
import os, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
items = {"sku-101": "A ceramic mug rotating on a white table",
"sku-102": "A leather wallet opening on a desk"}
for sku, prompt in items.items():
r = requests.post(
"https://api.sume.com/v1/videos",
headers={**H, "Idempotency-Key": f"{sku}-v1"},
json={"model": "wan-3.0", "prompt": prompt, "duration": 5,
"resolution": "480p"},
)
print(sku, r.status_code, r.json().get("id"))Sources
Related posts
More in Developers
- Fetch tool to media input: which URLs Sume accepts
A model can fetch a page, but Sume media inputs must be public HTTPS image or video URLs, not web pages. Here is what each Sume endpoint accepts.
- A Sume webhook arrives before your database knows the job: park it
If job.completed lands before your submit handler stored the job id, keep the verified event in a parked table, answer 2xx, and reconcile when the id is saved.
- What a media MCP server should declare at server/discover
MCP 2026-07-28 adds a required server/discover call. A media server has more to say than versions: async jobs, wait limits, scopes. Where Sume documents each.
- Which Lyria ran? job.model vs job.request.routed_model on Sume
On Sume's Music Router, job.model echoes what you sent and job.request.routed_model names the engine that ran. How to read both and pin a Lyria id.
Written by Sume