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
最多 100 个独立钱包的 PnL 摘要、身份与标签;未收录的在 notFound,非法地址在 invalid,超限会截断并返回 truncated。
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']);
授权
用于鉴权的 API Key
请求体
application/json
Wallet addresses to summarize. Up to 100 unique valid wallets are processed.
Maximum array length:
100示例:
[ "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o", "vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg" ]
响应
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
此页面对您有帮助吗?
⌘I