Home / Class/ APIResponse Class — anthropic-sdk-python Architecture

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.

Extends

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