A $30 wallet and a 24-clip batch: where the 402 lands on Seedance 2

With $30.00 and 24 Seedance 2 clips at $3.024 each, submit 9 is accepted and 10 returns 402, with $2.784 free. The reserve math and a stop-on-402 loop.

4 min readSume
All posts

A full 24-clip batch of 8-second Seedance 2 clips at 720p, 9:16 needs $72.576 of reserve ($3.024 each), so a $30.00 wallet accepts 9 submits and returns 402 insufficient_credits on submit 10. The remaining $2.784 stays in the wallet because no further full-price clip fits.

The 402 arrives before any provider work starts, and the first nine jobs are unaffected. You do not lose the accepted jobs; you only decide what to do about the other fifteen.

Cumulative reserve

Reserve = submits x $3.024. The wallet check compares the next clip's estimate with what is left after existing reservations.

Reserve against a $30.00 wallet (read 2026-10-09)
Submits so farReservedNext submit result
1$3.024accepted
5$15.12accepted
9$27.216accepted
10$30.24402 insufficient_credits

What to do with the tail

Add funds in Billing & subscription and resubmit with the same idempotency keys, or shrink the tail. One more clip at 480p costs $1.4062 and fits in the $2.784 that remains. The docs' advice for a 402 is to upgrade or add funds, or submit a less expensive request; retrying the same request without adding funds returns the same answer.

import os, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
body = {"model": "seedance-2", "prompt": "Product spin on a white table",
        "resolution": "720p", "duration": 8, "aspect_ratio": "9:16"}
sent = []
for i in range(24):
    h = {**H, "Idempotency-Key": f"batch24-{i:02d}"}
    r = requests.post("https://api.sume.com/v1/videos", json=body, headers=h, timeout=60)
    if r.status_code == 402:
        print("stop: add funds, resume at", i)
        break
    r.raise_for_status()
    sent.append(r.json()["id"])
print(len(sent), "accepted")

Gotchas

  • A plan's queue limit can answer first: Pro accepts 24 jobs at a time, Free only 6, and a full queue returns 429 queue_full, not 402.
  • Reserves release on failure or cancel before capture, so a failed clip frees $3.024 for the next submit.
  • Resuming with the same keys is safe: a replay returns the original job rather than a second charge.

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume