import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletOverview('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF');curl --request GET \
--url https://data.solanatracker.io/v2/pnl/wallets/{wallet} \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/v2/pnl/wallets/{wallet}"
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://data.solanatracker.io/v2/pnl/wallets/{wallet}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data.solanatracker.io/v2/pnl/wallets/{wallet}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data.solanatracker.io/v2/pnl/wallets/{wallet}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data.solanatracker.io/v2/pnl/wallets/{wallet}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/wallets/{wallet}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"wallet": "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"pnlMode": "strict",
"identity": {
"name": "Cented",
"twitter": "@Cented7",
"avatar": "https://kol-avatar.solanatracker.io/CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"platforms": [
"axiom",
"bloom"
],
"type": "kol",
"tags": [
"kol",
"axiom",
"bloom"
]
},
"summary": {
"pnl": {
"realized": 10705447.32,
"unrealized": 1395.74,
"total": 10706843.06
},
"invested": 49779099.94,
"proceeds": 60484547.26,
"openPositions": {
"cost": 5118.14,
"value": 7855.98
},
"counts": {
"buys": 196215,
"sells": 138588,
"trades": 334803,
"tokensTraded": 78676,
"tokensHeldEver": 78553
},
"averages": {
"buy": 259.77,
"sell": 436.43
},
"roi": 21.51,
"timing": {
"firstTrade": 1738348560665,
"lastTrade": 1777057718629,
"avgHoldTimeSecs": 20391
}
},
"analysis": {
"winRate": 61.17,
"avgPnlPerAsset": 135.12,
"avgBuyValue": 648.88,
"tokens": {
"closed": 78518,
"winning": 48029,
"losing": 30375
},
"distribution": [
{
"range": ">500%",
"count": 145,
"rate": 0.18
},
{
"range": "200-500%",
"count": 1068,
"rate": 1.36
},
{
"range": "50-200%",
"count": 10662,
"rate": 13.58
},
{
"range": "0-50%",
"count": 36273,
"rate": 46.2
},
{
"range": "-50-0%",
"count": 29252,
"rate": 37.26
},
{
"range": "<-50%",
"count": 1118,
"rate": 1.42
}
]
},
"stats": {
"total": 78676,
"holding": 100,
"sold": 78424,
"profitable": 48041,
"losing": 30370
},
"tags": {
"isArbitrage": false,
"platforms": [
"axiom-flash",
"bloom"
]
},
"updatedAt": "2026-04-24T19:08:38.649Z"
}{
"error": "<string>"
}{
"error": "<string>"
}Get Wallet Summary
Returns the top-level trading summary for a wallet: total PnL, win rate, averages, counts, ROI buckets, platform tags, and summary.timing.avgHoldTimeSecs. Use /positions when you need per-token detail.
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletOverview('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF');curl --request GET \
--url https://data.solanatracker.io/v2/pnl/wallets/{wallet} \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/v2/pnl/wallets/{wallet}"
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://data.solanatracker.io/v2/pnl/wallets/{wallet}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data.solanatracker.io/v2/pnl/wallets/{wallet}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data.solanatracker.io/v2/pnl/wallets/{wallet}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data.solanatracker.io/v2/pnl/wallets/{wallet}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/wallets/{wallet}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"wallet": "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"pnlMode": "strict",
"identity": {
"name": "Cented",
"twitter": "@Cented7",
"avatar": "https://kol-avatar.solanatracker.io/CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"platforms": [
"axiom",
"bloom"
],
"type": "kol",
"tags": [
"kol",
"axiom",
"bloom"
]
},
"summary": {
"pnl": {
"realized": 10705447.32,
"unrealized": 1395.74,
"total": 10706843.06
},
"invested": 49779099.94,
"proceeds": 60484547.26,
"openPositions": {
"cost": 5118.14,
"value": 7855.98
},
"counts": {
"buys": 196215,
"sells": 138588,
"trades": 334803,
"tokensTraded": 78676,
"tokensHeldEver": 78553
},
"averages": {
"buy": 259.77,
"sell": 436.43
},
"roi": 21.51,
"timing": {
"firstTrade": 1738348560665,
"lastTrade": 1777057718629,
"avgHoldTimeSecs": 20391
}
},
"analysis": {
"winRate": 61.17,
"avgPnlPerAsset": 135.12,
"avgBuyValue": 648.88,
"tokens": {
"closed": 78518,
"winning": 48029,
"losing": 30375
},
"distribution": [
{
"range": ">500%",
"count": 145,
"rate": 0.18
},
{
"range": "200-500%",
"count": 1068,
"rate": 1.36
},
{
"range": "50-200%",
"count": 10662,
"rate": 13.58
},
{
"range": "0-50%",
"count": 36273,
"rate": 46.2
},
{
"range": "-50-0%",
"count": 29252,
"rate": 37.26
},
{
"range": "<-50%",
"count": 1118,
"rate": 1.42
}
]
},
"stats": {
"total": 78676,
"holding": 100,
"sold": 78424,
"profitable": 48041,
"losing": 30370
},
"tags": {
"isArbitrage": false,
"platforms": [
"axiom-flash",
"bloom"
]
},
"updatedAt": "2026-04-24T19:08:38.649Z"
}{
"error": "<string>"
}{
"error": "<string>"
}SDK Example
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletOverview('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF');
Authorizations
API Key for authentication
Path Parameters
Solana wallet address (base58, 32-44 characters).
^[1-9A-HJ-NP-Za-km-z]{32,44}$Query Parameters
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.
strict, adjusted, raw Response
Successful response.
strict, adjusted, raw Unified wallet identity. Only fields with known values are returned; a wallet can carry multiple tags at once.
Show child attributes
Show child attributes
Aggregated wallet-level PnL summary across all positions.
Show child attributes
Show child attributes
Win/loss analysis computed across all closed positions.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Metadata tags about the wallet.
Show child attributes
Show child attributes
Was this page helpful?