Format output_schema strict false: no loose JSON mode on Sume
Sending strict: false with a Sume Format output_schema is accepted but relaxes nothing, and there is no json_object mode. Bind a schema or use the built-in.

There is no way to turn off schema checking on a Sume Format run. "strict": false is accepted and stored, but the docs say it changes nothing about the supported subset, so a schema outside it is rejected whether strict is true or false. There is also no equivalent of the loose {"type": "json_object"} mode: you bind a schema, or you take the built-in one by sending none.
Both facts come from the Structured output page. They matter most to teams moving a call from another provider, where strict: false or a plain JSON mode was the way to get "valid JSON, any shape".
What does strict: false do on a Format run?
It is part of the { name, strict, schema } envelope, and the receipt echoes it back under output_schema, next to name and source. After that it has no effect on validation. The page states it plainly: do not reach for it as an escape hatch, because there is not one.
The practical consequence is that a failing create stays failing. If you flip strict to false to get past 400 output_schema_invalid, you will get the same 400 and the same details.violations[].
What about JSON mode?
Sume has no json_object setting. A request carries output_schema, or its OpenAI-shaped alias response_format, and sending both is 400 invalid_request. The Create a run page describes response_format as the OpenAI-shaped alias for the same field.
OpenAI's Structured model outputs page, read 2026-10-03, describes schema adherence as the point of the feature, which is the shape Sume mirrors here. What Sume adds on top is a check after the run, because the output is built from generated media and checked against it.
What are my two options?
Pick one of these per run.
| Option | How | What you get |
|---|---|---|
| Bind your own schema | output_schema (or response_format) inside the supported subset | output in your shape, or output: null plus output_error |
| Send no schema | Omit both fields | output projected onto sume/action-run-output/v1: text, images, videos, audio, files |
| Loose JSON of any shape | Not available | Use the built-in shape and parse text yourself |
When is the built-in shape the better answer?
The built-in schema is filled deterministically from the run's generated media and its final text. The docs say no model is involved, so it cannot fail the way a custom schema can. If your goal is just the media, it is already enough to ship on.
Reach for a custom schema when downstream code needs typed fields, such as a per-scene ledger with a status. In that case start strict and small, make optional fields null unions, and leave minItems off arrays you want to receive partially.
What does a failed projection look like at run time?
Passing the shape rules at create is only the first gate. After the run, Sume checks every URL in output against media the run produced and validates the object against your schema. If either fails, output is null and output_error explains why, with code output_schema_unsatisfied.
The docs add that over the API a projection failure is a run failure: those runs are unattended, so a completed receipt with output: null would read as success when it is not, and the status is failed. artifacts[] is still populated, so the media is yours either way.
Sources
Related posts
More in Formats
- Format run media URLs are public: copy on webhook or proxy
Sume Format run media lives at durable public media.sume.com URLs. If customer A must not see customer B's video, copy it at receipt time or proxy it.
- Format run spend cap: above the Format cap is honored, null is $500
generation_spend_cap_usd on a Sume Format run may exceed the Format's cap and is not clamped; null runs at the $500 maximum; 0 or over 500 is a 400.
- Format run webhook retries: dedupe on request_id, order by created_at
Sume Format run webhook retries repeat request_id, which equals run_id. Dedupe on it and order deliveries by created_at, which changes per built body.
- Bulk Format runs: 100 items, 16 at once, what completed means
Sume bulk runs take 1 to 100 items at concurrency 1 to 16. A queue marked completed means every item is terminal, not that every item succeeded.
Written by Sume