#32487 [Bug]: Streaming /v1/responses success logger crashes with "'dict' object has no attribute 'usage'" โ no spend log written, request goes uncharged
## What happened?
On the proxy, **streaming** requests to `/v1/responses` (OpenAI Responses API surface, `stream=True`) never get a `LiteLLM_SpendLogs` row written, so they are not charged. The client still receives a correct 200 streamed body, but the success-logging callback crashes non-blockingly with:
``` LiteLLM.LoggingError: [Non-Blocking] ... 'dict' object has no attribute 'usage' ```
The crash happens **only** on the streaming Responses path:
| Path | Spend log written? | |---|---| | `/v1/responses`, `stream=True` | โ **crashes โ no row** | | `/v1/responses`, `stream=False` (blocking) | โ fine | | `/v1/chat/completions`, `stream=True` | โ fine |
Because cost is never computed for the streamed responses request, the gateway silently under-bills that surface. The `x-litellm-response-cost` response header is also unreliable here (it's a pre-stream estimate flushed before the body), so the missing spend row is the real signal.
## Root cause
`litellm/litellm_core_utils/litellm_logging.py`, in `Logging._get_assembled_streaming_response`:
```python elif isinstance(result, (ResponseCompletedEvent, ResponseIncompleteEvent, ResponseFailedEvent)): ## return unified Usage oโฆ