Flow Agent batch edits and asset tidying: keep a Sume manifest
Flow Agent can batch edit and organize assets inside Flow. Sume has no asset organizer; a manifest of job ids and media URLs does the job. Code included.

Flow Agent can plan multi-step tasks, batch edit, and organize assets inside Flow. Sume has no equivalent folder-tidying agent in its public API, so on Sume you keep a small manifest that maps each prompt to its job id and Sume media URL.
The Flow facts come from Google's I/O 2026 roundup, read 2026-10-02: Flow Agent executes multi-step tasks with planning and reasoning, helps with brainstorming, creating and editing, and offers batch editing and asset organization to Flow users globally. It does not say how assets are exposed outside Flow.
What do I get from Sume instead?
Every Sume generation is a durable job. The Jobs and results page tells you to store the job id from the submit response so work survives a restart, and the Media inputs page says completed jobs mirror outputs into media.sume.com URLs that you should store instead of raw provider links.
A job is readable only by the member whose key created it, plus Studio Agent turns in the same thread, so a manifest is also how a teammate finds your results.
What goes in the manifest?
One row per request is enough. The fields below are the minimum that makes a batch recoverable.
| Column | Why |
|---|---|
idempotency_key | Retry the exact request without billing twice |
prompt or video_url | What was asked, for later reruns |
job_id | Poll and recover after a crash |
status | queued, processing, completed, failed, canceled |
media_url | The Sume-hosted result to download or reuse |
What does the code look like?
This script submits a few edits and appends one JSON line per job. It assumes the submit response carries the job id as id or request_id; check your live response, since envelopes differ slightly between surfaces.
import json, os, requests
KEY = os.environ["SUME_API_KEY"]
H = {"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"}
clips = {"a": "https://example.com/a.mp4", "b": "https://example.com/b.mp4"}
with open("manifest.jsonl", "a") as out:
for name, url in clips.items():
idem = f"warm-grade-{name}"
body = {"model": "gemini-omni-flash-1.1",
"prompt": "Warm the colour grade. Keep everything else the same.",
"video_url": url, "mode": "async"}
r = requests.post("https://api.sume.com/v1/video-router/generate",
headers={**H, "Idempotency-Key": idem}, json=body)
r.raise_for_status()
job = r.json()
row = {"key": idem, "source": url,
"job_id": job.get("request_id") or job.get("id")}
out.write(json.dumps(row) + "\n")What does this not replace?
A second pass reads each job's GET /v1/jobs/:id/result and fills media_url. Sume does not sort, tag or rename files for you, and it does not plan a batch from a chat message in the API. If you want a chat-driven batch, the Studio Agent route exists, but it is a separate product surface from this API manifest.
Reusing an idempotency key with the same body returns the original job, which makes it safe to rerun the script after a crash.
Sources
Related posts
More in Agents
- GitHub Actions schedule delayed at the top of the hour: what to do
GitHub says scheduled workflows can be delayed, notably at the start of every hour. Offset the cron minute and call a Sume Scheduled run with a dated key.
- GitHub Actions schedule disabled after 60 days: a Sume Scheduled fix
A public repo's scheduled workflows are disabled after 60 days without activity. How Sume Scheduled's active and inactive status differs.
- Higgsfield MCP has no credit cap: cap spend with Sume max_spend_usd
Higgsfield's MCP guide says there is no built-in credit spending cap. Sume's MCP tools take dry_run and max_spend_usd. How they work, and what they skip.
- hypit Understand order: one probe, then parallel batches
Sume's hypit Understand order: probe alone, then transcribe, boundaries and tiles in one batch, then notes. Which verbs wait on the transcript.
Written by Sume