---
title: "Get Wallet Summary"
method: GET
path: "/v2/pnl/wallets/{wallet}"
tags: ["Wallet"]
---

# Get Wallet Summary

`GET /v2/pnl/wallets/{wallet}`

Returns the top-level trading summary for a wallet: total PnL, win rate, averages, counts, ROI buckets, platform tags, and `summary.timing.avgHoldTimeSecs`. Use `/positions` when you need per-token detail. Pass `?currency=sol` or `?currency=eur` to convert monetary fields at read time using current spot reference prices.

## Path parameters

- `wallet` string, required

## Query parameters

- `pnlMode` 'strict' | 'adjusted' | 'raw'
- `currency` 'usd' | 'sol' | 'eur'

## Response `200`

Successful response.

- object
  - `wallet` string
  - `pnlMode` 'strict' | 'adjusted' | 'raw'
  - `currency` 'sol' | 'eur' — Response denomination when `?currency=sol` or `?currency=eur` is requested. Omitted for the default USD response.
  - `identity` Identity — Unified wallet identity. Only fields with known values are returned; a wallet can carry multiple tags at once.
    - `name` string, nullable — Display name, if known.
    - `twitter` string, nullable — Twitter/X handle, if known.
    - `avatar` string, uri, nullable — Avatar image URL.
    - `type` string, nullable — Primary label for single-badge UIs, such as `kol`, `developer`, `pool`, `bot`, `hacker`, `spam_dusting`, `exchange`, or a platform tag.
    - `tags` string[] — All resolved labels for the wallet, including KOL, platform, pool, developer, bot, arbitrage, hacker, spam-dusting, or exchange tags.
    - `platforms` string[] — Normalized trading frontend tags such as `axiom`, `bloom`, or `photon`. Query filters also accept `axiom-flash`, which is normalized to `axiom` in identity responses.
    - `bot` object
      - `name` string, nullable
      - `avatar` string, uri, nullable
    - `pool` object
      - `program` string, nullable
      - `poolAddress` string, nullable
    - `developer` object
      - `token` string, nullable
      - `via` string[]
      - `pools` string[]
      - `creationTx` string, nullable
      - `createdAt` integer, nullable — Unix timestamp in seconds.
    - `hacker` object — Curated exploit/scam wallet label, when known.
      - `label` string, nullable
    - `spamDusting` object — Curated spam-dusting wallet label, when known.
      - `label` string, nullable
    - `exchange` object — Known centralized exchange hot wallet label, when known.
      - `name` string, nullable
  - `summary` Summary — Aggregated wallet-level PnL summary across all positions.
    - `pnl` PnlBlock — Realized, unrealized, and total profit/loss in USD.
      - `realized` number, nullable — Profit/loss from closed trades (tokens fully or partially sold).
      - `realizedRaw` number, nullable — Unfiltered realized PnL before `pnlMode` adjustments. Present on position rows and leaderboard period stats when available.
      - `unrealized` number, nullable — Paper profit/loss on tokens still held, based on current market price.
      - `total` number, nullable — Sum of realized + unrealized PnL.
    - `invested` number, nullable — Total USD spent buying tokens.
    - `proceeds` number, nullable — Total USD received from selling tokens.
    - `openPositions` object
      - `cost` number, nullable — Total cost basis of currently-held positions.
      - `value` number, nullable — Current market value of held positions.
    - `counts` object
      - `buys` integer
      - `sells` integer
      - `trades` integer — Total number of buy + sell transactions.
      - `tokensTraded` integer — Number of distinct tokens traded.
      - `tokensHeldEver` integer — Total tokens ever held (including sold).
    - `averages` object
      - `buy` number, nullable — Average USD per buy transaction.
      - `sell` number, nullable — Average USD per sell transaction.
    - `roi` number, nullable — Return on investment as a percentage: (totalPnl / invested) * 100.
    - `timing` object
      - `firstTrade` integer, nullable — Unix ms timestamp of the wallet's first trade.
      - `lastTrade` integer, nullable — Unix ms timestamp of the wallet's most recent trade.
      - `avgHoldTimeSecs` integer, nullable — Average hold duration across all positions with a first buy, in seconds. Uses the same per-position formula as `timing.holdTimeSecs` on positions and traders (first buy to last sell for closed bags, live duration for open bags). Not the same as `/chart` → `summary.averages.holdTimeSecs`, which is day-weighted from daily snapshots.
  - `analysis` object — Win/loss analysis computed across all closed positions.
    - `winRate` number, nullable — Percentage of closed positions that were profitable.
    - `avgPnlPerAsset` number, nullable — Average PnL per closed token.
    - `avgBuyValue` number, nullable — Average USD invested per token.
    - `tokens` object
      - `closed` integer
      - `winning` integer
      - `losing` integer
    - `distribution` object[] — ROI distribution buckets for closed positions.
      - `range` string — ROI range label (e.g. '>500%', '100%-500%', '0%-100%', '-50%-0%', '<-50%').
      - `count` integer
      - `rate` number, nullable — Percentage of closed positions in this bucket.
  - `stats` object
    - `total` integer — Total positions (all tokens ever traded).
    - `holding` integer — Positions currently held.
    - `sold` integer — Fully closed positions.
    - `profitable` integer
    - `losing` integer
  - `tags` object — Metadata tags about the wallet.
    - `isArbitrage` boolean — Whether the wallet is flagged as an arbitrage bot.
    - `platforms` string[] — Trading platforms/frontends the wallet uses (e.g. axiom, photon, bloom).
  - `updatedAt` string, date-time, nullable

## Other responses

- `400` — Invalid request parameters.
- `500` — Server error.

---

[API](https://skmtc.net/solanatracker/apis/solana-tracker-data-api.md) · [All operations](https://skmtc.net/solanatracker/apis/solana-tracker-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/solanatracker/solana-tracker-data-api/versions/c07c6f82d0c4/schema)
