curl --request POST \
--url https://api.datadash.xyz/api/v1/profiles/user-tag \
--header 'Content-Type: application/json' \
--data '
{
"duration": {
"operator": "in",
"value": [
"1M"
]
},
"orderBy": [
{
"direction": "desc",
"field": "realizedPnl"
}
],
"page": {
"limit": 50,
"offset": 0
}
}
'import requests
url = "https://api.datadash.xyz/api/v1/profiles/user-tag"
payload = {
"duration": {
"operator": "in",
"value": ["1M"]
},
"orderBy": [
{
"direction": "desc",
"field": "realizedPnl"
}
],
"page": {
"limit": 50,
"offset": 0
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
duration: {operator: 'in', value: ['1M']},
orderBy: [{direction: 'desc', field: 'realizedPnl'}],
page: {limit: 50, offset: 0}
})
};
fetch('https://api.datadash.xyz/api/v1/profiles/user-tag', 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.datadash.xyz/api/v1/profiles/user-tag",
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([
'duration' => [
'operator' => 'in',
'value' => [
'1M'
]
],
'orderBy' => [
[
'direction' => 'desc',
'field' => 'realizedPnl'
]
],
'page' => [
'limit' => 50,
'offset' => 0
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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://api.datadash.xyz/api/v1/profiles/user-tag"
payload := strings.NewReader("{\n \"duration\": {\n \"operator\": \"in\",\n \"value\": [\n \"1M\"\n ]\n },\n \"orderBy\": [\n {\n \"direction\": \"desc\",\n \"field\": \"realizedPnl\"\n }\n ],\n \"page\": {\n \"limit\": 50,\n \"offset\": 0\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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://api.datadash.xyz/api/v1/profiles/user-tag")
.header("Content-Type", "application/json")
.body("{\n \"duration\": {\n \"operator\": \"in\",\n \"value\": [\n \"1M\"\n ]\n },\n \"orderBy\": [\n {\n \"direction\": \"desc\",\n \"field\": \"realizedPnl\"\n }\n ],\n \"page\": {\n \"limit\": 50,\n \"offset\": 0\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datadash.xyz/api/v1/profiles/user-tag")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"duration\": {\n \"operator\": \"in\",\n \"value\": [\n \"1M\"\n ]\n },\n \"orderBy\": [\n {\n \"direction\": \"desc\",\n \"field\": \"realizedPnl\"\n }\n ],\n \"page\": {\n \"limit\": 50,\n \"offset\": 0\n }\n}"
response = http.request(request)
puts response.read_body[
{
"avgTradesPerPrediction": 123,
"holdTime": 123,
"loss": 123,
"losses": 123,
"numPredictions": 123,
"numTrades": 123,
"positions": 123,
"profit": 123,
"profitFactor": 123,
"rank": 123,
"realizedBuyCost": 123,
"realizedPnl": 123,
"roi": 123,
"tag": {
"id": 123,
"label": "<string>",
"numEvents": 123,
"numTraders": 123,
"slug": "<string>"
},
"user": {
"bio": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"displayName": "<string>",
"pnl": 123,
"profileImageUrl": "<string>",
"pseudonym": "<string>",
"rank": 123,
"userId": "<string>",
"verifiedBadge": true,
"xUsername": "<string>"
},
"volume": 123,
"winRate": 123,
"wins": 123
}
]{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}User Tag Profile
Per-wallet performance broken down by category tag, PnL, win rate, volume and ROI per (wallet, tag) for the requested duration.
curl --request POST \
--url https://api.datadash.xyz/api/v1/profiles/user-tag \
--header 'Content-Type: application/json' \
--data '
{
"duration": {
"operator": "in",
"value": [
"1M"
]
},
"orderBy": [
{
"direction": "desc",
"field": "realizedPnl"
}
],
"page": {
"limit": 50,
"offset": 0
}
}
'import requests
url = "https://api.datadash.xyz/api/v1/profiles/user-tag"
payload = {
"duration": {
"operator": "in",
"value": ["1M"]
},
"orderBy": [
{
"direction": "desc",
"field": "realizedPnl"
}
],
"page": {
"limit": 50,
"offset": 0
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
duration: {operator: 'in', value: ['1M']},
orderBy: [{direction: 'desc', field: 'realizedPnl'}],
page: {limit: 50, offset: 0}
})
};
fetch('https://api.datadash.xyz/api/v1/profiles/user-tag', 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.datadash.xyz/api/v1/profiles/user-tag",
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([
'duration' => [
'operator' => 'in',
'value' => [
'1M'
]
],
'orderBy' => [
[
'direction' => 'desc',
'field' => 'realizedPnl'
]
],
'page' => [
'limit' => 50,
'offset' => 0
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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://api.datadash.xyz/api/v1/profiles/user-tag"
payload := strings.NewReader("{\n \"duration\": {\n \"operator\": \"in\",\n \"value\": [\n \"1M\"\n ]\n },\n \"orderBy\": [\n {\n \"direction\": \"desc\",\n \"field\": \"realizedPnl\"\n }\n ],\n \"page\": {\n \"limit\": 50,\n \"offset\": 0\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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://api.datadash.xyz/api/v1/profiles/user-tag")
.header("Content-Type", "application/json")
.body("{\n \"duration\": {\n \"operator\": \"in\",\n \"value\": [\n \"1M\"\n ]\n },\n \"orderBy\": [\n {\n \"direction\": \"desc\",\n \"field\": \"realizedPnl\"\n }\n ],\n \"page\": {\n \"limit\": 50,\n \"offset\": 0\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datadash.xyz/api/v1/profiles/user-tag")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"duration\": {\n \"operator\": \"in\",\n \"value\": [\n \"1M\"\n ]\n },\n \"orderBy\": [\n {\n \"direction\": \"desc\",\n \"field\": \"realizedPnl\"\n }\n ],\n \"page\": {\n \"limit\": 50,\n \"offset\": 0\n }\n}"
response = http.request(request)
puts response.read_body[
{
"avgTradesPerPrediction": 123,
"holdTime": 123,
"loss": 123,
"losses": 123,
"numPredictions": 123,
"numTrades": 123,
"positions": 123,
"profit": 123,
"profitFactor": 123,
"rank": 123,
"realizedBuyCost": 123,
"realizedPnl": 123,
"roi": 123,
"tag": {
"id": 123,
"label": "<string>",
"numEvents": 123,
"numTraders": 123,
"slug": "<string>"
},
"user": {
"bio": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"displayName": "<string>",
"pnl": 123,
"profileImageUrl": "<string>",
"pseudonym": "<string>",
"rank": 123,
"userId": "<string>",
"verifiedBadge": true,
"xUsername": "<string>"
},
"volume": 123,
"winRate": 123,
"wins": 123
}
]{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}Body
Time window for aggregation
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Filters to apply, combined with AND. Use a group for OR.
1A single field condition. in/notIn take an array of values; matches/notMatches take one search term.
- Numeric
- ID
- Group
Show child attributes
Show child attributes
Sort keys in priority order; the first is the primary sort. Defaults to the table's configured ranking when omitted.
Show child attributes
Show child attributes
Free-text search over: User (prefix match/full-text search).
Response
List of User Tag Profile rows
Average number of trades per prediction
Average hold time in seconds
Total loss
Number of losing positions
Number of predictions
Number of trades
Total number of positions
Total profit
Ratio of profit to loss
User rank by PnL in the category for the duration
Total cost of closed buys
Realized profit and loss
Return on investment percentage
Resolved Tag row.
Show child attributes
Show child attributes
Resolved User row.
Show child attributes
Show child attributes
Total trading volume
Winning percentage
Number of winning positions