---
title: "Get total portfolio PnL across all pools"
method: GET
path: "/portfolio/total"
tags: ["Portfolio"]
---

# Get total portfolio PnL across all pools

`GET /portfolio/total`

Returns the all-time total PnL in USD and percentage change across all user's pools.
This aggregates data from all closed positions across the entire portfolio.

# Arguments

* `user` - The wallet address of the user

# Returns

* `200` - The user's total portfolio PnL
* `400` - Invalid user address or query parameters

## Query parameters

- `user` string, required

## Response `200`

Successfully retrieved portfolio totals

- PortfolioTotalResponse — Portfolio total PnL response
  - `totalPnlPctChange` string, required — Total PnL percentage change across all pools (USD)
  - `totalPnlSol` string, required — Total PnL in SOL across all pools (historical per-event SOL price)
  - `totalPnlSolPctChange` string, required — Total PnL percentage change across all pools (SOL)
  - `totalPnlUsd` string, required — Total amount deposited in USD across all pools NOTE: Commented out for now, but may be needed in the future Total PnL in USD across all pools

## Other responses

- `400` — Invalid user address or unsupported product type

---

[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/versions/453231c15a14/schema)
