Do I pay for a failed AI avatar video job? Refunds on Sume
Sume reserves the avatar video price at submit, captures it on completion, and releases or refunds it where a job fails. What it means for retries.
Mostly no. For paid generation, Sume reserves the estimated amount when it accepts your request, captures it when the job completes, and, in the words of the Generation admission docs, "where applicable, failed jobs and failed queue admission release or refund the reservation." So a job that ends in failed is not billed as a finished video. Sume avatars are async jobs: you submit a request, get a job id back, and read the finished video later. There is no live video session.
The wording "where applicable" matters, and this post explains what you can rely on and what you should check on your own account.
The three moments
| Moment | What Sume does | What you do |
|---|---|---|
| Submit accepted | Reserves the estimated amount from the workspace balance | Store the job id and the Idempotency-Key |
| Job completed | Captures the reserved usage | Fetch the result and copy the media URL |
| Job failed or admission failed | Releases or refunds the reservation where applicable | Read the public error, fix the cause, submit again with a new key |
| Submit refused (402 insufficient_credits) | No job exists, nothing reserved | Reduce the request or add balance |
| Cancel before generation starts | The job ends canceled | Cancel only works before generation work starts |
Retry rules that avoid a double charge
Two different retries need two different habits. If your client timed out and you do not know whether Sume accepted the request, retry the submit with the same Idempotency-Key and the same payload. You get the original job back, not a second reservation. If the job reached a terminal failed state, the request is finished, so change the thing that failed and send a new request with a new key.
Never resubmit a paid request only because a local process stopped waiting. A client-side timeout does not cancel the job, which keeps running and billing. Poll the job by id instead.
Budget for the worst case
The reservation is the estimated cost for the full planned duration, so the balance you need at submit equals the price of the full video. At plus, a 60-second video reserves $14.70, and at max it reserves $33.00. If your workspace balance is lower than that, the submit returns 402 insufficient_credits before any provider work starts.
If you run many jobs in parallel, the reservations add up. Ten 30-second jobs at plus hold $73.50 at the same time. Check the balance for the whole wave, not for one clip.
What to check on your own account
Look at one failed job in your workspace after your first test: read the job record for the public error, and compare the ledger or usage view before and after. The docs describe the policy, and your own receipts show the result for your plan. Keep a note of the job id, because the job id is what support or your own audit will need.
- Store the job id before you return from the submit handler.
- Use an
Idempotency-Keyon every paid submit. - Retry the same key only after a client-side failure.
- Use a new key after a terminal
failed, once the cause is fixed. - Reserve balance for the total of all jobs in flight.
Cancel versus fail
A canceled job and a failed job are different. A failed job reached a terminal failure with a public error. A canceled job ended because you asked it to. Cancellation succeeds only before generation work starts: a request after that point can answer with a conflict, and the job keeps running. So the safe time to cancel a video you no longer want is while it is still queued.
This matters for batches. If you submit twenty clips and then spot a mistake in the script, cancel the ones still waiting at once, and let the ones already processing finish. Then fix the script and submit corrected requests with new idempotency keys.
Sources
Related posts
More in Developers
- Does PNG, JPEG or WebP change the price of an AI image on Sume?
No. On Sume's Image API, output_format picks the file type, not the price: per-image cards and GPT Image 2.5 token math ignore it. Which models list which.
- duration vs duration_seconds on each Sume video route
/v1/videos takes duration; motion control and lip-sync take duration_seconds; recast and edit read the source clip. One table of what each does.
- Fade in and out on a Timeline render: output fade seconds 0 to 5
Set output.fade_in_seconds and fade_out_seconds (0 to 5 s, sum within the render length). The music bed has its own fade_out_seconds, up to 10.
- Fast-cut Shorts in Timeline: eight chained fades, then a hard cut
Timeline refuses more than 8 adjacent fades with too_many_chained_transitions. Transitions must be 1 s or less and half the shorter neighbour. How to plan cuts.
Written by Sume