gpt-image-1 returns 404 model_not_found on Sume: which id to send

gpt-image-1, gpt-image-1.5 or gemini-2.5-flash-image sent to Sume /v1/images return 404 model_not_found. Ids to send instead, plus a lookup.

5 min readSume
All posts

Sume does not list gpt-image-1, gpt-image-1-mini, gpt-image-1.5 or gemini-2.5-flash-image, so POST /v1/images returns 404 model_not_found for them. Send openai/gpt-image-2.5-sunburst or openai/gpt-image-2.5 for the OpenAI ones, which are the replacements OpenAI names on its deprecations page. For the Gemini id, Google names gemini-3.1-flash-image-preview, which is not a Sume id either; Sume's Google-family image ids are google/nano-banana-2 and google/nano-banana-pro.

The 404 is a fix-the-id signal. Retrying the same id never works.

Ids that return model_not_found and what to send

Retired ids vs Sume ids, read 2026-10-06
Id you sentVendor dateTry on Sume
gpt-image-12026-10-23openai/gpt-image-2.5-sunburst
gpt-image-1-mini2026-12-01openai/gpt-image-2.5-sunburst
gpt-image-1.52026-12-01openai/gpt-image-2.5-sunburst
chatgpt-image-latest2026-12-01openai/gpt-image-2.5-sunburst
gemini-2.5-flash-image2026-10-02google/nano-banana-2

Catch it and name the replacement

Handle the 404 in one place and print the suggestion, so the first failed render in staging tells the developer what to change:

import json, urllib.error

SUGGEST = {
    "gpt-image-1": "openai/gpt-image-2.5-sunburst",
    "gpt-image-1-mini": "openai/gpt-image-2.5-sunburst",
    "gpt-image-1.5": "openai/gpt-image-2.5-sunburst",
    "chatgpt-image-latest": "openai/gpt-image-2.5-sunburst",
    "gemini-2.5-flash-image": "google/nano-banana-2",
}

def explain(err: urllib.error.HTTPError, model: str) -> str:
    detail = err.read().decode("utf-8", "replace")[:200]
    if err.code == 404 and model in SUGGEST:
        return f"{model} is not a Sume id; try {SUGGEST[model]} ({detail})"
    return f"HTTP {err.code}: {detail}"

if __name__ == "__main__":
    e = urllib.error.HTTPError("u", 404, "nf", {}, None)
    e.read = lambda: json.dumps({"error": "model_not_found"}).encode()
    print(explain(e, "gpt-image-1"))

List what Sume does serve

GET /v1/images/models returns every id with its parameters. Check an id there before you store it, as in the catalog diff post. The longer date story is in the shutdown calendar.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume