AI video generator for business: no approval step over the API
Format runs started through the Sume API are unattended: approval gates are pre-granted. What that means for review, and the unattended_blocked failure.

A Format run started through the Sume API has no one to click Approve. The docs say approval gates are pre-granted for API runs, and a run that cannot finish without a person comes back failed with unattended_blocked. For a business, that moves the review step from inside the run to after it.
What changes compared with a chat session
In an interactive session an agent may stop and ask. Over the API it does not wait. It either proceeds or fails. That is useful for batch work and risky for anything brand-sensitive, so decide where your own sign-off sits.
| Stage | Who acts | What you can do |
|---|---|---|
| Before | You | Write instruction, set generation_spend_cap_usd |
| During | Nobody | Runs are queued then processing |
| End state | The platform | completed, failed, canceled or skipped |
| After | You | Review the artifact, check outcome and output_error |
Build the gate yourself
Treat completed as ready for review, not ready to publish. Put the finished file in a folder or queue that a person owns, and only then post it. The outcome field reads ok, degraded or error, so route degraded to a closer look.
Webhooks help here. The format.run.terminal event is signed with HMAC-SHA256 in x-sume-webhook-signature, so your receiver can verify it and drop the run into a review queue the moment it ends.
When a run fails unattended
unattended_blocked means the Format wanted a decision that no one could give. The fix is usually a more specific instruction or input that answers the question up front, then a new run with a new Idempotency-Key. Reusing the old key with a changed body gives a 409.
Do not retry in a loop. Read the error, change the brief, and run once more.
A short checklist before going live
Set a spend cap on every run. Write briefs that leave no open question. Verify webhook signatures and refuse to start with an empty secret. Keep a person between completed and publish. Log the run id, the Idempotency-Key and the final status so any output can be traced to its request.
None of this is heavy. It is the same discipline a team applies to any automated job that produces something customers will see.
Sources
Related posts
More in Developers
- arq worker that polls an AI video job with defer_by in Python
An arq task reads Sume's job status once and enqueues itself again with _defer_by from next_poll_after_seconds, giving asyncio polling without a sleep loop.
- asyncio Semaphore size for Sume image batches: accepted capacity
Size the semaphore to what Sume accepts, concurrency plus queue: Free 6, Pro 24, Startup 48, Scale 120. A fake-submit test proves the peak never exceeds it.
- asyncio TaskGroup cancels siblings: poll many Sume jobs safely
A TaskGroup cancels every other poller when one raises. For a batch of Sume video jobs that abandons waits, not jobs. Catch inside the task and return results.
- Can I attach my order ID to an AI image job? Sume's metadata field
Sume's image request takes a metadata object stored on the job, not sent to the provider. Pair it with an Idempotency-Key and your own table in Python.
Written by Sume