SDK
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.batchPnlV2WalletSummaries(['FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF']);
curl --request POST \
--url https://data.solanatracker.io/v2/pnl/wallets/batch \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"wallets": [
"CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
]
}
'import requests
url = "https://data.solanatracker.io/v2/pnl/wallets/batch"
payload = { "wallets": ["CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o", "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
wallets: [
'CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o',
'vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg'
]
})
};
fetch('https://data.solanatracker.io/v2/pnl/wallets/batch', 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/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'wallets' => [
'CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o',
'vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://data.solanatracker.io/v2/pnl/wallets/batch"
payload := strings.NewReader("{\n \"wallets\": [\n \"CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o\",\n \"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://data.solanatracker.io/v2/pnl/wallets/batch")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"wallets\": [\n \"CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o\",\n \"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/wallets/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"wallets\": [\n \"CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o\",\n \"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"count": 1,
"wallets": [
{
"wallet": "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"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": 8614.39,
"value": 10010.13
},
"counts": {
"buys": 193041,
"sells": 141762,
"trades": 334803,
"tokensTraded": 78676,
"tokensHeldEver": 78195
},
"averages": {
"buy": 257.87,
"sell": 426.66
},
"roi": 21.51,
"timing": {
"firstTrade": 1713909067699,
"lastTrade": 1777034218124
}
},
"tags": {
"isArbitrage": false,
"platforms": [
"axiom",
"bloom"
]
},
"updatedAt": 1777034218124
}
],
"notFound": [
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
]
}{
"error": "<string>"
}{
"error": "<string>"
}Batch
Get Wallet Summaries Batch
Returns wallet-level PnL summaries, resolved identity, and wallet tags for up to 100 unique wallets. Missing/non-indexed wallets are returned in notFound; invalid addresses are returned in invalid; requests above the limit are truncated and include a truncated object.
POST
/
v2
/
pnl
/
wallets
/
batch
SDK
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.batchPnlV2WalletSummaries(['FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF']);
curl --request POST \
--url https://data.solanatracker.io/v2/pnl/wallets/batch \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"wallets": [
"CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
]
}
'import requests
url = "https://data.solanatracker.io/v2/pnl/wallets/batch"
payload = { "wallets": ["CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o", "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
wallets: [
'CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o',
'vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg'
]
})
};
fetch('https://data.solanatracker.io/v2/pnl/wallets/batch', 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/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'wallets' => [
'CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o',
'vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://data.solanatracker.io/v2/pnl/wallets/batch"
payload := strings.NewReader("{\n \"wallets\": [\n \"CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o\",\n \"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://data.solanatracker.io/v2/pnl/wallets/batch")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"wallets\": [\n \"CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o\",\n \"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/wallets/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"wallets\": [\n \"CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o\",\n \"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"count": 1,
"wallets": [
{
"wallet": "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"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": 8614.39,
"value": 10010.13
},
"counts": {
"buys": 193041,
"sells": 141762,
"trades": 334803,
"tokensTraded": 78676,
"tokensHeldEver": 78195
},
"averages": {
"buy": 257.87,
"sell": 426.66
},
"roi": 21.51,
"timing": {
"firstTrade": 1713909067699,
"lastTrade": 1777034218124
}
},
"tags": {
"isArbitrage": false,
"platforms": [
"axiom",
"bloom"
]
},
"updatedAt": 1777034218124
}
],
"notFound": [
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
]
}{
"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.batchPnlV2WalletSummaries(['FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF']);
Authorizations
API Key for authentication
Body
application/json
Wallet addresses to summarize. Up to 100 unique valid wallets are processed.
Maximum array length:
100Example:
[
"CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg"
]
Response
Wallet summaries found.
Number of wallets returned.
Show child attributes
Show child attributes
Valid wallets with no indexed summary. Omitted when empty.
Wallet addresses that failed Base58 validation. Omitted when empty.
Returned when more than 100 unique valid wallets are submitted.
Show child attributes
Show child attributes
Was this page helpful?
⌘I