APIResponse Class — anthropic-sdk-python Architecture
Architecture documentation for the APIResponse class in _response.py from the anthropic-sdk-python codebase.
Entity Profile
Dependency Diagram
graph TD c5dafd2e_e591_b4ff_d0c8_67a1204aef83["APIResponse"] 17ce5647_6f06_0676_a4a5_e378a3f57cb1["BaseModel"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|extends| 17ce5647_6f06_0676_a4a5_e378a3f57cb1 2e9c15bb_de03_aa91_93be_0e05db0a552e["_response.py"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|defined in| 2e9c15bb_de03_aa91_93be_0e05db0a552e 7de25db3_09c2_15a2_f360_2fce47628f36["request_id()"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|method| 7de25db3_09c2_15a2_f360_2fce47628f36 dc4c979e_1f25_e27f_cc3e_f1bcdc3b27d0["parse()"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|method| dc4c979e_1f25_e27f_cc3e_f1bcdc3b27d0 1462fd68_77f7_ffc4_dac8_6a8db0e245ad["read()"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|method| 1462fd68_77f7_ffc4_dac8_6a8db0e245ad 126eb9bd_091f_1675_30fa_4b656f7bca0f["text()"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|method| 126eb9bd_091f_1675_30fa_4b656f7bca0f 26e6c89b_c171_b129_b73c_7d8763351be3["json()"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|method| 26e6c89b_c171_b129_b73c_7d8763351be3 dd14509c_7208_301c_ca5b_a2ffe35ec941["close()"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|method| dd14509c_7208_301c_ca5b_a2ffe35ec941 27750240_c560_f486_8702_e6672cb66e08["iter_bytes()"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|method| 27750240_c560_f486_8702_e6672cb66e08 a32ecaef_7aaf_a87a_9c63_3378f9d5e5f5["iter_text()"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|method| a32ecaef_7aaf_a87a_9c63_3378f9d5e5f5 0775cfe6_6b9b_c27e_1567_0d1d04dc7e74["iter_lines()"] c5dafd2e_e591_b4ff_d0c8_67a1204aef83 -->|method| 0775cfe6_6b9b_c27e_1567_0d1d04dc7e74
Relationship Graph
Source Code
src/anthropic/_response.py lines 298–404
class APIResponse(BaseAPIResponse[R]):
@property
def request_id(self) -> str | None:
return self.http_response.headers.get("request-id") # type: ignore[no-any-return]
@overload
def parse(self, *, to: type[_T]) -> _T: ...
@overload
def parse(self) -> R: ...
def parse(self, *, to: type[_T] | None = None) -> R | _T:
"""Returns the rich python representation of this response's data.
For lower-level control, see `.read()`, `.json()`, `.iter_bytes()`.
You can customise the type that the response is parsed into through
the `to` argument, e.g.
```py
from anthropic import BaseModel
class MyModel(BaseModel):
foo: str
obj = response.parse(to=MyModel)
print(obj.foo)
```
We support parsing:
- `BaseModel`
- `dict`
- `list`
- `Union`
- `str`
- `int`
- `float`
- `httpx.Response`
"""
cache_key = to if to is not None else self._cast_to
cached = self._parsed_by_type.get(cache_key)
if cached is not None:
return cached # type: ignore[no-any-return]
if not self._is_sse_stream:
self.read()
parsed = self._parse(to=to)
if is_given(self._options.post_parser):
parsed = self._options.post_parser(parsed)
if isinstance(parsed, BaseModel):
add_request_id(parsed, self.request_id)
self._parsed_by_type[cache_key] = parsed
return cast(R, parsed)
def read(self) -> bytes:
"""Read and return the binary response content."""
try:
return self.http_response.read()
except httpx.StreamConsumed as exc:
# The default error raised by httpx isn't very
# helpful in our case so we re-raise it with
# a different error message.
raise StreamAlreadyConsumed() from exc
def text(self) -> str:
"""Read and decode the response content into a string."""
self.read()
return self.http_response.text
def json(self) -> object:
"""Read and decode the JSON response content."""
self.read()
return self.http_response.json()
def close(self) -> None:
"""Close the response and release the connection.
Domain
Defined In
Extends
Source
Frequently Asked Questions
What is the APIResponse class?
APIResponse is a class in the anthropic-sdk-python codebase, defined in src/anthropic/_response.py.
Where is APIResponse defined?
APIResponse is defined in src/anthropic/_response.py at line 298.
What does APIResponse extend?
APIResponse extends BaseModel.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free