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

# Get a single vault by subaccount

> Returns the full vault record — on-chain state plus curator metadata — for one vault subaccount id. Unauthenticated and read-only.



## OpenAPI

````yaml /openapi.json post /public/get_vault
openapi: 3.1.0
info:
  title: Derive v3 API
  version: 0.2.0
  description: JSON-RPC 2.0 methods, served over WebSocket and HTTP POST.
servers:
  - url: https://api.derive.xyz/v3
    description: Production (HTTP POST base)
  - url: https://testnet.api.derive.xyz/v3
    description: Testnet (HTTP POST base)
security: []
tags:
  - name: Subaccounts
    description: >-
      List, inspect, and label subaccounts, portfolios, positions, and
      collateral.
  - name: Session Keys
    description: Register, edit, and list delegated signing keys.
  - name: Account
    description: Wallet-level account information and settings.
  - name: Orderbook
    description: Place, replace, cancel, and query orders, trigger orders, and algos.
  - name: RFQ
    description: 'Request-for-quote: send RFQs, quote, and execute block trades.'
  - name: Vault Shareholders
    description: >-
      Deposit into and withdraw from vaults, and track shares, requests, and
      performance.
  - name: Vault Curators
    description: >-
      Create and operate curated vaults: settle deposit and withdrawal requests,
      and manage vault metadata.
  - name: History
    description: >-
      Per-account historical records: orders, trades, transfers, and
      settlements.
  - name: Market Maker Protection
    description: Configure, read, and reset market-maker protection.
  - name: Transfers & Withdrawals
    description: Move collateral between subaccounts, to other wallets, and on-chain.
  - name: System
    description: Rate limits and transaction lookups.
  - name: Market Data
    description: Instruments, currencies, tickers, and market-wide feeds.
  - name: Referrals
    description: Referral codes and program performance.
  - name: Other
    description: Uncategorized.
paths:
  /public/get_vault:
    post:
      tags:
        - Vault Shareholders
      summary: Get a single vault by subaccount
      description: >-
        Returns the full vault record — on-chain state plus curator metadata —
        for one vault subaccount id. Unauthenticated and read-only.
      operationId: public_get_vault
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetVaultRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Vault'
        default:
          description: JSON-RPC error (see Error Codes)
components:
  schemas:
    GetVaultRequest:
      type: object
      required:
        - subaccount_id
      properties:
        subaccount_id:
          type: integer
          format: uint64
          minimum: 0
    Vault:
      type: object
      required:
        - curator
        - curator_shares
        - description
        - name
        - protocol
        - whitelist_only
      properties:
        benchmark_price:
          description: >-
            USD spot price of the HWM benchmark asset (`1.0` for feed-less USD
            vaults). null when a configured benchmark has no resolvable price.
          default: null
          type:
            - string
            - 'null'
          format: decimal
        curator:
          $ref: '#/components/schemas/Address'
          description: The vault's curator — the owner wallet of the vault subaccount.
        curator_shares:
          description: >-
            Shares held by the curator (the vault subaccount's owner) — their
            skin-in-the-game. Same units as `protocol.total_shares`.
          type: string
          format: decimal
        description:
          type: string
        mtm_cap:
          description: >-
            Optional non-negative decimal string of the human value (e.g.
            `"1.5"`), up to 12 fractional digits, or null; a string or JSON
            number is accepted
          default: null
          type:
            - string
            - 'null'
          format: decimal
        name:
          type: string
        nav_benchmark:
          description: >-
            Live NAV expressed in the HWM benchmark asset's units. null when the
            vault couldn't be priced or its configured benchmark has no spot
            price.
          default: null
          type:
            - string
            - 'null'
          format: decimal
        nav_usd:
          description: >-
            Live mark-to-market NAV (USD) — signed, so an insolvent vault
            surfaces as a negative value. null only when the vault couldn't be
            priced (e.g. missing data). Divide by `protocol.total_shares` for
            the pre-fee share price.
          default: null
          type:
            - string
            - 'null'
          format: decimal
        protocol:
          $ref: '#/components/schemas/ProtocolVault'
        simulated_share_price_usd:
          description: >-
            Live share price (USD/share) as if curator fees were settled now —
            the price a depositor/withdrawer faces. null when unpriceable or the
            vault is insolvent (a fee settlement on negative NAV is
            meaningless).
          default: null
          type:
            - string
            - 'null'
          format: decimal
        whitelist_only:
          type: boolean
    Address:
      description: 20-byte Ethereum address as a 0x-prefixed lowercase hex string.
      type: string
      maxLength: 42
      minLength: 42
      pattern: ^0x[0-9a-fA-F]{40}$
    ProtocolVault:
      type: object
      required:
        - closed
        - config
        - global_hwm
        - last_fee_settled_at_sec
        - protocol_fee_share_bps
        - subaccount_id
        - total_shares
      properties:
        closed:
          type: boolean
        config:
          $ref: '#/components/schemas/VaultConfig'
        global_hwm:
          description: >-
            Non-negative decimal string of the human value (e.g. `"1.5"`), up to
            12 fractional digits; a string or JSON number is accepted
          type: string
          format: decimal
        last_fee_settled_at_sec:
          type: integer
          format: uint64
          minimum: 0
        protocol_fee_share_bps:
          type: integer
          format: uint16
          minimum: 0
        subaccount_id:
          type: integer
          format: uint64
          minimum: 0
        total_shares:
          description: >-
            Non-negative decimal string of the human value (e.g. `"1.5"`), up to
            12 fractional digits; a string or JSON number is accepted
          type: string
          format: decimal
    VaultConfig:
      description: >-
        Configuration for a vault subaccount's deposit/withdrawal controls.


        Every field is immutable after vault creation. Mutable, informational
        settings (descriptions, an advisory TVL cap) live in off-chain vault
        state, not here.
      type: object
      required:
        - cooldown_sec
        - deposit_spot_asset
        - management_fee_bps
        - max_slippage_bps
        - performance_fee_bps
      properties:
        benchmark_asset:
          description: >-
            Spot asset the high-water mark is denominated in. null is the
            feed-less default: the HWM is a constant USD unit (reads no feed, so
            a deposit-asset depeg cannot manufacture a performance fee). An
            address denominates the HWM in that spot asset's units — performance
            fees then accrue only on outperformance measured in the benchmark
            (e.g. an ETH vault charging fees on ETH-outperformance, not on an
            ETH-price rally).
          anyOf:
            - $ref: '#/components/schemas/Address'
            - type: 'null'
        cooldown_sec:
          description: Min seconds between a holder's last deposit and their withdrawal.
          type: integer
          format: uint64
          minimum: 0
        deposit_spot_asset:
          $ref: '#/components/schemas/Address'
        management_fee_bps:
          type: integer
          format: uint16
          minimum: 0
        max_slippage_bps:
          description: >-
            Max deviation of the curator's quoted share price from the
            mtm-derived price, both sides. Bounded at creation by the
            protocol-wide maximum slippage limit.
          type: integer
          format: uint16
          minimum: 0
        performance_fee_bps:
          type: integer
          format: uint16
          minimum: 0

````

## Related topics

- [Migration skill for your coding agent](/migrating/breaking-changes.md)
- [Get a vault's economic action history](/api-reference/vault-shareholders/get-a-vaults-economic-action-history.md)
- [Get a wallet's vault share balances](/api-reference/vault-shareholders/get-a-wallets-vault-share-balances.md)
