OpenAI response_format json_schema on a Sume scheduled run
Sume accepts an OpenAI-shaped response_format as an alias for output_schema on schedule runs. Sending both returns 400, and the schema must be strict.

Yes. On POST /v1/actions/{action_id}/runs, response_format with type: "json_schema" is accepted and normalized into output_schema. Sending both is a 400 invalid_request, and the schema must sit inside Sume's strict subset.
Everything here is from Run a schedule via API, read 2026-09-30.
How do the two fields compare?
| Field | Shape | Note |
|---|---|---|
output_schema | { name, strict, schema } | Per-request override; receipt shows source: "request_override" |
response_format | { type: "json_schema", json_schema } | OpenAI-shaped alias, normalized into output_schema |
| Both | n/a | 400 invalid_request |
What does a valid request look like?
List every property in required and use a nullable type for optional values. A schema outside the strict subset is rejected with output_schema_invalid before any run starts, with details.violations[] naming each rule.
curl -sS -X POST "https://api.sume.com/v1/actions/$ACTION_ID/runs" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: rf-001" \
-d '{
"input": { "product_name": "Aurora Headphones" },
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "caption_out",
"strict": true,
"schema": {
"type": "object",
"additionalProperties": false,
"required": ["caption"],
"properties": { "caption": { "type": ["string", "null"] } }
}
}
}
}'What happens on a replay?
output_schema is part of the idempotency payload, so replaying a key with a different schema is a 409 idempotency_conflict, not a silent replay of the old receipt.
Is this on Agent Completions too?
The Agent Completions docs list output_schema with the same contract as Action runs. The response_format alias is documented on the schedule run page, so use output_schema there.
Where does the request input go?
input is serialized into a fenced JSON block and handed to the agent as data, not instructions, with at most 64 properties and 2 MiB. Caller text is untrusted, so do not design a schedule where input can redirect what it does. Unknown top-level properties are silently dropped, not rejected, so check field names such as response_format.
Sources
Related posts
More in Developers
- Retool Workflow webhook needs X-Workflow-Api-Key: use a relay
Retool Workflows authenticate webhooks with an X-Workflow-Api-Key header or query parameter. Sume documents no custom delivery headers: relay after verifying.
- Rough cut from a script by API: one scene per Timeline slot
Descript Quick Design splits a script into moments with changing visuals. With Sume you map each scene to a Timeline video slot over a voiceover spine yourself.
- Search footage for a spoken phrase with an API: words with timing
DaVinci Resolve 21 lists IntelliSearch. To find a spoken phrase in a clip by API, transcribe with video inspect and search words[] in your own code.
- Create vs read rate limits: Managed Agents 300/1,200, Sume plans
Anthropic's Managed Agents limit creates and reads separately. Sume splits its per-minute budget the same way by plan, so polling cannot starve submits.
Written by Sume