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

# Retrieve a portfolio

> Returns a portfolio when it is public or owned by the authenticated user. Authentication is required even for public portfolios. For portfolios the caller does not own, the `user_id` field is null.




## OpenAPI

````yaml /api-reference/openapi-v2.json get /portfolios/{portfolioId}
openapi: 3.0.0
info:
  title: Noonum API v2
  version: 2.0.0
  contact:
    name: Noonum Support
    email: hello@noonum.com
  description: >
    Create and manage investment strategies, portfolios, and backtests. The API
    covers the full strategy lifecycle, including creation and editing, the
    archive and revive flow, version submission and run state, result companies,
    evidence, factsheets, exposures, and taxonomy.
servers:
  - url: https://api.noonum.ai/v2
security:
  - bearerAuth: []
tags:
  - name: UserStrategies
    description: Create, read, update, and manage your own investment strategies.
  - name: Helper
    description: >-
      Shared utilities for company lookup and search, objective tooling, and a
      health check.
  - name: Portfolios
    description: Create, read, update, and delete portfolios.
  - name: Backtest
    description: Run a standalone backtest on a portfolio of companies.
paths:
  /portfolios/{portfolioId}:
    parameters:
      - name: portfolioId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: UUID of the portfolio.
    get:
      tags:
        - Portfolios
      summary: Retrieve a portfolio
      description: >
        Returns a portfolio when it is public or owned by the authenticated
        user. Authentication is required even for public portfolios. For
        portfolios the caller does not own, the `user_id` field is null.
      operationId: app.api.v2.portfolios.get
      responses:
        '200':
          description: The portfolio and its holdings.
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      user_id:
                        type: string
                        nullable: true
                        description: >-
                          Owner identifier, null when the caller is not the
                          owner.
                      name:
                        type: string
                      public:
                        type: boolean
                      tags:
                        type: array
                        items:
                          type: string
                        nullable: true
                      source:
                        type: string
                        nullable: true
                      metadata:
                        type: object
                        nullable: true
                      created_at:
                        description: >-
                          Timestamp of when the portfolio was created, as an RFC
                          7231 HTTP date.
                        type: string
                        example: Sat, 05 Apr 2025 17:43:37 GMT
                      updated_at:
                        description: >-
                          Timestamp of when the portfolio was last updated, as
                          an RFC 7231 HTTP date.
                        type: string
                        example: Mon, 07 Apr 2025 18:39:41 GMT
                    required:
                      - id
                      - user_id
                      - name
                      - public
                      - created_at
                      - updated_at
                  - type: object
                    properties:
                      holdings:
                        type: array
                        items:
                          type: object
                          properties:
                            weight:
                              type: number
                              format: float
                              minimum: 0
                              maximum: 1
                            symbol:
                              type: string
                              nullable: true
                            exchange:
                              type: string
                              nullable: true
                            market:
                              type: string
                              nullable: true
                            name:
                              type: string
                              nullable: true
                            raw_payload:
                              type: object
                              nullable: true
                            security_id:
                              type: string
                              format: uuid
                              nullable: true
                            org_id:
                              type: string
                              format: uuid
                              nullable: true
                            market_cap:
                              type: number
                              nullable: true
                            sector:
                              type: string
                              nullable: true
                            industry:
                              type: string
                              nullable: true
                            created_at:
                              description: >-
                                Timestamp of when the holding was created, as an
                                RFC 7231 HTTP date.
                              type: string
                              example: Sat, 05 Apr 2025 17:43:37 GMT
                            updated_at:
                              description: >-
                                Timestamp of when the holding was last updated,
                                as an RFC 7231 HTTP date.
                              type: string
                              example: Mon, 07 Apr 2025 18:39:41 GMT
                          required:
                            - weight
                            - created_at
                            - updated_at
                    required:
                      - holdings
        '401':
          description: Authentication is missing or invalid.
          content:
            application/json:
              schema:
                type: object
                description: A standard error response.
                properties:
                  error:
                    description: A human-readable description of the error.
                    type: string
        '404':
          description: The portfolio was not found.
          content:
            application/json:
              schema:
                type: object
                description: A standard error response.
                properties:
                  error:
                    description: A human-readable description of the error.
                    type: string
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT or API Key
      description: |
        Enter 'Bearer' followed by a space and then your JWT or API Key.
        Example: `Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...`
        or `Bearer YOUR_API_KEY_HERE`

````