LangGraph interrupt response_schema for paid video approval
LangGraph 1.2.12 adds response_schema to interrupt(). Use a typed approve, edit or reject reply with max spend to drive a Sume dry_run, then submit.

Use a typed reply for the approval step: have the human answer with approve, edit or reject plus a spend ceiling, then run Sume's dry_run=true preview before the real submit. LangGraph 1.2.12 added response_schema to interrupt(), which is a natural place to declare that reply shape.
The LangGraph release note is a single line ("add response_schema to interrupt()", #8886), so check its docs for exact usage. Sume's gates are from MCP tools and gates, read 2026-09-30.
What should the approval payload contain?
Three things: a decision (approve, edit, reject), an optional edited prompt, and a maximum spend in USD. Sume's max_spend_usd gate is enforced only when provided, so a reply that omits the ceiling means no cap, and your graph should refuse that.
| Gate | Required? | Meaning in the docs |
|---|---|---|
idempotency_key | Required on write and paid tools | Stable key for transport and dedup, not human approval |
dry_run=true | Optional | Admission and cost preview only; does not submit |
max_spend_usd | Optional | Enforced only when provided |
Why is the key not the approval?
Sending an idempotency_key does not mean anyone agreed to the spend. The docs describe it as dedup only, so approval has to live in your graph: the interrupt is the approval, the key is the retry guard.
What is the sequence?
The docs give a two-step flow. First call with dry_run=true and review the preview. Then repeat with dry_run omitted or false to submit, and poll with jobs_status or jobs_wait before reading jobs_result.
Put the interrupt between the two calls: show the preview, wait for the typed reply, and on approve or edit submit with the approved max_spend_usd. On edit, run the dry run again, since the prompt changed. Compare the simpler untyped pattern in LangGraph interrupt before a paid video API call.
Sources
Related posts
More in Developers
- List music models by API: GET /v1/music-router/models
The Music Router catalog endpoints list routable music model ids and a provider list price. Routable ids today: sume/music-auto, lyria-3.5, lyria-3-pro.
- LlamaIndex failed function tools: decide Sume retries in the tool
LlamaIndex v0.14.25 stops retrying failed function tools. Decide inside your Sume tool which errors are safe to retry, and return a status string.
- Mastra background tasks and Sume: reuse the idempotency key
Mastra 1.72.0 fences background tasks with leases. If a new owner restarts a Sume tool call, the same idempotency key returns the original job.
- MCP Apps _meta.ui.resourceUri: what a Sume tool call shows
MCP Apps tools point at a ui:// resource for the host to render. Sume's hosted MCP lists plain tools, so a host shows the tool result, not an app.
Written by Sume