Sume agent_reported_failure: the three reasons and what to do
agent_reported_failure on a Sume run means the run's own receipt said it did not deliver. Its details.reason tells you which of three cases it was.

agent_reported_failure means the run's accepted receipt says it did not deliver. details.reason is one of explicit_failed, slots_failed or primary_not_deliverable, and output still carries the ledger while status is failed.
The definitions below come from the output_error.code table on Sume's Structured output page. The page treats the code set as open, so branch on the codes you handle and fall through on the rest.
What do the three reasons mean?
The page describes the case as an explicit-fail payload, failed or stand-in media slots, or a primary of the wrong media type for the Format's io.output_kind.
| `details.reason` | Case | Extra details |
|---|---|---|
explicit_failed | The receipt carries an explicit-fail payload | harvested count by media type |
slots_failed | One or more slots are failed or stand-in | non_delivered_slots[], harvested |
primary_not_deliverable | The primary is the wrong media type for io.output_kind | primary_media_type, harvested |
How is it different from the other failure codes?
output_schema_unsatisfied is about the shape or the URLs. unattended_blocked is the run stopping rather than claim a deliverable it did not make. deliverable_missing means the Format produces media the run never made. agent_reported_failure is the run itself saying so, and the page notes output still carries the ledger, with the run failed "because the receipt says so".
What do I read first?
Read details.reason, then non_delivered_slots[] when it is slots_failed; that list names the slots to retry. artifacts[] is populated either way, so media the run did make is still yours to show or reuse.
On a run over the API, a projection failure is a run failure: the page says status is failed and error carries the same code as output_error. Check output_error before reading output.
How do I retry?
Send the failed run's id as previous_run_id on a new run, so the next turn starts from the clips already made, as the docs describe in Continue a run.
Sources
Related posts
More in Formats
- Sume primary_output_missing: schema satisfied, run still failed
A Sume run can match your output_schema and still end failed with primary_output_missing. It means the key named in primary_output_key had no value.
- Sume output_extraction_failed: the run stays completed, reread it
output_extraction_failed with reason harvest_unavailable is transient. The Sume run stays completed and fills in on your next read; retry only if it persists.
- Pick a Format from the list: io profile and showcase before you run
GET /v1/formats returns each Format with an io profile (input_kind and output_kind) and a showcase output, so you can choose one without paying for a trial run.
- Q4 creative test matrix: 3 hooks by 3 Formats in one 9-item bulk run
Test creative style and hook together: nine Format runs for one SKU in a single Sume bulk queue, with a worst-case spend you can read before you submit.
Written by Sume