Skip to main content
GET
/
wealth
/
accounts
/
{account_id}
/
portfolios
/
{portfolio_id}
/
holdings
Get portfolio holdings
curl --request GET \
  --url https://service.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"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.bluumfinance.com/llms.txt

Use this file to discover all available pages before exploring further.

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