Skip to main content
POST
/
v2
/
pnl
/
wallets
/
batch
Batch wallet PnL summaries
curl --request POST \
  --url https://api.dexploit.dev/v2/pnl/wallets/batch \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "wallets": [
    "<string>"
  ]
}
'
{
  "pnl_mode": "<string>",
  "count": 123,
  "summaries": [
    {
      "wallet": "<string>",
      "pnl_mode": "<string>",
      "realized_sol": 123,
      "unrealized_sol": 123,
      "cost_basis_sol": 123,
      "open_positions": 123,
      "closed_positions": 123,
      "realized_usd": 123,
      "unrealized_usd": 123,
      "oracle": {
        "price": 123,
        "confidence": 123,
        "published_at": 123,
        "source": "<string>"
      },
      "positions": [
        {
          "mint": "<string>",
          "balance_atomic": 123,
          "realized_sol": 123,
          "unrealized_sol": 123,
          "is_arbitrageur": true
        }
      ]
    }
  ]
}

Authorizations

X-API-Key
string
header
required

Preferred for swaps-api endpoints (/swaps/*, /stats/*, /trending, /pool-events).

Query Parameters

pnl_mode
enum<string>
default:adjusted

PnL accounting mode. strict (FIFO) and adjusted (weighted-avg cost) are realized-PnL figures; raw is net cash-flow (Σ sells − Σ buys), not realized PnL. Unknown values fall back to adjusted.

Available options:
raw,
strict,
adjusted

Body

application/json
wallets
string[]
required
Required array length: 1 - 100 elements

Response

Batch summaries

pnl_mode
string
count
integer
summaries
(object | null)[]

Cost-basis PnL summary for a wallet (Phase 8 engine). All *_sol fields are SOL. unrealized_sol is read-time spot Σ(price−avg_cost)*balance; null-priced mints contribute 0. Wallets with no positions return zeros and an empty positions array.