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
Resumen agregado: PnL total, win rate, medias, conteos, tramos de ROI, etiquetas y summary.timing.avgHoldTimeSecs. Detalle por token: /positions. Pase ?currency=sol o ?currency=eur para convertir con precios spot actuales.
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');
Autorizaciones
Clave API
Parámetros de ruta
Dirección cartera Solana (base58, 32–44 caracteres)
^[1-9A-HJ-NP-Za-km-z]{32,44}$Parámetros de consulta
Marcadas por heurística de PnL inválido: strict pone a cero; adjusted limita según coste; raw no toca PnL realizado. También pnl_mode y mode.
strict, adjusted, raw Moneda de los importes de la respuesta; predeterminado usd. sol o eur convierten snapshots USD con precios ClickHouse; histórico usa tipo diario por fecha, resumen usa spot actual. Conteos, porcentajes, marcas de tiempo y ROI no se convierten; valor inválido devuelve 400.
usd, sol, eur Respuesta
Successful response.
strict, adjusted, raw Response denomination when ?currency=sol or ?currency=eur is requested. Omitted for the default USD response.
sol, eur 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
¿Esta página le ayudó?