Point an OpenRouter-style video client at Sume: what changes
Sume's /v1/videos follows the OpenRouter video API field for field. Change the base URL, key and model ids, then handle six documented differences.

A client written for the OpenRouter video generation API works against Sume after you change the base URL, the key and the model ids. Sume's /v1/videos follows that API field for field, and its docs list the handful of places it differs. Fix those and the rest of your code, including polling, stays as it was.
This helps when a launch week sends you hunting for the model that does what you need. Keeping one client means a new model is a catalog id, not a rewrite. Everything here is from Sume's video generation docs, read 2026-10-02. It is a wire-compatibility note, not a partnership or an endorsement by either side.
What do I change first?
Three values. The base URL becomes https://api.sume.com/v1/videos, with no /api segment. The header becomes Authorization: Bearer $SUME_API_KEY. Model ids become bare catalog ids such as seedance-2, because Sume's published contract never carries a provider-org prefix.
Which differences can break a working client?
The table lists the documented deltas that change behavior. Check your code for each one.
| Area | Sume behavior |
|---|---|
size | 400 unsupported_parameter; use resolution and aspect_ratio |
seed | Rejected; no v1 model accepts it |
provider.options | Non-empty value returns 400 unsupported_parameter |
| Webhook envelope | Sume job envelope with x-sume-webhook-signature |
| Idempotency | Send Idempotency-Key; a replay returns the original job |
| Billing | Workspace USD balance, reserved on submit at provider list times 1.25 |
What can I add that the other API lacks?
Sume adds model: "sume/auto", which lets Sume pick the family and echoes sume/auto back. It also exposes the same job at GET /v1/jobs/{id}/status and GET /v1/jobs/{id}/result. Neither is needed for a basic port.
How do I test the port?
Submit one short clip with a pinned id, poll the polling_url until completed, then download from unsigned_urls[0]. Run it with your normal prompt and compare the fields you rely on. If a 400 appears, read the field name against the table above before changing anything else.
Sources
Related posts
More in Integrations
- Product videos from a chat agent: dry run first, then submit
Higgsfield added slash commands in ChatGPT. When an agent makes product videos on Sume's hosted MCP, preview with dry_run, then submit with a key.
- Qwen Code MCP server: add Sume with qwen mcp add --transport http
Add Sume's hosted MCP to Qwen Code with qwen mcp add --transport http: an API-key header, a timeout above 55 s, and include-tools to keep paid tools out.
- Raycast MCP: add Sume's hosted server with Dynamic OAuth
Add Sume to Raycast as an HTTP MCP server: URL, Dynamic OAuth sign-in, read-only by default, and when to switch to an API-key header for paid tools.
- Replit Add MCP server: connect Sume with an X-API-Key header
Replit's Add MCP server flow takes an HTTPS endpoint, optional custom headers and Test and save. Connect Sume's hosted MCP and confirm the tools load.
Written by Sume