Skip to content

portfolio

Methods exposed through client.portfolio.

nft_contracts(...)

Fetches NFT contracts held by wallet addresses, with aggregate collection-level metadata.

Parameters:

Name Type Description Default
request NftContractsRequest

Request payload.

required
validate bool | None

Validation override for this request.

None

Returns:

Type Description
NftContractsResponse

The validated endpoint response.

References
Source code in pkg/src/alchemy/api/portfolio/nft_contracts.py
async def __call__(self, request: NftContractsRequest, *, validate: bool | None = None) -> NftContractsResponse:
  """Fetches NFT contracts held by wallet addresses, with aggregate collection-level metadata.

  Args:
    request: Request payload.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [Alchemy API docs](https://www.alchemy.com/docs/data/portfolio-apis/portfolio-api-endpoints/portfolio-api-endpoints/get-nft-contracts-by-address)
    """
  r = await self.request(
    'POST', '/assets/nfts/contracts/by-address',
    json=request
  )

  if r.status_code != 200:
    self.raise_error(r)
  return adapter.json(r.text) if self.should_validate(validate) else r.json()

nft_contracts.paged

Paged version of the NFT contracts endpoint.

Parameters:

Name Type Description Default
request NftContractsBaseRequest

Request payload.

required
validate bool | None

Validation override for each request.

None

Returns:

Type Description
PaginatedResponse[NftContract, str]

An async iterable and awaitable paginated response over NFT contracts.

References
Source code in pkg/src/alchemy/api/portfolio/nft_contracts.py
def paged(
  self, request: NftContractsBaseRequest, *, validate: bool | None = None,
) -> PaginatedResponse[NftContract, str]:
  """Paged version of the NFT contracts endpoint.

  Args:
    request: Request payload.
    validate: Validation override for each request.

  Returns:
    An async iterable and awaitable paginated response over NFT contracts.

  References:
    - [Alchemy API docs](https://www.alchemy.com/docs/data/portfolio-apis/portfolio-api-endpoints/portfolio-api-endpoints/get-nft-contracts-by-address)
  """
  async def next(state: str):
    page_request: NftContractsRequest = {**request}
    if state:
      page_request['pageKey'] = state
    response = await self(page_request, validate=validate)
    return response['data']['contracts'], response['data'].get('pageKey')

  return PaginatedResponse('', next)

nfts(...)

Fetches NFTs held by wallet addresses, with optional metadata and filtering controls.

Parameters:

Name Type Description Default
request PortfolioNftsRequest

Request payload.

required
validate bool | None

Validation override for this request.

None

Returns:

Type Description
PortfolioNftsResponse

The validated endpoint response.

References
Source code in pkg/src/alchemy/api/portfolio/nfts.py
async def __call__(self, request: PortfolioNftsRequest, *, validate: bool | None = None) -> PortfolioNftsResponse:
  """Fetches NFTs held by wallet addresses, with optional metadata and filtering controls.

  Args:
    request: Request payload.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [Alchemy API docs](https://www.alchemy.com/docs/data/portfolio-apis/portfolio-api-endpoints/portfolio-api-endpoints/get-nfts-by-address)
    """
  r = await self.request('POST', '/assets/nfts/by-address', json=request)

  if r.status_code != 200:
    self.raise_error(r)
  return adapter.json(r.text) if self.should_validate(validate) else r.json()

nfts.paged

Paged version of the NFTs endpoint.

Parameters:

Name Type Description Default
request PortfolioNftsBaseRequest

Request payload.

required
validate bool | None

Validation override for each request.

None

Returns:

Type Description
PaginatedResponse[PortfolioNft, str]

An async iterable and awaitable paginated response over NFTs.

References
Source code in pkg/src/alchemy/api/portfolio/nfts.py
def paged(
  self, request: PortfolioNftsBaseRequest, *, validate: bool | None = None,
) -> PaginatedResponse[PortfolioNft, str]:
  """Paged version of the NFTs endpoint.

  Args:
    request: Request payload.
    validate: Validation override for each request.

  Returns:
    An async iterable and awaitable paginated response over NFTs.

  References:
    - [Alchemy API docs](https://www.alchemy.com/docs/data/portfolio-apis/portfolio-api-endpoints/portfolio-api-endpoints/get-nfts-by-address)
  """
  async def next(state: str):
    page_request: PortfolioNftsRequest = {**request}
    if state:
      page_request['pageKey'] = state
    response = await self(page_request, validate=validate)
    return response['data']['ownedNfts'], response['data'].get('pageKey')

  return PaginatedResponse('', next)

