Runway Agent 'Ask before generating' vs a Sume spend cap
Runway Agent can pause for approval before each generation. A Sume API run has nobody to click approve, so the control is a per-run spend cap. How each works.

In Runway Agent, the Ask before generating media setting shows the model, prompt and estimated credit cost for each step and waits for your go-ahead. The default, Automatically generate, starts as soon as the plan is made. Over Sume's Format API nobody can click approve, so the matching control is generation_spend_cap_usd on the request: a ceiling set before the run starts, up to $500.
The two controls
| Question | Runway Agent | Sume Format run |
|---|---|---|
| Default | Automatically generate | The Format's own cap; $400 for a Format that never set one |
| Who approves | You, per step, if Ask before generating is on | Nobody; approvals are pre-granted for unattended runs |
| What you see first | Model, prompt and estimated credit cost | The cap, echoed on the receipt as usage.generation_spend_cap_usd_micros |
| Per-run override | Session setting; Set as default for new sessions | generation_spend_cap_usd on each request |
| Lifting the limit | Switch the mode | null runs at the $500 platform maximum; 0 is rejected |
Why the default matters for workflows
Runway's workflow page warns that with Automatically generate, workflow runs start immediately and consume credits without a confirmation step, and suggests Ask before generating for workflows with several generation nodes. The same reasoning is why Sume refuses a body that cannot spend: a run with a cap of 0 is a 400, since a run that cannot spend cannot deliver.
Set the cap in code
Send the cap with an idempotency key built from the thing being made. The receipt echoes the cap in USD micros, so 25 dollars reads as 25000000.
import json, os, urllib.request
def create_run(order_id: str, cap_usd: float) -> dict:
body = {
"instruction": "Vertical 9:16 product teaser, no captions.",
"input": {"product_url": "https://shop.example.com/p/8823"},
"generation_spend_cap_usd": cap_usd,
}
req = urllib.request.Request(
"https://api.sume.com/v1/formats/sume/sume-product-commercial/runs",
data=json.dumps(body).encode(),
method="POST",
headers={
"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Content-Type": "application/json",
"Idempotency-Key": f"order-{order_id}-v1",
},
)
with urllib.request.urlopen(req) as resp:
return json.load(resp)["data"]
run = create_run("8823", 25)
print(run["id"], run["usage"]["generation_spend_cap_usd_micros"])When you still want a preview
Previews belong to the MCP surface. On a paid MCP tool such as generate_video, dry_run=true returns an admission and cost preview without submitting the job, and max_spend_usd is enforced only when you send it. A Format run has no dry run; its protection is the cap.
Sources
Related posts
More in Comparisons
- Runway Agent Brand Kits from a PDF vs Sume Format package files
Runway Enterprise Brand Kits can be built from PDF text. Sume keeps brand rules as files in a Format package, edited by the Contents API.
- Runway Agent custom preferences vs a Sume run instruction
Runway's custom generation preferences are guidance Agent weighs, not rules. On a Sume run the instruction is composed after the Format and wins on conflicts.
- Runway Agent long sessions vs Sume previous_run_id continuation
Runway says very long Agent sessions may degrade; start fresh per project. Sume continues a Format run with previous_run_id; Agent Completions cannot.
- Runway Agent long videos in Final Cut vs a Sume run deadline
Runway Agent has no hard length limit and joins clips in Final Cut. A Sume Format run has a 90-minute deadline. How to plan a long video on each.
Written by Sume