Gemini 3.8 Flash is stable: keep model ids in config
When a vendor ships a new Flash model, a hard-coded id ages. Read Sume ids from GET /v1/catalog and treat 404 model_not_found as a signal, not a retry.

The practical lesson of a vendor shipping a new fast model is to keep model ids out of your code: read them from configuration, and for Sume media models read the live list from GET /v1/catalog before a run, treating a 404 model_not_found as a stop signal to fix the id rather than something to retry. Google's model page lists gemini-3.8-flash as stable, described as its most intelligent Flash model, with 3.7 and 3.6 Flash labelled previous-generation (read 2026-10-03).
That page gave me the status and the positioning, not prices or limits, so I do not quote any. What it shows is the pattern: a model you built against gets a successor, and a pipeline with the old name written into twelve files has twelve places to touch. This article is about how to make that a one-line change on the Sume side.
What counts as a public Sume model id
The Sume public API docs are explicit about the boundary. Internal voice capabilities, raw provider model ids and provider task URLs are not public API surfaces unless they appear in /v1/catalog and the OpenAPI schema. In practice, that means a provider's own name for a model is not an id you can send to Sume just because it exists elsewhere. The catalog is the list.
Sume's media endpoints each publish their own model lists as well, such as GET /v1/videos/models and GET /v1/images/models, with the capabilities per model. When you need to know whether a model accepts a first frame or how many aspect ratios it has, read the entry, not a blog post.
| Question | Source | On a bad id |
|---|---|---|
| Which capabilities and prices exist | GET /v1/catalog | Not applicable |
| Which video models and their frame support | GET /v1/videos/models | 404 model_not_found on submit |
| Which image models | GET /v1/images/models | 404 model_not_found on submit |
| A provider's raw model name | Not a public id unless listed | Expect 404, do not retry |
A config-driven preflight
The script reads the id from an environment variable, looks it up in the video model list, and exits with a clear message if it is missing. Run it as the first step of a batch, before any paid call. It does not submit anything, so it costs nothing.
import os, sys, requests
API = "https://api.sume.com"
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
wanted = os.environ["VIDEO_MODEL"] # kept in config, not in code
resp = requests.get(f"{API}/v1/videos/models", headers=H)
resp.raise_for_status()
body = resp.json()
items = body.get("data", body.get("models", []))
ids = [m.get("id") for m in items]
if wanted not in ids:
print(f"{wanted!r} is not listed. Available: {sorted(i for i in ids if i)}")
sys.exit(2)
print("ok:", wanted)What to do this week
Search your repository for every place a model name appears as a string literal, and move each to one configuration file. A replacement then needs one edit and one preflight run, not a code review of every call site.
Make the preflight part of your deploy, and make it fail closed. A batch that discovers a bad id on its fortieth job has already queued thirty-nine others; the queue-first behaviour in the admission docs means valid jobs wait rather than fail, so a bad id is the one thing that is rejected immediately, with 404 model_not_found. Do not retry it with the same id.
Keep the old id in a dated note when you switch. If an output looks different after a model change, you want to know which day and which setting changed. Store the id used with each finished job in your episode record.
A worked example: a team has VIDEO_MODEL in a deploy file and twenty-four episode scripts that read it. When a model id is retired, the preflight above fails on the first line of the first run, with the list of valid ids printed. They edit one value, rerun the preflight, and start the batch. Without the preflight, the same mistake shows up as a 404 on the first submit of each script, spread across the day, and each failure looks like a separate bug.
Do not infer Sume availability from a vendor announcement. Google listing a model tells you what Google offers. Whether Sume lists a model is a separate question answered by the catalog, and an answer of no is a reason to pick a listed alternative, not to wait.
What Sume does and does not do
Sume publishes the model ids it supports, per endpoint, and rejects unknown ones immediately with a typed error. It does not alias a vendor's new name to an old id, and it does not promise that every model a vendor releases will be listed. The vendor facts above are Google's description of its own page; they say nothing about what Sume lists.
Sources
Related posts
More in Models
- How long can a Veo 3.1 video get? 148 seconds at 720p
Veo 3.1 extends clips 7 seconds at a time, up to 148 seconds at 720p. Sume has no extend task, so here are the longer single-clip models and how to join clips.
- Veo 3.1 Lite 1080p is 8 seconds only: options for a 5-second clip
Veo 3.1 Lite renders 1080p only at 8 seconds. To get a 5-second 1080p clip, trim an 8-second render with Sume or pick a model whose range includes 5.
- Veo 3.1 Lite takes text and images only: no references or extension
Google's Veo page shows Lite without reference images, video input or extension. If your Lite job needs those, here is what to use instead on Sume.
- 9:16 vertical AI video: which Sume models take an aspect ratio
Seedance, Wan 3.0, Kling 3, MiniMax H3 and Gemini Omni Flash take 9:16; Grok Imagine, Genjutsu and H3 Max Recast take no aspect ratio. A per-model table.
Written by Sume