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

# Asset Details

> How to render an asset detail view: fundamentals, price charts, user metrics, recent activity

The Asset Details screen composes fundamentals, price history charts, user-specific investment metrics, and recent activity for a selected instrument.

<Info>
  You render this screen by fetching four endpoints: product fundamentals, price history for charts, the user's investment details, and the recent activity feed.
</Info>

## Prerequisites

* Backend access to the endpoints
* Bearer token with `read:users` scope
* `x-user-id` header to apply the correct user context

## What to fetch

<AccordionGroup>
  <Accordion title="Asset fundamentals">
    Use `GET /investment-products/{isin}/fundamentals` to retrieve pricing, trading tags, and the fundamentals set.

    **For ETFs:** Holdings, expense ratio, index stats, geography/sector distributions, about section (provider, replication method, tracked index), and news.

    **For Stocks:** Company information (CEO, headquarters, employees, website), financial metrics (PE ratio, EPS, market cap, dividend yield, beta), analyst ratings (buy/sell/hold percentages, price targets), and news.
  </Accordion>

  <Accordion title="Price history for charts">
    Use `GET /investment-products/{isin}/price-history` to retrieve historical price data organized by tenor (1w, 1m, 3m, 6m, 1y, max). Each tenor includes timestamped price points, returns percentage, and a flag indicating intraday vs daily granularity.
  </Accordion>

  <Accordion title="User investment details">
    Use `GET /investment-products/{isin}/investment-details` to retrieve the user's current value, allocation, share count, performance, average price per share, and total dividends. The user must hold the asset.
  </Accordion>

  <Accordion title="Recent activity">
    Use `GET /investment-products/{isin}/recent-activity?limit=25` to fetch the latest orders and dividends related to the asset, sorted by display date descending.
  </Accordion>
</AccordionGroup>

## Fundamentals fields by asset type

The fundamentals response varies depending on whether the instrument is a stock or an ETF, and within ETFs, by asset class. The tables below show which fields and sections are present for each type.

### Key facts

| Display name  | Field                         | Stock | Equity ETF | Bond ETF | Commodity ETF | Real Estate ETF | Ready-Made | Money Market |
| ------------- | ----------------------------- | ----- | ---------- | -------- | ------------- | --------------- | ---------- | ------------ |
| Base currency | `fundamentals.baseCurrency`   | ✗     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Income        | `fundamentals.about.income`   | ✗     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Expense ratio | `fundamentals.expenseRatio`   | ✗     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Provider      | `fundamentals.about.provider` | ✗     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |

### Metrics

| Display name      | Field                                    | Stock | Equity ETF | Bond ETF | Commodity ETF | Real Estate ETF | Ready-Made | Money Market |
| ----------------- | ---------------------------------------- | ----- | ---------- | -------- | ------------- | --------------- | ---------- | ------------ |
| Market cap        | `fundamentals.metrics.marketCap`         | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |
| Beta              | `fundamentals.metrics.beta`              | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |
| P/E ratio         | `fundamentals.metrics.peRatio`           | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |
| Forward P/E ratio | `fundamentals.metrics.forwardPE`         | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |
| Forward P/E ratio | `fundamentals.indexStats.fpEarnings`     | ✗     | ✓          | ✗        | ✗             | ✓               | ✗          | ✓            |
| EPS               | `fundamentals.metrics.eps`               | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |
| Dividend yield    | `fundamentals.metrics.dividendYield`     | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |
| Dividend yield    | `fundamentals.indexStats.dividendYield`  | ✗     | ✓          | ✗        | ✗             | ✓               | ✗          | ✓            |
| Annualised return | `fundamentals.indexStats.expectedReturn` | ✗     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Risk              | `fundamentals.indexStats.annualRisk`     | ✗     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Yield             | `fundamentals.indexStats.bondYield`      | ✗     | ✗          | ✓        | ✗             | ✗               | ✗          | ✗            |
| Coupon            | `fundamentals.indexStats.coupon`         | ✗     | ✗          | ✓        | ✗             | ✗               | ✗          | ✗            |

<Note>
  Fields return `"-"` as a string value when the underlying data is unavailable from the data provider.
</Note>

### About

