---
title: "Get current portfolio for a strategy"
method: GET
path: "/strategies/{strategy_uuid}/portfolio"
tags: ["Portfolio"]
---

# Get current portfolio for a strategy

`GET /strategies/{strategy_uuid}/portfolio`

## Request

- Base URL: `https://kovatools.com/api/v1`
- URL: `https://kovatools.com/api/v1/strategies/{strategy_uuid}/portfolio`
- Auth: HTTP bearer

Returns the most recent composed portfolio for a strategy — normalized brokerage
holdings plus any manually tracked assets and liabilities, combined with
performance metrics.

Returns 404 if the strategy has no portfolio on file (never evaluated and no
manual holdings). To update the portfolio, submit a new one via
`POST /strategies/{uuid}/briefs`.

## Path parameters

- `strategy_uuid` string, uuid, required

## Response `200`

Portfolio found

- object
  - `portfolio` Portfolio
    - `holdings` object: Composed portfolio view — portfolio_v1 schema extended with `assets` and `liabilities` keys for manual holdings tracked alongside the normalized snapshot.
      - `schema_version` string
      - `stocks` object[]
        - `ticker` string
        - `shares` number
        - `cost_basis` number, nullable
        - `current_price` number, nullable
        - `market_value` number, nullable
        - `price_source` 'marketstack' | 'snapshot_price' | 'unavailable'
      - `options` object[]
      - `cash` number
      - `timestamp` string, date-time
      - `notes` string[]
      - `assets` Asset[]: Non-brokerage positions (investment accounts, Bitcoin, real estate, other manually tracked assets)
        - `uuid` string, uuid
        - `name` string
        - `type` 'investment_account' | 'bitcoin' | 'real_estate' | 'other'
        - `ticker` string, nullable
        - `quantity` number, nullable
        - `current_value` number, nullable
        - `cost_basis_per_unit` number, nullable
        - `notes` string, nullable
        - `price_source` 'coingecko' | 'manual', nullable
      - `liabilities` Liability[]: Strategy-level liabilities tracked separately from assets
        - `uuid` string, uuid
        - `name` string
        - `type` 'line_of_credit' | 'mortgage' | 'loan' | 'other'
        - `current_balance` number
        - `notes` string, nullable
    - `metrics` object, nullable: Performance and alignment metrics. `null` if the portfolio has not been evaluated yet.
      - `performance_score` number, nullable
      - `alignment_score` number, nullable
      - `consistency_score` number, nullable
      - `absolute_return_percent` number, nullable
      - `portfolio_value` number, nullable
    - `snapshot_at` string, date-time, nullable: When the portfolio snapshot was uploaded
    - `evaluated_at` string, date-time, nullable: When metrics were last calculated
  - `meta` Meta
    - `request_id` string: Unique request identifier for debugging
    - `timestamp` string, date-time

## Other responses

- `401`: Unauthorized
- `404`: No portfolio on file for this strategy

---

[API](https://skmtc.dev/kovatools/apis/kova-api.md) · [All operations](https://skmtc.dev/kovatools/apis/kova-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kovatools/apis/kova-api/revisions/915eb7ffe3b6?raw)
