Wan 3.0 failed generations: not charged at Alibaba, refunded on Sume

Alibaba says failed Wan 3.0 generations are not charged. On Sume the cost is reserved at submit, captured on success, and released or refunded on failure.

4 min readSume
All posts

Alibaba's Wan3.0 launch note states that failed generations are not charged. Sume's rule for the wan-3.0 row works differently on the surface but lands in the same place: the estimated cost is reserved when the job is accepted, captured on successful completion, and released or refunded when the job fails. A job that fails does not keep your money; a job that is still running holds it.

The difference is timing. A balance can look lower than expected while jobs are running, and that is a reservation, not a charge.

Side by side

The vendor page is a pricing note and Sume's page is a billing lifecycle, so the table compares behaviors, not guarantees.

Failed Wan 3.0 jobs, Alibaba page read 2026-10-04 and Sume admission docs
QuestionAlibaba CloudSume
Is a failed generation billed?not charged, per the launch notereservation released or refunded where applicable
When is money held?not described on the pageat submit, once the request is accepted
When is it captured?not describedon successful completion
What if the queue is full?not describedqueue_full; the failed admission's reservation is released or refunded

What to do after a failure

Read the job first. A failed status is terminal and carries a public error, and a refund does not need a request from you. Then decide whether the cause is the input or the model.

  • Validation errors such as too many reference files come back as a 400 before any job exists.
  • A failed job is terminal; read its error from the job record in Jobs and results.
  • Retry with the same Idempotency-Key only to read the original job; a new attempt needs a new key.

Budget for running jobs

Reservations matter when you queue many clips. At Sume's about $0.125 per second for Wan 3.0 at 720p, a batch of ten 8-second clips holds about $10 while it runs and settles per job as each one finishes. A failed job releases its share without waiting for the others.

import os
import requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}

def state(job_id: str) -> str:
    r = requests.get(f"https://api.sume.com/v1/jobs/{job_id}/status", headers=H, timeout=30)
    r.raise_for_status()
    return r.json().get("status", "unknown")

print(state(os.environ["JOB_ID"]))

Where the rules live

Sume's rules are in Generation admission, and the per-model limits are on the Video Router page. The vendor statement is in Alibaba Cloud's launch note. The where applicable wording in Sume's docs is worth reading before you rely on a specific edge case.

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume