Format reads inactive but still runs: the 409 codes
A never-run Format may read inactive until its first API run. The real refusal is a 409 format_inactive or format_api_trigger_disabled.

If GET /v1/formats shows a Format as inactive with api_trigger_enabled: false, do not stop there. Sume's docs say a Format you have never run over the API may read that way until its first run, and still runs. The real test is the call itself: a create that the owner has blocked answers 409 format_inactive or 409 format_api_trigger_disabled.
Reading the signal correctly
The two fields in the list are hints. The docs say both must allow API runs, that inactive or false refuses a create with 409, and that you should not gate your integration on polling them true.
| Code | Meaning | Fix |
|---|---|---|
format_inactive | The owner set the Format Inactive | Owner: Format page, API tab, Status Active |
format_api_trigger_disabled | The owner turned the API call trigger off | Owner: API tab, API call trigger On |
format_run_in_progress | on_active_run: "reject" and a run is in flight | Wait, or drop reject |
| Scope of a block | Every caller, including workspaces a Format is shared with |
What to do in code
Try the call. On a 409, read error.code and branch: the first two are the owner's setting and need a human on the owning workspace; the third is transient. Never treat a stale inactive in a listing as a reason to cache a refusal.
If you are the caller on a shared Format, you cannot change either setting: ask the owner. If you are the owner, change the setting on the API tab and retry the create.
- List for discovery, create for truth.
- Alert on
format_inactiveinstead of retrying in a loop. - Log
error.code, not only the HTTP status.
Telling owners from callers
If you own the Format, the fix is two switches on the API tab. If you only call it, you cannot flip either; the useful thing to send the owner is the error.code, the Format address and the time. That is enough for them to find the setting and turn it on. Keep the message you show your own users free of internal detail: say the Format is temporarily unavailable.
Limits
The docs do not say how long a first run takes to flip the fields, so do not poll for it. And a 409 of this kind is a permission, not a capacity problem: waiting does not fix it. For capacity, workspace generation concurrency still applies to runs allowed by on_active_run: allow.
Related posts
More in Formats
- Format run failed provider_unavailable or mcp_unavailable: retry rules
provider_unavailable and mcp_unavailable are Sume-side Format run failures: retry with a new Idempotency-Key. provider_credits_exhausted waits.
- Format run failed with incomplete_assembly: continue it, do not re-run
incomplete_assembly means a Sume Format run hit its time limit mid-generation. Continue with previous_run_id; finished clips are not regenerated.
- Format run instruction: 8000 characters accepted, about 4000 carried
A Sume Format run instruction accepts 8,000 characters, but only the first ~4,000 reach the agent as prompt text. Put long data in input, carried whole.
- Format run status_url or result_url: which one do I poll?
Poll status_url for a small payload, then read result_url once the run is terminal. result_url answers 409 run_not_completed while the run is in flight.
Written by Sume