List Sume Formats with GET /v1/formats: limit, next_cursor, has_more
GET /v1/formats pages with a keyset cursor and a default limit of 50. Loop on has_more and pass next_cursor back as cursor to read the whole catalog.

To read every Format your key can see, call GET /v1/formats, then repeat the call with cursor set to the previous next_cursor for as long as has_more is true. The default limit is 50. This is keyset paging, so an opaque cursor marks your place and you never compute an offset.
A script that reads only the first response silently misses everything past 50, which is the usual bug.
What does the loop look like?
This Python reads the key from the environment and needs pip install requests. The list is under data, as on other Sume list endpoints.
import os
import requests
def list_formats() -> list[dict]:
out: list[dict] = []
cursor = None
while True:
params = {"limit": 50}
if cursor:
params["cursor"] = cursor
resp = requests.get(
"https://api.sume.com/v1/formats",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
params=params,
timeout=30,
)
resp.raise_for_status()
body = resp.json()
out.extend(body["data"])
if not body.get("has_more"):
return out
cursor = body["next_cursor"]
What are the paging fields?
Per the Format API docs, read 2026-10-04:
| Field | Role |
|---|---|
limit | Page size; defaults to 50 |
cursor | The next_cursor from the previous page |
has_more | True while another page exists |
next_cursor | Opaque; pass it back unchanged |
Common mistakes
Keep the cursor opaque.
- Do not parse or build a cursor; pass back what you received.
- Do not loop on an empty page; stop when
has_moreis false. - Do not cache the list forever; new Formats appear as authors publish them.
Sources
Related posts
More in Developers
- GitHub Actions and Sume: secret setup and a smoke test
Store SUME_API_KEY as a GitHub Actions secret, never echo it, and run sume account get --json as a read-only smoke test in a manually triggered workflow.
- Give every Seedance 2.5 reference a role in the prompt
With up to 12 references per Sume request, say in the prompt what each one is for. Roles for images, videos and audio, and a worked reference-to-video example.
- A Go client for Sume from OpenAPI, with Retry-After
The docs list only a TypeScript SDK. Generate a Go client from the live OpenAPI schema, send x-api-key, and back off on 429 with retry-after.
- Asset Studio's four-step Omni workflow, rebuilt as Sume API calls
Asset Studio's flow is anchor, concepts, refine, export. Here is each step as a Sume call: /v1/videos, video-trim, timeline fit modes and a cropped square.
Written by Sume