TL;DR
- Load holdings, net worth history, and PnL in one parallel batch
- Keep all three inside the wallet endpoint rate limit
- Lazy-load price sparklines on a separate, throttled budget
All requests share the base URL https://public-api.birdeye.so, authenticate with the X-API-KEY header, and select the network with x-chain: solana.
Core data: three wallet calls in parallel
Load holdings, net worth history, and PnL together. All three sit comfortably under the wallet rate limit, and the response from each fills a different section of the same screen. Endpoint:GET /wallet/v2/current-net-worth, GET /wallet/v2/net-worth, POST /wallet/v2/pnl/details
Dust filtering is built into
current-net-worth, do not do it client side. It excludes low liquidity tokens under $100 by default, and filter_value sets a minimum USD value per position. The default limit is 20, too small for whale wallets, so set limit=100 and check pagination.total.Wallet PnL Tracker
Full field breakdown for all three wallet endpoints, including the string versus number gotchas and where the win rate actually lives in the response.
Lazy-load price sparklines
Sparklines are the small line charts next to each token row, and each one needs its own call, which is why this step runs on a separate budget from the core data. Endpoint:GET /defi/history_price
Watch your credit budget
Portfolio trackers are refresh heavy by nature, so wire this in from day one. Endpoint:GET /utils/v1/credits
Before you ship
- Core data loads through one
Promise.allof exactly three wallet calls, nothing more. limit=100is set oncurrent-net-worth, andpagination.totalis checked for whale wallets.- PnL goes through
POST /wallet/v2/pnl/details, no code path references the deprecatedGET /wallet/v2/pnl. - Sparklines fetch only visible rows, throttled below the package’s requests per second, with a few minutes of caching.
- Credit usage is observable, so degradation is controlled instead of a surprise 429.
FAQ
What is the rate limit for the wallet endpoints?
What is the rate limit for the wallet endpoints?
All
/wallet/v2/ endpoints are in beta and limited to 5 requests per second and 75 per minute, on every package tier. Standard market data endpoints like history_price are not part of that group and instead count against your account level limit, which varies by package.Does wallet PnL work on EVM chains?
Does wallet PnL work on EVM chains?
Yes.
POST /wallet/v2/pnl/details supports EVM networks through x-chain, including ethereum, base, bsc, arbitrum, polygon, and optimism. The holdings and net worth chart endpoints in this guide remain Solana only, so an EVM build would pair the PnL endpoint with a different holdings source.Can I track multiple wallets at once?
Can I track multiple wallets at once?
Yes, on higher tiers.
POST /wallet/v2/net-worth-summary/multiple returns net worth for up to 100 wallets in a single call, keeping batch jobs inside the wallet rate limit. Like most batch endpoints, it is available on Business and Enterprise packages only.
