Skip to main content
POST
/
v2
/
pnl
/
tokens
/
{token}
/
positions
/
batch
Get Token Batch Positions
curl --request POST \
  --url https://data.solanatracker.io/v2/pnl/tokens/{token}/positions/batch \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "wallets": [
    "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
    "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
  ]
}
'
{
  "token": "38PgzpJYu2HkiYvV8qePFakB8tuobPdGm2FFEn7Dpump",
  "pnlMode": "strict",
  "count": 1,
  "positions": [
    {
      "wallet": "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
      "identity": {
        "name": "Cented",
        "twitter": "@Cented7",
        "avatar": "https://kol-avatar.solanatracker.io/CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
        "platforms": [
          "axiom",
          "bloom"
        ],
        "type": "developer",
        "tags": [
          "kol",
          "developer",
          "axiom",
          "bloom"
        ],
        "developer": {
          "token": "38PgzpJYu2HkiYvV8qePFakB8tuobPdGm2FFEn7Dpump",
          "via": [
            "token_creator"
          ]
        }
      },
      "token": "38PgzpJYu2HkiYvV8qePFakB8tuobPdGm2FFEn7Dpump",
      "pnl": {
        "token": {
          "realized": 88872.66,
          "realizedRaw": 88872.66,
          "unrealized": 0,
          "total": 88872.66
        },
        "wallet": {
          "realized": 10705447.32,
          "unrealized": 1395.74,
          "total": 10706843.06,
          "invested": 49779099.94,
          "proceeds": 60484547.26,
          "totalTrades": 334803,
          "tokensTraded": 78676
        }
      },
      "invested": 3071.27,
      "proceeds": 91943.94,
      "roi": 2893.67,
      "current": {
        "balance": 0,
        "costBasis": 0,
        "value": 0,
        "price": 0.001572798005924808,
        "avgCost": 0
      },
      "volume": {
        "tokensBought": 46026806.173715,
        "tokensSold": 46026806.173715,
        "buyUsd": 3071.27,
        "sellUsd": 91943.94
      },
      "averages": {
        "buy": 341.25,
        "sell": 1242.49
      },
      "counts": {
        "buys": 9,
        "sells": 74,
        "total": 83
      },
      "timing": {
        "firstBuy": 1746044721229,
        "lastBuy": 1772031549416,
        "firstSell": 1746044751527,
        "lastSell": 1772032040873,
        "firstTrade": 1746044721229,
        "lastTrade": 1772032040873,
        "holdTimeSecs": 25987320
      },
      "meta": {
        "symbol": "gork",
        "name": "New XAI gork",
        "image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Fipfs-forward.solanatracker.io%2Fipfs%2FQmXkHvTBRFMyY5ozYHXcF7JHqqLBTorca3dXAdF3ooD5e3",
        "decimals": 6,
        "price": 0.001572798005924808,
        "snapshotPrice": 0.001666646257827002,
        "marketCap": 1572419.01,
        "liquidity": 381495.96,
        "primaryMarket": "pumpfun-amm"
      }
    }
  ],
  "notFound": [
    "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
  ]
}

Documentation Index

Fetch the complete documentation index at: https://docs.solanatracker.io/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

x-api-key
string
header
required

API Key for authentication

Path Parameters

token
string
required

Solana token mint address (base58, 32-44 characters).

Pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$

Query Parameters

pnlMode
enum<string>
default:strict

How to treat positions flagged by the invalid PnL heuristic. strict zeros them out, adjusted caps them to a cost-basis-aware value, and raw leaves realized PnL untouched. Aliases pnl_mode and mode are also accepted by the API.

Available options:
strict,
adjusted,
raw

Body

application/json
wallets
string[]
required

Wallet addresses to look up. Max 200.

Maximum array length: 200
Example:
[
"CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
]

Response

Positions found. Wallets that never traded this token appear in notFound.

token
string
pnlMode
enum<string>
Available options:
strict,
adjusted,
raw
count
integer

Number of positions returned

positions
object[]
notFound
string[]

Wallets that never traded this token

invalid
string[]

Addresses that failed Base58 validation. Omitted when empty.