/v1/videos provider.options returns 400: no passthrough in v1
Non-empty provider.options on /v1/videos returns 400 unsupported_parameter: every model lists allowed_passthrough_parameters as empty. seed and size fail too.

Sume rejects a non-empty provider.options on POST /v1/videos with 400 unsupported_parameter. The reason is in the catalog: each model reports allowed_passthrough_parameters: [], because v1 runs one backend for each model and there is nothing to route options to. An empty { "options": {} } is fine.
Fields that return 400
Three OpenRouter-shaped fields are in the schema but rejected in v1.
| Field | Sume behaviour | Catalog signal |
|---|---|---|
provider.options (non-empty) | 400 unsupported_parameter | allowed_passthrough_parameters: [] |
seed | 400 unsupported_parameter | seed: false |
size | 400 unsupported_parameter | supported_sizes: null |
Why reject instead of ignore
The docs call this intentional. A loud 400 is better than a silent generation of something the caller did not ask for, with a charge for it. The fields stay in the schema so OpenRouter-shaped clients type-check.
What to send instead
Read the catalog before you build the body, and send only the fields a model advertises.
import asyncio, os
import httpx
async def main():
headers = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
async with httpx.AsyncClient(base_url="https://api.sume.com", headers=headers) as c:
r = await c.get("/v1/videos/models")
r.raise_for_status()
for m in r.json()["data"]:
print(m["id"], m["allowed_passthrough_parameters"], m["seed"])
asyncio.run(main())Use first-class fields
If you need something that a provider-specific option would set, look for a first-class field instead: resolution, aspect_ratio, duration, generate_audio, frame_images or input_references. Each model lists what it supports in its catalog row.
Sources
Related posts
More in Developers
- Veo 3.1 Lite: no 4K, no extension. Checklist before Oct 22
Veo 3.1 Lite has no 4K and cannot extend clips, and all three Veo 3.1 preview ids shut down October 22, 2026. Google points to gemini-omni-1.1-flash.
- Veo 3.1 preview ids vs gemini-omni-1.1-flash vs Sume's Omni id
Three Veo 3.1 preview ids end October 22, 2026 and Google names gemini-omni-1.1-flash as the replacement. Sume spells its id gemini-omni-flash-1.1.
- Veo 3.1 deletes clips after 2 days: archive them, and the Sume path
Google keeps Veo 3.1 videos on its server for 2 days, and extending a clip resets the timer. Download on completion. Veo 3.1 is not in the Sume catalog.
- Verify a Sume Avatar Video Webhook in Ruby (HMAC-SHA256)
A Ruby verifier for Sume job webhooks: sign timestamp.raw_body with HMAC-SHA256, accept a rotation header, refuse an empty secret, and dedupe on job_id.
Written by Sume