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's Agent page says very long sessions may see degraded performance and recommends starting a new session for each project. Sume's way to continue work is previous_run_id on a Format run: the new run picks up the earlier run's thread, so you can revise without restating everything. Agent Completions cannot continue a thread and rejects assistant turns, so continuation there means a fresh request.
Continuing, side by side
| Question | Runway Agent | Sume |
|---|---|---|
| Advice on long work | Start a new session per project; long sessions may degrade | Start a new run for each revision, linking it with previous_run_id |
| Continue a thread by API | Not described on the page I read | Format run: previous_run_id; Agent Completions: no continuation |
| Prior assistant turns in a request | Not described on the page I read | Rejected on /v1/agent/completions; messages are system or user only |
| Spend on a continued run | Credits per message by brain model | Usage is per run; the new run has its own cap |
What a Format continuation requires
The earlier run must be terminal and belong to the same Format. The API refuses with a distinct error when the run is not found, is from another Format, is not yet terminal, or is not resumable, so branch on the error code, not the HTTP status alone. A continued run needs a fresh Idempotency-Key, its own generation_spend_cap_usd, and an instruction that says only what changes.
import json, os, urllib.request, uuid
def revise(handle: str, slug: str, prev: str, change: str) -> dict:
body = {"instruction": change, "previous_run_id": prev,
"generation_spend_cap_usd": 20}
req = urllib.request.Request(
f"https://api.sume.com/v1/formats/{handle}/{slug}/runs",
data=json.dumps(body).encode(), method="POST",
headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Content-Type": "application/json",
"Idempotency-Key": str(uuid.uuid4())})
with urllib.request.urlopen(req) as resp:
return json.load(resp)Habit that carries over
Whichever tool you use, treat a finished cut as a checkpoint: name what changes, keep the instruction short, and begin a new session or run when the scope moves to a different project.
A revision rule of thumb
Continue with previous_run_id while the change is a revision of the same piece, such as a new hook or a different voice. Start from a clean run when the brief itself changes, which mirrors Runway's advice to begin a new session for a new project.
Sources
Related posts
More in Comparisons
- Runway Agent message credits: Opus 5.5, GPT-6 Astra, and Sume
Runway charges 24 credits per message on Opus 5.5 and 40 on GPT-6 Astra. Sume lets a run pick its orchestrator with one model field. The math and the gap.
- Runway Agent reads PDF briefs; what a Sume Format run accepts
Runway Agent takes PDFs up to 20 MB. A Sume Format run takes images as attachments and everything else as JSON input. How to send a brief, with a size check.
- Runway Agent skills vs a saved Sume Format you call by API
A Runway Agent skill is saved instructions you trigger with / in a chat. A Sume Format is a saved recipe your backend calls by handle and slug. Which fits when.
- Runway Agent UGC and Commercial skills vs Sume catalog Formats
Runway's UGC Video and Commercial skills run in an Agent chat. Sume's sume-close-camera-ugc and sume-product-commercial Formats are called by slug from code.
Written by Sume