Reduce video vendor lock-in: swap the model field, keep the pipeline

Keep the video model id in config, read each model's limits from the catalog, and your pipeline survives a vendor change. A script that lists limits.

5 min readSume
All posts

To reduce lock-in to one video vendor, keep the model id and its limits in one config value and read the limits from the catalog at start-up, so switching is a one-line change. On Sume the same POST /v1/videos request shape takes a different model value, and GET /v1/videos/models lists each model's resolutions, aspect ratios, and durations. Higgsfield has been reported to have raised $400 million (a PR Newswire release title, read 2026-10-02); that is not a reason to avoid it, only a reason not to hard-code any single vendor.

Request and catalog facts are from Sume's Video generation docs; the funding line is from the release title.

What must stay model-specific?

Limits are not uniform. The docs say seedance-2.5 accepts 4 to 30 seconds, wan-3.0 2 to 30, gemini-omni-flash-1.1 3 to 10, and every other catalog model tops out at 15. Put those in a config that the code validates against, not in prompts.

Per-model duration limits from Sume's Video generation docs, read 2026-10-02.
Model idAccepted duration
seedance-2.54 to 30 seconds
wan-3.02 to 30 seconds
minimax-h35 to 15 seconds
gemini-omni-flash-1.13 to 10 seconds

How do I read the live limits?

The catalog is the source of truth, and the script below prints each model's resolutions, duration range, and ratios. Run it on deploy and fail the build if your configured model no longer lists the values you use.

import os
import requests

URL = "https://api.sume.com/v1/videos/models"
HEAD = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}

for m in requests.get(URL, headers=HEAD, timeout=30).json()["data"]:
    secs = m.get("supported_durations") or []
    print(
        m["id"],
        m.get("supported_resolutions"),
        f"{min(secs)}-{max(secs)}s" if secs else "n/a",
        m.get("supported_aspect_ratios"),
    )

What about prompts?

Prompts that name one model's quirks break on another. Keep model-specific wording in a per-model field and the shared brief in the pipeline. Is there one API for Kling, Seedance and Veo with a single bill? covers the single-bill side.

What does this not fix?

Output differs by model even for the same prompt, so a switch still needs a visual check. See a three-model bake-off.

A simple structure is a config file with one entry per model: id, allowed durations, allowed ratios, and a prompt suffix. The pipeline reads the entry, validates the request against it, and refuses to send a request the model would reject. Add a second entry as a fallback and test the switch once a month, so it works when you actually need it.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume