Sume Format output_error codes: which to retry and which to fix
output_extraction_failed is transient: re-read the run, then retry with a new key. output_schema_unsatisfied means the schema or recipe is wrong. Six codes.

Only one Sume Format output_error code is described as transient: output_extraction_failed. Read the run once more, which alone clears a harvest_unavailable, and if it persists retry with a new idempotency key. The other codes point at your schema, your recipe or the run itself, so a plain retry would repeat the failure.
Check output_error before you read output. Per the structured output docs, an API run with an output error becomes failed, except for output_extraction_failed, where the status stays completed.
The codes
The set is open, so branch on the codes you handle and log the rest.
| Code | Meaning | Action |
|---|---|---|
| output_schema_unsatisfied | Output did not match the schema, or named media the run did not produce | Compare details.harvested with required fields; use null unions or change the instruction |
| output_extraction_failed | The projection could not run; status stays completed | Re-read the run, then retry with a new key |
| unattended_blocked | The run stopped and did not claim a deliverable it did not make | Read message; harvested media are intermediates |
| deliverable_missing | The Format makes media that the run never produced | Fix the recipe or instruction |
| primary_output_missing | Schema satisfied but the named primary_output_key has no value | Check details.primary_output_key; output holds the partial result |
| agent_reported_failure | The run's own receipt says it did not deliver | Read details.reason and non_delivered_slots |
A failed run still shows what it made
output is null when nothing satisfied your schema, but the artifacts the run produced are still listed. In a UI, show the media and log the shape failure; a customer whose video exists is better served than by an error page. primary_output_key and primary_output_url are null on every non-completed run and whenever output_error is set, so if (run.primary_output_url) is a safe delivery test.
Make partial results legal
If a run can produce some scenes and then stop, your schema has to say a partial is a valid shape. A required array with minItems: 1 or a required non-null field turns a 20-of-40 result into output: null. Drop minItems on arrays you want received partially, and make the fields that may be missing nullable. The platform adds no minimum of its own; the schema enforces only the keywords you wrote.
- On
output_schema_unsatisfiedwithviolations[], the shape is the problem and the paths are named. - On
rejected_urls[], the run referenced URLs it did not generate; the list holds the first 10 only. - Uploads are rejected by the URL gate, and
duration_msmust be within 10% of the ledger.
A short decision list
Start with the status. A completed run with output_extraction_failed just needs a second read. A failed run with output_schema_unsatisfied needs a look at details.harvested: if the schema asks for two images and the run made one, change the schema to a nullable union or change the instruction so the run makes both. If you see deliverable_missing, the Format is meant to produce media and did not, so the fix is in the Format, not in your parser.
Sources
Related posts
More in Formats
- Sume Format run spend cap: 0 is rejected, null means $500
generation_spend_cap_usd on a Sume Format run: up to 500 is accepted, null uses the $500 maximum, 0 or above 500 returns 400. An unset Format defaults to $400.
- Team Format returns 403 workspace_key_required: which key to mint
A personal key on a team Format gets 403 workspace_key_required. details.workspace_id names the workspace. Create the key there. Other keys see 404.
- Ready-made Formats for product video: the Sume Format catalog
Sume ships ready-made Formats for product and UGC-style video and images, each callable from your backend with one HTTP request at the reserved sume handle.
- What is a Sume Format? Turn an agent thread into one API call
A Sume Format is a saved video recipe your backend calls by handle and slug. One POST runs it in a fresh sandbox and returns media plus optional typed JSON.
Written by Sume