token_balances(...)

Fetches fungible token balances for multiple wallet addresses and networks.

Parameters:

Name Type Description Default
request TokenBalancesRequest

Request payload.

required
validate bool | None

Validation override for this request.

None

Returns:

Type Description
TokenBalancesResponse

The validated endpoint response.

References
Source code in pkg/src/alchemy/api/portfolio/token_balances.py
async def __call__(self, request: TokenBalancesRequest, *, validate: bool | None = None) -> TokenBalancesResponse:
  """Fetches fungible token balances for multiple wallet addresses and networks.

  Args:
    request: Request payload.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [Alchemy API docs](https://www.alchemy.com/docs/data/portfolio-apis/portfolio-api-endpoints/portfolio-api-endpoints/get-token-balances-by-address)
    """
  r = await self.request(
    'POST', '/assets/tokens/balances/by-address',
    json=request
  )

  if r.status_code != 200:
    self.raise_error(r)
  return adapter.json(r.text) if self.should_validate(validate) else r.json()

token_balances.paged

Paged version of the token balances endpoint.

Parameters:

Name Type Description Default
request TokenBalancesBaseRequest

Request payload.

required
validate bool | None

Validation override for each request.

None

Returns:

Type Description
PaginatedResponse[PortfolioTokenBalance, str]

An async iterable and awaitable paginated response over token balances.

References
Source code in pkg/src/alchemy/api/portfolio/token_balances.py
def paged(
  self, request: TokenBalancesBaseRequest, *, validate: bool | None = None,
) -> PaginatedResponse[PortfolioTokenBalance, str]:
  """Paged version of the token balances endpoint.

  Args:
    request: Request payload.
    validate: Validation override for each request.

  Returns:
    An async iterable and awaitable paginated response over token balances.

  References:
    - [Alchemy API docs](https://www.alchemy.com/docs/data/portfolio-apis/portfolio-api-endpoints/portfolio-api-endpoints/get-token-balances-by-address)
  """
  async def next(state: str):
    page_request: TokenBalancesRequest = {**request}
    if state:
      page_request['pageKey'] = state
    response = await self(page_request, validate=validate)
    return response['data']['tokens'], response['data'].get('pageKey')

  return PaginatedResponse('', next)

tokens(...)

Fetches fungible tokens for multiple wallet addresses and networks, optionally including metadata and prices.

Parameters:

Name Type Description Default
request TokensRequest

Request payload.

required
validate bool | None

Validation override for this request.

None

Returns:

Type Description
TokensResponse

The validated endpoint response.

References
Source code in pkg/src/alchemy/api/portfolio/tokens.py
async def __call__(self, request: TokensRequest, *, validate: bool | None = None) -> TokensResponse:
  """Fetches fungible tokens for multiple wallet addresses and networks, optionally including metadata and prices.

  Args:
    request: Request payload.
    validate: Validation override for this request.

  Returns:
    The validated endpoint response.

  References:
    - [Alchemy API docs](https://www.alchemy.com/docs/data/portfolio-apis/portfolio-api-endpoints/portfolio-api-endpoints/get-tokens-by-address)
    """
  r = await self.request('POST', '/assets/tokens/by-address', json=request)

  if r.status_code != 200:
    self.raise_error(r)
  return adapter.json(r.text) if self.should_validate(validate) else r.json()

tokens.paged

Paged version of the tokens endpoint.

Parameters:

Name Type Description Default
request TokensBaseRequest

Request payload.

required
validate bool | None

Validation override for each request.

None

Returns:

Type Description
PaginatedResponse[PortfolioToken, str]

An async iterable and awaitable paginated response over tokens.

References
Source code in pkg/src/alchemy/api/portfolio/tokens.py
def paged(
  self, request: TokensBaseRequest, *, validate: bool | None = None,
) -> PaginatedResponse[PortfolioToken, str]:
  """Paged version of the tokens endpoint.

  Args:
    request: Request payload.
    validate: Validation override for each request.

  Returns:
    An async iterable and awaitable paginated response over tokens.

  References:
    - [Alchemy API docs](https://www.alchemy.com/docs/data/portfolio-apis/portfolio-api-endpoints/portfolio-api-endpoints/get-tokens-by-address)
  """
  async def next(state: str):
    page_request: TokensRequest = {**request}
    if state:
      page_request['pageKey'] = state
    response = await self(page_request, validate=validate)
    return response['data']['tokens'], response['data'].get('pageKey')

  return PaginatedResponse('', next)

transactions

See portfolio.transactions.