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
- Wrap stream iteration in try/except openai.APIError and inspect response/request context to learn more
- Check the OpenAI status page or your proxy logs for the underlying upstream error
- 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
- Always wrap SSE iteration in APIError handling
- Log raw frames in debug mode when diagnosing malformed error events
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
- Expected custom parse type to be a subclass of {Stream} or {
- MissingStreamClassError
- Didn't receive a `response.completed` event.
- Missing stream class
- StreamAlreadyConsumed
AI-assisted analysis of openai/openai-python@9917c6e28e (2026-08-28).
Data as JSON: /api/errors/c8d1f3e332b06e11.
Report an issue: GitHub.