mulmo images and mulmo movie break on gpt-image-1: set a model now

mulmocast-cli issue 1605: the gpt-image-1 default breaks mulmo images and movie after Oct 23, 2026. Which files to change, and a Python call to Sume instead.

5 min readSume
All posts

The mulmocast-cli tool defaults to gpt-image-1, so mulmo images and mulmo movie stop working once OpenAI removes that model on October 23, 2026. The issue filed on October 6 says the fix is a new default plus two new names in the list of allowed image models. Until a release lands, set the image model explicitly in your script file.

Where the default lives

The issue (number 1605) points at src/types/provider2agent.ts, lines 49 and 87, and at src/agents/image_openai_agent.ts, lines 77 to 88. It proposes making gpt-image-2.5-sunburst the default and adding both gpt-image-2.5-sunburst and gpt-image-2.5-flare to the gptImages array, so that a user can select either.

It also notes that gpt-image-1.5 and the mini model face the same deprecation on December 1, 2026. OpenAI's deprecations page, read 2026-10-07, confirms those dates and lists the same two replacements.

For a command-line tool the failure mode is blunt. The command exits with an error from the image provider, and a half-built movie directory may be left behind. If you run mulmo from a scheduled job, add a check that the images step succeeded before the movie step starts, so a model problem is caught at the earlier, cheaper step.

OpenAI image model shutdown dates relevant to mulmocast (read 2026-10-07)
ModelShutdownReplacement named by OpenAI
gpt-image-1October 23, 2026gpt-image-2.5-sunburst or gpt-image-2.5-flare
gpt-image-1-miniDecember 1, 2026gpt-image-2.5-sunburst or gpt-image-2.5-flare
gpt-image-1.5December 1, 2026gpt-image-2.5-sunburst or gpt-image-2.5-flare
chatgpt-image-latestDecember 1, 2026gpt-image-2.5-sunburst or gpt-image-2.5-flare

What a movie pipeline needs from the image step

A mulmo movie is built from beats, each of which needs a still. If the image step fails, the whole movie fails, so a retired id is not a cosmetic problem. The three things to settle are the model id, the size and the quality.

On the OpenAI side the current models take any WIDTHxHEIGHT whose edges are multiples of 16, within a ratio of 3:1 and 655,360 to 8,294,400 pixels. For video stills, 16:9 sizes such as 1536x864 are valid under those rules, since both edges divide by 16 and the pixel total is 1,327,104.

Generating the stills through Sume

If you want your stills from Sume instead of OpenAI, one call to /v1/images produces each. The Python below reads SUME_API_KEY, loops over three beat prompts and prints each URL. It uses only the standard library, and checks the status code, since a slow job returns 202.

import json, os, urllib.request

key = os.environ.get("SUME_API_KEY")
if not key:
    raise SystemExit("SUME_API_KEY is not set")

beats = ["A sunrise over a harbor", "A fishing boat leaving port", "Nets drying on a pier"]

for prompt in beats:
    body = json.dumps({
        "model": "openai/gpt-image-2.5",
        "prompt": prompt,
        "quality": "low",
        "image_size": {"width": 1536, "height": 864},
    }).encode()
    req = urllib.request.Request(
        "https://api.sume.com/v1/images",
        data=body,
        headers={"Authorization": f"Bearer {key}", "Content-Type": "application/json"},
    )
    with urllib.request.urlopen(req) as res:
        data = json.load(res)
        if res.status == 200:
            print(data["data"][0]["url"])
        else:
            print(res.status, data)

What those stills cost

Sume bills the provider list price times 1.25 before cent rounding. For a text-only prompt at 1536x864, I computed the list-times-1.25 figure as about $0.0045 at low and $0.0105 at medium. Treat those as estimates; the usage.cost field in each response is the amount actually billed, and GET /v1/images/models/{id}/endpoints shows the pricing rows.

Do this today

Pin the model in your own mulmo script or configuration, run one beat end to end, and watch the repository for the release that changes the default. Remember that the same files will need another change before December 1 if you chose the 1.5 or mini model as a stopgap.

Check cost against your own beat count: a movie with 12 beats needs 12 stills, and the per-still price multiplies directly. At the estimated $0.0045 low-quality figure that is 12 x $0.0045 = $0.054 before rounding, which is small enough that quality is the better thing to tune.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume