> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rhinestone.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Portfolio endpoint

> Fetch a user's aggregated token balances across all supported chains.

The portfolio endpoint returns a user's token balances across all chains Rhinestone supports. Use it to display a unified balance, check which tokens are available before creating an intent, or build balance-aware routing.

## Fetch a portfolio

Pass a user address and your API key to get aggregated balances across all chains:

```ts theme={null}
const baseUrl = "https://v1.orchestrator.rhinestone.dev";
const apiKey = process.env.RHINESTONE_API_KEY;
const accountAddress = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";

const res = await fetch(
  `${baseUrl}/accounts/${accountAddress}/portfolio?filterEmpty=true`,
  {
    headers: {
      "x-api-key": apiKey,
      "x-api-version": "2026-04.blanc",
    },
  }
);

const { portfolio } = await res.json();
```

Each entry in `portfolio` is a token aggregated across chains: `{ symbol, chains: [{ chainId, address, decimals, amount }] }`. Amounts are raw (apply `decimals` to display).

```json theme={null}
{
  "portfolio": [
    {
      "symbol": "USDC",
      "chains": [
        {
          "chainId": "eip155:8453",
          "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
          "decimals": 6,
          "amount": "500000"
        }
      ]
    }
  ]
}
```

## Filter by chain or token

To scope results to specific chains, pass `chainIds` as a repeated query parameter using CAIP-2 ids:

```ts theme={null}
const res = await fetch(
  `${baseUrl}/accounts/${accountAddress}/portfolio?chainIds=eip155:10&chainIds=eip155:8453&filterEmpty=true`,
  {
    headers: {
      "x-api-key": apiKey,
      "x-api-version": "2026-04.blanc",
    },
  }
);
```

To scope to specific tokens, pass `chain:address` pairs as repeated `tokens` parameters:

```ts theme={null}
const usdcOptimism = "eip155:10:0x0b2c639c533813f4aa9d7837caf62653d097ff85";
const usdcBase = "eip155:8453:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";

const res = await fetch(
  `${baseUrl}/accounts/${accountAddress}/portfolio?tokens=${usdcOptimism}&tokens=${usdcBase}`,
  {
    headers: {
      "x-api-key": apiKey,
      "x-api-version": "2026-04.blanc",
    },
  }
);
```

## Next steps

<Card title="Getting a quote" icon="receipt" href="./getting-a-quote">
  Use the portfolio to determine which tokens to include in a quote request.
</Card>
