Image generation API streaming: partial images on Sume

Sume's image API does not stream partial images yet: stream true returns 400 streaming_not_supported. Submit async, read events, or use a webhook.

4 min readSume
All posts

No: Sume's image API does not stream partial images today. Every catalog row reports supports_streaming: false, and a request with stream: true is refused with 400 streaming_not_supported. The field exists in the schema so clients can adopt streaming later without a code change.

This comes from the Image API and Jobs and results docs pages, read 2026-09-29.

What do I use instead of a stream?

Pick by what you need to know:

From Image API and Jobs and results, read 2026-09-29.
You wantDo this
The image, and you can wait a bitDefault sync call: it blocks up to 30 seconds and returns 200 with the image.
Progress while it runsSubmit with mode: "async" and read GET /v1/jobs/:id/events.
To be told when it endsSend mode: "webhook" with a webhook_url.
curl -X POST https://api.sume.com/v1/images \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sume/auto",
    "prompt": "a red panda astronaut floating in space",
    "mode": "async"
  }'

curl https://api.sume.com/v1/jobs/job_123/events \
  -H "Authorization: Bearer $SUME_API_KEY"

Does mode subscribe give me progress?

No. On the image route mode: "subscribe" is an alias of sync: one bounded wait of at most 30 seconds, not a progress stream. The docs are explicit that there is no SSE or WebSocket transport on the Developer API today, and that GET /v1/jobs/:id/events is a pull snapshot, not a stream. Poll it.

Why did my request come back 202 instead of an image?

A sync image request that is still running when the 30-second budget ends returns 202 with a job envelope instead of the image body. Check the status code, not the body shape: 200 is the image response, 202 is the job envelope. Slow configurations such as 4K, high quality, and large n are the ones most likely to degrade to 202. Then poll GET /v1/jobs/{id}/status and fetch GET /v1/jobs/{id}/result. GPT Image long request: the 202 job walks through it.

What does a webhook deliver?

Terminal events only: job.completed, job.failed, and job.canceled. There are no progress or partial-image callbacks, so keep status polling available as a backup.

How do I read the finished image?

A 200 sync response carries data[].url, a Sume-hosted, signed URL rather than inline base64, plus a usage.cost in USD. Token counts are always 0 in v1 because image models are metered per image. Copy the files you keep instead of treating the signed URL as permanent. A 202 job is read from the standard job result endpoint, which returns the standard job result shape, not the image body.

Will streaming ship?

The docs say "until native SSE ships" and describe the field as accepted in the schema but rejected at runtime. They give no date, so build on async or webhook today and keep the stream field out of your requests.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume