Claude structured outputs drop minimum and maxLength; Sume keeps them

Anthropic lists minimum, maxLength and recursion as unsupported in structured outputs. Sume's output_schema accepts the first two; here is what differs.

4 min readSume
All posts

If you move a schema from Claude's structured outputs to a Sume output_schema, the constraints Anthropic lists as unsupported are accepted by Sume: minimum, maximum, multipleOf, minLength, maxLength, and minItems and maxItems at any value. What Sume rejects instead is a different set, mainly oneOf, allOf and recursion through $ref: "#".

Anthropic's page says structured outputs do not support numerical constraints such as minimum, maximum and multipleOf, string constraints minLength and maxLength, array constraints beyond minItems of 0 or 1, or recursive schemas (read 2026-10-02). Sume's Structured output page lists the keywords it accepts.

How do the two lists differ?

The table compares the keywords each page names.

Keyword support from the Anthropic structured outputs page and the Sume Structured output docs page, read 2026-10-02.
KeywordAnthropic pageSume docs
minimum, maximum, multipleOfNot supportedAccepted
minLength, maxLengthNot supportedAccepted
minItems, maxItemsOnly minItems 0 or 1Both accepted
Recursive schemasNot supportedThrough #/$defs/* only; $ref: "#" rejected
allOfSupported with limitsRejected; flatten the branches
additionalPropertiesMust be falseMust be false on every object

Does an accepted constraint mean the output obeys it?

On Sume, the constraint applies to a finished run's receipt. The page says the receipt is validated against the keywords you wrote, so maxLength: 80 on a headline is checked after the run, not baked into generation. A value that breaks it produces an output_schema_unsatisfied failure rather than a truncated string.

That is a different mechanism from Anthropic's, where the page describes compiling the schema into a grammar that constrains the model's output. Keep your own validation either way.

What changes when I port the schema the other way?

Going from Sume to Claude, expect to strip the numeric and string constraints and move them into field descriptions; Anthropic's page describes SDK helpers that do this transform. Going from Claude to Sume, the main fixes are structural: every property in required, nullable unions for optional fields, a root of type: object.

Two Sume limits are worth knowing before you add constraints: nesting depth of 10 levels and 5000 properties across the document.

What should I do next?

Send the schema once. A 400 output_schema_invalid costs nothing and names every violation. Then run a real request and check output_error and filled_by on the receipt.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume