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

# Get all current positions for a wallet

> Returns every vault position the wallet currently holds or has pending exposure in (pending deposit or redeem). Fully-exited positions (zero shares, no pending escrow) are excluded. Scoped to the Gauntlet-curated vault set: only positions in publicly listed vaults are returned by default, `include_hidden=true` widens to hidden (enabled but unlisted) vaults, and positions in disabled vaults are never returned.

All monetary metrics include a `usd` field (null when pricing is unavailable). `value.usd` and `pending_deposit_assets.usd` use the current spot price. `cost_basis.usd` and `pnl.realized.usd` are computed by replaying on-chain events against the token's historical price series — the same method used by `GET /v1/users/{wallet}/positions/{vault_id}`. `pnl.unrealized.usd`, `pnl.total.usd`, and `roi_pct.usd` are derived from those.

Cursor-paginated on internal position ID. Default page size 100, max 500.



## OpenAPI

````yaml GET /v1/users/{wallet_address}/positions
openapi: 3.1.0
info:
  title: Gauntlet API
  description: Gauntlet vault data and user positions API.
  contact:
    name: Gauntlet
    url: https://gauntlet.xyz
  license:
    name: ''
  version: 1.0.0
servers:
  - url: https://api.gauntlet.xyz
    description: Production
security: []
tags:
  - name: System
    description: Health checks and Prometheus metrics
  - name: TVL
    description: Aggregate live TVL
  - name: Strategies
    description: Curated strategy groupings with aggregate metrics
  - name: Vaults
    description: Vault listings, details, metrics, timeseries
  - name: Users
    description: Per-wallet position state and timeseries
  - name: Prices
    description: Token price lookups and historical timeseries
paths:
  /v1/users/{wallet_address}/positions:
    get:
      tags:
        - Users
      summary: Get all current positions for a wallet
      description: >-
        Returns every vault position the wallet currently holds or has pending
        exposure in (pending deposit or redeem). Fully-exited positions (zero
        shares, no pending escrow) are excluded. Scoped to the Gauntlet-curated
        vault set: only positions in publicly listed vaults are returned by
        default, `include_hidden=true` widens to hidden (enabled but unlisted)
        vaults, and positions in disabled vaults are never returned.


        All monetary metrics include a `usd` field (null when pricing is
        unavailable). `value.usd` and `pending_deposit_assets.usd` use the
        current spot price. `cost_basis.usd` and `pnl.realized.usd` are computed
        by replaying on-chain events against the token's historical price series
        — the same method used by `GET /v1/users/{wallet}/positions/{vault_id}`.
        `pnl.unrealized.usd`, `pnl.total.usd`, and `roi_pct.usd` are derived
        from those.


        Cursor-paginated on internal position ID. Default page size 100, max
        500.
      operationId: get_user_all_positions
      parameters:
        - name: wallet_address
          in: path
          description: Ethereum wallet address
          required: true
          schema:
            type: string
        - name: next
          in: query
          description: Opaque cursor from previous `meta.next_cursor`.
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: Page size (1–500, default 100).
          required: false
          schema:
            type: integer
            format: int64
        - name: include_hidden
          in: query
          description: >-
            Include positions in hidden (enabled but unlisted) vaults alongside
            visible ones. Positions in disabled vaults are never returned.
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: All wallet positions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAllPositionsResponse'
        '401':
          description: Missing or invalid auth
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Invalid cursor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    UserAllPositionsResponse:
      type: object
      required:
        - meta
        - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/UserPosition'
        meta:
          $ref: '#/components/schemas/TimeseriesMeta'
    ErrorResponse:
      type: object
      description: Standard error response envelope returned on 4xx/5xx
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
    UserPosition:
      type: object
      required:
        - vault_id
        - wallet_address
        - metrics
      properties:
        metrics:
          $ref: '#/components/schemas/UserPositionMetrics'
        numeraire_token:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/TokenRef'
        vault_id:
          type: string
        wallet_address:
          type: string
    TimeseriesMeta:
      type: object
      required:
        - request_id
        - refreshed_at
        - count
        - limit
      properties:
        count:
          type: integer
          format: int64
          description: Number of points in this response.
        end:
          type:
            - string
            - 'null'
          format: date-time
        limit:
          type: integer
          format: int64
          description: Page-size cap actually applied.
        next_cursor:
          type:
            - string
            - 'null'
          description: Set when more pages exist; pass back as `?next=`.
        partial_errors:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/PartialResponseError'
          description: Item-scoped failures isolated from an aggregate response.
        refreshed_at:
          type: string
          format: date-time
        request_id:
          type: string
        start:
          type:
            - string
            - 'null'
          format: date-time
          description: Window bounds the response covers (echoes the request when set).
    ErrorBody:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Machine-readable error code (e.g. `NOT_FOUND`, `UNAUTHORIZED`)
        details: {}
        message:
          type: string
          description: Human-readable error message
    UserPositionMetrics:
      type: object
      required:
        - pending_deposit_assets
        - shares_owned
        - pending_redeem_shares
        - value
        - cost_basis
        - pnl
        - roi_pct
      properties:
        cost_basis:
          $ref: '#/components/schemas/AmountPair'
          description: Cumulative cost of currently-held shares.
        pending_deposit_assets:
          $ref: '#/components/schemas/AmountPair'
          description: >-
            Assets escrowed at the Aera Provisioner pending share mint

            (`native` = numeraire-token units, `usd` = `native` × current USD
            price).
        pending_redeem_shares:
          type: string
          description: Shares escrowed at the Aera Provisioner pending asset return.
        pnl:
          $ref: '#/components/schemas/PnlBreakdown'
          description: Profit and loss grouped by total, unrealized, and realized values.
        roi_pct:
          $ref: '#/components/schemas/RatioPair'
          description: Time-weighted ROI from user deposit/redeem history.
        shares_owned:
          type: string
          description: Shares currently held by the wallet.
        value:
          $ref: '#/components/schemas/AmountPair'
          description: |-
            Current market value of held shares (`native` = numeraire-token
            units, `usd` = `native` × current USD price).
    TokenRef:
      type: object
      required:
        - address
      properties:
        address:
          type: string
        decimals:
          type:
            - integer
            - 'null'
          format: int32
        symbol:
          type:
            - string
            - 'null'
    PartialResponseError:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Machine-readable error code for the isolated item failure.
        message:
          type: string
          description: Human-readable error message.
        resource_id:
          type:
            - string
            - 'null'
          description: Resource that failed inside the aggregate response, when known.
    AmountPair:
      type: object
      description: >-
        Decimal-string metric paired across native (numeraire-token) and USD.

        `native` is always present; `usd` is JSON null when pricing is
        unavailable.
      required:
        - native
      properties:
        native:
          type: string
        usd:
          type:
            - string
            - 'null'
    PnlBreakdown:
      type: object
      required:
        - total
        - unrealized
        - realized
      properties:
        realized:
          $ref: '#/components/schemas/AmountPair'
          description: Locked-in PnL from past disposals.
        total:
          $ref: '#/components/schemas/AmountPair'
          description: '`unrealized` + `realized`.'
        unrealized:
          $ref: '#/components/schemas/AmountPair'
          description: '`value` − `cost_basis`.'
    RatioPair:
      type: object
      description: |-
        JSON-number ratio paired across native (in-kind) and USD denominations.
        Null when event history is unavailable or cannot support ROI replay.
      properties:
        native:
          type:
            - number
            - 'null'
          format: double
        usd:
          type:
            - number
            - 'null'
          format: double

````