---
title: Video Router
description: Explicit pass-through video generation via the Video Router catalog, including Seedance.
---

New integrations should use [Video generation](/models/videos)
(`POST /v1/videos`) instead — it is the same catalog and the same jobs behind an
OpenRouter-compatible wire. Video Router stays available and unchanged.

Video Router is Sume's **explicit model catalog** for video generation. You pick
a catalog `model` id from `GET /v1/video-router/models` (for example Seedance);
Sume bills list × 1.25 (MiniMax H3 Max × 1.15) and returns the usual async job
envelope.

For new integrations, prefer [Video Router Auto](/models/videos) via
`POST /v1/videos` with `model: "sume/auto"`. [Video 1.0](/models/video) is
retiring soon and remains a compatibility alias for the same Auto pipe.
Auto create controls default to 720p and 8s, with 3–10s clips at 16:9 or 9:16.

Primary invoke URL:

```text
POST /v1/video-router/generate
```

Catalog:

```text
GET /v1/video-router/models
GET /v1/video-router/models/{model_id}
```

## When to use

| Goal | Approach |
|---|---|
| Let Sume pick | Use [Video Router Auto](/models/videos) + `model: "sume/auto"` |
| Pin a catalog model (e.g. Seedance) | Video Router + `model` from the catalog |

## Create a Video Router job

```bash
curl -X POST https://api.sume.com/v1/video-router/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: video-router-001" \
  -d '{
    "model": "seedance-2.5",
    "prompt": "A vertical UGC-style product clip on a desk, natural light",
    "resolution": "720p",
    "duration": 12,
    "aspect_ratio": "9:16",
    "mode": "async"
  }'
```

Limits are per model — `seedance-2.5` accepts 4–30s at 480p/720p/1080p,
`wan-3.0` accepts 2–30s, and `minimax-h3` accepts 5–15s at native 480p/768p
(768p is first-class, not 720p). Every other catalog model is capped at 15s.
`seedance-2` also offers 1080p. `minimax-h3-max` (MiniMax H3 Max) is the faster
768p variant: text-to-video, start/end-frame image-to-video, and
reference-to-video (`reference_*_urls`) at 480p/768p for 5–15s, billed at
provider list × 1.15 instead of the × 1.25 house margin. `gemini-omni-flash-1.1` (Gemini Omni Flash 1.1) is
3–10s at 360p/720p/1080p/4K, 16:9 or 9:16, with native synced audio always on.
Read `capabilities` from `GET /v1/video-router/models` rather than assuming one
envelope.

## Gemini Omni Flash 1.1

`gemini-omni-flash-1.1` is one catalog id that Sume routes by the shape of the
request — you never pick an endpoint:

| Capability | Send | Notes |
|---|---|---|
| `text_to_video` | `prompt` | 3–10s, `resolution` 360p–4K, `aspect_ratio` 16:9 / 9:16 |
| `image_to_video` | `image_url` (+ optional `end_image_url`) | same envelope |
| `reference_to_video` | `reference_image_urls` (≤10) and/or `reference_video_urls` (≤3, each ≤3s) | address media as `<IMAGE_REF_0>`, `<VIDEO_REF_0>` (0-based, list order) |
| `video_to_video` (edit) | `video_url` | prompt describes the edit; `resolution` optional (default 720p); no `aspect_ratio` / `duration` |

Native audio is always on (`generate_audio: false` is rejected); there is no
`bitrate_mode` and no `reference_audio_urls`. Billing is provider list × 1.25
per output second by resolution.

Edit example:

```bash
curl -X POST https://api.sume.com/v1/video-router/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: video-router-edit-001" \
  -d '{
    "model": "gemini-omni-flash-1.1",
    "prompt": "Replace the bottle with an apple. Keep everything else the same.",
    "video_url": "https://example.com/clip.mp4",
    "resolution": "720p",
    "mode": "async"
  }'
```

`video_url` is the edit source, not a reference: it cannot be combined with
`image_url`, `end_image_url`, or `reference_*_urls`.

See the [API reference](/api/reference) OpenAPI paths under **Video Router** for
the full request schema and catalog fields.
