> This page is for SDKs, version Legacy.
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

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

## 0.44.4

**`(fix):`** Non-2xx responses with a body are now returned as errors instead of successes.
`parse_response` and `parse_response_raw` only consulted the status code inside
their empty-body branch, so any error response that carried a payload was
deserialized into the success type and returned `Ok`. When the success type can
absorb an arbitrary object — all-optional fields, a bare `Value`, a defaulted
collection — the call looked like an empty-but-successful result: a 401 surfaced
as "no results found" and the process exited 0, which a calling script reads as
"nothing to do". The status is now checked before deserialization in both
methods, and the response body is carried through as the `ApiError::Http`
message so the server's own error detail reaches the caller.

This also closes the gap left by the executor path: `send_request`
short-circuits to `executor.execute(...)` when a custom `RequestExecutor` is
installed, bypassing `execute_with_retries` — previously the only place the
status was inspected. Checking in the parsers covers both paths.