When stream: true is set, image data is delivered in real time as it's generated. The server sends events with the text/event-stream content type.

What you'll receive

EventWhen it firesWhat it contains
successAn image was generatedurl or b64_json, plus metadata
errorAn image failed to generateError code and message
completeAll images are doneFinal usage totals
[DONE]Stream ended(nothing more to read)

Example

event: success
data: {"created":1719000000,"index":0,"url":"https://..."}

event: complete
data: {"created":1719000000,"usage":{"images":1,"total_tokens":4096}}

data: [DONE]

Errors during streaming

If a specific image fails, you'll get an event: error with details for that image — the stream continues for the rest.

If all routes fail at the gateway level, you'll get a single error message followed by [DONE]:

data: {"error":{"message":"Failed to generate image (500): ...","type":"upstream_error"}}

data: [DONE]

In practice: event: error = one image failed (others may succeed). A bare data: {"error":...} with no event: prefix = everything failed.

Cancelling a stream

  • curl: Press Ctrl+C to cancel
  • HTTP client: Set a timeout on your request
  • SDK: Use rb.image(...).stream() which handles parsing for you

Next steps

Async tasks · Provider-specific streaming examples in sidebar