| Display name | Field                             | Stock | Equity ETF | Bond ETF | Commodity ETF | Real Estate ETF | Ready-Made | Money Market |
| ------------ | --------------------------------- | ----- | ---------- | -------- | ------------- | --------------- | ---------- | ------------ |
| Ticker       | `fundamentals.about.ticker`       | ✓     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Exchange     | `fundamentals.about.exchange`     | ✓     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| ISIN         | `fundamentals.about.isin`         | ✓     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Description  | `fundamentals.about.description`  | ✓     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Asset class  | `fundamentals.about.assetClass`   | ✗     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Name         | `fundamentals.about.advancedName` | ✗     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Replication  | `fundamentals.about.replication`  | ✗     | ✓          | ✓        | ✓             | ✓               | ✓          | ✓            |
| Index        | `fundamentals.about.index`        | ✗     | ✓          | ✓        | ✓             | ✓               | ✗          | ✓            |
| Sector       | `fundamentals.about.sector`       | ✓     | ✓          | ✗        | ✗             | ✗               | ✗          | ✗            |
| Industry     | `fundamentals.about.industry`     | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |
| Employees    | `fundamentals.about.employees`    | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |
| Website      | `fundamentals.about.website`      | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |
| CEO          | `fundamentals.about.ceo`          | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |
| Headquarters | `fundamentals.about.headquarters` | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |

### Top holdings & analyst views

| Section       | Field                       | Stock | Equity ETF | Bond ETF | Commodity ETF | Real Estate ETF | Ready-Made | Money Market |
| ------------- | --------------------------- | ----- | ---------- | -------- | ------------- | --------------- | ---------- | ------------ |
| Top holdings  | `fundamentals.topHoldings`  | ✗     | ✓          | ✓        | ✗             | ✗               | ✗          | ✗            |
| Analyst views | `fundamentals.analystViews` | ✓     | ✗          | ✗        | ✗             | ✗               | ✗          | ✗            |

<Note>Note that `analystViews` may be `undefined` when no analyst coverage exists for a stock.</Note>

<Note>Note that `topHoldings` is also suppressed for some ETFs with `Synthetic` replication.</Note>

## Example: minimal client fetch

<CodeGroup>
  ```javascript Node.js theme={null}
  const BASE = 'https://api.wealthyhood.com';

  async function fetchAssetFundamentals({ token, userId, isin }) {
    const res = await fetch(`${BASE}/investment-products/${isin}/fundamentals`, {
      headers: {
        'Authorization': `Bearer ${token}`,
        'x-user-id': userId,
        'Accept': 'application/json'
      }
    });
    if (!res.ok) throw new Error(`Failed fundamentals: ${res.status}`);
    return res.json();
  }

  async function fetchPriceHistory({ token, isin }) {
    const res = await fetch(`${BASE}/investment-products/${isin}/price-history`, {
      headers: {
        'Authorization': `Bearer ${token}`,
        'Accept': 'application/json'
      }
    });
    if (!res.ok) throw new Error(`Failed price history: ${res.status}`);
    return res.json();
  }

  async function fetchUserInvestmentDetails({ token, userId, isin }) {
    const res = await fetch(`${BASE}/investment-products/${isin}/investment-details`, {
      headers: {
        'Authorization': `Bearer ${token}`,
        'x-user-id': userId,
        'Accept': 'application/json'
      }
    });
    if (!res.ok) throw new Error(`Failed investment details: ${res.status}`);
    return res.json();
  }

  async function fetchRecentActivity({ token, userId, isin, limit = 25 }) {
    const url = new URL(`${BASE}/investment-products/${isin}/recent-activity`);
    if (limit) url.searchParams.set('limit', String(limit));
    const res = await fetch(url.toString(), {
      headers: {
        'Authorization': `Bearer ${token}`,
        'x-user-id': userId,
        'Accept': 'application/json'
      }
    });
    if (!res.ok) throw new Error(`Failed activity: ${res.status}`);
    return res.json();
  }
  ```

  ```bash cURL theme={null}
  # Fundamentals
  curl -X GET 'https://api.wealthyhood.com/investment-products/IE00B4L5Y983/fundamentals' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
    -H 'x-user-id: 64f0c51e7fb3fc001234abcd'

  # Price history for charts
  curl -X GET 'https://api.wealthyhood.com/investment-products/IE00B4L5Y983/price-history' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

  # User investment details
  curl -X GET 'https://api.wealthyhood.com/investment-products/IE00B4L5Y983/investment-details' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
    -H 'x-user-id: 64f0c51e7fb3fc001234abcd'

  # Recent activity (limit 25)
  curl -X GET 'https://api.wealthyhood.com/investment-products/IE00B4L5Y983/recent-activity?limit=25' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
    -H 'x-user-id: 64f0c51e7fb3fc001234abcd'
  ```
</CodeGroup>

<Tip>
  Load fundamentals, price history, user investment details, and recent activity in parallel for faster screen-time-to-first-paint. Ensure you gracefully handle `404` for unknown ISINs and `400` for non-holders when requesting investment details.
</Tip>

## See also

* [API Reference → Get investment product fundamentals](/api-reference/investment-products/investment-product-by-isin)
* [API Reference → Get price history](/api-reference/investment-products/price-history)
* [API Reference → Get user investment details](/api-reference/investment-products/investment-product-investment-details)
* [API Reference → Get recent activity](/api-reference/investment-products/investment-product-recent-activity)
