Seedance on Video Router or /v1/videos: which endpoint for new code
Sume says new Seedance integrations should use POST /v1/videos. Video Router still works unchanged with the same ids. Here is the field difference.

Use POST /v1/videos for new Seedance code. The Sume docs say Video Router stays available and unchanged, but that new integrations should use the OpenRouter-compatible videos route; both create the same jobs with the same model ids.
That recommendation is about wire format and long-term direction, not about quality: the model behind either path is identical.
What differs between the two?
Per the docs the wire differs, not the catalog. Video Router returns Sume's { "data": ... } job envelope and takes flat image_url and reference_image_urls fields. The videos route returns the OpenRouter-shaped response and takes frame_images and input_references.
The practical effect shows up in client libraries. Anything built against the OpenRouter video wire can be pointed at Sume with a new base URL and key, and the docs list the few places where Sume differs, such as the base path having no /api segment and model ids being bare catalog ids rather than org/slug.
| Item | /v1/video-router/generate | /v1/videos |
|---|---|---|
| Start frame | image_url | frame_images with first_frame |
| References | reference_image_urls | input_references |
| Response | data envelope | OpenRouter-shaped job |
| Model ids | Same | Same |
| Status for new code | Supported, unchanged | Preferred |
Is migration hard?
The docs call it "a path-and-body change with no id remapping". Your seedance-2.5 stays seedance-2.5.
Is there a case for staying on Video Router?
Yes: an existing integration that works. Nothing in the docs says it is going away; only Video 1.0, the older alias, is described as retiring soon. Video Router also has a mode field in its examples and a GET /v1/video-router/models/{model_id} lookup for one model, which the videos docs do not show.
If you have a working Video Router integration and nothing to gain from the OpenRouter shape, leave it. If you maintain several providers behind one client, the videos route lets you share code, and that is the main reason to move.
Run both for a week during a migration: send a small share of traffic to the new path, compare job success, cost and latency, and only then switch the rest.
What should I change first when migrating?
Move the start image into frame_images with frame_type: "first_frame", move references into input_references, and switch your response parser. Remember that if both frame images and references are sent, the videos docs say frame_images takes precedence and the request is image-to-video. Read one API for Seedance and other models for the catalog view.
Billing is the same on both: the docs say Sume bills list times 1.25 on every model. So the choice is a code decision, not a cost decision.
Sources
Related posts
More in Developers
- Retry a Seedance submit safely: Idempotency-Key on /v1/videos
A timed-out POST to /v1/videos can create two paid jobs. Send an Idempotency-Key and a replay returns the original job. Python example included.
- Shotstack render statuses vs Sume job statuses: a map
Shotstack renders go queued, fetching, rendering, saving, done or failed. Sume jobs go queued, processing, completed, failed or canceled. Map them in code.
- Cartesia sonic-3.6-2026-08-27 snapshot: which id Sume accepts
Cartesia's dated snapshot ids never change, but Sume's TTS Router lists only sonic-3.6, 3.5, 3, latest and preview. Here is what that means for repeat takes.
- Sonic 3.5 to 3.6 on Sume TTS: change model, keep the voice id
Cartesia says Sonic 3.6 keeps the voice ids of 3.5. On Sume's TTS Router, move a call from sonic-3.5 to sonic-3.6 by changing only the model field.
Written by Sume