How to watch the Sume image model list for new and removed models
Image catalogs change. Snapshot GET /v1/images/models each night and diff the ids in Python, so a retired or new model reaches you before a request fails.

Save the list of model ids once a day and compare it with yesterday's. Sume's docs make GET /v1/images/models the place to read what the catalog serves and what each row accepts, and say a model takes only the values its catalog descriptors list. If a row's descriptors change under you, the first sign should be your own diff, not a production 400.
The check is about twenty lines and needs no database.
Snapshot and diff
The script stores each model's id and its supported_parameters as JSON. On the next run it prints ids that are new, ids that are gone, and rows whose parameter descriptors changed.
import json, os, pathlib, requests
key = os.environ.get("SUME_API_KEY")
if not key:
raise SystemExit("set SUME_API_KEY")
r = requests.get("https://api.sume.com/v1/images/models",
headers={"Authorization": f"Bearer {key}"}, timeout=30)
r.raise_for_status()
now = {m["id"]: m.get("supported_parameters", {}) for m in r.json()["data"]}
file = pathlib.Path("image-catalog.json")
old = json.loads(file.read_text()) if file.exists() else {}
print("new:", sorted(set(now) - set(old)))
print("gone:", sorted(set(old) - set(now)))
print("changed:", sorted(i for i in now if i in old and now[i] != old[i]))
file.write_text(json.dumps(now, indent=2, sort_keys=True))What to do with each result
| Diff result | Likely meaning | Action |
|---|---|---|
| New id | A model joined the catalog | Read its endpoints record for price and limits |
| Gone id | A row left the list | Move pinned work to a listed row before it fails |
| Changed descriptors | A range or enum moved | Re-check your clamps for n, references and sizes |
sume/auto missing | Expected, it is never listed | Ignore it |
Why vendors make this worth doing
Vendors reshuffle their lineups. Ideogram's API overview (read 2026-10-06) lists Ideogram 4.5 and 4.0 side by side with GPT Image and Nano Banana, and a page like that is a snapshot of one day. A diff on your side turns a lineup change into a line in a log.
Wire the output to a chat message or a ticket. A quiet diff that nobody reads is no protection.
Limits of the check
- It sees the catalog, not the price. Read the endpoints record for a model if its price matters.
- It will not tell you why a row changed. Compare with the docs.
- Run it from one place so the saved file is the single record.
Sources
Related posts
More in Developers
- Django webhook view for an AI video job: csrf_exempt and HMAC check
A Django view that verifies Sume's x-sume-webhook-signature over timestamp.raw_body, rejects an empty secret, and handles job.completed for a /v1/videos clip.
- Does a crossfade shorten a Short? Timeline start times explained
In Sume Timeline the declared start of each slot is authoritative, so a crossfade does not eat into the total length. How to keep a Short under its limit.
- Does my Short have audio? Check probe.has_audio before captions
Transcribing a silent clip returns inspect_source_has_no_audio. Probe has_audio first with a frames:false video inspect, then caption only clips with a voice.
- Eight concurrent jobs_wait calls per principal on Sume hosted MCP
Sume's hosted MCP bounds waits per process and per principal, workspace plus owner. Batch ids into one jobs_wait instead of sending many parallel waits.
Written by Sume