/v1/videos model_not_found: 404 now, not 400. Fix retry logic

An unknown model id on /v1/videos returns 404 model_not_found. It was 400 through #2311 and changed in #2321. Update clients that match on 400.

4 min readSume
All posts

POST /v1/videos with a model that is not a catalog id, an alias or sume/auto now returns 404 model_not_found. It was 400 through #2311 and changed to 404 in #2321, so that the platform has one convention. If your client treats 400 as "bad model", update it.

Error table and what to do

The Sume errors table for this surface is short. The last column is suggested handling, not a documented retry policy.

Sume /v1/videos errors, read 2026-10-05
HTTPcodeSuggested handling
400invalid_request, unsupported_parameter, unsupported_capabilityNo, fix the body
401unauthorizedNo, fix the key
402insufficient_creditsAfter a top-up
404model_not_foundNo, refresh the catalog
404job_not_foundNo, check the id and workspace
409job_not_completedYes, keep polling
429rate_limitedYes, back off
409job_failedNo, read the poll error
502provider submissionYes, resend with the same Idempotency-Key

Update the check

The fix is to branch on the HTTP status and code together, and to treat any 404 on submit as "model id is wrong". A 404 on a poll or content call is a different code, job_not_found.

A small guard

This snippet refreshes the catalog when the model id is unknown.

import asyncio, os
import httpx

async def main():
    headers = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
    async with httpx.AsyncClient(base_url="https://api.sume.com", headers=headers) as c:
        r = await c.post("/v1/videos", json={"model": "no-such-model", "prompt": "test"})
        if r.status_code == 404:
            ids = [m["id"] for m in (await c.get("/v1/videos/models")).json()["data"]]
            print("unknown model, valid ids:", ids)
        else:
            print(r.status_code, r.text)

asyncio.run(main())

Common cause

Do not guess a replacement id. Sume ids are bare (seedance-2, not bytedance/seedance-2), so an id copied from an org/slug catalog is one likely cause of this 404.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume