Pick a Sume video model by script: filter /v1/videos/models

Instead of guessing, call GET /v1/videos/models and filter by ratio, resolution and last frame. A 15-line Python script lists the Sume video models that fit.

5 min readSume
All posts

Call GET https://api.sume.com/v1/videos/models and filter the data array on supported_resolutions, supported_aspect_ratios and supported_frame_images: the models left are the ones that can run your job. The response also shows supported_durations, generate_audio, seed and pricing_skus.

Field names are from the Video Generation page, read 2026-10-05.

What each field tells you

Fields of GET /v1/videos/models (read 2026-10-05)
FieldWhat to filter onExample value
supported_resolutionsNeeds 1080p["480p", "720p", "1080p"]
supported_aspect_ratiosNeeds 9:16["16:9", "9:16"]
supported_frame_imagesNeeds an end frame["first_frame", "last_frame"]
supported_input_referencesNeeds reference clips["image_url", "video_url"]
generate_audioNeeds soundtrue
pricing_skusCompare costper-second or per-1000-video-tokens SKU

Why filter instead of hard-coding

The catalog changes as models are added, and the endpoint is the one place that always matches what the API will accept. A hard-coded table of limits goes stale; a filter does not. Check it before each batch rather than once.

Seedance rows price per 1,000 video tokens while the rest price per second, so the pricing_skus keys differ between rows.

  • Filter first, then compare pricing_skus of what remains.
  • Fall back to sume/auto when nothing matches your filter exactly.
  • Log the chosen id with each job.

Script

Lists models that take 9:16, 1080p and a last frame.

import os, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
r = requests.get("https://api.sume.com/v1/videos/models", headers=H)
r.raise_for_status()
for m in r.json()["data"]:
    ok = (
        "1080p" in (m.get("supported_resolutions") or [])
        and "9:16" in (m.get("supported_aspect_ratios") or [])
        and "last_frame" in (m.get("supported_frame_images") or [])
    )
    if ok:
        print(m["id"], m.get("pricing_skus"))

Sources

Related posts

More in Developers

All Developers posts

Written by Sume