GET /v1/video-router/models/wan-3.0: fetch one model's limits

Fetch one Sume video model with GET /v1/video-router/models/{model_id}, such as wan-3.0 or seedance-2.5. Unknown ids return 404. Read limits before you submit.

4 min readSume
All posts

To read one model's limits on Sume, call GET /v1/video-router/models/{model_id} with the id as the last path segment, for example wan-3.0 or seedance-2.5. The dots belong in the path exactly as written. An id that is not in the catalog returns 404. The list route is GET /v1/video-router/models, and the OpenRouter-shaped list is GET /v1/videos/models.

Reading one row is cheaper than downloading the whole catalog when your code already knows which id it wants.

Which route returns what

Both surfaces describe the same models and create the same jobs. Pick one and stay on it.

Video catalog routes on api.sume.com (read 2026-10-06 from the Sume docs)
RouteUse it for
GET /v1/video-router/modelsThe full catalog with capabilities and list pricing times 1.25 on each row
GET /v1/video-router/models/{model_id}One model; 404 if the id is unknown
GET /v1/videos/modelsOpenRouter-shaped list with supported_durations, supported_input_references and more
POST /v1/videosSubmit a job; new integrations should use this

A pre-flight check in code

The point of reading the row is to reject a bad request in your own code before it costs a call. This Python check asks for one model and tests duration and resolution against it. It prints the raw row so you can see the field names that your account returns.

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 client:
        r = await client.get("/v1/video-router/models/wan-3.0")
        if r.status_code == 404:
            print("unknown model id")
            return
        r.raise_for_status()
        print(r.json())

asyncio.run(main())

Two cautions

First, do not hard-code limits from a blog post. The row is the source of truth and changes when a provider changes. Second, a 404 on a model id is not a transient error, so do not retry it. Fall through to the next id in your ladder or fix the spelling. Ids such as seedance-2.5 and wan-3.0 are exact strings, and wan-3 or seedance-25 will not resolve.

What to read from the row

Pull these fields and cache them for a few minutes at most.

If you serve many users, fetch the row once per process and refresh it on a timer. A catalog read is cheap, but there is no reason to make one before every submit.

Send the bearer key on every call, including catalog reads. Keep it in an environment variable and out of source control, and use a separate key for scripts that only read the catalog so that you can revoke it on its own.

  • Allowed durations and the min and max.
  • Supported resolutions and aspect ratios.
  • Which reference types the model accepts.
  • The listed price rows, which show the Sume billable rate.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume