> ## 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 native staking portfolio history

> Returns the SOL staked by the wallets in `ids`, across all their stake accounts, at each point of the window, oldest first. Each point has `timestamp`; `baseStakeAndRewardsSol`, the stake plus rewards; `rewardsSol`, the rewards earned so far; and both in USD at the SOL price of that point (`baseStakeAndRewardsUsd`, `rewardsUsd`). The list is empty when the wallets have no stake accounts.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/stake/wallets/portfolio
openapi: 3.1.0
info:
  title: Starke API
  version: 1.0.0
servers:
  - url: https://api.starke.finance
    description: Production
security: []
paths:
  /v1/stake/wallets/portfolio:
    get:
      tags:
        - Native staking
      summary: Get native staking portfolio history
      description: >-
        Returns the SOL staked by the wallets in `ids`, across all their stake
        accounts, at each point of the window, oldest first. Each point has
        `timestamp`; `baseStakeAndRewardsSol`, the stake plus rewards;
        `rewardsSol`, the rewards earned so far; and both in USD at the SOL
        price of that point (`baseStakeAndRewardsUsd`, `rewardsUsd`). The list
        is empty when the wallets have no stake accounts.
      operationId: getV1StakeWalletsPortfolio
      parameters:
        - name: ids
          in: query
          required: true
          schema:
            type: string
          description: Comma-separated staker wallet addresses, 1 to 50 of them.
          example: Wa11et1111111111111111111111111111111111111
        - 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:
                - baseStakeAndRewardsSol: 102.5
                  baseStakeAndRewardsUsd: 15400.625
                  rewardsSol: 2.5
                  rewardsUsd: 375.625
                  timestamp: '2026-11-01T00:00:00.000Z'
        '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, including when no SOL price is recorded at or
            before the window's first point. 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.