Format run structured output: output_schema or response_format
Pass one JSON Schema as output_schema or response_format on a Format run. Sending both is a 400, and a schema-valid run can still fail with output_error.

A Format run takes a structured-output schema under one of two names, output_schema or response_format, and sending both in the same request is a 400. Pick one name and use it everywhere in your client.
The receipt echoes the schema back as output_schema, with the result in output and any problem in output_error.
What each field does
From the Create a run and Runs and results pages (read 2026-10-03).
| Field | Where | Meaning |
|---|---|---|
| output_schema | Request | JSON Schema for the result |
| response_format | Request | The other spelling; do not send both |
| output_schema | Receipt | The schema the run used |
| output | Receipt | The structured result |
| output_error | Receipt | Why the output is missing or invalid |
| primary_output_key, primary_output_url | Receipt | The main media output |
A request that validates first
Check the body locally for the mutual exclusion, which is cheaper than a round trip.
import json
def check(body):
if "output_schema" in body and "response_format" in body:
raise ValueError("send output_schema or response_format, not both")
return body
schema = {"type": "object", "properties": {"title": {"type": "string"}},
"required": ["title"]}
body = check({"instruction": "Name this clip", "output_schema": schema})
print(json.dumps(body))Valid is not complete
A run can produce schema-valid output and still be failed when the primary media output is missing, so read output_error as well as output. See that failure shape before treating a valid object as success.
Sources
Related posts
More in Formats
- 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 spend: wait for usage.final before you quote a cost
On a Sume Format receipt, debited is the cost, held and refunded are not spend, and final turns true only once no hold is open.
- Watch a Format run's spend against its cap while it runs
A Format run's receipt reports usage.cap with limit, counted and remaining while it is in flight. Read it to see how close a video run is to failing on its cap.
- 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.
Written by Sume