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.

5 min readSume
All posts

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.

Output options on a Format run, from Sume's Structured output page (read 2026-10-03)
OptionHowWhat you get
Bind your own schemaoutput_schema (or response_format) inside the supported subsetoutput in your shape, or output: null plus output_error
Send no schemaOmit both fieldsoutput projected onto sume/action-run-output/v1: text, images, videos, audio, files
Loose JSON of any shapeNot availableUse 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

All Formats posts

Written by Sume