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

# Get investors' portfolio history

> Returns the value of the investors' fund holdings at each point of the window, oldest first. Each point has `generated_timestamp`; `investment_value_usd`, the holdings' total value; `pnl_usd`, realized plus unrealized profit and loss; `pnl_pct`, that PnL as a percentage of the amount deposited; and `investment_value_usd_by_investor`, the value per investor (every requested investor appears, at 0 if they hold nothing). Every fund the investors have held counts, hidden and closed ones included. The list is empty when the investors have no fund transactions.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/vaults/portfolio
openapi: 3.1.0
info:
  title: Starke API
  version: 1.0.0
servers:
  - url: https://api.starke.finance
    description: Production
security: []
paths:
  /v1/vaults/portfolio:
    get:
      tags:
        - Vaults
      summary: Get investors' portfolio history
      description: >-
        Returns the value of the investors' fund holdings at each point of the
        window, oldest first. Each point has `generated_timestamp`;
        `investment_value_usd`, the holdings' total value; `pnl_usd`, realized
        plus unrealized profit and loss; `pnl_pct`, that PnL as a percentage of
        the amount deposited; and `investment_value_usd_by_investor`, the value
        per investor (every requested investor appears, at 0 if they hold
        nothing). Every fund the investors have held counts, hidden and closed
        ones included. The list is empty when the investors have no fund
        transactions.
      operationId: getV1VaultsPortfolio
      parameters:
        - name: investor_ids
          in: query
          required: true
          schema:
            type: string
          description: Comma-separated investor wallet addresses, 1 to 50 of them.
          example: >-
            Wa11et1111111111111111111111111111111111111,Wa11et2222222222222222222222222222222222222
        - name: start_time
          in: query
          required: true
          schema:
            type: string
            format: date-time
            pattern: >-
              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
          description: The start of the window, an ISO 8601 date-time.
          example: '2026-11-01T00:00:00Z'
        - name: end_time
          in: query
          required: true
          schema:
            type: string
            format: date-time
            pattern: >-
              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
          description: >-
            The end of the window, an ISO 8601 date-time, not before
            `start_time`.
          example: '2026-11-02T00:00:00Z'
        - name: granularity
          in: query
          required: true
          schema:
            type: string
            enum:
              - 15mins
              - 1hour
              - 1day
          description: 'The spacing of the points: `15mins`, `1hour` or `1day`.'
          example: 1hour
      responses:
        '200':
          description: One entry for each point in the window.
          content:
            application/json:
              example:
                - generated_timestamp: '2026-11-01T00:00:00.000Z'
                  investment_value_usd: 2450.5
                  pnl_usd: 120.25
                  pnl_pct: 5.16
                  investment_value_usd_by_investor:
                    Wa11et1111111111111111111111111111111111111: 2100.5
                    Wa11et2222222222222222222222222222222222222: 350
        '400':
          description: >-
            The query is invalid: a JSON body `{ "errors": [{ "path", "message"
            }] }`. When `start_time` is after `end_time`, the body is the plain
            text `Bad Request` instead.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: >-
            An unexpected error. The body is the plain text `Internal Server
            Error`.
      security: []
components:
  schemas:
    ValidationError:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              path:
                type: string
              message:
                type: string
            required:
              - path
              - message
      required:
        - errors

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.