curl --request GET \
--url https://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance"
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://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance', 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://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance",
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://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance"
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://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance")
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": "<string>",
"pnl_mode": "<string>",
"from": "<string>",
"to": "<string>",
"best_day": {
"day": "<string>",
"realized_sol": 123
},
"worst_day": {
"day": "<string>",
"realized_sol": 123
},
"current_streak": {
"kind": "win",
"length": 123
},
"longest_win_streak": 123,
"longest_loss_streak": 123,
"max_drawdown_realized_sol": 123,
"max_drawdown_realized_pct": 123,
"max_drawdown_value_sol": 123,
"max_drawdown_value_basis": "<string>",
"active_days": 123
}{
"success": false,
"error": {
"code": "INVALID_PARAM",
"message": "use pair_address; see /api/v1/pairs?token_address=X to discover pools"
}
}{
"success": false,
"error": {
"code": "INVALID_PARAM",
"message": "use pair_address; see /api/v1/pairs?token_address=X to discover pools"
}
}{
"success": false,
"error": {
"code": "INVALID_PARAM",
"message": "use pair_address; see /api/v1/pairs?token_address=X to discover pools"
}
}Streaks, drawdown & best/worst day
Compute-on-read streak / drawdown / best-worst-day analytics. Headline drawdown is peak-to-trough of cumulative realized PnL; a secondary close-based equity-curve drawdown is also returned. Cached 5s hot / 30s cold.
curl --request GET \
--url https://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance"
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://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance', 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://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance",
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://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance"
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://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dexploit.dev/v2/pnl/wallets/{wallet}/performance")
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": "<string>",
"pnl_mode": "<string>",
"from": "<string>",
"to": "<string>",
"best_day": {
"day": "<string>",
"realized_sol": 123
},
"worst_day": {
"day": "<string>",
"realized_sol": 123
},
"current_streak": {
"kind": "win",
"length": 123
},
"longest_win_streak": 123,
"longest_loss_streak": 123,
"max_drawdown_realized_sol": 123,
"max_drawdown_realized_pct": 123,
"max_drawdown_value_sol": 123,
"max_drawdown_value_basis": "<string>",
"active_days": 123
}{
"success": false,
"error": {
"code": "INVALID_PARAM",
"message": "use pair_address; see /api/v1/pairs?token_address=X to discover pools"
}
}{
"success": false,
"error": {
"code": "INVALID_PARAM",
"message": "use pair_address; see /api/v1/pairs?token_address=X to discover pools"
}
}{
"success": false,
"error": {
"code": "INVALID_PARAM",
"message": "use pair_address; see /api/v1/pairs?token_address=X to discover pools"
}
}Authorizations
Preferred for swaps-api endpoints (/swaps/*, /stats/*, /trending, /pool-events).
Path Parameters
Wallet address (base58, 32–44 characters).
Query Parameters
Inclusive start date (UTC, YYYY-MM-DD).
Inclusive end date (UTC, YYYY-MM-DD).
PnL accounting mode. strict (FIFO) and adjusted (weighted-avg cost) are realized-PnL figures; raw is net cash-flow (Σ sells − Σ buys), not realized PnL. Unknown values fall back to adjusted.
raw, strict, adjusted Response
Performance analytics
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
HEADLINE: peak-to-trough of cumulative realized.
Null when running peak <= 0.
SECONDARY, close-based equity.
Always close-based equity curve.

