openai/openai-python · error · APIError

An error occurred during streaming

Error message

An error occurred during streaming

What it means

While processing a server-sent-event stream, if an event payload contains an 'error' key whose message is missing or not a string, the SDK raises APIError with the generic message 'An error occurred during streaming'. It is the fallback message for malformed in-stream error payloads.

Source

Thrown at src/openai/_streaming.py:79

        try:
            for sse in iterator:
                if sse.data.startswith("[DONE]"):
                    break

                # we have to special case the Assistants `thread.` events since we won't have an "event" key in the data
                if sse.event and sse.event.startswith("thread."):
                    data = sse.json()

                    if sse.event == "error" and is_mapping(data) and data.get("error"):
                        message = None
                        error = data.get("error")
                        if is_mapping(error):
                            message = error.get("message")
                        if not message or not isinstance(message, str):
                            message = "An error occurred during streaming"

                        raise APIError(
                            message=message,
                            request=self.response.request,
                            body=data["error"],
                        )

                    yield process_data(data={"data": data, "event": sse.event}, cast_to=cast_to, response=response)
                else:
                    data = sse.json()
                    if is_mapping(data) and data.get("error"):
                        message = None
                        error = data.get("error")
                        if is_mapping(error):
                            message = error.get("message")
                        if not message or not isinstance(message, str):
                            message = "An error occurred during streaming"

                        raise APIError(
                            message=message,

View on GitHub (pinned to 9917c6e28e)

Solutions

  1. Wrap stream iteration in try/except openai.APIError and inspect response/request context to learn more
  2. Check the OpenAI status page or your proxy logs for the underlying upstream error
  3. If running a compatible server, emit errors as {"error": {"message": "..."}} so the real message surfaces

Example fix

# before
for event in stream:
    handle(event)

# after
try:
    for event in stream:
        handle(event)
except openai.APIError as e:
    log.error("stream failed: %s", e)
Defensive patterns

Strategy: try-catch

Try / catch

import openai
try:
    for event in stream:
        handle(event)
except openai.APIError as e:
    log.error("stream error: %s (request=%s)", e.message, e.request)

Prevention

When it happens

Trigger: An SSE stream from a Responses/Chat API yields a JSON event like {"error": {}} or {"error": "non-mapping"} where error.message is absent or not a string, during iteration of stream(...) or the stream created by a streaming request.

Common situations: Intermediate proxies or compatible-server implementations emitting non-standard error events; truncated or malformed stream payloads; API incidents that emit unusual error schemas.

Related errors


AI-assisted analysis of openai/openai-python@9917c6e28e (2026-08-28). Data as JSON: /api/errors/c8d1f3e332b06e11. Report an issue: GitHub.