You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
parse_response crashes with TypeError when a message item has content:null #3840
Follow-up to #3325 (fixed for output: null in #3345).
Same crash one level deeper: when the API returns a message output item with content: null, parse_response (src/openai/lib/_parsing/_responses.py) raises a raw TypeError: 'NoneType' object is not iterable instead of parsing.
Repro (both paths hit it, sync and async):
client.responses.parse(model="...", input="...")
# API returns output: [{"id": ..., "type": "message", "role": "assistant",# "status": "completed", "content": null}]# -> TypeError: 'NoneType' object is not iterable
This also breaks streaming when response.completed carries explicit output with a null-content message, since explicit completion output is passed straight through to parse_response.
Null reaches the parser because stream events are built without validation, and the same payload passes the non-streaming path too (verified with a mocked transport). Treating null content as empty — the same or [] idiom #3345 used for output — fixes it. PR follows.
Thanks for the clear repro! We confirmed the crash with a mocked response, and #3851 safely treats null message content as empty. We haven’t found a production path that emits this payload, so we’re treating this as defensive hardening.
Activity
marcuswood-oai commentedon Sep 18, 2026
Thanks for the clear repro! We confirmed the crash with a mocked response, and #3851 safely treats null message content as empty. We haven’t found a production path that emits this payload, so we’re treating this as defensive hardening.
soroush5 commentedon Sep 18, 2026
Thanks for confirming and for the fix in #3851.
fix(lib): treat null message content as empty in parse_response (open…