Format structured output: anyOf passes, oneOf and allOf are rejected
Which JSON Schema keywords a Sume Format output_schema accepts, the 400 output_schema_invalid shape, and how it lines up with OpenAI strict structured outputs.

Sume accepts a strict, OpenAI-style subset of JSON Schema. anyOf is allowed; oneOf, allOf, not and if are not. The root must be exactly type: object, every object needs additionalProperties: false, every property must be in required, and every node needs a type, a $ref or an anyOf. Arrays need items.
OpenAI documents the same family of rules: its guide lists additionalProperties: false, required fields, $defs and recursive $ref among supported features, and says some JSON Schema features are unavailable (read 2026-10-03). A schema written for one usually ports to the other with small edits.
Limits you can hit
| Limit | Value |
|---|---|
| Nesting depth | 10 |
| Total properties | 5000 |
| Enum values | 1000 |
| Total string characters | 120,000 |
| $ref targets | #/$defs/* or SumeMediaFile# |
| Recursive $ref "#" | Rejected |
What a rejection looks like
A rejected schema returns 400 output_schema_invalid with details.violations, a list of {path, rule, message} objects pointing at the offending node. Nothing is charged for a rejected request, so you can iterate. strict: false changes nothing, and there is no JSON-mode equivalent.
Sources
Related posts
More in Formats
- Sume webhook missed? POST /v1/format-runs/{run_id}/webhook/redeliver
Replay a Format run webhook without rerunning: the redeliver endpoint, the formats:write scope, and the two 409 errors for no webhook or a run still going.
- Verify a Sume Format webhook in Python with an empty-secret guard
Verify x-sume-webhook-signature in Python: HMAC-SHA256 over timestamp.raw_body, a five-minute window, constant-time compare, empty secret refused.
- Sume SDK subscribeFormatRun: 20-minute timeout vs 90-minute runs
subscribeFormatRun in @sume-com/sdk polls every 2 seconds and times out at 20 minutes by default, while a Format run can live 90. Set the timeout on purpose.
- Shop Creative Hub limits: 50 per upload, 10k a month, batch math
Creative Hub for GMV Max takes 50 videos per upload and 10k a month. What that means for Sume bulk queues of 100, and where the 200-video link cap bites.
Written by Sume