Move from /v1/video-router/generate to /v1/videos: field map
Video Router still works, but new integrations should use /v1/videos. Same catalog and job ids; the wire and image fields change. What the docs say changes.

Moving off POST /v1/video-router/generate to POST /v1/videos is a path-and-body change with no model id remapping: both routes use the same catalog and create the same jobs. The docs say new integrations should use /v1/videos, and Video Router stays available and unchanged.
What stays the same?
Model ids are shared, so seedance-2.5 on Video Router is seedance-2.5 on /v1/videos. Both routes take an Idempotency-Key, and the same job is also visible at GET /v1/jobs/{id}/status and /result.
What changes in the request?
Video Router takes Sume's flat image_url and reference_image_urls fields and returns Sume's { "data": ... } job envelope. /v1/videos takes frame_images and input_references and returns the OpenRouter-shaped response with polling_url and unsigned_urls.
| Video Router | /v1/videos |
|---|---|
| POST /v1/video-router/generate | POST /v1/videos |
| flat image_url / reference_image_urls fields | frame_images and input_references arrays |
| { data: ... } envelope | id, polling_url, status, model |
| GET /v1/video-router/models | GET /v1/videos/models |
Is there a field that does not carry over?
The /v1/videos request table lists no mode field, while the Video Router example sends mode: "async". On /v1/videos you submit, get a polling_url, and poll or use callback_url.
What does the new call look like?
The Video Router example from the docs, rewritten for /v1/videos with the same model id and settings.
curl -X POST https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: videos-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"}'What about cost and retries after moving?
Billing is reserved on submit at provider list times 1.25, and the poll response reports usage.cost as the Sume billable amount. Sending an Idempotency-Key makes retries safe, because a replay returns the original job.
Because the model vocabulary is shared, a migrated call prices the same way as before; the only work is the path and body change described above.
Sources
Related posts
More in Developers
- Trim an H.265 or AV1 clip by API: which codec comes out?
DaVinci Resolve 21 lists H.265, MV-HEVC and AV1. Sume's exact trim re-encodes to libx264 yuv420p; keyframe trim copies the stream. Input support is not listed.
- waitForRun family: agent, action or format for a run id?
In @sume-com/sdk, waitForRun needs family: format, action or agent because a run id does not say which surface it belongs to. Use agent for Agent Completions.
- Webhook rate limits: Zapier, Airtable, Pipedream vs a bulk of 100
Zapier, Airtable and Pipedream each publish a webhook intake limit. Compare them with a Sume bulk queue of up to 100 items and pick a receiver that fits.
- What not to log from an AI API: keys, signed URLs, private media
Safe to log: request ids, job ids, status and sanitized media metadata. Unsafe: API keys, signed URLs, raw private media URLs and excess user content.
Written by Sume