---
title: "Get all current positions for a wallet"
method: GET
path: "/v1/users/{wallet_address}/positions"
tags: ["Users"]
---

# Get all current positions for a wallet

`GET /v1/users/{wallet_address}/positions`

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.

## Path parameters

- `wallet_address` string, required

## Query parameters

- `next` string
- `limit` integer
- `include_hidden` boolean

## Response `200`

All wallet positions

- UserAllPositionsResponse
  - `data` UserPosition[], required
    - `metrics` UserPositionMetrics, required
      - `cost_basis` AmountPair, required — Decimal-string metric paired across native (numeraire-token) and USD. `native` is always present; `usd` is JSON null when pricing is unavailable.
        - `native` string, required
        - `usd` string, nullable
      - `pending_deposit_assets` AmountPair, required — Decimal-string metric paired across native (numeraire-token) and USD. `native` is always present; `usd` is JSON null when pricing is unavailable.
        - `native` string, required
        - `usd` string, nullable
      - `pending_redeem_shares` string, required — Shares escrowed at the Aera Provisioner pending asset return.
      - `pnl` PnlBreakdown, required
        - `realized` AmountPair, required — Decimal-string metric paired across native (numeraire-token) and USD. `native` is always present; `usd` is JSON null when pricing is unavailable.
          - `native` string, required
          - `usd` string, nullable
        - `total` AmountPair, required — Decimal-string metric paired across native (numeraire-token) and USD. `native` is always present; `usd` is JSON null when pricing is unavailable.
          - `native` string, required
          - `usd` string, nullable
        - `unrealized` AmountPair, required — Decimal-string metric paired across native (numeraire-token) and USD. `native` is always present; `usd` is JSON null when pricing is unavailable.
          - `native` string, required
          - `usd` string, nullable
      - `roi_pct` RatioPair, required — JSON-number ratio paired across native (in-kind) and USD denominations. Null when event history is unavailable or cannot support ROI replay.
        - `native` number, double, nullable
        - `usd` number, double, nullable
      - `shares_owned` string, required — Shares currently held by the wallet.
      - `value` AmountPair, required — Decimal-string metric paired across native (numeraire-token) and USD. `native` is always present; `usd` is JSON null when pricing is unavailable.
        - `native` string, required
        - `usd` string, nullable
    - `numeraire_token` TokenRef
      - `address` string, required
      - `decimals` integer, nullable
      - `symbol` string, nullable
    - `vault_id` string, required
    - `wallet_address` string, required
  - `meta` TimeseriesMeta, required
    - `count` integer, required — Number of points in this response.
    - `end` string, date-time, nullable
    - `limit` integer, required — Page-size cap actually applied.
    - `next_cursor` string, nullable — Set when more pages exist; pass back as `?next=`.
    - `partial_errors` PartialResponseError[], nullable — Item-scoped failures isolated from an aggregate response.
      - `code` string, required — Machine-readable error code for the isolated item failure.
      - `message` string, required — Human-readable error message.
      - `resource_id` string, nullable — Resource that failed inside the aggregate response, when known.
    - `refreshed_at` string, date-time, required
    - `request_id` string, required
    - `start` string, date-time, nullable — Window bounds the response covers (echoes the request when set).

## Other responses

- `401` — Missing or invalid auth
- `422` — Invalid cursor

## Changes

- **2026-08-27** `4452dcc4d7b3` — 3 info
  - added the new optional `query` request parameter `include_hidden`
  - added the optional property `data/items/numeraire_token` to the response with the `200` status
  - added the optional property `meta/partial_errors` to the response with the `200` status
- **2026-08-08** `bd6a0a40d4fc` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/gauntlet/apis/gauntlet-api/changes/v1/users/:wallet_address/positions/get.md)

---

[API](https://skmtc.dev/gauntlet/apis/gauntlet-api.md) · [All operations](https://skmtc.dev/gauntlet/apis/gauntlet-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/gauntlet/gauntlet-api/revisions/4452dcc4d7b3/schema)
