@0xinsider/sdk 0.37.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -2
- package/dist/client.d.ts +5 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/provenance.d.ts +2 -2
- package/dist/provenance.d.ts.map +1 -1
- package/dist/provenance.js +3 -3
- package/dist/provenance.js.map +1 -1
- package/dist/schema.d.ts +819 -56
- package/dist/schema.d.ts.map +1 -1
- package/dist/stream.d.ts +18 -2
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +5 -1
- package/dist/stream.js.map +1 -1
- package/package.json +1 -1
package/dist/schema.d.ts
CHANGED
|
@@ -1001,6 +1001,7 @@ export type EventReplayMeta = {
|
|
|
1001
1001
|
condition_id?: string;
|
|
1002
1002
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
1003
1003
|
min_size?: number;
|
|
1004
|
+
min_grade_at_trade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
1004
1005
|
};
|
|
1005
1006
|
/** The expansions applied to every event on this page; empty when none. */
|
|
1006
1007
|
expand: "trade"[];
|
|
@@ -1335,6 +1336,10 @@ export type GameFreshness = {
|
|
|
1335
1336
|
scores_observed_at?: string;
|
|
1336
1337
|
/** The provider's own frame clock. Omitted when the frame carries none. */
|
|
1337
1338
|
scores_source_at?: string;
|
|
1339
|
+
/** Seconds since this game's last Sports WebSocket frame. The esports feed resends an unchanged series about every 20 seconds, so this dates the feed's last frame, not the last score change. Omitted when no Sports WebSocket frame dates the score, which is not age zero: a score read from the provider's event listing is re-read on a cadence whether or not the game moved. */
|
|
1340
|
+
scores_age_seconds?: number;
|
|
1341
|
+
/** Whether this game's score and clock are current, judged on how often this league's feed sends a frame, and independent of source_freshness, which dates the board: a board can be seconds old while one game's frame is frozen. not_applicable outside play (scheduled, final, postponed, cancelled), at halftime and in a break between periods (a period of HT or End ...). stale when the last frame is older than the bound measured for its state: 180 seconds for a running soccer half before stoppage time (the provider sends a frame each match minute); 120 seconds for an in-progress cs2 or lol series (the feed resends each running series about every 20 seconds, so fresh means the provider resent it, not that the map score moved); 600 seconds for a running period of men's and women's college basketball (league cbb, cwbb) and NHL hockey (nhl), whose feeds send no frame while the clock is stopped for a timeout or review. fresh within the bound. unknown otherwise: no dated frame, soccer stoppage time, a period clock at 00:00, End OT in women's college basketball (the end of the third quarter, after which the provider sends no frame until the final), tennis (frames land on points and stop for changeovers and breaks), and every league with no measured bound, including the NBA and NFL. */
|
|
1342
|
+
scores_freshness: "fresh" | "stale" | "unknown" | "not_applicable";
|
|
1338
1343
|
};
|
|
1339
1344
|
/** One market of a game holders batch: GET /api/v1/market/{condition_id}/holders unfiltered and cut to the batch limit. */
|
|
1340
1345
|
export type GameHoldersItem = {
|
|
@@ -1347,10 +1352,12 @@ export type GameHoldersItem = {
|
|
|
1347
1352
|
market: MarketHoldersMarket;
|
|
1348
1353
|
scan: MarketHoldersScan;
|
|
1349
1354
|
totals: MarketHoldersTotals;
|
|
1350
|
-
/** When this roster was computed. A cached roster is at most 60 seconds old. */
|
|
1355
|
+
/** When this roster was computed. A fresh cached roster is at most 60 seconds old; a stale one at most 15 minutes. */
|
|
1351
1356
|
computed_at: string;
|
|
1352
|
-
/** true when the roster came from the
|
|
1357
|
+
/** true when the roster came from the cache. */
|
|
1353
1358
|
cached: boolean;
|
|
1359
|
+
/** true when the market had no fresh roster at the batch deadline and this is the last roster published for it, up to 15 minutes old (read computed_at). The fresh one is still computing, so a read a few seconds later normally gets it; a market refused over the account's cold-read share is served the same way. */
|
|
1360
|
+
stale: boolean;
|
|
1354
1361
|
};
|
|
1355
1362
|
/** One Polymarket market linked to this game. */
|
|
1356
1363
|
export type GameMarket = {
|
|
@@ -1810,7 +1817,7 @@ export type LargeTradeInsertedV2Data = {
|
|
|
1810
1817
|
trader_id: number;
|
|
1811
1818
|
/** Address of the wallet that made the trade. */
|
|
1812
1819
|
wallet: string;
|
|
1813
|
-
/** The wallet's grade when the event was published; `null` when it has none. */
|
|
1820
|
+
/** The wallet's grade when the event was published; `null` when it has none. A backfilled trade publishes hours after it filled, so this can differ from `grade_at_trade`. `min_grade` filters on this field; `min_grade_at_trade` filters on `grade_at_trade`. */
|
|
1814
1821
|
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
1815
1822
|
/** USD notional of the trade; decimal string. */
|
|
1816
1823
|
size_usd: string;
|
|
@@ -1824,20 +1831,26 @@ export type LargeTradeInsertedV2Data = {
|
|
|
1824
1831
|
/** When the trade filled on Polymarket. The envelope's `created_at` is this instant. */
|
|
1825
1832
|
traded_at: string;
|
|
1826
1833
|
platform: "polymarket";
|
|
1834
|
+
/** The grade the wallet held when the trade filled, the same fact as `trader.grade_at_trade` on `GET /api/v1/large-trades`; `null` unless `grade_at_trade_status` is `graded`. `min_grade_at_trade` filters on it. */
|
|
1835
|
+
grade_at_trade?: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
1836
|
+
/** `graded` when `grade_at_trade` holds the grade at the fill; `ungraded` when the wallet had no grade then; `unknown` when it cannot be known, for a trade before 2026-09-19 23:00 UTC or while a grade change is unconfirmed. Only `graded` trades match `min_grade_at_trade`. An event published before these fields shipped (November 2026), or a redelivery of one, carries neither. */
|
|
1837
|
+
grade_at_trade_status?: "graded" | "ungraded" | "unknown";
|
|
1827
1838
|
};
|
|
1828
1839
|
/** `large_trades_inserted` data (Pro and Max): new large trades were ingested. It carries a count and no trade; subscribe to `large_trade_inserted_v2` for the trade itself. The deprecated spelling `whale_trades_inserted` delivers the same object until its sunset on 2027-02-01 (#29352). */
|
|
1829
1840
|
export type LargeTradesInsertedData = {
|
|
1830
1841
|
/** Large trades the producing batch admitted. */
|
|
1831
1842
|
count: number;
|
|
1832
1843
|
};
|
|
1833
|
-
/** All present fields narrow large_trade_inserted_v2 delivery.
|
|
1844
|
+
/** All present fields narrow large_trade_inserted_v2 delivery. min_grade reads the payload's grade, observed at publication; min_grade_at_trade reads its grade_at_trade, the grade when the trade filled. Send one of the two, not both (400). An empty object matches every large trade. */
|
|
1834
1845
|
export type LargeTradeSubscriptionFilters = {
|
|
1835
1846
|
/** Raw provider condition ID or mkt_-prefixed market ID. */
|
|
1836
1847
|
condition_id?: string;
|
|
1837
1848
|
/** Polymarket wallet address; matching is case-insensitive. */
|
|
1838
1849
|
wallet?: string;
|
|
1839
|
-
/** S is best; ungraded trades do not match. */
|
|
1850
|
+
/** S is best; ungraded trades do not match. Reads the wallet's grade when the trade was published, which for a backfilled trade can be hours after the fill. */
|
|
1840
1851
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
1852
|
+
/** S is best. Reads grade_at_trade, the grade the trader held when the trade filled; only a trade whose grade_at_trade_status is graded matches. The same basis as min_grade_at_trade on GET /api/v1/large-trades and GET /api/v1/stream. */
|
|
1853
|
+
min_grade_at_trade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
1841
1854
|
/** Positive USD notional as an exact decimal string. */
|
|
1842
1855
|
min_size_usd?: string;
|
|
1843
1856
|
};
|
|
@@ -1884,17 +1897,28 @@ export type LeaderboardEntry = {
|
|
|
1884
1897
|
/** When the wallet last traded: its most recent recorded trade, as of the leaderboard row's last refresh, which re-reads it hourly, so a new trade can take about an hour to show. It agrees with the activity filter: every wallet listed under activity=inactive last traded more than 30 days ago. Since 2026-11-02 (#32322); before, it carried the time 0xinsider last synced the wallet, usually within the past week whether or not the wallet traded. Omitted when the wallet has no recorded trade. */
|
|
1885
1898
|
last_active?: string;
|
|
1886
1899
|
};
|
|
1900
|
+
/** Every league with a skill leaderboard, by sport: the league values GET /api/v1/leaderboard/sports/{sport} accepts. */
|
|
1887
1901
|
export type LeaderboardLeagues = {
|
|
1902
|
+
/** Grouped by sport, then most ranked wallets first. */
|
|
1888
1903
|
leagues: {
|
|
1904
|
+
/** The canonical sport, for example Soccer or Esports. */
|
|
1889
1905
|
category: string;
|
|
1906
|
+
/** The league's display name. */
|
|
1890
1907
|
name: string;
|
|
1908
|
+
/** Wallets the league board's edge sort ranks with no hold; at least min_ranked. */
|
|
1891
1909
|
ranked_traders: number;
|
|
1910
|
+
/** The league slug, the board route's league parameter. */
|
|
1892
1911
|
slug: string;
|
|
1912
|
+
/** The sport slug, the board route's {sport}. */
|
|
1893
1913
|
sport: string;
|
|
1914
|
+
/** Wallets with at least min_resolved settled markets in the league and a trade in the last 180 days: the field the league board ranks. */
|
|
1894
1915
|
total_traders: number;
|
|
1895
1916
|
}[];
|
|
1917
|
+
/** Wallets a league board's edge sort must rank, with no hold, for the league to be listed. */
|
|
1896
1918
|
min_ranked: number;
|
|
1919
|
+
/** Settled markets of $20 or more a wallet needs in a league to be on its board. */
|
|
1897
1920
|
min_resolved: number;
|
|
1921
|
+
/** When the league ranking last ran. It runs about once a day. */
|
|
1898
1922
|
refreshed_at: string;
|
|
1899
1923
|
};
|
|
1900
1924
|
/** Edge over the price paid (#32270): how often the side a wallet bought won, minus the average price it paid, over its settled sports and esports markets of $20 or more at a known entry price. Probabilities throughout: edge 0.12 is 12 percentage points. A wallet buying at 99 cents that wins every market has an edge of about 0.01. A market bought on both sides counts by its shares: the winning side's share of the shares bought is its hit, the cost over those shares its price. */
|
|
@@ -1912,6 +1936,21 @@ export type LeaderboardPriceEdge = {
|
|
|
1912
1936
|
/** Why the leaderboard does not rank a ranked edge. record_incomplete: the wallet's stored sports and esports record shows more profit than Polymarket reports for it, so some losing markets are likely missing. Omitted when nothing holds the edge, and always omitted unless status is ranked. */
|
|
1913
1937
|
hold?: "record_incomplete";
|
|
1914
1938
|
};
|
|
1939
|
+
/** The whole board's totals, the counts the 0xinsider leaderboard page shows (#32737), read with the ranking snapshot the page is served at. Sent on every page of a request with no category and no strategy, whatever its sort, dir and activity, which order or split the same wallets. Omitted on a category or strategy page, which lists a subset these totals do not describe, and while the ranking has no totals for the served generation. */
|
|
1940
|
+
export type LeaderboardSummary = {
|
|
1941
|
+
/** Ranked wallets on the board: the wallets the unfiltered list pages through. */
|
|
1942
|
+
ranked_total: number;
|
|
1943
|
+
/** Ranked wallets by grade. Every ranked wallet is graded S, A or B, so the three sum to ranked_total. */
|
|
1944
|
+
by_grade: {
|
|
1945
|
+
S: number;
|
|
1946
|
+
A: number;
|
|
1947
|
+
B: number;
|
|
1948
|
+
};
|
|
1949
|
+
/** Ranked wallets whose last trade was 30 days or less before as_of: the wallets activity=active lists. ranked_total minus active_30d is the activity=inactive count. */
|
|
1950
|
+
active_30d: number;
|
|
1951
|
+
/** When the totals were counted, UTC. They are recounted about once a minute while the ranking is current. */
|
|
1952
|
+
as_of: string;
|
|
1953
|
+
};
|
|
1915
1954
|
/** One side's score line inside a `live_sports_updated` pulse. */
|
|
1916
1955
|
export type LiveSportsScoreEntry = {
|
|
1917
1956
|
/** Team name, ordered for the league (away first where the league reads that way). */
|
|
@@ -2647,6 +2686,13 @@ export type PickOfTheDayArchive = {
|
|
|
2647
2686
|
/** One entry per product day that has a published pick included in the archive, newest first, in the same order as picks. Each carries that day's net units, accumulated in the same backend pass and behind the same visibility gate as hit_rate.unit_score, so both cover the same population of picks. Re-adding the day totals reproduces hit_rate.unit_score to display precision rather than bit-for-bit, since that re-associates the floating-point sum. */
|
|
2648
2687
|
days: PickOfTheDayArchiveDay[];
|
|
2649
2688
|
hit_rate: PickOfTheDayHitRate;
|
|
2689
|
+
page?: {
|
|
2690
|
+
has_more: boolean;
|
|
2691
|
+
limit: number;
|
|
2692
|
+
next_cursor: string | null;
|
|
2693
|
+
returned: number;
|
|
2694
|
+
total: number;
|
|
2695
|
+
};
|
|
2650
2696
|
};
|
|
2651
2697
|
export type PickOfTheDayArchiveDay = {
|
|
2652
2698
|
/** The product day (YYYY-MM-DD). */
|
|
@@ -2742,6 +2788,67 @@ export type PickOfTheDayArchiveEntry = {
|
|
|
2742
2788
|
*/
|
|
2743
2789
|
supersedes_pick_id: string | null;
|
|
2744
2790
|
};
|
|
2791
|
+
/** The archive with `view=summary`: `hit_rate` without its daily `series`, one short row per pick, and `page`. Page with `limit` and `cursor`; `view=full` returns every field of a row. */
|
|
2792
|
+
export type PickOfTheDayArchiveSummary = {
|
|
2793
|
+
hit_rate: {
|
|
2794
|
+
clv_applicable: number;
|
|
2795
|
+
clv_avg_display?: string;
|
|
2796
|
+
clv_avg_pct?: number;
|
|
2797
|
+
clv_avg_pp?: number;
|
|
2798
|
+
clv_avg_pp_display?: string;
|
|
2799
|
+
clv_beats_close: number;
|
|
2800
|
+
clv_coverage_display?: string;
|
|
2801
|
+
clv_coverage_explanation?: string;
|
|
2802
|
+
clv_coverage_pct?: number;
|
|
2803
|
+
clv_eligible: number;
|
|
2804
|
+
clv_measured: number;
|
|
2805
|
+
clv_not_applicable: number;
|
|
2806
|
+
clv_pending: number;
|
|
2807
|
+
clv_state: string;
|
|
2808
|
+
clv_ties: number;
|
|
2809
|
+
clv_total: number;
|
|
2810
|
+
clv_unavailable: number;
|
|
2811
|
+
decided: number;
|
|
2812
|
+
losses: number;
|
|
2813
|
+
net_profit_display: string;
|
|
2814
|
+
net_profit_usd: number;
|
|
2815
|
+
pct: number;
|
|
2816
|
+
pending: number;
|
|
2817
|
+
roi_display: string;
|
|
2818
|
+
roi_pct: number;
|
|
2819
|
+
stake_usd: number;
|
|
2820
|
+
staked_usd: number;
|
|
2821
|
+
unit_score?: number;
|
|
2822
|
+
unit_score_display?: string;
|
|
2823
|
+
void: number;
|
|
2824
|
+
win_rate_display: string;
|
|
2825
|
+
wins: number;
|
|
2826
|
+
};
|
|
2827
|
+
page: {
|
|
2828
|
+
has_more: boolean;
|
|
2829
|
+
limit: number;
|
|
2830
|
+
next_cursor: string | null;
|
|
2831
|
+
returned: number;
|
|
2832
|
+
total: number;
|
|
2833
|
+
};
|
|
2834
|
+
picks: {
|
|
2835
|
+
backed_price?: number;
|
|
2836
|
+
backed_side_locked?: boolean;
|
|
2837
|
+
clv_pct?: number;
|
|
2838
|
+
display_category?: string;
|
|
2839
|
+
is_free_selection: boolean;
|
|
2840
|
+
matchup?: string;
|
|
2841
|
+
outcome: string;
|
|
2842
|
+
pick_date: string;
|
|
2843
|
+
pick_id: string;
|
|
2844
|
+
pick_outcome_label?: string;
|
|
2845
|
+
publication_order: number;
|
|
2846
|
+
required_tier?: string;
|
|
2847
|
+
top_grade?: string;
|
|
2848
|
+
unit_score?: number;
|
|
2849
|
+
}[];
|
|
2850
|
+
view: string;
|
|
2851
|
+
};
|
|
2745
2852
|
/** Select using the entry commitment_version, never implicit payload shape. All historic v1 hashes remain unchanged. */
|
|
2746
2853
|
export type PickOfTheDayCommitmentPayload = PickOfTheDayCommitmentPayloadV1 | PickOfTheDayCommitmentPayloadV2;
|
|
2747
2854
|
/** The frozen identity of the pick, exactly as the hash was taken over it. Served byte for byte as it was hashed -- keys sorted by UTF-8 byte value, no insignificant whitespace -- so a verifier concatenates and hashes with nothing to reconstruct. Property order below is the wire order. The outcome is deliberately NOT part of it: surviving a corrected outcome unchanged is the case the commitment exists for. Worked example: {"backed_price":"0.545000","condition_id":"0xabc","kickoff":"2026-09-20T23:05:00Z","pick_date":"2026-09-20","pick_outcome_index":1,"pick_outcome_label":"Lakers","pick_rank":1,"platform":"polymarket"} with the nonce 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f hashes to 44d18fa5e2aa3a2bf3c971dcc9317c8ccbdfd5480a4773b6d8ffd5fbeeea84dc. */
|
|
@@ -2919,6 +3026,8 @@ export type PickOfTheDayLedgerOpenedEntry = {
|
|
|
2919
3026
|
supersedes_pick_id: string | null;
|
|
2920
3027
|
/** Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank. */
|
|
2921
3028
|
commitment_version: 1 | 2;
|
|
3029
|
+
/** How the pick was chosen: auto by the selection algorithm, manual by an operator (102 published picks from 2026-06-23 to 2026-10-15; none since). Outside the hashed payload, so it moves no commitment. */
|
|
3030
|
+
selected_by: "auto" | "manual";
|
|
2922
3031
|
};
|
|
2923
3032
|
/** An unresolved published pick. Carries only date, rank, hash, algorithm, seal instant and permalink. Kickoff and game identity are withheld; seal time remains public commitment provenance. */
|
|
2924
3033
|
export type PickOfTheDayLedgerSealedEntry = {
|
|
@@ -2951,6 +3060,8 @@ export type PickOfTheDayLedgerSealedEntry = {
|
|
|
2951
3060
|
supersedes_pick_id: string | null;
|
|
2952
3061
|
/** Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank. */
|
|
2953
3062
|
commitment_version: 1 | 2;
|
|
3063
|
+
/** How the pick was chosen: auto by the selection algorithm, manual by an operator (102 published picks from 2026-06-23 to 2026-10-15; none since). Outside the hashed payload, so it moves no commitment. */
|
|
3064
|
+
selected_by: "auto" | "manual";
|
|
2954
3065
|
};
|
|
2955
3066
|
/** A pick without a commitment, retained so the record cannot omit unprovable entries. Unresolved entries omit game identity; once resolved, matchup, category and payload become public. Existing opened canonical payload bytes and hashes are unchanged. */
|
|
2956
3067
|
export type PickOfTheDayLedgerUncommittedEntry = {
|
|
@@ -2989,6 +3100,8 @@ export type PickOfTheDayLedgerUncommittedEntry = {
|
|
|
2989
3100
|
* @deprecated
|
|
2990
3101
|
*/
|
|
2991
3102
|
supersedes_pick_id: string | null;
|
|
3103
|
+
/** How the pick was chosen: auto by the selection algorithm, manual by an operator (102 published picks from 2026-06-23 to 2026-10-15; none since). Outside the hashed payload, so it moves no commitment. */
|
|
3104
|
+
selected_by: "auto" | "manual";
|
|
2992
3105
|
};
|
|
2993
3106
|
/** A successful current-day entitlement response when only unauthorized ranks have published. It carries an empty pick set, identity-free locked ranks and an upgrade message. Selection IDs, game identity, prices and unauthorized clocks are absent. Any scheduled or proof-pending rows are entitled rows. */
|
|
2994
3107
|
export type PickOfTheDayNoEntitledPicks = {
|
|
@@ -3003,20 +3116,451 @@ export type PickOfTheDayNoEntitledPicks = {
|
|
|
3003
3116
|
/** Unauthorized unresolved published or scheduled ranks. Contains no game, provider identity, price, or identifying clock. Pro may upgrade to Max to open these ranks. */
|
|
3004
3117
|
locked_picks: {
|
|
3005
3118
|
pick_rank: number;
|
|
3006
|
-
required_tier: "max";
|
|
3119
|
+
required_tier: "max";
|
|
3120
|
+
}[];
|
|
3121
|
+
/** Actionable status, including Upgrade to Max when only locked ranks are published. */
|
|
3122
|
+
message: string;
|
|
3123
|
+
/** Rank-ordered entitled selections that have not released. Every row retains release_at and kickoff; unauthorized scheduled ranks appear only in identity-free locked_picks. */
|
|
3124
|
+
scheduled_picks?: ScheduledPickSlot[];
|
|
3125
|
+
/**
|
|
3126
|
+
* Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.
|
|
3127
|
+
* @deprecated
|
|
3128
|
+
*/
|
|
3129
|
+
supersedes_pick_id: string | null;
|
|
3130
|
+
};
|
|
3131
|
+
export type PickOfTheDayStats = {
|
|
3132
|
+
categories: {
|
|
3133
|
+
canonical_category?: string;
|
|
3134
|
+
clv_avg_display?: string;
|
|
3135
|
+
clv_avg_pct?: number;
|
|
3136
|
+
clv_avg_pp?: number;
|
|
3137
|
+
clv_avg_pp_display?: string;
|
|
3138
|
+
clv_measured: number;
|
|
3139
|
+
edge_display?: string;
|
|
3140
|
+
edge_pp?: number;
|
|
3141
|
+
key: string;
|
|
3142
|
+
label: string;
|
|
3143
|
+
losses: number;
|
|
3144
|
+
net_profit_display?: string;
|
|
3145
|
+
net_profit_usd?: number;
|
|
3146
|
+
pending: number;
|
|
3147
|
+
picks: number;
|
|
3148
|
+
priced_decided: number;
|
|
3149
|
+
priced_in_display?: string;
|
|
3150
|
+
priced_in_pct?: number;
|
|
3151
|
+
roi_display?: string;
|
|
3152
|
+
roi_pct?: number;
|
|
3153
|
+
settled: number;
|
|
3154
|
+
small_sample: boolean;
|
|
3155
|
+
staked_usd: number;
|
|
3156
|
+
unit_score?: number;
|
|
3157
|
+
unit_score_display?: string;
|
|
3158
|
+
void: number;
|
|
3159
|
+
win_rate_display?: string;
|
|
3160
|
+
win_rate_pct?: number;
|
|
3161
|
+
wins: number;
|
|
3162
|
+
}[];
|
|
3163
|
+
days: ({
|
|
3164
|
+
date: string;
|
|
3165
|
+
losses: number;
|
|
3166
|
+
net_profit_display?: string;
|
|
3167
|
+
net_profit_usd?: number;
|
|
3168
|
+
pending: number;
|
|
3169
|
+
picks: number;
|
|
3170
|
+
sweep?: "win" | "loss";
|
|
3171
|
+
unit_score?: number;
|
|
3172
|
+
unit_score_display?: string;
|
|
3173
|
+
void: number;
|
|
3174
|
+
wins: number;
|
|
3175
|
+
})[];
|
|
3176
|
+
hit_rate: PickOfTheDayHitRate;
|
|
3177
|
+
market_expectations: {
|
|
3178
|
+
as_of_date: string;
|
|
3179
|
+
price_basis: string;
|
|
3180
|
+
timezone: string;
|
|
3181
|
+
windows: ({
|
|
3182
|
+
clv_avg_display: string | null;
|
|
3183
|
+
clv_avg_pct: number | null;
|
|
3184
|
+
clv_avg_pp: number | null;
|
|
3185
|
+
clv_avg_pp_display: string | null;
|
|
3186
|
+
clv_measured: number;
|
|
3187
|
+
clv_missing: number;
|
|
3188
|
+
expected_wins: number | null;
|
|
3189
|
+
expected_wins_display: string | null;
|
|
3190
|
+
from_date: string | null;
|
|
3191
|
+
key: string;
|
|
3192
|
+
label: string;
|
|
3193
|
+
numeric_unavailable: boolean;
|
|
3194
|
+
priced_decided: number;
|
|
3195
|
+
through_date: string;
|
|
3196
|
+
units: number | null;
|
|
3197
|
+
units_display: string | null;
|
|
3198
|
+
units_z: number | null;
|
|
3199
|
+
units_z_display: string | null;
|
|
3200
|
+
unpriced_decided: number;
|
|
3201
|
+
wins: number;
|
|
3202
|
+
wins_z: number | null;
|
|
3203
|
+
wins_z_display: string | null;
|
|
3204
|
+
})[];
|
|
3205
|
+
};
|
|
3206
|
+
market_types: {
|
|
3207
|
+
canonical_category?: string;
|
|
3208
|
+
clv_avg_display?: string;
|
|
3209
|
+
clv_avg_pct?: number;
|
|
3210
|
+
clv_avg_pp?: number;
|
|
3211
|
+
clv_avg_pp_display?: string;
|
|
3212
|
+
clv_measured: number;
|
|
3213
|
+
edge_display?: string;
|
|
3214
|
+
edge_pp?: number;
|
|
3215
|
+
key: string;
|
|
3216
|
+
label: string;
|
|
3217
|
+
losses: number;
|
|
3218
|
+
net_profit_display?: string;
|
|
3219
|
+
net_profit_usd?: number;
|
|
3220
|
+
pending: number;
|
|
3221
|
+
picks: number;
|
|
3222
|
+
priced_decided: number;
|
|
3223
|
+
priced_in_display?: string;
|
|
3224
|
+
priced_in_pct?: number;
|
|
3225
|
+
roi_display?: string;
|
|
3226
|
+
roi_pct?: number;
|
|
3227
|
+
settled: number;
|
|
3228
|
+
small_sample: boolean;
|
|
3229
|
+
staked_usd: number;
|
|
3230
|
+
unit_score?: number;
|
|
3231
|
+
unit_score_display?: string;
|
|
3232
|
+
void: number;
|
|
3233
|
+
win_rate_display?: string;
|
|
3234
|
+
win_rate_pct?: number;
|
|
3235
|
+
wins: number;
|
|
3236
|
+
}[];
|
|
3237
|
+
months: {
|
|
3238
|
+
canonical_category?: string;
|
|
3239
|
+
clv_avg_display?: string;
|
|
3240
|
+
clv_avg_pct?: number;
|
|
3241
|
+
clv_avg_pp?: number;
|
|
3242
|
+
clv_avg_pp_display?: string;
|
|
3243
|
+
clv_measured: number;
|
|
3244
|
+
edge_display?: string;
|
|
3245
|
+
edge_pp?: number;
|
|
3246
|
+
key: string;
|
|
3247
|
+
label: string;
|
|
3248
|
+
losses: number;
|
|
3249
|
+
net_profit_display?: string;
|
|
3250
|
+
net_profit_usd?: number;
|
|
3251
|
+
pending: number;
|
|
3252
|
+
picks: number;
|
|
3253
|
+
priced_decided: number;
|
|
3254
|
+
priced_in_display?: string;
|
|
3255
|
+
priced_in_pct?: number;
|
|
3256
|
+
roi_display?: string;
|
|
3257
|
+
roi_pct?: number;
|
|
3258
|
+
settled: number;
|
|
3259
|
+
small_sample: boolean;
|
|
3260
|
+
staked_usd: number;
|
|
3261
|
+
unit_score?: number;
|
|
3262
|
+
unit_score_display?: string;
|
|
3263
|
+
void: number;
|
|
3264
|
+
win_rate_display?: string;
|
|
3265
|
+
win_rate_pct?: number;
|
|
3266
|
+
wins: number;
|
|
3267
|
+
}[];
|
|
3268
|
+
outcome_stats: {
|
|
3269
|
+
concentration: {
|
|
3270
|
+
positive_wins: number;
|
|
3271
|
+
remaining_valued_decided: number;
|
|
3272
|
+
removed_wins: number;
|
|
3273
|
+
roi_without_top_wins_display: string | null;
|
|
3274
|
+
roi_without_top_wins_pct: number | null;
|
|
3275
|
+
target_wins: number;
|
|
3276
|
+
top_wins_share_display: string | null;
|
|
3277
|
+
top_wins_share_pct: number | null;
|
|
3278
|
+
valued_decided: number;
|
|
3279
|
+
};
|
|
3280
|
+
drawdown: {
|
|
3281
|
+
completed_days: number;
|
|
3282
|
+
current_days_below_peak: number | null;
|
|
3283
|
+
current_drawdown_display: string | null;
|
|
3284
|
+
current_drawdown_units: number | null;
|
|
3285
|
+
days_below_peak: number | null;
|
|
3286
|
+
excluded_days: number;
|
|
3287
|
+
from_date: string | null;
|
|
3288
|
+
longest_days_below_peak: number | null;
|
|
3289
|
+
longest_recovery_days: number | null;
|
|
3290
|
+
max_drawdown_display: string | null;
|
|
3291
|
+
max_drawdown_units: number | null;
|
|
3292
|
+
peak_date: string | null;
|
|
3293
|
+
peak_net_profit_usd: number | null;
|
|
3294
|
+
through_date: string | null;
|
|
3295
|
+
};
|
|
3296
|
+
profit_factor: {
|
|
3297
|
+
display: string | null;
|
|
3298
|
+
gross_loss_usd: number | null;
|
|
3299
|
+
gross_profit_usd: number | null;
|
|
3300
|
+
state: "empty" | "measured" | "no_losses" | "numeric_unavailable";
|
|
3301
|
+
value: number | null;
|
|
3302
|
+
valued_decided: number;
|
|
3303
|
+
};
|
|
3304
|
+
rolling: ({
|
|
3305
|
+
from_date: string | null;
|
|
3306
|
+
losses: number;
|
|
3307
|
+
roi_display: string | null;
|
|
3308
|
+
roi_pct: number | null;
|
|
3309
|
+
through_date: string | null;
|
|
3310
|
+
units: number | null;
|
|
3311
|
+
units_display: string | null;
|
|
3312
|
+
valued_decided: number;
|
|
3313
|
+
win_rate_display: string | null;
|
|
3314
|
+
win_rate_pct: number | null;
|
|
3315
|
+
window_size: number;
|
|
3316
|
+
wins: number;
|
|
3317
|
+
})[];
|
|
3318
|
+
};
|
|
3319
|
+
price_bands: {
|
|
3320
|
+
canonical_category?: string;
|
|
3321
|
+
clv_avg_display?: string;
|
|
3322
|
+
clv_avg_pct?: number;
|
|
3323
|
+
clv_avg_pp?: number;
|
|
3324
|
+
clv_avg_pp_display?: string;
|
|
3325
|
+
clv_measured: number;
|
|
3326
|
+
edge_display?: string;
|
|
3327
|
+
edge_pp?: number;
|
|
3328
|
+
key: string;
|
|
3329
|
+
label: string;
|
|
3330
|
+
losses: number;
|
|
3331
|
+
net_profit_display?: string;
|
|
3332
|
+
net_profit_usd?: number;
|
|
3333
|
+
pending: number;
|
|
3334
|
+
picks: number;
|
|
3335
|
+
priced_decided: number;
|
|
3336
|
+
priced_in_display?: string;
|
|
3337
|
+
priced_in_pct?: number;
|
|
3338
|
+
roi_display?: string;
|
|
3339
|
+
roi_pct?: number;
|
|
3340
|
+
settled: number;
|
|
3341
|
+
small_sample: boolean;
|
|
3342
|
+
staked_usd: number;
|
|
3343
|
+
unit_score?: number;
|
|
3344
|
+
unit_score_display?: string;
|
|
3345
|
+
void: number;
|
|
3346
|
+
win_rate_display?: string;
|
|
3347
|
+
win_rate_pct?: number;
|
|
3348
|
+
wins: number;
|
|
3349
|
+
}[];
|
|
3350
|
+
records: {
|
|
3351
|
+
best_day?: {
|
|
3352
|
+
date: string;
|
|
3353
|
+
date_display: string;
|
|
3354
|
+
losses: number;
|
|
3355
|
+
net_profit_display: string;
|
|
3356
|
+
net_profit_usd: number;
|
|
3357
|
+
picks: number;
|
|
3358
|
+
wins: number;
|
|
3359
|
+
};
|
|
3360
|
+
biggest_win?: {
|
|
3361
|
+
category: string;
|
|
3362
|
+
date: string;
|
|
3363
|
+
date_display: string;
|
|
3364
|
+
matchup: string;
|
|
3365
|
+
net_profit_display: string;
|
|
3366
|
+
net_profit_usd: number;
|
|
3367
|
+
};
|
|
3368
|
+
longest_losing_day_streak?: {
|
|
3369
|
+
days: number;
|
|
3370
|
+
end_date: string;
|
|
3371
|
+
net_profit_display: string;
|
|
3372
|
+
net_profit_usd: number;
|
|
3373
|
+
range_display: string;
|
|
3374
|
+
start_date: string;
|
|
3375
|
+
};
|
|
3376
|
+
longest_winning_day_streak?: {
|
|
3377
|
+
days: number;
|
|
3378
|
+
end_date: string;
|
|
3379
|
+
net_profit_display: string;
|
|
3380
|
+
net_profit_usd: number;
|
|
3381
|
+
range_display: string;
|
|
3382
|
+
start_date: string;
|
|
3383
|
+
};
|
|
3384
|
+
sweeps: {
|
|
3385
|
+
clean_sweeps: number;
|
|
3386
|
+
latest_clean_sweep?: {
|
|
3387
|
+
date: string;
|
|
3388
|
+
date_display: string;
|
|
3389
|
+
losses: number;
|
|
3390
|
+
wins: number;
|
|
3391
|
+
};
|
|
3392
|
+
latest_wipeout?: {
|
|
3393
|
+
date: string;
|
|
3394
|
+
date_display: string;
|
|
3395
|
+
losses: number;
|
|
3396
|
+
wins: number;
|
|
3397
|
+
};
|
|
3398
|
+
min_decided: number;
|
|
3399
|
+
wipeouts: number;
|
|
3400
|
+
};
|
|
3401
|
+
winning_days?: {
|
|
3402
|
+
flat: number;
|
|
3403
|
+
losing: number;
|
|
3404
|
+
settled: number;
|
|
3405
|
+
winning: number;
|
|
3406
|
+
winning_pct: number;
|
|
3407
|
+
winning_pct_display: string;
|
|
3408
|
+
};
|
|
3409
|
+
worst_day?: {
|
|
3410
|
+
date: string;
|
|
3411
|
+
date_display: string;
|
|
3412
|
+
losses: number;
|
|
3413
|
+
net_profit_display: string;
|
|
3414
|
+
net_profit_usd: number;
|
|
3415
|
+
picks: number;
|
|
3416
|
+
wins: number;
|
|
3417
|
+
};
|
|
3418
|
+
};
|
|
3419
|
+
sports: {
|
|
3420
|
+
canonical_category?: string;
|
|
3421
|
+
clv_avg_display?: string;
|
|
3422
|
+
clv_avg_pct?: number;
|
|
3423
|
+
clv_avg_pp?: number;
|
|
3424
|
+
clv_avg_pp_display?: string;
|
|
3425
|
+
clv_measured: number;
|
|
3426
|
+
edge_display?: string;
|
|
3427
|
+
edge_pp?: number;
|
|
3428
|
+
key: string;
|
|
3429
|
+
label: string;
|
|
3430
|
+
losses: number;
|
|
3431
|
+
net_profit_display?: string;
|
|
3432
|
+
net_profit_usd?: number;
|
|
3433
|
+
pending: number;
|
|
3434
|
+
picks: number;
|
|
3435
|
+
priced_decided: number;
|
|
3436
|
+
priced_in_display?: string;
|
|
3437
|
+
priced_in_pct?: number;
|
|
3438
|
+
roi_display?: string;
|
|
3439
|
+
roi_pct?: number;
|
|
3440
|
+
settled: number;
|
|
3441
|
+
small_sample: boolean;
|
|
3442
|
+
staked_usd: number;
|
|
3443
|
+
unit_score?: number;
|
|
3444
|
+
unit_score_display?: string;
|
|
3445
|
+
void: number;
|
|
3446
|
+
win_rate_display?: string;
|
|
3447
|
+
win_rate_pct?: number;
|
|
3448
|
+
wins: number;
|
|
3449
|
+
}[];
|
|
3450
|
+
streaks: {
|
|
3451
|
+
current?: number;
|
|
3452
|
+
current_day?: number;
|
|
3453
|
+
current_day_display?: string;
|
|
3454
|
+
current_display?: string;
|
|
3455
|
+
longest_loss: number;
|
|
3456
|
+
longest_win: number;
|
|
3457
|
+
};
|
|
3458
|
+
tiers: {
|
|
3459
|
+
canonical_category?: string;
|
|
3460
|
+
clv_avg_display?: string;
|
|
3461
|
+
clv_avg_pct?: number;
|
|
3462
|
+
clv_avg_pp?: number;
|
|
3463
|
+
clv_avg_pp_display?: string;
|
|
3464
|
+
clv_measured: number;
|
|
3465
|
+
edge_display?: string;
|
|
3466
|
+
edge_pp?: number;
|
|
3467
|
+
key: string;
|
|
3468
|
+
label: string;
|
|
3469
|
+
losses: number;
|
|
3470
|
+
net_profit_display?: string;
|
|
3471
|
+
net_profit_usd?: number;
|
|
3472
|
+
pending: number;
|
|
3473
|
+
picks: number;
|
|
3474
|
+
priced_decided: number;
|
|
3475
|
+
priced_in_display?: string;
|
|
3476
|
+
priced_in_pct?: number;
|
|
3477
|
+
roi_display?: string;
|
|
3478
|
+
roi_pct?: number;
|
|
3479
|
+
settled: number;
|
|
3480
|
+
small_sample: boolean;
|
|
3481
|
+
staked_usd: number;
|
|
3482
|
+
unit_score?: number;
|
|
3483
|
+
unit_score_display?: string;
|
|
3484
|
+
void: number;
|
|
3485
|
+
win_rate_display?: string;
|
|
3486
|
+
win_rate_pct?: number;
|
|
3487
|
+
wins: number;
|
|
3488
|
+
}[];
|
|
3489
|
+
total_sides: {
|
|
3490
|
+
canonical_category?: string;
|
|
3491
|
+
clv_avg_display?: string;
|
|
3492
|
+
clv_avg_pct?: number;
|
|
3493
|
+
clv_avg_pp?: number;
|
|
3494
|
+
clv_avg_pp_display?: string;
|
|
3495
|
+
clv_measured: number;
|
|
3496
|
+
edge_display?: string;
|
|
3497
|
+
edge_pp?: number;
|
|
3498
|
+
key: string;
|
|
3499
|
+
label: string;
|
|
3500
|
+
losses: number;
|
|
3501
|
+
net_profit_display?: string;
|
|
3502
|
+
net_profit_usd?: number;
|
|
3503
|
+
pending: number;
|
|
3504
|
+
picks: number;
|
|
3505
|
+
priced_decided: number;
|
|
3506
|
+
priced_in_display?: string;
|
|
3507
|
+
priced_in_pct?: number;
|
|
3508
|
+
roi_display?: string;
|
|
3509
|
+
roi_pct?: number;
|
|
3510
|
+
settled: number;
|
|
3511
|
+
small_sample: boolean;
|
|
3512
|
+
staked_usd: number;
|
|
3513
|
+
unit_score?: number;
|
|
3514
|
+
unit_score_display?: string;
|
|
3515
|
+
void: number;
|
|
3516
|
+
win_rate_display?: string;
|
|
3517
|
+
win_rate_pct?: number;
|
|
3518
|
+
wins: number;
|
|
3519
|
+
}[];
|
|
3520
|
+
voids: {
|
|
3521
|
+
backed_price?: number;
|
|
3522
|
+
backed_side?: string;
|
|
3523
|
+
category?: string;
|
|
3524
|
+
matchup?: string;
|
|
3525
|
+
pick_date: string;
|
|
3526
|
+
pick_id: string;
|
|
3527
|
+
pick_rank: number;
|
|
3528
|
+
}[];
|
|
3529
|
+
selections: {
|
|
3530
|
+
canonical_category?: string;
|
|
3531
|
+
clv_avg_display?: string;
|
|
3532
|
+
clv_avg_pct?: number;
|
|
3533
|
+
clv_avg_pp?: number;
|
|
3534
|
+
clv_avg_pp_display?: string;
|
|
3535
|
+
clv_measured: number;
|
|
3536
|
+
edge_display?: string;
|
|
3537
|
+
edge_pp?: number;
|
|
3538
|
+
key: string;
|
|
3539
|
+
label: string;
|
|
3540
|
+
losses: number;
|
|
3541
|
+
net_profit_display?: string;
|
|
3542
|
+
net_profit_usd?: number;
|
|
3543
|
+
pending: number;
|
|
3544
|
+
picks: number;
|
|
3545
|
+
priced_decided: number;
|
|
3546
|
+
priced_in_display?: string;
|
|
3547
|
+
priced_in_pct?: number;
|
|
3548
|
+
roi_display?: string;
|
|
3549
|
+
roi_pct?: number;
|
|
3550
|
+
settled: number;
|
|
3551
|
+
small_sample: boolean;
|
|
3552
|
+
staked_usd: number;
|
|
3553
|
+
unit_score?: number;
|
|
3554
|
+
unit_score_display?: string;
|
|
3555
|
+
void: number;
|
|
3556
|
+
win_rate_display?: string;
|
|
3557
|
+
win_rate_pct?: number;
|
|
3558
|
+
wins: number;
|
|
3007
3559
|
}[];
|
|
3008
|
-
/** Actionable status, including Upgrade to Max when only locked ranks are published. */
|
|
3009
|
-
message: string;
|
|
3010
|
-
/** Rank-ordered entitled selections that have not released. Every row retains release_at and kickoff; unauthorized scheduled ranks appear only in identity-free locked_picks. */
|
|
3011
|
-
scheduled_picks?: ScheduledPickSlot[];
|
|
3012
|
-
/**
|
|
3013
|
-
* Deprecated (#24157): always null. No replacement lineage was ever recorded in this field; the key stays so existing V1 clients keep parsing. Identify a pick by pick_id.
|
|
3014
|
-
* @deprecated
|
|
3015
|
-
*/
|
|
3016
|
-
supersedes_pick_id: string | null;
|
|
3017
3560
|
};
|
|
3018
|
-
|
|
3019
|
-
|
|
3561
|
+
/** The stats with `view=summary` or `sections`: only the named sections, listed in `sections`. `view=summary` names every section except `series`, `days`, `categories`, `months` and `voids`. */
|
|
3562
|
+
export type PickOfTheDayStatsSections = {
|
|
3563
|
+
categories?: {
|
|
3020
3564
|
canonical_category?: string;
|
|
3021
3565
|
clv_avg_display?: string;
|
|
3022
3566
|
clv_avg_pct?: number;
|
|
@@ -3047,7 +3591,7 @@ export type PickOfTheDayStats = {
|
|
|
3047
3591
|
win_rate_pct?: number;
|
|
3048
3592
|
wins: number;
|
|
3049
3593
|
}[];
|
|
3050
|
-
days
|
|
3594
|
+
days?: ({
|
|
3051
3595
|
date: string;
|
|
3052
3596
|
losses: number;
|
|
3053
3597
|
net_profit_display?: string;
|
|
@@ -3060,8 +3604,41 @@ export type PickOfTheDayStats = {
|
|
|
3060
3604
|
void: number;
|
|
3061
3605
|
wins: number;
|
|
3062
3606
|
})[];
|
|
3063
|
-
hit_rate
|
|
3064
|
-
|
|
3607
|
+
hit_rate?: {
|
|
3608
|
+
clv_applicable: number;
|
|
3609
|
+
clv_avg_display?: string;
|
|
3610
|
+
clv_avg_pct?: number;
|
|
3611
|
+
clv_avg_pp?: number;
|
|
3612
|
+
clv_avg_pp_display?: string;
|
|
3613
|
+
clv_beats_close: number;
|
|
3614
|
+
clv_coverage_display?: string;
|
|
3615
|
+
clv_coverage_explanation?: string;
|
|
3616
|
+
clv_coverage_pct?: number;
|
|
3617
|
+
clv_eligible: number;
|
|
3618
|
+
clv_measured: number;
|
|
3619
|
+
clv_not_applicable: number;
|
|
3620
|
+
clv_pending: number;
|
|
3621
|
+
clv_state: string;
|
|
3622
|
+
clv_ties: number;
|
|
3623
|
+
clv_total: number;
|
|
3624
|
+
clv_unavailable: number;
|
|
3625
|
+
decided: number;
|
|
3626
|
+
losses: number;
|
|
3627
|
+
net_profit_display: string;
|
|
3628
|
+
net_profit_usd: number;
|
|
3629
|
+
pct: number;
|
|
3630
|
+
pending: number;
|
|
3631
|
+
roi_display: string;
|
|
3632
|
+
roi_pct: number;
|
|
3633
|
+
stake_usd: number;
|
|
3634
|
+
staked_usd: number;
|
|
3635
|
+
unit_score?: number;
|
|
3636
|
+
unit_score_display?: string;
|
|
3637
|
+
void: number;
|
|
3638
|
+
win_rate_display: string;
|
|
3639
|
+
wins: number;
|
|
3640
|
+
};
|
|
3641
|
+
market_expectations?: {
|
|
3065
3642
|
as_of_date: string;
|
|
3066
3643
|
price_basis: string;
|
|
3067
3644
|
timezone: string;
|
|
@@ -3090,7 +3667,7 @@ export type PickOfTheDayStats = {
|
|
|
3090
3667
|
wins_z_display: string | null;
|
|
3091
3668
|
})[];
|
|
3092
3669
|
};
|
|
3093
|
-
market_types
|
|
3670
|
+
market_types?: {
|
|
3094
3671
|
canonical_category?: string;
|
|
3095
3672
|
clv_avg_display?: string;
|
|
3096
3673
|
clv_avg_pct?: number;
|
|
@@ -3121,7 +3698,7 @@ export type PickOfTheDayStats = {
|
|
|
3121
3698
|
win_rate_pct?: number;
|
|
3122
3699
|
wins: number;
|
|
3123
3700
|
}[];
|
|
3124
|
-
months
|
|
3701
|
+
months?: {
|
|
3125
3702
|
canonical_category?: string;
|
|
3126
3703
|
clv_avg_display?: string;
|
|
3127
3704
|
clv_avg_pct?: number;
|
|
@@ -3152,7 +3729,7 @@ export type PickOfTheDayStats = {
|
|
|
3152
3729
|
win_rate_pct?: number;
|
|
3153
3730
|
wins: number;
|
|
3154
3731
|
}[];
|
|
3155
|
-
outcome_stats
|
|
3732
|
+
outcome_stats?: {
|
|
3156
3733
|
concentration: {
|
|
3157
3734
|
positive_wins: number;
|
|
3158
3735
|
remaining_valued_decided: number;
|
|
@@ -3203,7 +3780,7 @@ export type PickOfTheDayStats = {
|
|
|
3203
3780
|
wins: number;
|
|
3204
3781
|
})[];
|
|
3205
3782
|
};
|
|
3206
|
-
price_bands
|
|
3783
|
+
price_bands?: {
|
|
3207
3784
|
canonical_category?: string;
|
|
3208
3785
|
clv_avg_display?: string;
|
|
3209
3786
|
clv_avg_pct?: number;
|
|
@@ -3234,7 +3811,7 @@ export type PickOfTheDayStats = {
|
|
|
3234
3811
|
win_rate_pct?: number;
|
|
3235
3812
|
wins: number;
|
|
3236
3813
|
}[];
|
|
3237
|
-
records
|
|
3814
|
+
records?: {
|
|
3238
3815
|
best_day?: {
|
|
3239
3816
|
date: string;
|
|
3240
3817
|
date_display: string;
|
|
@@ -3303,7 +3880,13 @@ export type PickOfTheDayStats = {
|
|
|
3303
3880
|
wins: number;
|
|
3304
3881
|
};
|
|
3305
3882
|
};
|
|
3306
|
-
|
|
3883
|
+
sections: string[];
|
|
3884
|
+
series?: {
|
|
3885
|
+
date: string;
|
|
3886
|
+
hit_rate_pct: number;
|
|
3887
|
+
net_profit_usd: number;
|
|
3888
|
+
}[];
|
|
3889
|
+
sports?: {
|
|
3307
3890
|
canonical_category?: string;
|
|
3308
3891
|
clv_avg_display?: string;
|
|
3309
3892
|
clv_avg_pct?: number;
|
|
@@ -3334,7 +3917,7 @@ export type PickOfTheDayStats = {
|
|
|
3334
3917
|
win_rate_pct?: number;
|
|
3335
3918
|
wins: number;
|
|
3336
3919
|
}[];
|
|
3337
|
-
streaks
|
|
3920
|
+
streaks?: {
|
|
3338
3921
|
current?: number;
|
|
3339
3922
|
current_day?: number;
|
|
3340
3923
|
current_day_display?: string;
|
|
@@ -3342,7 +3925,7 @@ export type PickOfTheDayStats = {
|
|
|
3342
3925
|
longest_loss: number;
|
|
3343
3926
|
longest_win: number;
|
|
3344
3927
|
};
|
|
3345
|
-
tiers
|
|
3928
|
+
tiers?: {
|
|
3346
3929
|
canonical_category?: string;
|
|
3347
3930
|
clv_avg_display?: string;
|
|
3348
3931
|
clv_avg_pct?: number;
|
|
@@ -3373,7 +3956,7 @@ export type PickOfTheDayStats = {
|
|
|
3373
3956
|
win_rate_pct?: number;
|
|
3374
3957
|
wins: number;
|
|
3375
3958
|
}[];
|
|
3376
|
-
total_sides
|
|
3959
|
+
total_sides?: {
|
|
3377
3960
|
canonical_category?: string;
|
|
3378
3961
|
clv_avg_display?: string;
|
|
3379
3962
|
clv_avg_pct?: number;
|
|
@@ -3404,7 +3987,8 @@ export type PickOfTheDayStats = {
|
|
|
3404
3987
|
win_rate_pct?: number;
|
|
3405
3988
|
wins: number;
|
|
3406
3989
|
}[];
|
|
3407
|
-
|
|
3990
|
+
view: string;
|
|
3991
|
+
voids?: {
|
|
3408
3992
|
backed_price?: number;
|
|
3409
3993
|
backed_side?: string;
|
|
3410
3994
|
category?: string;
|
|
@@ -3413,6 +3997,37 @@ export type PickOfTheDayStats = {
|
|
|
3413
3997
|
pick_id: string;
|
|
3414
3998
|
pick_rank: number;
|
|
3415
3999
|
}[];
|
|
4000
|
+
selections?: {
|
|
4001
|
+
canonical_category?: string;
|
|
4002
|
+
clv_avg_display?: string;
|
|
4003
|
+
clv_avg_pct?: number;
|
|
4004
|
+
clv_avg_pp?: number;
|
|
4005
|
+
clv_avg_pp_display?: string;
|
|
4006
|
+
clv_measured: number;
|
|
4007
|
+
edge_display?: string;
|
|
4008
|
+
edge_pp?: number;
|
|
4009
|
+
key: string;
|
|
4010
|
+
label: string;
|
|
4011
|
+
losses: number;
|
|
4012
|
+
net_profit_display?: string;
|
|
4013
|
+
net_profit_usd?: number;
|
|
4014
|
+
pending: number;
|
|
4015
|
+
picks: number;
|
|
4016
|
+
priced_decided: number;
|
|
4017
|
+
priced_in_display?: string;
|
|
4018
|
+
priced_in_pct?: number;
|
|
4019
|
+
roi_display?: string;
|
|
4020
|
+
roi_pct?: number;
|
|
4021
|
+
settled: number;
|
|
4022
|
+
small_sample: boolean;
|
|
4023
|
+
staked_usd: number;
|
|
4024
|
+
unit_score?: number;
|
|
4025
|
+
unit_score_display?: string;
|
|
4026
|
+
void: number;
|
|
4027
|
+
win_rate_display?: string;
|
|
4028
|
+
win_rate_pct?: number;
|
|
4029
|
+
wins: number;
|
|
4030
|
+
}[];
|
|
3416
4031
|
};
|
|
3417
4032
|
/** A settled uncommitted pick's market, side and price. The same eight fields as PickOfTheDayCommitmentPayload, in the same key order, so a settled pick's side and price sit under payload whatever the entry's state. It is NOT a commitment: no hash was taken over it before the game, and it proves nothing about when the pick was made. */
|
|
3418
4033
|
export type PickOfTheDayUncommittedPayload = {
|
|
@@ -4000,48 +4615,88 @@ export type SnapshotState = {
|
|
|
4000
4615
|
/** When this body's source read started, the clock finality is judged on. null for a body stored before that clock was recorded. */
|
|
4001
4616
|
source_read_started_at: string | null;
|
|
4002
4617
|
};
|
|
4618
|
+
/** One sport's skill leaderboard, or one league's. Every figure on a row is the wallet's record in this sport or league, except grade, the wallet's all-time grade, and volume (see volume_scope). */
|
|
4003
4619
|
export type SportLeaderboard = {
|
|
4620
|
+
/** The latest time any wallet's record on this board was recomputed. The sport ranking reruns hourly, a league ranking about once a day. null when the board has no rows. */
|
|
4004
4621
|
as_of: string | null;
|
|
4622
|
+
/** The canonical sport the slug resolved to, for example Soccer or Basketball. null when no wallet has a record under it; rows is then empty. */
|
|
4005
4623
|
category: string | null;
|
|
4624
|
+
/** The mean edge over every wallet in the field whose price_edge.status is ranked, held ones included: the value each row's edge_skill is pulled toward. null when no wallet's edge is ranked. */
|
|
4006
4625
|
edge_average: number | null;
|
|
4626
|
+
/** The league this board ranks; null on a sport board. */
|
|
4007
4627
|
league: {
|
|
4628
|
+
/** The league's display name. */
|
|
4008
4629
|
name: string;
|
|
4630
|
+
/** Wallets the league board's edge sort ranks with no hold. */
|
|
4009
4631
|
ranked_traders: number;
|
|
4632
|
+
/** The league's slug under its sport, for example premier-league or cs2. */
|
|
4010
4633
|
slug: string;
|
|
4011
4634
|
} | null;
|
|
4635
|
+
/** The requested limit after clamping to 1..100 (default 20). rows holds fewer when the board has fewer wallets. */
|
|
4012
4636
|
limit: number;
|
|
4637
|
+
/** Settled markets of $20 or more a wallet needs in the sport or league to be on the board. */
|
|
4013
4638
|
min_resolved: number;
|
|
4639
|
+
/** The head of the board, in sort order. Every figure is the wallet's record in this sport or league, except grade (all-time) and volume (see volume_scope). */
|
|
4014
4640
|
rows: ({
|
|
4641
|
+
/** Lowercase proxy wallet. */
|
|
4015
4642
|
address: string;
|
|
4643
|
+
/** What the wallet paid, USD, for the settled markets pnl counts. null when any of them has no stored cost, never a partial sum. */
|
|
4016
4644
|
cost: number | null;
|
|
4645
|
+
/** Why sort=edge sets aside an edge whose status is ranked. category_loss: the wallet's realized P&L in this sport or league is zero or below. record_incomplete: the wallet's stored sports and esports P&L runs more than 5% of its cost ahead of Polymarket's own figure, so settled losing markets are likely missing from its record. A held row keeps its price_edge and edge_skill and sorts after the ranked rows on sort=edge. null when nothing holds the edge, and always null unless price_edge.status is ranked. */
|
|
4017
4646
|
edge_hold: "category_loss" | "record_incomplete" | null;
|
|
4647
|
+
/** price_edge.edge pulled toward edge_average by the share of the record that is noise: a short record moves most of the way to the average, a long one keeps nearly all of its own edge. The value sort=edge orders by when edge_hold is null. null unless price_edge.status is ranked. */
|
|
4018
4648
|
edge_skill: number | null;
|
|
4649
|
+
/** The wallet's all-time grade, S to F, the one every route serves. It is led by realized profit across all of the wallet's sports and esports markets, not this sport's or league's, so a wallet can lead a board on in-sport P&L and still grade F. Every letter is listed: the board ranks the in-sport record and does not filter on the grade. null when the wallet has no grade. */
|
|
4019
4650
|
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
4651
|
+
/** trd_0x..., the id the trader routes accept. */
|
|
4020
4652
|
id: string;
|
|
4653
|
+
/** The wallet's last trade on a settled market of $20 or more in this sport or league. */
|
|
4021
4654
|
last_category_trade_at: string | null;
|
|
4655
|
+
/** Markets n_resolved counts that settled at a realized loss. A market that broke even counts in neither wins nor losses. */
|
|
4022
4656
|
losses: number;
|
|
4657
|
+
/** The wallet's settled markets of $20 or more in this sport or league; at least min_resolved. */
|
|
4023
4658
|
n_resolved: number;
|
|
4659
|
+
/** Provider platform. Always polymarket. */
|
|
4024
4660
|
platform: "polymarket";
|
|
4661
|
+
/** Realized P&L, USD, across the markets n_resolved counts: this sport or league only, not the wallet's whole record. The value sort=pnl orders by. */
|
|
4025
4662
|
pnl: number | null;
|
|
4663
|
+
/** Edge over the price paid in this sport or league: how often the side the wallet bought won, minus the average price it paid. Probabilities throughout: edge 0.03 is 3 percentage points. A market bought on both sides counts by its shares. null when the wallet has no priced settled market here. */
|
|
4026
4664
|
price_edge: {
|
|
4665
|
+
/** Mean entry price paid, 0-1. */
|
|
4027
4666
|
avg_price: number;
|
|
4667
|
+
/** hit_rate minus avg_price, full precision, before any shrink. edge_skill is the shrunk value. */
|
|
4028
4668
|
edge: number;
|
|
4669
|
+
/** The low end of edge's 95% range: edge minus 1.96 times the square root of avg_price * (1 - avg_price) / markets. Not a sort key: sort=edge orders by edge_skill. */
|
|
4029
4670
|
edge_lower: number;
|
|
4671
|
+
/** Share of those markets whose bought side won, 0-1. A market bought on both sides adds the winning side's share of the shares bought. */
|
|
4030
4672
|
hit_rate: number;
|
|
4673
|
+
/** Settled markets of $20 or more in this sport or league at a known entry price that the edge is measured over. */
|
|
4031
4674
|
markets: number;
|
|
4675
|
+
/** Whether the edge ranks. ranked: at least 30 such markets, and the share of the decided ones that made money at settlement within 10 points of the win rate here. too_few_markets: fewer than 30. sample_mismatch: that share is more than 10 points away, so these markets do not describe the wallet's record. Only a ranked edge with a null edge_hold orders on sort=edge. */
|
|
4032
4676
|
status: "ranked" | "too_few_markets" | "sample_mismatch";
|
|
4033
4677
|
} | null;
|
|
4678
|
+
/** 1-based position on this board under sort. A page of limit rows is the head of the board. */
|
|
4034
4679
|
rank: number;
|
|
4680
|
+
/** pnl / cost, a fraction: 0.12 is 12%. null when cost is null. */
|
|
4035
4681
|
roi: number | null;
|
|
4682
|
+
/** The wallet's Polymarket username; null when it has none. */
|
|
4036
4683
|
username: string | null;
|
|
4684
|
+
/** USD, measured as volume_scope says. On a sport board: the wallet's volume across all its sports and esports markets, the profile's Volume traded, not this sport's alone. null on every league board row: no per-league volume is stored. */
|
|
4037
4685
|
volume: number | null;
|
|
4686
|
+
/** wins / (wins + losses) in this sport or league, 0-1: 0.6 is 60%. null when no market was decided. */
|
|
4038
4687
|
win_rate: number | null;
|
|
4688
|
+
/** The lower bound of the 95% Wilson interval on win_rate, 0-1: the value sort=win_rate orders by, so a short perfect record does not outrank a long strong one. null with win_rate. */
|
|
4039
4689
|
win_rate_wilson_lb: number | null;
|
|
4690
|
+
/** Markets n_resolved counts that settled at a realized profit. */
|
|
4040
4691
|
wins: number;
|
|
4041
4692
|
})[];
|
|
4693
|
+
/** The order rows are in. edge: by edge_skill, with every wallet whose edge is not ranked, or is held, after the ranked ones. pnl: by realized P&L in the sport or league. win_rate: by the Wilson lower bound of the win rate. */
|
|
4042
4694
|
sort: "edge" | "pnl" | "win_rate";
|
|
4695
|
+
/** The board's sport slug, for example soccer, basketball or esports. An alias in the path, such as nba or cs2, reads as its sport's slug. */
|
|
4043
4696
|
sport: string;
|
|
4697
|
+
/** Wallets with at least min_resolved settled markets in the sport or league and a trade, in any market, in the last 180 days: the field rows is the head of. */
|
|
4044
4698
|
total_traders: number;
|
|
4699
|
+
/** What each row's volume measures. sports_and_esports: the wallet's volume across all its sports and esports markets, not this sport's or league's alone. */
|
|
4045
4700
|
volume_scope: "sports_and_esports";
|
|
4046
4701
|
};
|
|
4047
4702
|
export type SuspiciousTrade = {
|
|
@@ -4326,7 +4981,7 @@ export type TraderContext = {
|
|
|
4326
4981
|
/** Human-readable statement of the point-in-time snapshot semantics (data_as_of is the open-position clock -- the latest /positions snapshot, else the last completed sync; the snapshot advances only open positions, so resolved counts and win rate can include settled markets recorded after the last full sync; native realized P&L follows its accounting snapshot -- not a live feed; re-fetch for fresher data). */
|
|
4327
4982
|
freshness_note: string;
|
|
4328
4983
|
};
|
|
4329
|
-
/** Results by the entry price the wallet paid for the side it held, over its sports and esports
|
|
4984
|
+
/** Results by the entry price the wallet paid for the side it held, over its settled sports and esports positions with a held entry price. coverage counts the settled positions the buckets leave out, and why. */
|
|
4330
4985
|
export type TraderEntryPriceAnalysis = {
|
|
4331
4986
|
/** One bucket per price band that has a market, in bucket_order. */
|
|
4332
4987
|
buckets: TraderEntryPriceBucket[];
|
|
@@ -4334,10 +4989,12 @@ export type TraderEntryPriceAnalysis = {
|
|
|
4334
4989
|
best_bucket: string | null;
|
|
4335
4990
|
/** The bucket with the lowest win rate among buckets of at least 3 markets. null when no bucket has 3. */
|
|
4336
4991
|
worst_bucket: string | null;
|
|
4992
|
+
/** What the buckets cover (since 2026-11-03, #32671). */
|
|
4993
|
+
coverage: TraderEntryPriceCoverage;
|
|
4337
4994
|
};
|
|
4338
4995
|
/** One entry-price band. Each measure is an analytic value: read state before value. */
|
|
4339
4996
|
export type TraderEntryPriceBucket = {
|
|
4340
|
-
/** The band: $0.
|
|
4997
|
+
/** The band: $0.00-$0.19 (any price below $0.20, sub-cent fills included), $0.20-$0.39, $0.40-$0.59, $0.60-$0.79 or $0.80-$0.99. Until 2026-11-03 the first band was $0.01-$0.19 and sub-cent fills had no bucket (#32671). */
|
|
4341
4998
|
bucket: string;
|
|
4342
4999
|
/** Display position, 0 first, from the lowest price up. */
|
|
4343
5000
|
bucket_order: number;
|
|
@@ -4352,6 +5009,28 @@ export type TraderEntryPriceBucket = {
|
|
|
4352
5009
|
/** Mean realized P&L of a market in the band, USD. */
|
|
4353
5010
|
avg_pnl: AnalyticNumber;
|
|
4354
5011
|
};
|
|
5012
|
+
/** The settled sports and esports positions the entry-price section reads. The buckets' markets plus every unbucketed row's are settled_markets, and their realized P&L sums to settled_pnl. settled_pnl adds up the wallet's per-market realized P&L, so it differs from pnl.in_scope.realized_pnl, which is Polymarket's published sports and esports P&L with a share of the wallet's rebates. */
|
|
5013
|
+
export type TraderEntryPriceCoverage = {
|
|
5014
|
+
/** Settled sports and esports positions: bucketed_markets plus every unbucketed row's markets. */
|
|
5015
|
+
settled_markets: number;
|
|
5016
|
+
/** Realized P&L of those positions, USD. */
|
|
5017
|
+
settled_pnl: number;
|
|
5018
|
+
/** Positions in a bucket: the sum of buckets[].markets. */
|
|
5019
|
+
bucketed_markets: number;
|
|
5020
|
+
/** Realized P&L of the bucketed positions, USD: the sum of buckets[].total_pnl. */
|
|
5021
|
+
bucketed_pnl: number;
|
|
5022
|
+
/** The settled positions the buckets leave out: one row for each reason that has a position, ordered by reason. Empty when the buckets hold every settled position. */
|
|
5023
|
+
unbucketed: TraderEntryPriceUnbucketed[];
|
|
5024
|
+
};
|
|
5025
|
+
/** Settled positions with no entry-price bucket, for one reason. */
|
|
5026
|
+
export type TraderEntryPriceUnbucketed = {
|
|
5027
|
+
/** two_sided: both outcomes bought at a price, a hedged book with no single side. held_side_unpriced: one outcome has a recorded price, but the wallet's remaining shares are on the other. no_entry_price: no outcome has a recorded entry price. freshness_unknown: a bucket whose rows carry no freshness clock yet. */
|
|
5028
|
+
reason: "two_sided" | "held_side_unpriced" | "no_entry_price" | "freshness_unknown";
|
|
5029
|
+
/** Positions left out for this reason. */
|
|
5030
|
+
markets: number;
|
|
5031
|
+
/** Their realized P&L, USD. */
|
|
5032
|
+
total_pnl: number;
|
|
5033
|
+
};
|
|
4355
5034
|
export type TraderEsportsGameRecord = {
|
|
4356
5035
|
/** The game, by the same name every holder chip carries in category_win_rate_game: LoL, CS2, Dota 2, Valorant, Call of Duty, Honor of Kings, Mobile Legends: Bang Bang, Overwatch, Rainbow Six Siege, Rocket League or StarCraft II. Match a chip to this row by string equality. */
|
|
4357
5036
|
game: string;
|
|
@@ -5397,11 +6076,64 @@ export interface OperationData {
|
|
|
5397
6076
|
getMarketTopHolders: MarketTopHolders;
|
|
5398
6077
|
getMarketWalletsInOut: MarketWalletsInOut;
|
|
5399
6078
|
getMonthlyReportSnapshot: ReportSnapshot;
|
|
5400
|
-
getPickOfTheDay: PickOfTheDay | PickOfTheDayNoEntitledPicks
|
|
5401
|
-
|
|
6079
|
+
getPickOfTheDay: PickOfTheDay | PickOfTheDayNoEntitledPicks | {
|
|
6080
|
+
disclaimer?: string;
|
|
6081
|
+
locked_picks?: {
|
|
6082
|
+
pick_rank: number;
|
|
6083
|
+
required_tier: string;
|
|
6084
|
+
}[];
|
|
6085
|
+
pick_count: number;
|
|
6086
|
+
pick_date: string;
|
|
6087
|
+
picks: {
|
|
6088
|
+
backed_price?: number;
|
|
6089
|
+
category?: string;
|
|
6090
|
+
clv_pct?: number;
|
|
6091
|
+
clv_status?: string;
|
|
6092
|
+
display_category?: string;
|
|
6093
|
+
event_slug?: string;
|
|
6094
|
+
game_ended?: boolean;
|
|
6095
|
+
game_started?: boolean;
|
|
6096
|
+
holder_count?: number;
|
|
6097
|
+
is_free_selection: boolean;
|
|
6098
|
+
matchup?: string;
|
|
6099
|
+
outcome?: string;
|
|
6100
|
+
pick_id: string;
|
|
6101
|
+
pick_outcome_label?: string;
|
|
6102
|
+
polymarket_url?: string;
|
|
6103
|
+
publication_order: number;
|
|
6104
|
+
release_at?: string;
|
|
6105
|
+
return_usd?: number;
|
|
6106
|
+
stake_usd?: number;
|
|
6107
|
+
token_id?: string;
|
|
6108
|
+
top_grade?: string;
|
|
6109
|
+
unit_score?: number;
|
|
6110
|
+
}[];
|
|
6111
|
+
proof_pending_picks?: ({
|
|
6112
|
+
is_free_selection: boolean;
|
|
6113
|
+
kickoff?: string;
|
|
6114
|
+
pick_id: string;
|
|
6115
|
+
pick_rank: number;
|
|
6116
|
+
publication_order: number;
|
|
6117
|
+
release_at: string;
|
|
6118
|
+
retry_at: string;
|
|
6119
|
+
supersedes_pick_id: string | null;
|
|
6120
|
+
})[];
|
|
6121
|
+
scheduled_picks?: ({
|
|
6122
|
+
is_free_selection: boolean;
|
|
6123
|
+
kickoff: string;
|
|
6124
|
+
pick_id: string;
|
|
6125
|
+
pick_rank: number;
|
|
6126
|
+
publication_order: number;
|
|
6127
|
+
release_at: string;
|
|
6128
|
+
supersedes_pick_id: string | null;
|
|
6129
|
+
})[];
|
|
6130
|
+
state: string;
|
|
6131
|
+
view: string;
|
|
6132
|
+
};
|
|
6133
|
+
getPickOfTheDayArchive: PickOfTheDayArchive | PickOfTheDayArchiveSummary;
|
|
5402
6134
|
getPickOfTheDayLedger: PickOfTheDayLedger;
|
|
5403
6135
|
getPickOfTheDayLedgerEntry: PickOfTheDayLedgerEntry;
|
|
5404
|
-
getPickOfTheDayStats: PickOfTheDayStats;
|
|
6136
|
+
getPickOfTheDayStats: PickOfTheDayStats | PickOfTheDayStatsSections;
|
|
5405
6137
|
getPlatforms: Platforms;
|
|
5406
6138
|
getPositionTimeline: PositionTimelineEvent[];
|
|
5407
6139
|
getPositionTimelineById: PositionTimelineEvent[];
|
|
@@ -5744,7 +6476,7 @@ export interface OperationQuery {
|
|
|
5744
6476
|
createWebhookVerificationAttempt: Record<string, never>;
|
|
5745
6477
|
deleteWebhook: Record<string, never>;
|
|
5746
6478
|
exploreMarkets: {
|
|
5747
|
-
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Facet values are returned as the canonical bucket. Sports and esports only (#27411): a category outside them returns 400 bad_request with param category and names the accepted buckets. */
|
|
6479
|
+
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Facet values are returned as the canonical bucket. Sports and esports only (#27411): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, matches every sport but Esports, the provider's catch-all Sports category (cycling, lacrosse) included: use esports for Esports alone, or omit category for both (#32657). The Sports facet counts that catch-all category alone. */
|
|
5748
6480
|
category?: string;
|
|
5749
6481
|
/** Filter by market status. A market is closed once Polymarket has closed trading or it has resolved, and active otherwise; all returns both. */
|
|
5750
6482
|
status?: "active" | "closed" | "all";
|
|
@@ -5781,7 +6513,7 @@ export interface OperationQuery {
|
|
|
5781
6513
|
getEdgeHunter: {
|
|
5782
6514
|
/** Response mode. board preserves the full quoted board; signals exposes ranked records and category evidence; observations exposes cohort measurements and accountable funnel evidence. Defaults to board. */
|
|
5783
6515
|
view?: "board" | "signals" | "observations";
|
|
5784
|
-
/** Legacy canonical bucket alias, now accepted in every view. Provider aliases canonicalize: NFL reaches Football and EPL reaches Soccer. Use leagues for a league-specific selection.
|
|
6516
|
+
/** Legacy canonical bucket alias, now accepted in every view. Provider aliases canonicalize: NFL reaches Football and EPL reaches Soccer. Use leagues for a league-specific selection. The word sports, in any casing, reads as kind=sports, every sport but Esports, as category=sports does on every other route (#32720): the response echoes kind sports beside category sports, and with kind=esports it returns 400 with param category. Any other unmappable non-sport category returns an empty result and echoes category non_sport. Combines with other selection axes using AND. */
|
|
5785
6517
|
category?: string;
|
|
5786
6518
|
/** Required for view=observations; wider_holder, in_play or emerging_pile. Rejected for board and signals. wider_holder covers pregame markets that view=signals does not list at its widest selection (horizon_hours=48, min_grade=B, no selector), so until kickoff a market is read in one view or the other. A market view=signals lists leaves wider_holder as primary_slate_candidate, and is a wider_holder candidate again in the first refresh after view=signals stops listing it; signals_as_of names the view=signals snapshot each refresh read. Each refresh evaluates at most 8 markets per sport and cohort, wider_holder by soonest kickoff (most graded holders first among equal kickoffs) and in_play by most graded holders, so a market among a sport's 8 soonest stays evaluated until its game starts. wider_holder also evaluates up to 8 more markets per sport that kick off within 24 hours, most graded holders first, so the most-held markets appear up to a day before kickoff. Each of these keeps its place in later refreshes until its game starts while its holder page still shows a card or could not be read, so a more-held market waits for a free place instead of displacing it. Each row's admitted_by names its place, most_held or soonest_kickoff. The rest count in coverage.capacity_limited_markets. Emerging pile is a wider-holder projection with sharp_pct in [0.75,0.85), complete holder scans and future kickoff, not an independent population or arrival history. */
|
|
5787
6519
|
cohort?: "wider_holder" | "in_play" | "emerging_pile";
|
|
@@ -5811,7 +6543,7 @@ export interface OperationQuery {
|
|
|
5811
6543
|
series_slugs?: string[];
|
|
5812
6544
|
};
|
|
5813
6545
|
getEventReplaySince: {
|
|
5814
|
-
/** Opaque event replay cursor returned as next_cursor by a prior response. The cursor maps to the global (whale_alerts.inserted_xid, whale_alerts.id) commit-order position, is valid across backend replicas, and is bound to
|
|
6546
|
+
/** Opaque event replay cursor returned as next_cursor by a prior response. The cursor maps to the global (whale_alerts.inserted_xid, whale_alerts.id) commit-order position, is valid across backend replicas, and is bound to every filter the walk ran with (trader, condition_id, min_grade, min_grade_at_trade, min_size; expand is not a filter): presenting it under different filters, including a switch between min_grade and min_grade_at_trade, answers 400 bad_request with error.reason cursor_expired, and the walk restarts without a cursor. Cursors issued before 2026-09-22 (id-only) stay accepted and are bound to no filters. Omit to fetch the latest durable public suffix. */
|
|
5815
6547
|
cursor?: string;
|
|
5816
6548
|
/** Maximum durable public whale-trade events to return. Out-of-range values are clamped to 1..100. */
|
|
5817
6549
|
limit?: number;
|
|
@@ -5819,8 +6551,10 @@ export interface OperationQuery {
|
|
|
5819
6551
|
trader?: string;
|
|
5820
6552
|
/** Only trades on this market: the raw provider condition_id or its mkt_-prefixed id. Bound to the cursor. */
|
|
5821
6553
|
condition_id?: string;
|
|
5822
|
-
/** Only trades by wallets at this grade or better (S best), read from the wallet's newest ranking at request time; a wallet with no grade never passes. Bound to the cursor. */
|
|
6554
|
+
/** Only trades by wallets at this grade or better (S best), read from the wallet's newest ranking at request time; a wallet with no grade never passes. For the grade the wallet held when the trade filled, send min_grade_at_trade instead. Bound to the cursor. */
|
|
5823
6555
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
6556
|
+
/** Only trades whose grade_at_trade, the grade the wallet held when the trade filled, is at this grade or better (S best). Only a trade whose grade at the fill is graded passes, so a trade before 2026-09-19T23:00Z, or one made while the wallet's grade was changing, never does. The same basis as min_grade_at_trade on GET /api/v1/large-trades, GET /api/v1/stream and webhook trade_filters. Bound to the cursor: switching between min_grade and min_grade_at_trade is a filter change and answers cursor_expired. Sending it with min_grade, or an invalid grade, returns HTTP 400. */
|
|
6557
|
+
min_grade_at_trade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
5824
6558
|
/** Only trades of at least this USD amount. Decimal and scientific query spellings normalize exactly to cents, rounding half away from zero; maximum 1e15 USD. Pass the dataset continuation decimal string unchanged to preserve the bound. Bound to the cursor. */
|
|
5825
6559
|
min_size?: number | string;
|
|
5826
6560
|
/** Backward-compatible alias for expand. Repeatable: trade. */
|
|
@@ -5887,11 +6621,29 @@ export interface OperationQuery {
|
|
|
5887
6621
|
getPickOfTheDay: {
|
|
5888
6622
|
/** A product day (America/New_York) in YYYY-MM-DD format, on or before today. Omit it, or send today, for the current read. A past day with no published pick returns 404 not_found with error.param=date; a date after today, or a value that is not a date, returns 400 bad_request with error.param=date. */
|
|
5889
6623
|
date?: string;
|
|
6624
|
+
/** full (default) is the whole recorded set: every pick with its holders, lead backer, sports context, thesis and entry_authorization, and the top-level copy of the first pick. summary returns pick_date, pick_count, the disclaimer once, and each entitled pick's identity, side, price, result, return and grade (pick_id, publication_order, is_free_selection, matchup, category, display_category, event_slug, polymarket_url, token_id, pick_outcome_label, outcome, backed_price, stake_usd, return_usd, unit_score, top_grade, holder_count, clv_status, clv_pct, release_at, game_started, game_ended), with the same scheduled_picks, proof_pending_picks and locked_picks. The locked-only state=none body is the same in both views. Any other value returns 400 bad_request with error.param=view. */
|
|
6625
|
+
view?: "full" | "summary";
|
|
6626
|
+
/** One entitled published pick of the day, by its stable decimal-string pick_id. The body carries that pick once, as picks[0], beside state, pick_date and pick_count=1. It leaves out the top-level copy of the first pick that a set read without pick_id repeats, and scheduled_picks, proof_pending_picks and locked_picks. Pair it with date for a past day's pick. A pick_id that is not among the day's entitled published picks returns 404 not_found with error.param=pick_id; one whose holder proof is not readable yet returns 503 read_model_warming with Retry-After; a value that is not a positive canonical decimal returns 400 bad_request with error.param=pick_id. */
|
|
6627
|
+
pick_id?: string;
|
|
6628
|
+
};
|
|
6629
|
+
getPickOfTheDayArchive: {
|
|
6630
|
+
/** full (default) is every row with every field, plus days and hit_rate with its per-pick series. summary returns view, hit_rate without series, one page of short rows (pick_id, pick_date, publication_order, is_free_selection, matchup, display_category, pick_outcome_label, outcome, top_grade, backed_price, unit_score, clv_pct, backed_side_locked, required_tier) and page; it always pages, 50 rows unless limit says otherwise. Any other value returns 400 bad_request with error.param=view. */
|
|
6631
|
+
view?: "full" | "summary";
|
|
6632
|
+
/** Rows per page of picks, 1 to 200, default 50. An integer outside that range is clamped into it, like every list limit, and X-Effective-Query reports the limit applied; a value that is not an integer returns 400 invalid_query. On view=full, sending limit or cursor pages picks and adds page, while days and hit_rate still describe the whole record; with neither, the response is the whole record. */
|
|
6633
|
+
limit?: number;
|
|
6634
|
+
/** The page.next_cursor of the previous page: the rows after it, newest first. A cursor is a position in the record, so a pick published while you page does not shift later pages. A value this route did not return returns 400 bad_request with error.param=cursor. */
|
|
6635
|
+
cursor?: string;
|
|
5890
6636
|
};
|
|
5891
|
-
getPickOfTheDayArchive: Record<string, never>;
|
|
5892
6637
|
getPickOfTheDayLedger: Record<string, never>;
|
|
5893
6638
|
getPickOfTheDayLedgerEntry: Record<string, never>;
|
|
5894
|
-
getPickOfTheDayStats:
|
|
6639
|
+
getPickOfTheDayStats: {
|
|
6640
|
+
/** full (default) is every section. summary returns view, sections and every section except the five that grow with the record: series, days, categories, months and voids. In summary and sections bodies hit_rate carries no series; series is its own top-level section. Ignored when sections is sent. Any other value returns 400 bad_request with error.param=view. */
|
|
6641
|
+
view?: "full" | "summary";
|
|
6642
|
+
/** Exactly the sections to return, in the body's order whatever the request order. Repeatable and comma-separated: hit_rate, series, market_expectations, outcome_stats, days, categories, sports, tiers, selections, months, price_bands, market_types, total_sides, streaks, records, voids. The body names them in sections and carries view=sections. An unrecognized name returns 400 bad_request with error.param=sections rather than being ignored. */
|
|
6643
|
+
sections?: ("hit_rate" | "series" | "market_expectations" | "outcome_stats" | "days" | "categories" | "sports" | "tiers" | "selections" | "months" | "price_bands" | "market_types" | "total_sides" | "streaks" | "records" | "voids")[];
|
|
6644
|
+
/** Backward-compatible bracket alias for sections, for clients that emit array keys. Repeatable and comma-separated, with the same names. */
|
|
6645
|
+
"sections[]"?: ("hit_rate" | "series" | "market_expectations" | "outcome_stats" | "days" | "categories" | "sports" | "tiers" | "selections" | "months" | "price_bands" | "market_types" | "total_sides" | "streaks" | "records" | "voids")[];
|
|
6646
|
+
};
|
|
5895
6647
|
getPlatforms: Record<string, never>;
|
|
5896
6648
|
getPositionTimeline: {
|
|
5897
6649
|
/** Market condition_id. One timeline per (trader, market). */
|
|
@@ -5938,8 +6690,10 @@ export interface OperationQuery {
|
|
|
5938
6690
|
event?: string;
|
|
5939
6691
|
/** Optional per-connection subscribe-time filter. Raw provider condition_id or mkt_-prefixed market id (normalized the same way the other v1 market endpoints normalize). A frame passes only when it carries a matching condition_id field; frames that carry no condition_id (e.g. whale-pulse events) are EXCLUDED while this is set. An empty value after normalization returns HTTP 400. Combines with event and min_grade as a logical AND; an absent param adds no constraint. */
|
|
5940
6692
|
condition_id?: string;
|
|
5941
|
-
/** Optional per-connection subscribe-time filter. A frame passes only when it carries a grade field whose grade is better-or-equal to this minimum (S is best). Frames without a grade (every frame except wallet_grade_changed and LargeTradeInsertedV2) are excluded. An invalid grade returns HTTP 400. Combines with the other filters as a logical AND. */
|
|
6693
|
+
/** Optional per-connection subscribe-time filter. A frame passes only when it carries a grade field whose grade is better-or-equal to this minimum (S is best). On a LargeTradeInsertedV2 frame that field is grade, the wallet's grade when the trade was published: seconds after the fill for a live trade, hours after it for a backfilled one, so it is not always the grade the trade filled under. For that, send min_grade_at_trade instead. Frames without a grade (every frame except wallet_grade_changed and LargeTradeInsertedV2) are excluded. An invalid grade returns HTTP 400. Combines with the other filters as a logical AND. */
|
|
5942
6694
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
6695
|
+
/** Filter LargeTradeInsertedV2 frames to trades whose grade_at_trade, the grade the trader held when the trade filled, is at or above this minimum (S is best). Only a frame whose grade_at_trade_status is graded can match. The same basis as min_grade_at_trade on GET /api/v1/large-trades and on webhook trade_filters. Other event types are excluded when set. Sending it with min_grade, or an invalid grade, returns HTTP 400. */
|
|
6696
|
+
min_grade_at_trade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
5943
6697
|
/** Filter LargeTradeInsertedV2 frames to this Polymarket wallet. Other event types have no wallet and are excluded when set. Applied to live and retained Redis frames after privacy checks. */
|
|
5944
6698
|
wallet?: string;
|
|
5945
6699
|
/** Filter LargeTradeInsertedV2 frames to trades at or above this USD notional. Positive decimal with at most six places; other event types are excluded when set. */
|
|
@@ -5955,7 +6709,7 @@ export interface OperationQuery {
|
|
|
5955
6709
|
max_age_s?: number;
|
|
5956
6710
|
};
|
|
5957
6711
|
getTraderCategoryRecords: {
|
|
5958
|
-
/** Filter to one canonical category, matched through the same rollup every other category surface uses: soccer, EPL and champions league all reach Soccer, every esports label folds into Esports, and football is AMERICAN football and reaches Football. A filter that reaches Esports returns the Esports record with all of its games; a game is not a filter of its own, so ask for esports and read games. A sports or esports category the wallet has no record in answers 200 with an empty records array, never 404. Sports and esports only (#27311): a category outside them, or a value that reaches no category, returns 400 bad_request with param category and names the accepted buckets. */
|
|
6712
|
+
/** Filter to one canonical category, matched through the same rollup every other category surface uses: soccer, EPL and champions league all reach Soccer, every esports label folds into Esports, and football is AMERICAN football and reaches Football. A filter that reaches Esports returns the Esports record with all of its games; a game is not a filter of its own, so ask for esports and read games. A sports or esports category the wallet has no record in answers 200 with an empty records array, never 404. Sports and esports only (#27311): a category outside them, or a value that reaches no category, returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, matches every sport but Esports, the provider's catch-all Sports category (cycling, lacrosse) included: use esports for Esports alone, or omit category for both (#32657). */
|
|
5959
6713
|
category?: string;
|
|
5960
6714
|
};
|
|
5961
6715
|
getTraderContext: Record<string, never>;
|
|
@@ -6076,7 +6830,7 @@ export interface OperationQuery {
|
|
|
6076
6830
|
cursor?: string;
|
|
6077
6831
|
/** Minimum position value in USD. Raises the feed's own floor of 50,000 USD; a smaller value does not lower it. */
|
|
6078
6832
|
min_size?: number;
|
|
6079
|
-
/** One RFC 4180 CSV record of exact current provider-backed market_canonical.category values. Legacy unquoted lists such as NBA,WNBA remain valid; values containing commas, quotes, or newlines are CSV-quoted. Matching is case-insensitive. Malformed quoted input fails closed as one unknown exact category. A value outside sports and esports returns 400 bad_request with param=category (#27305), as on GET /api/v1/markets/explore. */
|
|
6833
|
+
/** One RFC 4180 CSV record of exact current provider-backed market_canonical.category values. Legacy unquoted lists such as NBA,WNBA remain valid; values containing commas, quotes, or newlines are CSV-quoted. Matching is case-insensitive. Malformed quoted input fails closed as one unknown exact category. A value outside sports and esports returns 400 bad_request with param=category (#27305), as on GET /api/v1/markets/explore. The word sports, in any casing, names every sport and returns 400 bad_request with param category, because this filter takes one category: omit category for every sports and esports market, or name one sport (#32657). */
|
|
6080
6834
|
category?: string;
|
|
6081
6835
|
/** Minimum trader grade. Matched against the trader.grade each row returns, the wallet's current grade, so every row listed shows a grade at or above this floor. */
|
|
6082
6836
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
@@ -6110,10 +6864,12 @@ export interface OperationQuery {
|
|
|
6110
6864
|
condition_id?: string;
|
|
6111
6865
|
/** Trader wallet address, timestamp-suffixed wallet alias, username, or trd_-prefixed trader ID, resolved against the traders table. Unknown traders return an empty list. */
|
|
6112
6866
|
trader?: string;
|
|
6113
|
-
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27430): a category outside them returns 400 bad_request with param category and names the accepted buckets. */
|
|
6867
|
+
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27430): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, matches every sport but Esports, the provider's catch-all Sports category (cycling, lacrosse) included: use esports for Esports alone, or omit category for both (#32657). */
|
|
6114
6868
|
category?: string;
|
|
6115
|
-
/** Minimum trader grade as of today (trader.grade), not at trade time. On a historical window it selects wallets by a grade they may have earned after the trade; for a point-in-time rule
|
|
6869
|
+
/** Minimum trader grade as of today (trader.grade), not at trade time. On a historical window it selects wallets by a grade they may have earned after the trade; for a point-in-time rule send min_grade_at_trade instead, which filters on trader.grade_at_trade. A means S or A, B means S, A or B. */
|
|
6116
6870
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
6871
|
+
/** Minimum grade the trader held when the trade filled (trader.grade_at_trade). Only rows whose trader.grade_at_trade_status is graded can match, so a trade before 2026-09-19T23:00Z, or one made while the wallet's grade was changing, never does. The same basis as min_grade_at_trade on GET /api/v1/large-trades, GET /api/v1/stream and webhook trade_filters, so a history read and a stream with the same floor agree. Applies to both sorts and beside condition_id, event_slug, trader and from/to. Sending it with min_grade is 400. A means S or A, B means S, A or B. */
|
|
6872
|
+
min_grade_at_trade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
6117
6873
|
/** When true, return only rows with persisted suspicion_score >= 60. The filter is applied before SQL-backed limit + 1 pagination. */
|
|
6118
6874
|
suspicious_only?: boolean;
|
|
6119
6875
|
/** Filter by whale_alerts.platform. all is equivalent to omitted. */
|
|
@@ -6136,10 +6892,12 @@ export interface OperationQuery {
|
|
|
6136
6892
|
cursor?: string;
|
|
6137
6893
|
/** Minimum trade size in USD. */
|
|
6138
6894
|
min_size?: number;
|
|
6139
|
-
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27430): a category outside them returns 400 bad_request with param category and names the accepted buckets. */
|
|
6895
|
+
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27430): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, matches every sport but Esports, the provider's catch-all Sports category (cycling, lacrosse) included: use esports for Esports alone, or omit category for both (#32657). */
|
|
6140
6896
|
category?: string;
|
|
6141
|
-
/** Minimum trader grade. */
|
|
6897
|
+
/** Minimum trader grade now (trader.grade), the wallet's grade when this page is read, not when the trade filled. A wallet re-graded after a trade enters or leaves the result, so a catch-up read can disagree with GET /api/v1/stream and webhooks. For the grade at the fill, send min_grade_at_trade instead. A means S or A, B means S, A or B. */
|
|
6142
6898
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
6899
|
+
/** Minimum grade the trader held when the trade filled (trader.grade_at_trade). Only rows whose trader.grade_at_trade_status is graded can match, so a trade before 2026-09-19T23:00Z, or one made while the wallet's grade was changing, never does. The same basis as min_grade_at_trade on GET /api/v1/stream and on webhook trade_filters, so a client that catches up here and then streams gets one answer. Applies to every path: recent, since, sort=market_volume_share, condition_id and event_slug. Sending it with min_grade is 400. A means S or A, B means S, A or B. */
|
|
6900
|
+
min_grade_at_trade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
6143
6901
|
/** When true, return only rows with persisted suspicion_score >= 60. The filter is applied before SQL-backed limit + 1 pagination. */
|
|
6144
6902
|
suspicious_only?: boolean;
|
|
6145
6903
|
/** Keep only trades whose market_volume_share is known and at least this. A fraction, not a percent: 0.01 is one percent of the market's traded volume. A trade whose share is unavailable is never returned by a non-zero value, because an unavailable share cannot be said to clear a floor. */
|
|
@@ -6158,7 +6916,7 @@ export interface OperationQuery {
|
|
|
6158
6916
|
limit?: number;
|
|
6159
6917
|
/** Opaque lbv1_ pagination cursor from a prior response. It binds the finite score/address boundary to the committed leaderboard generation and the effective category/strategy filters, and on a sorted page to its sort, dir and activity. A cursor from another sort or dir is a 400 bad_request on cursor; one from another activity, category, strategy or generation is cursor_expired. Legacy, malformed, non-finite, and unsupported-version cursors are rejected. */
|
|
6160
6918
|
cursor?: string;
|
|
6161
|
-
/** Filter by category: a sport or esports bucket
|
|
6919
|
+
/** Filter by category: a sport or esports bucket, matched case-insensitively. League values fold into their sport (NBA and NCAAB into Basketball, NFL into Football). Sports and esports only (#27306): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, matches every sport but Esports, the provider's catch-all Sports category (cycling, lacrosse) included: use esports for Esports alone, or omit category for both (#32657). */
|
|
6162
6920
|
category?: string;
|
|
6163
6921
|
/** Filter by observed trading style. Current styles: two_sided, category_focused, high_activity, diversified, mixed, unclassified. Current styles count the wallet's sports and esports markets only. The ten archetype keys retired on 2026-10-01 (accumulator, algo_trader, arbitrageur, directional, event_driven, market_maker, momentum, scalper, speculator, swing_trader) are still accepted and match no wallet. Style describes recorded behavior; grade measures performance. */
|
|
6164
6922
|
strategy?: "category_focused" | "diversified" | "high_activity" | "mixed" | "two_sided" | "unclassified";
|
|
@@ -6179,7 +6937,7 @@ export interface OperationQuery {
|
|
|
6179
6937
|
consistency?: "live" | "snapshot";
|
|
6180
6938
|
/** Minimum current position value in USD. Defaults to 100 when omitted, or to 0 when wallet is present; send 0 to include every reconciled position. */
|
|
6181
6939
|
min_size?: number;
|
|
6182
|
-
/** Exact match against provider-backed market_canonical.category. Sports and esports only (#27311): a category outside them returns 400 bad_request with param category and names the accepted buckets. */
|
|
6940
|
+
/** Exact match against provider-backed market_canonical.category. Sports and esports only (#27311): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, names every sport and returns 400 bad_request with param category, because this filter takes one category: omit category for every sports and esports market, or name one sport (#32657). */
|
|
6183
6941
|
category?: string;
|
|
6184
6942
|
/** Scope to one market. Accepts the raw provider condition_id or the mkt_-prefixed market id emitted by V1 responses. Combine with min_size=0 for every reconciled position in that market; an unknown id or a resolved market returns []. A market outside sports and esports returns 404 not_found with error.reason=market_out_of_scope (#27311). Without condition_id the board and wallet reads list sports and esports markets only. */
|
|
6185
6943
|
condition_id?: string;
|
|
@@ -6199,7 +6957,7 @@ export interface OperationQuery {
|
|
|
6199
6957
|
limit?: number;
|
|
6200
6958
|
/** Opaque cursor from previous response's next_cursor. Encodes the first-page as_of timestamp, normalized effective filters, ranking and aggregate collection revisions, plus the last row's absolute net flow and condition_id. A changed filter or collection returns cursor_expired; request the first page again. */
|
|
6201
6959
|
cursor?: string;
|
|
6202
|
-
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27306): a category outside them returns 400 bad_request with param category and names the accepted buckets. */
|
|
6960
|
+
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27306): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, matches every sport but Esports, the provider's catch-all Sports category (cycling, lacrosse) included: use esports for Esports alone, or omit category for both (#32657). */
|
|
6203
6961
|
category?: string;
|
|
6204
6962
|
/** Filter by source platform. all is a request-side no-op. */
|
|
6205
6963
|
platform?: "polymarket" | "all";
|
|
@@ -6219,7 +6977,7 @@ export interface OperationQuery {
|
|
|
6219
6977
|
limit?: number;
|
|
6220
6978
|
/** Opaque cursor from previous response's next_cursor. Encodes the first-page as_of timestamp, normalized effective filters, ranking and aggregate collection revisions, plus the last row's absolute net flow and condition_id. A changed filter or collection returns cursor_expired; request the first page again. */
|
|
6221
6979
|
cursor?: string;
|
|
6222
|
-
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27306): a category outside them returns 400 bad_request with param category and names the accepted buckets. */
|
|
6980
|
+
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27306): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, matches every sport but Esports, the provider's catch-all Sports category (cycling, lacrosse) included: use esports for Esports alone, or omit category for both (#32657). */
|
|
6223
6981
|
category?: string;
|
|
6224
6982
|
/** Filter by source platform. all is a request-side no-op. */
|
|
6225
6983
|
platform?: "polymarket" | "all";
|
|
@@ -6287,10 +7045,12 @@ export interface OperationQuery {
|
|
|
6287
7045
|
condition_id?: string;
|
|
6288
7046
|
/** Trader wallet address, timestamp-suffixed wallet alias, or username resolved against the traders table. Unknown traders return an empty list. */
|
|
6289
7047
|
trader?: string;
|
|
6290
|
-
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27430): a category outside them returns 400 bad_request with param category and names the accepted buckets. */
|
|
7048
|
+
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27430): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, matches every sport but Esports, the provider's catch-all Sports category (cycling, lacrosse) included: use esports for Esports alone, or omit category for both (#32657). */
|
|
6291
7049
|
category?: string;
|
|
6292
7050
|
/** Minimum trader grade. */
|
|
6293
7051
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
7052
|
+
/** Minimum grade the trader held when the trade filled (trader.grade_at_trade). Only rows whose trader.grade_at_trade_status is graded can match, so a trade before 2026-09-19T23:00Z, or one made while the wallet's grade was changing, never does. The same basis as min_grade_at_trade on GET /api/v1/large-trades, GET /api/v1/stream and webhook trade_filters, so a history read and a stream with the same floor agree. Applies to both sorts and beside condition_id, event_slug, trader and from/to. Sending it with min_grade is 400. A means S or A, B means S, A or B. */
|
|
7053
|
+
min_grade_at_trade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
6294
7054
|
/** When true, return only rows with persisted suspicion_score >= 60. The filter is applied before SQL-backed limit + 1 pagination. */
|
|
6295
7055
|
suspicious_only?: boolean;
|
|
6296
7056
|
/** Filter by whale_alerts.platform. all is equivalent to omitted. */
|
|
@@ -6313,10 +7073,12 @@ export interface OperationQuery {
|
|
|
6313
7073
|
cursor?: string;
|
|
6314
7074
|
/** Minimum trade size in USD. */
|
|
6315
7075
|
min_size?: number;
|
|
6316
|
-
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27430): a category outside them returns 400 bad_request with param category and names the accepted buckets. */
|
|
7076
|
+
/** Filter by market category (case-insensitive). A canonical bucket name (e.g. Basketball) matches every provider member that folds into it (NBA, WNBA, NCAAB); a raw provider value also resolves to its bucket. Sports and esports only (#27430): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, matches every sport but Esports, the provider's catch-all Sports category (cycling, lacrosse) included: use esports for Esports alone, or omit category for both (#32657). */
|
|
6317
7077
|
category?: string;
|
|
6318
|
-
/** Minimum trader grade
|
|
7078
|
+
/** Minimum trader grade now (trader.grade), the wallet's grade when this page is read, not when the trade filled. A wallet re-graded after a trade enters or leaves the result, so a catch-up read can disagree with GET /api/v1/stream and webhooks. For the grade at the fill, send min_grade_at_trade instead. A means S or A, B means S, A or B. */
|
|
6319
7079
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
7080
|
+
/** Minimum grade the trader held when the trade filled (trader.grade_at_trade). Only rows whose trader.grade_at_trade_status is graded can match, so a trade before 2026-09-19T23:00Z, or one made while the wallet's grade was changing, never does. The same basis as min_grade_at_trade on GET /api/v1/stream and on webhook trade_filters, so a client that catches up here and then streams gets one answer. Applies to every path: recent, since, sort=market_volume_share, condition_id and event_slug. Sending it with min_grade is 400. A means S or A, B means S, A or B. */
|
|
7081
|
+
min_grade_at_trade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
6320
7082
|
/** When true, return only rows with persisted suspicion_score >= 60. The filter is applied before SQL-backed limit + 1 pagination. */
|
|
6321
7083
|
suspicious_only?: boolean;
|
|
6322
7084
|
/** Keep only trades whose market_volume_share is known and at least this. A fraction, not a percent: 0.01 is one percent of the market's traded volume. A trade whose share is unavailable is never returned by a non-zero value, because an unavailable share cannot be said to clear a floor. */
|
|
@@ -6350,7 +7112,7 @@ export interface OperationQuery {
|
|
|
6350
7112
|
cursor?: string;
|
|
6351
7113
|
/** Filter by market status. A market is closed once Polymarket has closed trading or it has resolved, and active otherwise; all returns both. */
|
|
6352
7114
|
status?: "active" | "closed" | "all";
|
|
6353
|
-
/** Filter by category. Sports and esports only (#27411): a category outside them returns 400 bad_request with param category and names the accepted buckets. */
|
|
7115
|
+
/** Filter by category. Sports and esports only (#27411): a category outside them returns 400 bad_request with param category and names the accepted buckets. The word sports, in any casing, names every sport and returns 400 bad_request with param category, because this filter takes one category: omit category for every sports and esports market, or name one sport (#32657). */
|
|
6354
7116
|
category?: string;
|
|
6355
7117
|
};
|
|
6356
7118
|
submitTraderExport: {
|
|
@@ -7169,6 +7931,7 @@ export interface OperationResponse {
|
|
|
7169
7931
|
/** Total matching rows when the read model exposes a count; the key is absent when it does not. */
|
|
7170
7932
|
total?: number;
|
|
7171
7933
|
meta: ResponseMeta;
|
|
7934
|
+
summary?: LeaderboardSummary;
|
|
7172
7935
|
};
|
|
7173
7936
|
listLeaderboardLeagues: {
|
|
7174
7937
|
object: "leaderboard_leagues";
|