OpenClaw still lists sora-2 as a configured video provider: fix it

OpenClaw issue 158876: the bundled OpenAI video provider still defaults to sora-2, though /v1/videos returns 404. What to do now, and a Sume video call.

5 min readSume
All posts

OpenClaw's bundled OpenAI provider still declares video generation with sora-2 as its default model, although OpenAI shut that model and the Videos API down on September 24, 2026. A report filed two days later says the provider still shows as configured, while every call to the endpoint returns 404. Until it is removed upstream, set a different video provider explicitly, for example Sume's /v1/videos route.

What the issue says

Issue 158876 was filed on September 26, 2026. It names extensions/openai/video-generation-provider.ts, which sets DEFAULT_OPENAI_VIDEO_MODEL to sora-2, and docs/tools/video-generation.md, which still lists OpenAI and sora-2 as supported. In the video_generate tool, action=list shows the provider as configured: yes.

The reporter explains why this matters: the endpoint https://api.openai.com/v1/videos returns HTTP 404, yet the provider remains a candidate, so the failure is silent on every invocation. Three fixes are proposed: remove the video capability from the provider, mark it unavailable so automatic selection skips it, or document the retirement so operators configure alternatives.

OpenAI's Sora 2 shutdown, as published (read 2026-10-07)
ItemValue
AnnouncedMarch 24, 2026
ShutdownSeptember 24, 2026
Ids affectedsora-2, sora-2-pro, sora-2-2025-10-06, sora-2-2025-12-08, sora-2-pro-2025-10-06
Replacement named by OpenAINone listed; the video guide says no one-to-one replacement API is available

Why a stale entry is worse than a missing one

A provider that is absent produces a clear message when you ask for a video. A provider that is present, marked configured and answering 404 sends the request down a path that cannot succeed, and the error may surface far from its cause. If your OpenClaw setup picks a video provider automatically, check which one it chose, not only whether videos are being created at all.

Point the tool at Sume

Sume's video API is asynchronous: POST /v1/videos returns a job with a polling_url, you poll until the status is completed, and you download from the content URL. The catalog lists the models you can name; read it with GET /v1/videos/models instead of guessing. Gemini Omni Flash 1.1 is the router's default when you send sume/auto, so naming it is a safe first test.

The script below submits a 5-second 720p clip, polls every 15 seconds and saves the file. It reads SUME_API_KEY from the environment and stops if it is empty.

import json, os, time, urllib.request

key = os.environ.get("SUME_API_KEY")
if not key:
    raise SystemExit("SUME_API_KEY is not set")
H = {"Authorization": f"Bearer {key}", "Content-Type": "application/json"}

def call(url, body=None):
    data = json.dumps(body).encode() if body else None
    with urllib.request.urlopen(urllib.request.Request(url, data=data, headers=H)) as r:
        return json.load(r)

job = call("https://api.sume.com/v1/videos", {
    "model": "gemini-omni-flash-1.1",
    "prompt": "A slow dolly shot along a rainy neon street at night",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9",
})
for _ in range(60):
    st = call(job["polling_url"])
    if st["status"] in ("completed", "failed", "cancelled"):
        break
    time.sleep(15)
print(st["status"])
if st["status"] == "completed":
    req = urllib.request.Request(st["unsigned_urls"][0], headers=H)
    with urllib.request.urlopen(req) as r, open("clip.mp4", "wb") as f:
        f.write(r.read())

Choosing a model

OpenAI's guide lists no replacement, so the choice is yours. The table gives limits straight from the Sume catalog, which you should confirm for your account with the models endpoint before pinning a value.

On price: Sume bills the provider list price times 1.25, rounded up to the cent for the clip. For the script above, 5 seconds at Omni's 720p list rate of $0.10 per second is $0.50 at list, or $0.625 after the multiplier, which rounds up to $0.63. The usage.cost field in the job result shows the amount actually billed.

Sume video models and limits from the catalog (read 2026-10-07)
Model idSecondsResolutionsAudio
gemini-omni-flash-1.13 to 10360p, 720p, 1080p, 4Kyes
kling-34 to 15720p, 1080pyes
wan-3.02 to 30480p, 720p, 1080pyes
minimax-h3-max5 to 15480p, 768p, 1080pyes
seedance-2.54 to 30480p, 720p, 1080pyes

Checklist for an operator

Search your agent configuration for sora-2 and sora-2-pro, remove OpenAI as a video candidate, set the explicit replacement, and run one clip through the whole path. Then watch the upstream issue for the change that removes the stale default.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume