Skip to main content
GET
/
wealth
/
accounts
/
{account_id}
/
portfolios
/
{portfolio_id}
/
holdings
Get portfolio holdings
curl --request GET \
  --url https://api.bluumfinance.com/v1/wealth/accounts/{account_id}/portfolios/{portfolio_id}/holdings \
  --header 'Authorization: Basic <encoded-value>'
{
  "portfolio_id": "port_a1b2c3d4e5f6",
  "currency": "USD",
  "as_of": "2025-01-15T16:00:00Z",
  "cash": {
    "balance": "10000.00",
    "available": "9500.00",
    "reserved": "500.00"
  },
  "holdings": [
    {
      "position_id": "pos_001",
      "asset_id": "asset_vti",
      "symbol": "VTI",
      "name": "Vanguard Total Stock Market ETF",
      "asset_class": "equities",
      "sector": "diversified",
      "quantity": "100.00",
      "average_cost_basis": "200.00",
      "total_cost_basis": "20000.00",
      "current_price": "225.00",
      "market_value": "22500.00",
      "unrealized_pl": "2500.00",
      "unrealized_pl_percent": "12.50",
      "weight_percent": "18.00",
      "price_source": "ALPACA",
      "price_confidence": "REAL_TIME",
      "price_timestamp": "2025-01-15T15:59:00Z"
    },
    {
      "position_id": "pos_002",
      "asset_id": "asset_bnd",
      "symbol": "BND",
      "name": "Vanguard Total Bond Market ETF",
      "asset_class": "fixed_income",
      "sector": "bonds",
      "quantity": "200.00",
      "average_cost_basis": "75.00",
      "total_cost_basis": "15000.00",
      "current_price": "78.00",
      "market_value": "15600.00",
      "unrealized_pl": "600.00",
      "unrealized_pl_percent": "4.00",
      "weight_percent": "12.48",
      "price_source": "ALPACA",
      "price_confidence": "REAL_TIME",
      "price_timestamp": "2025-01-15T15:59:00Z"
    }
  ],
  "totals": {
    "total_value": "125000.00",
    "total_cost_basis": "100000.00",
    "total_unrealized_pl": "25000.00",
    "total_unrealized_pl_percent": "25.00"
  }
}

Authorizations

Authorization
string
header
required

HTTP Basic Authentication using the API Key as username and API Secret as password.

Path Parameters

account_id
string<uuid>
required
portfolio_id
string<uuid>
required

Query Parameters

refresh_prices
boolean
default:false

Fetch live market prices

include_lots
boolean
default:false

Include tax lot details

group_by
enum<string>
default:none

Group holdings by category

Available options:
asset_class,
sector,
none

Response

Portfolio holdings retrieved successfully

Detailed breakdown of portfolio positions

portfolio_id
string<uuid>
currency
string
as_of
string<date-time>
cash
object
holdings
object[]
totals
object