> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 5.29.1

**`(fix):`** Fixed generated WireMock stubs for OAuth client credentials APIs whose token endpoint is
itself marked as authenticated: the token (and refresh) endpoint stub no longer requires
an `Authorization` header, since the token request is made to obtain the token and cannot
carry one yet.

## 5.29.0

**`(feat):`** Add `stream_abstraction`. With it enabled, streaming endpoints return a `Stream[T]`
(`AsyncStream[T]` for async clients) rather than a plain iterator, mirroring the TypeScript SDK's
`core.Stream`. Iterating the stream still yields the parsed payloads, while `with_metadata()`
yields them wrapped in a `StreamEvent` that also exposes the server-sent event `id`, `event` and
`retry` fields — `for event in client.completions.stream(...).with_metadata()` — so reading an
event id no longer requires dropping down to `with_raw_response`. The request is still only
issued once the stream is iterated, the stream owns the underlying response and releases it when
exhausted, closed or exited as a (asynchronous) context manager, and the raw client's `data` is
the same stream. `AsyncStream` is awaitable, so `await client.completions.stream(...)` and
`async for chunk in client.completions.stream(...)` both work. Defaults to `false`, so signatures
and snippets are unchanged until you opt in.

**`(fix):`** Server-sent events carrying no data, such as comment-only and retry-only frames, are skipped
instead of being parsed as a payload, which previously failed model construction and logged a
warning.

**`(feat):`** `HttpResponse` and `AsyncHttpResponse` expose the underlying `httpx.Response` through a public
`response` property.

**`(fix):`** Fix the generated async examples for streaming endpoints, which awaited the method call —
`response = await client.completions.stream(...)` — even though it returns an async generator and
raises `TypeError: 'async_generator' object can't be awaited`.