> ## 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 user position in a specific vault

> Returns the current position snapshot for a wallet in a single vault. Historical points live on `/positions/{vault_id}/timeseries`.



## OpenAPI

````yaml GET /v1/users/{wallet_address}/positions/{vault_id}
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/{vault_id}:
    get:
      tags:
        - Users
      summary: Get user position in a specific vault
      description: >-
        Returns the current position snapshot for a wallet in a single vault.
        Historical points live on `/positions/{vault_id}/timeseries`.
      operationId: get_user_vault_position
      parameters:
        - name: wallet_address
          in: path
          description: Ethereum wallet address
          required: true
          schema:
            type: string
        - name: vault_id
          in: path
          description: Vault identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Single vault position
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPositionLatestResponse'
        '401':
          description: Missing or invalid auth
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Position not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    UserPositionLatestResponse:
      type: object
      required:
        - meta
        - data
      properties:
        data:
          $ref: '#/components/schemas/UserPosition'
        meta:
          $ref: '#/components/schemas/BasicMeta'
    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
    BasicMeta:
      type: object
      required:
        - request_id
        - refreshed_at
      properties:
        refreshed_at:
          type: string
          format: date-time
        request_id:
          type: string
    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'
    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

````