curl --request GET \
--url https://api.polynode.dev/v3/builders/{code}/leaderboard \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v3/builders/{code}/leaderboard"
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.polynode.dev/v3/builders/{code}/leaderboard', 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.polynode.dev/v3/builders/{code}/leaderboard",
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.polynode.dev/v3/builders/{code}/leaderboard"
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.polynode.dev/v3/builders/{code}/leaderboard")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v3/builders/{code}/leaderboard")
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{
"builder_code": "0xceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
"builder_name": "BetMoar",
"builder_logo": null,
"builder_verified": true,
"period": "30d",
"sort": "realized_pnl",
"order": "desc",
"limit": 100,
"offset": 0,
"has_more": true,
"cohort_wallet_count": 803,
"eligible_wallet_count": 803,
"window": {
"start_date": "2026-08-02",
"end_date": "2026-08-31",
"complete_through": "2026-08-31"
},
"coverage": {
"start_date": "2026-04-03",
"end_date": "2026-08-31",
"complete": true
},
"as_of": "2026-09-01T02:10:00Z",
"pnl_as_of": "2026-09-01T02:00:00Z",
"pnl_scope": "wallet_global_polymarket_not_builder_attributed",
"pnl_semantics": "Global Polymarket wallet PnL for traders active through this builder in the selected window. PnL is not attributed to the builder.",
"volume_scope": "clob_v2_onchain",
"volume_semantics": "outcome_share_par_notional",
"fee_semantics": "Trader-paid fees on builder-attributed maker orders. These are not builder rebates.",
"data": [
{
"rank": 1,
"wallet": "0x1111111111111111111111111111111111111111",
"trader_address": "0x1111111111111111111111111111111111111111",
"realized_pnl": "184250.75",
"unrealized_pnl": null,
"total_pnl": null,
"volume_e6": "248501250000",
"volume": "248501.25",
"buy_volume_e6": "148500000000",
"buy_volume": "148500",
"sell_volume_e6": "100001250000",
"sell_volume": "100001.25",
"trades": 821,
"trader_paid_fees_e6": "184200000",
"trader_paid_fees": "184.2",
"active_days": 24,
"first_activity_at": 1785579462,
"last_activity_at": 1788043265
}
]
}{
"error": "invalid_builder",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "builder_not_found",
"message": "The requested builder was not found."
}{
"error": "ambiguous_builder_name",
"message": "More than one builder uses that name. Use the builder code instead."
}{
"error": "<string>"
}{
"error": "builder_trader_leaderboard_unavailable",
"message": "<string>"
}Builder Trader P&L Leaderboard
Rank every trader active through one builder by global wallet P&L, attributed volume, fills, trader-paid fees, active days, or recency.
curl --request GET \
--url https://api.polynode.dev/v3/builders/{code}/leaderboard \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v3/builders/{code}/leaderboard"
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.polynode.dev/v3/builders/{code}/leaderboard', 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.polynode.dev/v3/builders/{code}/leaderboard",
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.polynode.dev/v3/builders/{code}/leaderboard"
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.polynode.dev/v3/builders/{code}/leaderboard")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v3/builders/{code}/leaderboard")
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{
"builder_code": "0xceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
"builder_name": "BetMoar",
"builder_logo": null,
"builder_verified": true,
"period": "30d",
"sort": "realized_pnl",
"order": "desc",
"limit": 100,
"offset": 0,
"has_more": true,
"cohort_wallet_count": 803,
"eligible_wallet_count": 803,
"window": {
"start_date": "2026-08-02",
"end_date": "2026-08-31",
"complete_through": "2026-08-31"
},
"coverage": {
"start_date": "2026-04-03",
"end_date": "2026-08-31",
"complete": true
},
"as_of": "2026-09-01T02:10:00Z",
"pnl_as_of": "2026-09-01T02:00:00Z",
"pnl_scope": "wallet_global_polymarket_not_builder_attributed",
"pnl_semantics": "Global Polymarket wallet PnL for traders active through this builder in the selected window. PnL is not attributed to the builder.",
"volume_scope": "clob_v2_onchain",
"volume_semantics": "outcome_share_par_notional",
"fee_semantics": "Trader-paid fees on builder-attributed maker orders. These are not builder rebates.",
"data": [
{
"rank": 1,
"wallet": "0x1111111111111111111111111111111111111111",
"trader_address": "0x1111111111111111111111111111111111111111",
"realized_pnl": "184250.75",
"unrealized_pnl": null,
"total_pnl": null,
"volume_e6": "248501250000",
"volume": "248501.25",
"buy_volume_e6": "148500000000",
"buy_volume": "148500",
"sell_volume_e6": "100001250000",
"sell_volume": "100001.25",
"trades": 821,
"trader_paid_fees_e6": "184200000",
"trader_paid_fees": "184.2",
"active_days": 24,
"first_activity_at": 1785579462,
"last_activity_at": 1788043265
}
]
}{
"error": "invalid_builder",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "builder_not_found",
"message": "The requested builder was not found."
}{
"error": "ambiguous_builder_name",
"message": "More than one builder uses that name. Use the builder code instead."
}{
"error": "<string>"
}{
"error": "builder_trader_leaderboard_unavailable",
"message": "<string>"
}1d,7d, and30drank by realized P&L.allranks by total P&L by default and also supports realized or unrealized P&L.- Existing builder-attributed volume, fills, trader-paid fees, active-day, and recency rankings remain available.
Request
GET /v3/builders/{code}/leaderboard
Path parameter
| Parameter | Type | Description |
|---|---|---|
code | string | Builder code (with or without 0x) or exact public Builder name. Hex digits, the prefix, and names are case-insensitive; names must be URL-encoded. |
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
period | string | 30d | 1d, 7d, 30d, or all |
sort | string | pnl | pnl, realized_pnl, total_pnl, unrealized_pnl, volume, trades, fees, active_days, or recent |
order | string | desc | asc or desc |
limit | integer | 100 | Rows per page, from 1 through 100 |
offset | integer | 0 | Rank offset. offset + limit must not exceed 500. Five full 100-row pages use offsets 0, 100, 200, 300, and 400. |
pagination | string | offset | offset for the historical contract, or cursor for repeat-free All-Time P&L traversal |
cursor | string | — | Opaque next_cursor or previous_cursor from a cursor response. Pass it unchanged. |
as_of | RFC 3339 timestamp | — | Builder-activity snapshot copied from the first page; required on cursor continuations |
pnl_as_of | RFC 3339 timestamp | — | P&L snapshot copied from the first page; required on cursor continuations |
sort=pnl is the recommended stable default. It resolves to realized_pnl for 1d, 7d, and 30d, and to total_pnl for all. The response reports the resolved sort. Dated windows reject total_pnl and unrealized_pnl; those marked values are only meaningful for All Time.
The canonical wire values are 1d, 7d, 30d, and all. Period, sort, order, and pagination values are case-insensitive, so 30D, ALL, TOTAL_PNL, and CURSOR are accepted and returned in canonical lowercase where a corresponding response field exists. all-time is not an alias for all. Treat cursor values and timestamps as opaque and pass them unchanged.
The builder cohort contains every wallet with attributed CLOB V2 maker-order activity in the selected builder window. Fixed builder-activity windows use inclusive UTC dates through window.complete_through. Dated P&L is the canonical rolling realized-P&L aggregate through pnl_as_of; All Time uses the canonical current total, realized, and unrealized wallet summary.
coverage.complete means every UTC date in the builder cohort window has a successfully built aggregate. P&L data fails closed when its canonical aggregate is incomplete or stale. No partial ranking is returned as authoritative data.
Legacy offset pagination remains the default and its response body is unchanged. Retain every filter and add the number of returned rows to offset. Stop when has_more is false; it is always false after rank 500. Rankings use wallet address ascending as the tie-break, regardless of metric or direction.
For an All-Time total_pnl, realized_pnl, or unrealized_pnl walk, use pagination=cursor. The first request uses offset=0 without a cursor. Every continuation must keep the same Builder, resolved period, sort, order, and limit; add the number of rows already returned to offset; and pass the preceding response’s next_cursor, as_of, and pnl_as_of. This pins both snapshots and prevents a wallet already returned in that traversal from appearing again. It does not change any P&L value, ranking formula, or tie-break.
See Authentication for key creation and Rate Limits for plan availability and current request limits.
P&L-first example
The example uses BetMoar’s public builder code.curl -H "x-api-key: pn_live_YOUR_KEY" \
"https://api.polynode.dev/v3/builders/0xceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1/leaderboard?period=30d&sort=pnl&limit=1"
{
"builder_code": "0xceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
"builder_name": "BetMoar",
"builder_logo": "https://example.com/builder.png",
"builder_verified": true,
"period": "30d",
"sort": "realized_pnl",
"order": "desc",
"limit": 1,
"offset": 0,
"has_more": true,
"cohort_wallet_count": 2101,
"eligible_wallet_count": 2101,
"window": {
"start_date": "2026-08-01",
"end_date": "2026-08-30",
"complete_through": "2026-08-30"
},
"coverage": {
"start_date": "2026-04-03",
"end_date": "2026-08-30",
"complete": true
},
"as_of": "2026-08-30T08:12:17.000000Z",
"pnl_as_of": "2026-08-30T08:00:00.000000Z",
"pnl_scope": "wallet_global_polymarket_not_builder_attributed",
"pnl_semantics": "Global Polymarket wallet PnL for traders active through this builder in the selected window. PnL is not attributed to the builder.",
"volume_scope": "clob_v2_onchain",
"volume_semantics": "outcome_share_par_notional",
"fee_semantics": "Trader-paid fees on builder-attributed maker orders. These are not builder rebates.",
"data": [
{
"rank": 1,
"wallet": "0x1111111111111111111111111111111111111111",
"trader_address": "0x1111111111111111111111111111111111111111",
"realized_pnl": "184250.75",
"unrealized_pnl": null,
"total_pnl": null,
"volume_e6": "248501250000",
"volume": "248501.25",
"buy_volume_e6": "148500000000",
"buy_volume": "148500",
"sell_volume_e6": "100001250000",
"sell_volume": "100001.25",
"trades": 821,
"trader_paid_fees_e6": "184200000",
"trader_paid_fees": "184.2",
"active_days": 24,
"first_activity_at": 1785579462,
"last_activity_at": 1788043265
}
]
}
realized_pnl is always a decimal string and total_pnl / unrealized_pnl are null. For All Time, all three P&L fields are decimal strings.
Walk five All-Time pages without repeats
This loop prints as many as 500 rows in pages of 100. It stops earlier when the Builder has fewer eligible traders. If the API returns HTTP409 because either snapshot advanced, discard the traversal and restart at offset 0.
BUILDER="BetMoar"
BASE_URL="https://api.polynode.dev/v3/builders/${BUILDER}/leaderboard"
offset=0
cursor=""
as_of=""
pnl_as_of=""
while [ "$offset" -lt 500 ]; do
args=(
--data-urlencode "period=all"
--data-urlencode "sort=total_pnl"
--data-urlencode "order=desc"
--data-urlencode "limit=100"
--data-urlencode "offset=${offset}"
--data-urlencode "pagination=cursor"
)
if [ "$offset" -gt 0 ]; then
args+=(
--data-urlencode "cursor=${cursor}"
--data-urlencode "as_of=${as_of}"
--data-urlencode "pnl_as_of=${pnl_as_of}"
)
fi
page=$(curl -fsS -G -H "x-api-key: $POLYNODE_API_KEY" \
"${args[@]}" "$BASE_URL") || exit 1
jq -c '.data[]' <<<"$page"
rows=$(jq -r '.data | length' <<<"$page")
[ "$(jq -r '.has_more' <<<"$page")" = "true" ] || break
cursor=$(jq -r '.next_cursor // empty' <<<"$page")
[ "$rows" -gt 0 ] && [ -n "$cursor" ] || exit 1
as_of=$(jq -r '.as_of' <<<"$page")
pnl_as_of=$(jq -r '.pnl_as_of' <<<"$page")
offset=$((offset + rows))
done
Common queries
BUILDER_CODE="0xceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1"
BASE_URL="https://api.polynode.dev/v3/builders/${BUILDER_CODE}/leaderboard"
# Recommended defaults: 30-day realized P&L
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}"
# 1-day realized P&L
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}?period=1d&sort=pnl"
# 7-day realized P&L
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}?period=7d&sort=realized_pnl"
# All-Time total, realized, and unrealized P&L rankings
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}?period=all&sort=total_pnl"
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}?period=all&sort=realized_pnl"
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}?period=all&sort=unrealized_pnl"
# Existing builder-attributed activity rankings
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}?period=30d&sort=volume"
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}?period=30d&sort=trades"
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}?period=all&sort=fees"
# Second 100-row page of the same ranking
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}?period=30d&sort=pnl&limit=100&offset=100"
# Fifth and final supported 100-row page
curl -H "x-api-key: pn_live_YOUR_KEY" "${BASE_URL}?period=30d&sort=pnl&limit=100&offset=400"
# An exact public name also resolves directly
curl -H "x-api-key: pn_live_YOUR_KEY" \
"https://api.polynode.dev/v3/builders/BetMoar/leaderboard?period=30d&sort=pnl&limit=100"
Response fields
| Field | Type | Description |
|---|---|---|
builder_code | string | Normalized builder code |
builder_name, builder_logo, builder_verified | string / boolean / null | Public builder identity when available |
period | string | Resolved cohort and P&L window |
sort | string | Resolved sort; pnl is returned as realized_pnl or total_pnl |
order | string | Resolved sort direction |
limit, offset, has_more | integer / boolean | Bounded pagination state inside the supported first 500 ranks |
pagination | string | cursor on opt-in cursor responses; omitted from legacy offset responses |
previous_cursor, next_cursor | string | null | Opaque traversal tokens on cursor responses. The first page has no previous cursor; the last page has no next cursor. |
cohort_wallet_count | integer | Distinct wallets active through this builder in the selected window; returned for P&L sorts |
eligible_wallet_count | integer | Wallets eligible for the requested P&L ranking; dated realized-P&L cohorts include explicit zeroes, while All Time excludes wallets whose canonical current basis or mark is incomplete |
window | object | Inclusive UTC dates used to construct the builder-attributed wallet cohort |
coverage | object | Full retained builder-activity extent and selected-window completeness |
as_of | string | Completion timestamp of the latest builder-activity aggregate |
pnl_as_of | string | Canonical P&L snapshot timestamp; returned for P&L sorts |
pnl_scope | string | wallet_global_polymarket_not_builder_attributed for P&L sorts; not_applicable_builder_attributed_activity_only for activity sorts |
pnl_semantics | string | Explicit reminder that P&L is global wallet P&L, not builder-attributed P&L; returned for P&L sorts |
volume_scope | string | Always clob_v2_onchain |
volume_semantics | string | Always outcome_share_par_notional; one full outcome share represents $1 of par notional |
fee_semantics | string | Trader-paid fees on attributed maker orders, not builder rebates or revenue |
data[].rank | integer | Rank after the requested metric and ascending wallet-address tie-break |
data[].wallet, data[].trader_address | string | Same normalized trader wallet address |
data[].realized_pnl | string | Global wallet realized P&L for the requested period; returned for P&L sorts |
data[].unrealized_pnl | string | null | Global wallet current unrealized P&L for All Time; null for dated P&L |
data[].total_pnl | string | null | Global wallet current total P&L for All Time; null for dated P&L |
data[].volume_e6, data[].volume | string | Builder-attributed outcome-share par notional in raw 6-decimal and decimal units |
data[].buy_volume_e6, data[].sell_volume_e6 | string | Raw 6-decimal signed-order-side attributed volume |
data[].buy_volume, data[].sell_volume | string | Decimal signed-order-side attributed volume |
data[].trades | integer | Builder-attributed maker-order fills in the cohort window |
data[].trader_paid_fees_e6, data[].trader_paid_fees | string | Trader-paid fees in raw six-decimal and decimal USDC units |
data[].active_days | integer | UTC dates with at least one attributed fill in the cohort window |
data[].first_activity_at, data[].last_activity_at | integer | First and last attributed fill times in Unix seconds |
Errors
| Status | Error | Meaning |
|---|---|---|
400 | invalid_builder, invalid_period, invalid_sort, invalid_order, invalid_limit, invalid_offset, invalid_pagination, invalid_cursor, invalid_as_of, or invalid_pnl_as_of | A path or query value is invalid, a cursor continuation changed its bound inputs, or the requested page extends beyond rank 500 |
401 | authentication error | The API key is missing or invalid |
402 | payment required | The key’s plan does not include paid V3 REST data |
404 | builder_not_found | The normalized builder has no metadata or indexed activity |
409 | ambiguous_builder_name or builder_trader_leaderboard_snapshot_changed | Use a code for an ambiguous name, or restart a traversal at offset 0 when a pinned snapshot advances |
429 | rate limit exceeded | The account’s shared V3 REST request limit was exceeded |
503 | builder_trader_leaderboard_unavailable | Required builder activity or P&L data is incomplete, stale, or unavailable; no partial ranking is returned |
Related endpoints
| Endpoint | Description |
|---|---|
GET /v3/builders | Rank all builders by attributed activity |
GET /v3/builders/{code} | Inspect one builder’s profile and totals |
GET /v3/builders/{code}/activity/daily | Inspect daily activity and recent composition for this Builder |
GET /v3/builders/{code}/trades | Paginate the underlying builder-attributed fills |
Authorizations
Path Parameters
Builder code with or without 0x, or an exact public Builder name. Hex digits, the optional prefix, and names are case-insensitive; names must be URL-encoded.
1 - 180Query Parameters
Case-insensitive ranking window. Fixed windows end on the latest materialized UTC date; all begins at the first retained date. Responses use canonical lowercase.
1d, 7d, 30d, all Case-insensitive ranking metric. pnl resolves to realized_pnl for dated periods and total_pnl for All Time. total_pnl and unrealized_pnl are All-Time-only. recent maps to last_activity_at.
pnl, realized_pnl, total_pnl, unrealized_pnl, volume, trades, fees, active_days, recent Case-insensitive sort direction. Responses use canonical lowercase.
asc, desc 1 <= x <= 100Rank offset. offset + limit must not exceed 500; five full pages use 0, 100, 200, 300, and 400.
0 <= x <= 499Case-insensitive pagination mode. offset preserves the historical contract. cursor is available for All-Time P&L sorts and prevents a wallet already returned in the same pinned traversal from appearing again.
offset, cursor Opaque next_cursor or previous_cursor from a cursor response. Pass it unchanged with the same Builder, period, sort, order, limit, as_of, and pnl_as_of. Omit it on the first page.
1 - 8192Builder-activity snapshot copied from the first page. Required on cursor continuations; a changed snapshot returns HTTP 409.
80P&L snapshot copied from the first page. Required on cursor continuations and valid only for P&L sorts; a changed snapshot returns HTTP 409.
80Response
A complete P&L or builder-attributed activity ranking, current through the returned as_of and optional pnl_as_of timestamps.
^0x[a-fA-F0-9]{64}$1d, 7d, 30d, all Resolved sort. A request for pnl is returned as realized_pnl or total_pnl.
realized_pnl, total_pnl, unrealized_pnl, volume, trades, fees, active_days, recent asc, desc 1 <= x <= 1000 <= x <= 499True only when another page exists inside the supported first-500-rank window.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Completion timestamp of the newest contributing aggregate snapshot.
clob_v2_onchain One full outcome share represents $1 of par notional.
outcome_share_par_notional Trader-paid USDC fees attributed to maker orders; not builder rebates, revenue, or P&L.
wallet_global_polymarket_not_builder_attributed, not_applicable_builder_attributed_activity_only Show child attributes
Show child attributes
Present only for opt-in cursor responses. Legacy offset responses omit this field.
cursor Opaque cursor for the preceding page. Null on the first and second pages because offset 0 requires no cursor; omitted from legacy offset responses.
8192Opaque cursor for the next page, or null at the end of the supported traversal. Omitted from legacy offset responses.
8192Complete distinct builder-active wallet cohort. Present for P&L sorts.
0 <= x <= 100000Wallets eligible for the requested P&L ranking. Present for P&L sorts.
0 <= x <= 100000Canonical P&L snapshot timestamp. Present for P&L sorts.
Explains that P&L is global wallet P&L and is not attributed to the builder. Present for P&L sorts.

