List your Sume Formats in Python and keep the video ones
Page through GET /v1/formats with next_cursor, keep io.output_kind video, and print each vanity_invoke_url. A runnable snippet with field caveats.

GET /v1/formats returns the Formats your key's workspace owns plus the first-party catalog, in keyset pages: while has_more is true, send next_cursor back as cursor (Format API). The snippet below walks every page and keeps those whose io.output_kind is video.
The snippet
The key needs the formats:read scope. limit is passed as 50.
import os, requests
H = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
url = "https://api.sume.com/v1/formats"
params = {"limit": 50}
formats = []
while True:
r = requests.get(url, headers=H, params=params, timeout=30)
r.raise_for_status()
body = r.json()
formats += body["data"]
if not body["has_more"]:
break
params["cursor"] = body["next_cursor"]
for f in formats:
kind = (f.get("io") or {}).get("output_kind")
if kind == "video":
print(f["handle"], f["slug"], f["vanity_invoke_url"])Fields to read
| Field | Use |
|---|---|
| handle, slug, vanity_invoke_url | The address to POST runs to |
| invoke_url | The opaque skl_ path that survives renames; persist it if stored URLs must stay valid |
| io | input_kind and output_kind; null on older Formats |
| generation_spend_cap_usd_micros | The cap a run inherits when it names none ($400 for a Format that never set one) |
| version | Bumped on every edit; the receipt shows which version ran |
Two traps
A Format you never ran over the API can show status: inactive and api_trigger_enabled: false until its first run, and it still runs. Do not gate your integration on those two values being true.
A personal key lists personal Formats and a team key lists that workspace's; neither lists the other's. If an expected Format is missing, you probably hold the other key.
Sources
Related posts
More in Developers
- MAI-Voice-2.1 SSML style="happiness" is not in the voice style list
Microsoft's MAI-Voice-2.1 SSML example uses style="happiness", but the Learn page's own style lists say happy or joyful. Check styles before you ship.
- Modal 1.6.1 endpoint logs and stats: debug a Sume webhook receiver
Modal 1.6.1 adds modal endpoint info, stats and logs. Use them to see why a Sume job webhook got a 401 or a timeout, and check the 150 s web timeout first.
- model sume/auto on /v1/videos: defaults, limits, replay-stable price
sume/auto lets Sume pick the video family. Defaults are 720p and 8 s, clips run 3 to 10 s at 16:9 or 9:16, and a replay gets the same route and price.
- Music API 400s: duration and negative_prompt, and the fix
Sume's Music Router returns 400 if you send duration, duration_seconds or a non-empty negative_prompt. The fix for each, and a request that passes validation.
Written by Sume