curl --request GET \
--url https://public-api.birdeye.so/wallet/v2/pnl/multiple \
--header 'X-API-KEY: <api-key>'import requests
url = "https://public-api.birdeye.so/wallet/v2/pnl/multiple"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://public-api.birdeye.so/wallet/v2/pnl/multiple', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"data": {
"token_metadata": {
"symbol": "PUMP",
"decimals": 9
},
"data": {
"3aLF8VXyUbEPSFyqSoQrsq6TdgKXgLmwJprE2yTfdNA2": {
"counts": {
"total_buy": 3,
"total_sell": 0,
"total_trade": 3
},
"quantity": {
"total_bought_amount": 29285.756489887,
"total_sold_amount": 0,
"holding": 880839335.5814558
},
"cashflow_usd": {
"cost_of_quantity_sold": 0,
"total_invested": 2.6329984012898864,
"total_sold": 0,
"current_value": 7.5417466875590655
},
"pnl": {
"realized_profit_usd": 0,
"realized_profit_percent": 0,
"unrealized_usd": -2.6327476566329686,
"unrealized_percent": -99.99047683975823,
"total_usd": -2.6327476566329686,
"total_percent": -99.99047683975824,
"avg_profit_per_trade_usd": 0
},
"pricing": {
"current_price": 8.562000336395786e-9,
"avg_buy_cost": 0.00008990713291627338,
"avg_sell_cost": null
}
},
"4mwReoK1x668B6KuuSAbGm2tUQULSTHGgTpCa2jUMXtD": {
"counts": {
"total_buy": 236570,
"total_sell": 236570,
"total_trade": 473140
},
"quantity": {
"total_bought_amount": 1.9012623099995465,
"total_sold_amount": 128820503932.7875,
"holding": 880839335.5814558
},
"cashflow_usd": {
"cost_of_quantity_sold": 5151221341.162621,
"total_invested": 0.07602689546632857,
"total_sold": 1944451989.1810136,
"current_value": 7.5417466875590655
},
"pnl": {
"realized_profit_usd": -0.04732872112474718,
"realized_profit_percent": -62.25260262759055,
"unrealized_usd": 0,
"unrealized_percent": 0,
"total_usd": -0.04732872112474718,
"total_percent": -62.25260262759055,
"avg_profit_per_trade_usd": -2.0006222735235735e-7
},
"pricing": {
"current_price": 8.562000336395786e-9,
"avg_buy_cost": 0.03998758880690519,
"avg_sell_cost": 0.015094274046587626
}
}
}
}
}{
"success": false,
"message": "Bad request"
}{
"success": false,
"message": "Unauthorized"
}{
"success": false,
"message": "Access Denied"
}{
"success": false,
"message": "Too many requests"
}{
"success": false,
"message": "Internal Server Error"
}Wallet - PnL (Per Wallet)
Retrieve all-time PnL and trading metrics for each specified wallet for a given token.
curl --request GET \
--url https://public-api.birdeye.so/wallet/v2/pnl/multiple \
--header 'X-API-KEY: <api-key>'import requests
url = "https://public-api.birdeye.so/wallet/v2/pnl/multiple"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://public-api.birdeye.so/wallet/v2/pnl/multiple', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"data": {
"token_metadata": {
"symbol": "PUMP",
"decimals": 9
},
"data": {
"3aLF8VXyUbEPSFyqSoQrsq6TdgKXgLmwJprE2yTfdNA2": {
"counts": {
"total_buy": 3,
"total_sell": 0,
"total_trade": 3
},
"quantity": {
"total_bought_amount": 29285.756489887,
"total_sold_amount": 0,
"holding": 880839335.5814558
},
"cashflow_usd": {
"cost_of_quantity_sold": 0,
"total_invested": 2.6329984012898864,
"total_sold": 0,
"current_value": 7.5417466875590655
},
"pnl": {
"realized_profit_usd": 0,
"realized_profit_percent": 0,
"unrealized_usd": -2.6327476566329686,
"unrealized_percent": -99.99047683975823,
"total_usd": -2.6327476566329686,
"total_percent": -99.99047683975824,
"avg_profit_per_trade_usd": 0
},
"pricing": {
"current_price": 8.562000336395786e-9,
"avg_buy_cost": 0.00008990713291627338,
"avg_sell_cost": null
}
},
"4mwReoK1x668B6KuuSAbGm2tUQULSTHGgTpCa2jUMXtD": {
"counts": {
"total_buy": 236570,
"total_sell": 236570,
"total_trade": 473140
},
"quantity": {
"total_bought_amount": 1.9012623099995465,
"total_sold_amount": 128820503932.7875,
"holding": 880839335.5814558
},
"cashflow_usd": {
"cost_of_quantity_sold": 5151221341.162621,
"total_invested": 0.07602689546632857,
"total_sold": 1944451989.1810136,
"current_value": 7.5417466875590655
},
"pnl": {
"realized_profit_usd": -0.04732872112474718,
"realized_profit_percent": -62.25260262759055,
"unrealized_usd": 0,
"unrealized_percent": 0,
"total_usd": -0.04732872112474718,
"total_percent": -62.25260262759055,
"avg_profit_per_trade_usd": -2.0006222735235735e-7
},
"pricing": {
"current_price": 8.562000336395786e-9,
"avg_buy_cost": 0.03998758880690519,
"avg_sell_cost": 0.015094274046587626
}
}
}
}
}{
"success": false,
"message": "Bad request"
}{
"success": false,
"message": "Unauthorized"
}{
"success": false,
"message": "Access Denied"
}{
"success": false,
"message": "Too many requests"
}{
"success": false,
"message": "Internal Server Error"
}- Usage Note
- Accessibility
- Chain Supported
Per-wallet PnL for one token.
- Maximum number of wallets per request is
50. pnl_methodsupportsnetcashandwacso per-wallet comparisons use the accounting method you expect.token_metadatacontains the token identity context for the request.data[<wallet_address>]contains the PnL and trading metrics for each wallet.
- Lite
- Starter
- Premium
- Business
- Enterprise
SVM ⛓️ ✨
EVM ⛓️ ✨
Compute Unit ⚙️
Compute Unit ⚙️
- Batch CU is calculated as
ceil(10 * wallet_count^0.8).
Use Cases 💡
Use Cases 💡
- Compare how multiple wallets performed on one token.
- Rank a tracked wallet set by realized, unrealized, or total PnL for a single asset.
- Build cohort studies across whales, smart money, or treasury wallets for one token.
How to Use 🛠️
How to Use 🛠️
- Set the supported PnL chain in
x-chain. - Pass one
token_address. - Pass up to
50wallet addresses inwallets. - Set
pnl_methodwhen this comparison must line up with summary, detail, or internal accounting outputs. - Use this endpoint when the token is fixed and the wallet cohort changes.
Best Practices ✅
Best Practices ✅
- Deduplicate wallet addresses before sending the request.
- Pair this endpoint with token-level trade or holder data when explaining why one cohort outperformed another.
- Use the single-wallet endpoints when the wallet is fixed and the token set varies.
Authorizations
API key for authentication
Headers
The chain support PNL data.
solana, ethereum, arbitrum, avalanche, bsc, optimism, polygon, base, zksync, monad, hyperevm, mantle, megaeth, robinhood Query Parameters
The address of the token contract.
List of wallet.
PNL calculation method. wac (Weighted Average Cost): calculates PNL for each sell against the average cost of the position held at the time of the sell. Buys only re-average the cost of the remaining inventory, and previously realized sell PNL is not affected by later trades. netcash (Net Cash): calculates PNL across the full trade history using the spread between cumulative average sell price and cumulative average buy price. The buy average includes all buys and is not reduced by sells, so later buys can change the reported PNL.
wac, net_cash Was this page helpful?

