Why your order_id comes back null in a Sume structured output

If a Sume run's filled_by is projection, the fallback never sees your input or instruction, so an order_id you sent comes back null. Keep ids on your side.

4 min readSume
All posts

An order_id you sent in input can come back null in output when the receipt says filled_by: "projection". That fallback pass sees only the run's generated media and the first 8000 characters of its closing text, not your input and not your instruction.

The mechanism is documented on Sume's Structured output page. It differs from OpenAI's Structured Outputs, where the model that reads your prompt also writes the JSON; on Sume the schema constrains how a finished run is read back.

What is filled_by?

The receipt records which path produced output. filled_by: "agent" means the run submitted your object itself, through a tool built from your schema, and it could see input and instruction. filled_by: "projection" is the fallback when the run finished without a valid object.

Paths from the Sume Structured output docs page, read 2026-10-02.
`filled_by`Who writes `output`Sees your `input`?
agentThe run, before finishingYes
projectionA separate constrained pass after the runNo

What does a null look like?

The page says a schema whose titles, descriptions or ids come from the brief returns null in exactly those places on the projection path, while media fields are full. Prose that is null next to full media is described as the shape of a run that stopped early, not of a Format that forgot to write copy.

What should I do?

Do not round-trip your own identifiers through output. The page says to keep them on your side, keyed by run.id or by the Idempotency-Key you sent, and let output carry only what the run made.

If you score runs automatically, read filled_by before you count a run as delivered. Require only fields the Format actually makes, and use a nullable union for the rest.

Is the projected object trustworthy?

Both paths pass the same gate. Nothing in output is invented on either path, and URLs and media durations are checked, but other values are the run's own account of its work, not measurements.

Sources

Related posts

More in Formats

All Formats posts

Written by Sume