SDK
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletRisk('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF');
curl --request GET \
--url https://data.solanatracker.io/v2/pnl/wallets/{wallet}/risk \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/risk"
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}/risk', 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}/risk",
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}/risk"
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}/risk")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/wallets/{wallet}/risk")
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",
"identity": {
"name": "Cented",
"twitter": "@Cented7",
"avatar": "https://kol-avatar.solanatracker.io/CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"platforms": [
"axiom",
"bloom"
],
"type": "kol",
"tags": [
"kol",
"axiom",
"bloom"
]
},
"openPositions": {
"count": 67,
"cost": 5752.65,
"value": 4355.64,
"profitableValue": 3060.55,
"profitableValuePercent": 70.27
},
"concentration": {
"top1Percent": 16.24,
"top5Percent": 44.5,
"score": 4.78
},
"pnlMix": {
"realized": 10655775.26,
"unrealized": -1283.18,
"realizedPercent": 100.01,
"unrealizedPercent": -0.01
},
"largestPositions": [
{
"token": "FJEMUVcjUYu25i5XgMziVTWYq3D8KbXPL6WStJcXpump",
"pnl": {
"realized": 225.1,
"unrealized": 707.38,
"total": 932.48
},
"invested": 474.23,
"proceeds": 699.33,
"roi": 196.63,
"current": {
"balance": 40599697.119731,
"costBasis": 0,
"value": 707.38,
"price": 0.000017423193567054,
"avgCost": 5.591174715677386e-21
},
"volume": {
"tokensBought": 40599697.119730994,
"tokensSold": 40599697.119730994,
"buyUsd": 474.23,
"sellUsd": 699.33
},
"averages": {
"buy": 237.11,
"sell": 699.33
},
"counts": {
"buys": 2,
"sells": 1,
"total": 3
},
"timing": {
"firstBuy": 1776377440861,
"lastBuy": 1776377487794,
"firstSell": 1776378122098,
"lastSell": 1776378122098,
"firstTrade": 1776377440861,
"lastTrade": 1776378122098,
"holdTimeSecs": 245569
},
"meta": {
"symbol": "Scientists",
"name": "Dead Scientists Theory",
"image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Fmetadata.rapidlaunch.io%2Fimages%2F83686cf6-5651-4149-8306-b67e5688424d.png",
"decimals": 6,
"price": 0.000017423193567054,
"snapshotPrice": 0.000020509681344903,
"marketCap": 17413.69,
"liquidity": 10331.32,
"primaryMarket": "pumpfun-amm"
}
},
{
"token": "J9bv4NcyGmji1VzDWgVkTwQtzi4a2bYgde2MaXEhpump",
"pnl": {
"realized": 0,
"unrealized": -81.83,
"total": -81.83
},
"invested": 0,
"proceeds": 0,
"roi": null,
"current": {
"balance": 109744555.959514,
"costBasis": 533.88,
"value": 452.05,
"price": 0.000004119104467224,
"avgCost": 0.000004864767907168411
},
"volume": {
"tokensBought": 109744555.959514,
"tokensSold": 0,
"buyUsd": 533.88,
"sellUsd": 0
},
"averages": {
"buy": 266.94,
"sell": 0
},
"counts": {
"buys": 2,
"sells": 0,
"total": 2
},
"timing": {
"firstBuy": 1742830052184,
"lastBuy": 1742830057489,
"firstSell": null,
"lastSell": null,
"firstTrade": 1742830052184,
"lastTrade": 1742830057489,
"holdTimeSecs": 33792958
},
"meta": {
"symbol": "ZIEL",
"name": "ZIELCHAIN",
"image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Fipfs-forward.solanatracker.io%2Fipfs%2FQmS7jNAgpNU1Hp5JUeifgpvnpQq7bt8xAvZ71is56vPE6y",
"decimals": 6,
"price": 0.000004119104467224,
"snapshotPrice": 0.000004122517900796002,
"marketCap": 4119.1,
"liquidity": 6641.88,
"primaryMarket": "pumpfun"
}
}
],
"updatedAt": "2026-04-19T17:53:30.439Z"
}{
"error": "<string>"
}{
"error": "<string>"
}Wallet
Get Wallet Risk
Returns risk metrics for current holdings, including portfolio concentration, realized versus unrealized mix, open exposure, and the largest live positions.
GET
/
v2
/
pnl
/
wallets
/
{wallet}
/
risk
SDK
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletRisk('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF');
curl --request GET \
--url https://data.solanatracker.io/v2/pnl/wallets/{wallet}/risk \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/risk"
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}/risk', 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}/risk",
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}/risk"
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}/risk")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/wallets/{wallet}/risk")
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",
"identity": {
"name": "Cented",
"twitter": "@Cented7",
"avatar": "https://kol-avatar.solanatracker.io/CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"platforms": [
"axiom",
"bloom"
],
"type": "kol",
"tags": [
"kol",
"axiom",
"bloom"
]
},
"openPositions": {
"count": 67,
"cost": 5752.65,
"value": 4355.64,
"profitableValue": 3060.55,
"profitableValuePercent": 70.27
},
"concentration": {
"top1Percent": 16.24,
"top5Percent": 44.5,
"score": 4.78
},
"pnlMix": {
"realized": 10655775.26,
"unrealized": -1283.18,
"realizedPercent": 100.01,
"unrealizedPercent": -0.01
},
"largestPositions": [
{
"token": "FJEMUVcjUYu25i5XgMziVTWYq3D8KbXPL6WStJcXpump",
"pnl": {
"realized": 225.1,
"unrealized": 707.38,
"total": 932.48
},
"invested": 474.23,
"proceeds": 699.33,
"roi": 196.63,
"current": {
"balance": 40599697.119731,
"costBasis": 0,
"value": 707.38,
"price": 0.000017423193567054,
"avgCost": 5.591174715677386e-21
},
"volume": {
"tokensBought": 40599697.119730994,
"tokensSold": 40599697.119730994,
"buyUsd": 474.23,
"sellUsd": 699.33
},
"averages": {
"buy": 237.11,
"sell": 699.33
},
"counts": {
"buys": 2,
"sells": 1,
"total": 3
},
"timing": {
"firstBuy": 1776377440861,
"lastBuy": 1776377487794,
"firstSell": 1776378122098,
"lastSell": 1776378122098,
"firstTrade": 1776377440861,
"lastTrade": 1776378122098,
"holdTimeSecs": 245569
},
"meta": {
"symbol": "Scientists",
"name": "Dead Scientists Theory",
"image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Fmetadata.rapidlaunch.io%2Fimages%2F83686cf6-5651-4149-8306-b67e5688424d.png",
"decimals": 6,
"price": 0.000017423193567054,
"snapshotPrice": 0.000020509681344903,
"marketCap": 17413.69,
"liquidity": 10331.32,
"primaryMarket": "pumpfun-amm"
}
},
{
"token": "J9bv4NcyGmji1VzDWgVkTwQtzi4a2bYgde2MaXEhpump",
"pnl": {
"realized": 0,
"unrealized": -81.83,
"total": -81.83
},
"invested": 0,
"proceeds": 0,
"roi": null,
"current": {
"balance": 109744555.959514,
"costBasis": 533.88,
"value": 452.05,
"price": 0.000004119104467224,
"avgCost": 0.000004864767907168411
},
"volume": {
"tokensBought": 109744555.959514,
"tokensSold": 0,
"buyUsd": 533.88,
"sellUsd": 0
},
"averages": {
"buy": 266.94,
"sell": 0
},
"counts": {
"buys": 2,
"sells": 0,
"total": 2
},
"timing": {
"firstBuy": 1742830052184,
"lastBuy": 1742830057489,
"firstSell": null,
"lastSell": null,
"firstTrade": 1742830052184,
"lastTrade": 1742830057489,
"holdTimeSecs": 33792958
},
"meta": {
"symbol": "ZIEL",
"name": "ZIELCHAIN",
"image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Fipfs-forward.solanatracker.io%2Fipfs%2FQmS7jNAgpNU1Hp5JUeifgpvnpQq7bt8xAvZ71is56vPE6y",
"decimals": 6,
"price": 0.000004119104467224,
"snapshotPrice": 0.000004122517900796002,
"marketCap": 4119.1,
"liquidity": 6641.88,
"primaryMarket": "pumpfun"
}
}
],
"updatedAt": "2026-04-19T17:53:30.439Z"
}{
"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.getPnlV2WalletRisk('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF');
Authorizations
API Key for authentication
Path Parameters
Solana wallet address (base58, 32-44 characters).
Pattern:
^[1-9A-HJ-NP-Za-km-z]{32,44}$Response
Successful response.
Unified wallet identity. Only fields with known values are returned; a wallet can carry multiple tags at once.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
How concentrated the wallet's value is in its top positions.
Show child attributes
Show child attributes
How much of the wallet's PnL is realized vs unrealized.
Show child attributes
Show child attributes
The largest open positions by current USD value.
Show child attributes
Show child attributes
Was this page helpful?
⌘I