Image API stream:true returns 400: use async mode and events
Sume's Image API does not stream yet: stream:true returns 400 streaming_not_supported. Use mode async and read /events for progress, or a webhook.

Sume's POST /v1/images does not support streaming: every catalog row reports supports_streaming: false, and stream: true returns 400 streaming_not_supported. To get progress, submit with mode: "async" and read GET /v1/jobs/:id/events, or use a webhook for the final event.
The stream field is in the schema so that clients can start sending it without a code change when native streaming ships. Until then it is rejected at runtime.
Other fields that return 400
Sume rejects an unlisted field instead of dropping it silently, so a request never runs with settings you did not get.
| Field | Result | Alternative |
|---|---|---|
| stream: true | 400 streaming_not_supported | mode async, then /events |
| seed | 400 unsupported_parameter | None; no model advertises it |
| output_compression | 400 unsupported_parameter | Omit it |
| size with explicit pixels | 400 unsupported_parameter | image_size or aspect_ratio |
The three waits
There are three ways to wait, and subscribe is not a progress stream. mode: "subscribe" is an alias of sync and gives you one bounded 30-second wait.
For a slow job, mode: "async" returns a 202 envelope and you read /events for the job's progress. For a server-to-server flow, mode: "webhook" with a webhook_url delivers the terminal event.
- Interactive UI: show a spinner, use async, poll status.
- Backend: use a webhook and verify its signature with a non-empty secret.
- Scripts: sync with a 30 second wait, and handle 202.
A minimal progress pattern
If your UI needs a progress signal, do not fake a stream. Submit with mode: "async", show the queued state from the envelope, and update on each poll of the status endpoint. When the job reaches a terminal state, switch to the result view. The events endpoint gives you the history of the job for logs or a detail panel.
Because the stream field exists in the schema, a client library may send it by default. Strip it from your request builder until Sume ships native streaming, so a flag from a shared SDK cannot turn into a failed call.
- Strip
streamfrom request bodies. - Use
/eventsfor audit logs, not for tokens.
Billing while you wait
A completed generation is billed in full and a failed or cancelled one is not charged, so waiting through events costs nothing extra. A client that disconnects early is billed as a failed generation, which means no charge. See the Image API docs and the jobs docs.
A closing check for teams moving from another image API: compare the parameter list you send today with the Image API docs line by line. Fields such as seed, output_compression and stream are common in other services, and each returns a clear error here rather than being ignored. That behavior is useful, since a request that runs is a request that did what you asked, but it means a ported client will fail fast the first time. Fix the request builder once, and the rest of the migration is routine.
When native streaming does ship, it will show up in the catalog as supports_streaming: true for the models that offer it. Read that flag at startup rather than assuming, and the same code will keep working across the change.
Sources
Related posts
More in Developers
- Image burst after a model launch: 429 queue_full vs 503 retry plan
Launch week means batches. On Sume, 429 rate_limited, 429 queue_full and 503 provider_capacity_exceeded each need a different retry, plus idempotency keys.
- Sume /v1/images returns 200 or 202: branch on the status code
A slow 4K or xhigh image request on Sume returns 202 with a job envelope, not the image body. A Python client that handles 200, 202 and 502 correctly.
- image_size, aspect_ratio or size: which field wins on Sume
Sume's image API has three size fields. image_size beats aspect_ratio, size takes only a tier, and 4:5 is 1080x1350 portrait. Examples for GPT and Nano Banana.
- image_size or aspect_ratio on Sume: which wins and who accepts it
On Sume's Images API image_size takes priority over aspect_ratio. Custom pixels work on GPT, Seedream, Flux, Qwen and Recraft; size rejects WxH.
Written by Sume