A sume/auto video job shows sume/auto, but bills the real model
A sume/auto job echoes sume/auto in its model field, hides the serving family, and bills at the resolved model's rate. Defaults: 8 s, 720p, sound always on.

A sume/auto video job reports sume/auto in its model field because Sume hides the serving family from responses. Billing uses the resolved family's rate, since sume/auto has no price of its own. For text, frame and reference requests the target is Gemini Omni Flash 1.1: 8 s and 720p by default, $1.00.
What stays opaque
The contract in docs/api/videos.md says job.model, and the model on both submit and poll responses, echo sume/auto verbatim. The resolved family does not appear in public bodies, headers, errors, catalog metadata or OpenAPI examples. The resolution is a pure function of the normalized request and the catalog version, so a replay with the same idempotency key gets the same route and price.
The envelope Auto validates against
Auto fails closed. If your request goes past what the default family supports, you get 400 unsupported_capability, not a quiet reroute to Seedance.
| Field | Auto accepts | Result otherwise |
|---|---|---|
| duration | 3-10 s (default 8 s) | 400 unsupported_capability |
| resolution | 360p, 720p, 1080p, 4K (default 720p) | 400, for example on 480p or 768p |
| aspect_ratio | 16:9 or 9:16 | 400 |
| generate_audio | Omit it, or true | false fails |
| model in responses | sume/auto | Never the resolved id |
Edit requests are the exception
Only a video_url edit request can have Sume select another capable family. If no key is configured or the choice fails, Gemini Omni Flash 1.1 serves the edit. Named models, and explicit Format or product-swap pins, do not change.
What to do in your code
Do not budget from the model string. Read usage.cost on the finished job, and log it with the job id. If you need a fixed price or a fixed model, name the model: the Veo 3.1 note lists what you can name.
When you see unsupported_capability on an Auto job, the message names sume/auto and details.model stays opaque, but supported still lists the values the API accepts. Use that list to fix the request.
curl -X POST https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"sume/auto","prompt":"A hummingbird at a red flower, slow motion","duration":6}'Why Sume designed it this way
Auto is a routing pseudo-model. It is not listed in GET /v1/videos/models, because it is not a model, but the guide documents it. Keeping the resolved family private lets Sume change the default target without breaking clients that parse the response. The cost of that choice is that you cannot assign a cost to Auto from the id alone.
If you must attribute spend per model, name the model in the request. If you can accept the default, record usage.cost and the job id, and treat Auto as one line in your ledger.
Related posts
More in Developers
- Why Sume MCP results show [redacted]: the redaction field list
Sume MCP omits api_key fields and masks secrets and signed URLs as [redacted] in tool results. That is intended, not a failed call.
- Windows PowerShell: install the Sume CLI, watch a 30 s render
Install the Sume CLI on Windows with one irm | iex line, set SUME_API_KEY, then use jobs watch and jobs download on a 30-second video job without resubmitting.
- X Ads API media upload: simple for images, chunked for all media
X's Ads API lists POST media/upload for images only and a chunked upload for all media. Use the chunked route for video you render with Sume.
- Grok Imagine video extension vs chaining clips on Sume
xAI extends a Grok Imagine clip from its final frame. Sume has no extend call for Grok: save the last frame and submit it as first_frame on the next job.
Written by Sume