---
title: "Get position PnL data (open and closed positions with on-the-fly calculation)"
method: GET
path: "/positions/{pool_address}/pnl"
tags: ["Positions"]
---

# Get position PnL data (open and closed positions with on-the-fly calculation)

`GET /positions/{pool_address}/pnl`

Returns positions for a specific pool and user with calculated PnL values.
Includes SOL-denominated amounts when SOL price is available (omitted otherwise).
Results can be filtered by status (open/closed) and are paginated.

# Arguments

* `pool_address` - The address of the pool
* `user` - The user address
* `status` - Filter by status: "open", "closed", or omit for all (default: all)
* `page` - Page number starting from 1 (default: 1)

# Returns

* `200` - Paginated list of positions with PnL data in USD and SOL

## Path parameters

- `pool_address` string, required

## Query parameters

- `user` string, required
- `status` 'open' | 'closed' | 'all'
- `page` integer
- `page_size` integer

## Response `200`

- GetPoolPositionPnLResponse
  - `hasNext` boolean, required
  - `page` integer, required
  - `pageSize` integer, required
  - `positions` PositionPnLData[], required
    - `allTimeDeposits` TokenPairWithTotal, required
      - `tokenX` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `tokenY` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `total` TotalUsd, required
        - `sol` unknown
        - `usd` string, required
    - `allTimeFees` TokenPairWithTotal, required
      - `tokenX` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `tokenY` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `total` TotalUsd, required
        - `sol` unknown
        - `usd` string, required
    - `allTimeWithdrawals` TokenPairWithTotal, required
      - `tokenX` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `tokenY` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `total` TotalUsd, required
        - `sol` unknown
        - `usd` string, required
    - `closedAt` unknown
    - `createdAt` unknown
    - `feePerTvl24h` string, required — User's fee per tvl in rolling 24h
    - `isClosed` boolean, required
    - `isOutOfRange` unknown
    - `lowerBinId` integer, required
    - `maxPrice` string, required
    - `minPrice` string, required
    - `pnlPctChange` string, required
    - `pnlSol` unknown
    - `pnlSolPctChange` unknown
    - `pnlUsd` string, required
    - `poolActiveBinId` unknown
    - `poolActivePrice` unknown
    - `positionAddress` string, required
    - `unrealizedPnl` UnrealizedPnL
      - `balanceTokenX` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `balanceTokenY` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `balances` number, double, required — Total current position balances in USD
      - `balancesSol` unknown
      - `unclaimedFeeTokenX` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `unclaimedFeeTokenY` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `unclaimedRewardTokenX` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
      - `unclaimedRewardTokenY` TokenAmount, required
        - `amount` string, required
        - `amountSol` unknown
        - `usd` string, required
    - `upperBinId` integer, required
  - `rewardTokenX` unknown
  - `rewardTokenXPrice` string, required
  - `rewardTokenY` unknown
  - `rewardTokenYPrice` string, required
  - `solPrice` unknown
  - `tokenX` unknown
  - `tokenXPrice` string, required
  - `tokenY` unknown
  - `tokenYPrice` string, required
  - `totalCount` integer, required

---

[API](https://skmtc.net/meteora/apis/dynamic-amm-keeper.md) · [All operations](https://skmtc.net/meteora/apis/dynamic-amm-keeper/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/meteora/dynamic-amm-keeper/revisions/453231c15a14/schema)
