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.

4 min readSume
All posts

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?

From the run-a-schedule docs, read 2026-09-30: https://docs.sume.com/agents/actions/api-trigger
FieldShapeNote
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
Bothn/a400 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

All Developers posts

Written by Sume