Get one Sume video model by id: GET /v1/video-router/models/{id}
Look up a single Sume video model's limits and price with GET /v1/video-router/models/{id}. Response fields, the 404 for unknown ids, and a short script.

You do not have to download the whole video catalog to check one model. Sume's Video Router docs list GET /v1/video-router/models/{model_id} as the single-model lookup, and it returns 404 for an id that does not exist. The full list is at GET /v1/video-router/models, and the OpenRouter-shaped catalog is at GET /v1/videos/models.
What does the lookup return?
The row carries the model's capabilities, such as text-to-video, image-to-video, end frame, references, the supported resolutions, the duration_seconds window and the aspect ratios. It also carries pricing, with the currency, the list basis, the per-second rates and the billable margin and formula, and a constraints list of plain-language rules, such as which fields are rejected.
Which fields should a client read?
Three groups cover most pre-flight checks.
capabilities.duration_secondsandcapabilities.resolutions: reject a request locally before it reaches Sume.capabilities.aspect_ratios: an empty list means omitaspect_ratio.pricing: the list rate,billable_marginandbillable_formula, which turn into the amount Sume will reserve.
Can I see it in a short script?
This Python fetches one model row and prints it, so you can read the fields above for your own pre-flight check.
import os, requests
def check(model_id):
r = requests.get(
f"https://api.sume.com/v1/video-router/models/{model_id}",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
timeout=30,
)
if r.status_code == 404:
return f"{model_id}: not a Sume model"
r.raise_for_status()
print(r.json())
return "fetched"
if __name__ == "__main__":
print(check("wan-3.0"))What about a missing row?
A 404 means the id is neither a catalog row nor listed in your environment. A row can be absent because its provider is not configured, which is the case for Higgsfield Genjutsu. Treat the lookup, not a hard-coded list, as the source of truth.
Sources
Related posts
More in Developers
- GitHub App ghs_ tokens are now ~520 characters: check Sume calls
GitHub's new installation tokens are about 520 characters, not 40. What breaks in a workflow that also calls Sume, and why Sume takes one credential header.
- Go 1.27 drains response bodies: a Sume job poll loop
Go 1.27 drains unread HTTP/1 body bytes on Close. A stdlib loop that polls GET /v1/jobs/:id/status and honors next_poll_after_seconds.
- Go webhook handler: verify the Sume sume-v1 signature
A stdlib Go verifier for x-sume-webhook-signature: HMAC-SHA256 over timestamp.raw_body, five-minute window, constant-time compare, empty secret refused.
- Goose 1.52 recipe consent before extensions: a Sume MCP recipe
Goose 1.52 asks for recipe consent before session/new spawns extensions, and caps recipe size. What to put in a recipe that uses Sume's MCP server.
Written by Sume