@0xinsider/mcp 3.7.0 → 3.10.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 +16 -1
- package/dist/catalog.generated.d.ts +56 -0
- package/dist/catalog.generated.d.ts.map +1 -1
- package/dist/catalog.generated.js +70 -0
- package/dist/catalog.generated.js.map +1 -1
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/product-cli/index.d.ts.map +1 -1
- package/dist/product-cli/index.js +23 -2
- package/dist/product-cli/index.js.map +1 -1
- package/dist/product-cli/operations.d.ts.map +1 -1
- package/dist/product-cli/operations.js +20 -3
- package/dist/product-cli/operations.js.map +1 -1
- package/dist/sdk/client.d.ts +211 -3
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +228 -3
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/index.d.ts +2 -2
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/schema.d.ts +1138 -29
- package/dist/sdk/schema.d.ts.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +21 -4
- package/dist/server.js.map +1 -1
- package/dist/tools/account.d.ts +5 -0
- package/dist/tools/account.d.ts.map +1 -0
- package/dist/tools/account.js +53 -0
- package/dist/tools/account.js.map +1 -0
- package/dist/tools/category-leaderboards.d.ts +5 -0
- package/dist/tools/category-leaderboards.d.ts.map +1 -0
- package/dist/tools/category-leaderboards.js +71 -0
- package/dist/tools/category-leaderboards.js.map +1 -0
- package/dist/tools/games.d.ts +4 -0
- package/dist/tools/games.d.ts.map +1 -1
- package/dist/tools/games.js +152 -6
- package/dist/tools/games.js.map +1 -1
- package/dist/tools/get-leaderboard.d.ts.map +1 -1
- package/dist/tools/get-leaderboard.js +31 -4
- package/dist/tools/get-leaderboard.js.map +1 -1
- package/dist/tools/get-whale-trades.d.ts.map +1 -1
- package/dist/tools/get-whale-trades.js +11 -1
- package/dist/tools/get-whale-trades.js.map +1 -1
- package/dist/tools/market-reads.d.ts +2 -0
- package/dist/tools/market-reads.d.ts.map +1 -1
- package/dist/tools/market-reads.js +58 -4
- package/dist/tools/market-reads.js.map +1 -1
- package/dist/tools/pick-of-the-day.d.ts +1 -0
- package/dist/tools/pick-of-the-day.d.ts.map +1 -1
- package/dist/tools/pick-of-the-day.js +41 -11
- package/dist/tools/pick-of-the-day.js.map +1 -1
- package/dist/tools/read-parity.d.ts +1 -0
- package/dist/tools/read-parity.d.ts.map +1 -1
- package/dist/tools/read-parity.js +41 -0
- package/dist/tools/read-parity.js.map +1 -1
- package/dist/tools/search-markets.js +4 -4
- package/dist/tools/search-markets.js.map +1 -1
- package/dist/tools/sport-leaderboards.d.ts +5 -0
- package/dist/tools/sport-leaderboards.d.ts.map +1 -0
- package/dist/tools/sport-leaderboards.js +65 -0
- package/dist/tools/sport-leaderboards.js.map +1 -0
- package/dist/tools/trader-reads.js +1 -1
- package/package.json +1 -1
package/dist/sdk/schema.d.ts
CHANGED
|
@@ -94,6 +94,14 @@ export type ApiErrorBody = {
|
|
|
94
94
|
/** ADDITIVE (#7209). The specific, actionable cause behind `code`, when there is one more specific than the code itself. `code` keeps its published values, so existing clients are unaffected; new clients branch on `reason`. Omitted when the code already says everything we know. pick_not_released: no Pick of the Day is published for the current product day; schedule one request against retry_at instead of polling. unknown_endpoint: the PATH is not a route on this API -- read GET /api/v1, do not retry. trader_not_tracked: the wallet is real and the URL is right, but the trader is not on the warm sync tier (the wallets we sync most often) -- stop asking for this wallet. market_out_of_scope (404 not_found, #27303): the market or event is real and the URL is right, but 0xinsider serves sports and esports markets only -- stop asking for this market; neither a retry nor another URL for it can succeed. cursor_expired: pagination went stale mid-walk -- re-request the first page and continue. read_model_warming: the requested endpoint cannot serve its read model yet; exact causes are endpoint-specific and can include a cold or contended refresh or a dependency that prevented refresh. database_unavailable: the API's database or its connection pool is temporarily unreachable (a connection-class failure, not a query fault); code stays rate_limit_unavailable, nothing is rate-limited, retry after Retry-After / retry_at. idempotency_in_progress: retain the exact Idempotency-Key and request body, then retry shortly. webhook_delivery_in_progress: retry the URL or signing-secret configuration change after the destination's active request completes. request_accounting_unavailable: accounting capacity is unavailable before the handler executes; retry after Retry-After / retry_at. sandbox_api_key: the credential is a sandbox key (oxi_sk_test_) from POST /api/v1/agents/register, which only the sandbox server accepts -- call the sandbox base URL with it, or get a live key or OAuth access token; do not retry it here. api_key_in_query: the key was sent as a ?token= query parameter, which no route reads because URLs land in logs and history; the key itself was not checked -- resend it as Authorization: Bearer. subscription_inactive: the key is valid but the account's Pro subscription has lapsed (402 subscription_required); permanent until a person reactivates at https://0xinsider.com/billing, which the message names -- stop retrying on a schedule and surface the link. The key owner is emailed once per lapse. monthly_quota_exceeded: the account has used the requests its plan includes for the UTC calendar month (429 rate_limited); retry_at and Retry-After name the first of next month, the only retry that can succeed, and the message names https://0xinsider.com/developers, where pay as you go for requests over the quota is turned on. The X-Monthly-Quota-Limit, X-Monthly-Quota-Remaining and X-Monthly-Quota-Reset headers on every authenticated response say how close the account is. invalid_query, invalid_path, invalid_body (400 bad_request, #16146): a query parameter, a path segment or the JSON body did not parse or does not fit the route's schema, so no handler ran; param names the field when the parser named one (a query key, a path segment, a JSON path such as traders[0], or body); fix the request, never retry it as sent. unsupported_media_type (415 bad_request, param content-type): send the body with Content-Type: application/json. payload_too_large (413 bad_request, param body): the body is over 1048576 bytes. method_not_allowed (405 bad_request): the path is a route but not with this method; the Allow header names the methods it serves. ip_rate_limited (429 rate_limited, #16380): the per-address budget every caller behind one IP shares, counted before authentication, is spent; not the key's own window, and the RateLimit-* headers describe that bucket. ip_throttled (429 rate_limited): the address is in a cooldown after sustained over-limit traffic; Retry-After is minutes to days, and a request before it does not shorten the cooldown. cold_read_limited (429 rate_limited, #28752): the account has used its share of cold reads on GET /api/v1/market/{condition_id}/holders, requests for a market whose roster is not cached, each of which walks Polymarket (6 a minute, in bursts of up to 400); not the per-minute window, so a cached market still answers, and the next cold read is admitted at Retry-After. max_plan_required (403 forbidden, #23085): the key is valid and its account is on Pro, but the route is part of Max (GET /api/v1/edge-hunter); every Pro route keeps working with the same key, so do not disable it. The message names https://0xinsider.com/pricing, where the account upgrades; a retry never clears it. endpoint_retired (410): this legacy sports endpoint no longer serves data. Migrate to GET /api/v1/edge-hunter; retrying the retired path cannot succeed. */
|
|
95
95
|
reason?: "cursor_expired" | "unknown_endpoint" | "pick_not_released" | "trader_not_tracked" | "market_out_of_scope" | "read_model_warming" | "database_unavailable" | "request_accounting_unavailable" | "idempotency_in_progress" | "webhook_delivery_in_progress" | "webhook_secret_rotation_not_prepared" | "webhook_secret_rotation_overlap_active" | "sandbox_api_key" | "api_key_in_query" | "subscription_inactive" | "monthly_quota_exceeded" | "invalid_query" | "unknown_query_parameter" | "invalid_path" | "invalid_body" | "unsupported_media_type" | "payload_too_large" | "method_not_allowed" | "ip_rate_limited" | "ip_throttled" | "cold_read_limited" | "export_expired" | "freshness_ceiling_unsatisfied" | "max_plan_required" | "endpoint_retired";
|
|
96
96
|
};
|
|
97
|
+
export type BatchGameHoldersItem = {
|
|
98
|
+
/** Zero-based request index. Duplicate inputs keep separate result rows. */
|
|
99
|
+
index: number;
|
|
100
|
+
input: string;
|
|
101
|
+
status: "ok" | "error";
|
|
102
|
+
data?: GameHoldersItem;
|
|
103
|
+
error?: ApiErrorBody;
|
|
104
|
+
};
|
|
97
105
|
export type BatchMarketFlowItem = {
|
|
98
106
|
/** Zero-based request index. Duplicate inputs keep separate result rows. */
|
|
99
107
|
index: number;
|
|
@@ -142,6 +150,22 @@ export type Candle = {
|
|
|
142
150
|
/** Close price in provider [0, 1] units (last observed point in the bucket). */
|
|
143
151
|
c: number;
|
|
144
152
|
};
|
|
153
|
+
export type CategoryLeader = {
|
|
154
|
+
address: string;
|
|
155
|
+
as_of: string;
|
|
156
|
+
category: string;
|
|
157
|
+
edge_lower_bound: number | null;
|
|
158
|
+
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
159
|
+
id: string;
|
|
160
|
+
independent_events: number;
|
|
161
|
+
n_resolved: number | null;
|
|
162
|
+
platform: "polymarket";
|
|
163
|
+
pnl: number | null;
|
|
164
|
+
rank: number;
|
|
165
|
+
unresolved_events: number;
|
|
166
|
+
username: string | null;
|
|
167
|
+
win_rate: number | null;
|
|
168
|
+
};
|
|
145
169
|
/** Model-wide readiness, read in the same database snapshot as category_records. Individual category rows retain their own status. */
|
|
146
170
|
export type CategorySkillModelReadiness = {
|
|
147
171
|
status: "live" | "insufficient" | "stale" | "unknown" | "degraded";
|
|
@@ -883,10 +907,10 @@ export type EdgeHunterSportFunnelReport = {
|
|
|
883
907
|
board_upcoming_configured: boolean;
|
|
884
908
|
/** Whether every configured upcoming-board scope completed as available. False with board_upcoming_configured=false means not applicable. When board_upcoming_configured is true and this flag is false, read board_upcoming_status for the cause (unknown means no cause was recorded, which no computed snapshot reports): the board_source_unavailable and board_deadline_unavailable terminals are assigned only to already-started rows (the live half) and are structurally 0 for the upcoming source, so they never explain this flag. */
|
|
885
909
|
board_upcoming_available: boolean;
|
|
886
|
-
/** Why the upcoming-board source is (un)available. Board supply is one canonical-sport union: the bare category owns live truth and every configured composed league scope contributes upcoming rows; folded leagues without a configured board (currently
|
|
910
|
+
/** Why the upcoming-board source is (un)available. Board supply is one canonical-sport union: the bare category owns live truth and every configured composed league scope contributes upcoming rows; folded leagues without a configured board (currently CFL) are not in the upcoming union. available: every configured scope completed truthfully (a successful empty schedule still counts). capacity_limited: provider pagination or a configured upcoming cache published an intentionally bounded complete-event prefix; those rows are excluded from diagnostic-universe input and must not be treated as a complete upcoming universe. Cache-bound prefixes are limited to an exact 5,000,000-byte final envelope. source_unavailable: composition failed before a truthful union; resolved scope readers turn half failures into cold_unavailable, so fresh producers are whole-union identity reconciliation or a registry contract failure and carry zero rows. cold_unavailable: every scope completed but at least one reported its upcoming half unavailable because no servable entry was inside the stale-serve bound and the background warm did not land in time; it is not by itself proof of a provider outage. deadline_unavailable: an internal configured-scope deadline or the outer bounded fair wave expired. An internal deadline may retain healthy bare-category or sibling-scope rows; the outer wave records zero rows. These upcoming fields do not describe league live-membership availability. If the bare-category live scope fails, all live rows are dropped even when a league scope completed, because the bare category is the sole live-truth owner. not_configured: no upcoming scope applies to the sport. unknown: no cause was recorded; every computed snapshot reports a concrete status, so none reads unknown. board_upcoming_available is exactly board_upcoming_status == available. */
|
|
887
911
|
board_upcoming_status: "unknown" | "not_configured" | "available" | "capacity_limited" | "source_unavailable" | "cold_unavailable" | "deadline_unavailable";
|
|
888
|
-
/** Configured upcoming scopes that did not complete as available. Values are category, a provider league tag slug (nfl, cfb, nba, wnba, euroleague-basketball, nhl, mls, valorant, league-of-legends, counter-strike-2, or dota-2), registry when the compiled scope/projection contract drifted, union when cross-scope identity reconciliation failed, or wave when the outer fair-wave deadline expired before scope-level evidence returned. Empty means no unavailable upcoming scope was identified; this includes healthy/not-configured rows and a legacy cached row. Observation league scopes are upcoming-only and perform no live-membership read. */
|
|
889
|
-
board_upcoming_unavailable_scopes: ("category" | "nfl" | "cfb" | "nba" | "wnba" | "euroleague-basketball" | "nhl" | "mls" | "valorant" | "league-of-legends" | "counter-strike-2" | "dota-2" | "registry" | "union" | "wave")[];
|
|
912
|
+
/** Configured upcoming scopes that did not complete as available. Values are category, a provider league tag slug (nfl, cfb, nba, wnba, euroleague-basketball, ncaa-basketball, cwbb, nhl, mls, valorant, league-of-legends, counter-strike-2, or dota-2), registry when the compiled scope/projection contract drifted, union when cross-scope identity reconciliation failed, or wave when the outer fair-wave deadline expired before scope-level evidence returned. Empty means no unavailable upcoming scope was identified; this includes healthy/not-configured rows and a legacy cached row. Observation league scopes are upcoming-only and perform no live-membership read. */
|
|
913
|
+
board_upcoming_unavailable_scopes: ("category" | "nfl" | "cfb" | "nba" | "wnba" | "euroleague-basketball" | "ncaa-basketball" | "cwbb" | "nhl" | "mls" | "valorant" | "league-of-legends" | "counter-strike-2" | "dota-2" | "registry" | "union" | "wave")[];
|
|
890
914
|
/** Stored-universe rows plus provider-board rows missing from storage. */
|
|
891
915
|
input: number;
|
|
892
916
|
/** Sparse counts over the closed 25-value terminal vocabulary: outside_horizon, resolved, provider_closed, provider_excluded, invalid_market, missing_token, missing_stored_market, not_provider_live, board_source_unavailable, board_deadline_unavailable, primary_slate_candidate, zero_indexed_holder_research, capacity_limited, provider_unavailable, holder_deadline_unavailable, holder_computation_unavailable, holder_scan_incomplete, no_current_graded_holder, split_holder_pile, price_unavailable, wider_holder_emitted, in_play_emitted, in_play_stale_observed, in_play_directional_unavailable, or internal_unclassified. primary_slate_candidate means the view=signals snapshot named by signals_as_of lists the market at its widest selection (horizon_hours=48, min_grade=B, no selector), so it is not a wider_holder candidate; when no view=signals snapshot could be read (signals_as_of null), no market takes it. capacity_limited is intentional bounded provider-work admission, is fully accounted here, and does not itself set degraded=true. board_source_unavailable means a completed board source was unavailable; board_deadline_unavailable means live-board work missed either an internal configured-scope deadline or the outer fair-wave deadline; provider_unavailable means a holder read sent to the provider failed and the market had no reusable holder page; holder_deadline_unavailable means holder cache/provider work missed the absolute request deadline, or local capacity never sent the holder read, and the market had no reusable holder page; holder_computation_unavailable means post-holder provider or DB-backed price/metadata evaluation was unavailable. */
|
|
@@ -1212,7 +1236,7 @@ export type FreshnessFailure = {
|
|
|
1212
1236
|
/** The trader body's whole-response data-quality status. Only fresh can satisfy max_age_s. */
|
|
1213
1237
|
data_quality_status: "fresh" | "partial" | "unknown" | "untracked" | "unavailable";
|
|
1214
1238
|
};
|
|
1215
|
-
/** One sports or esports game: both sides, its schedule, provider status,
|
|
1239
|
+
/** One sports or esports game: both sides, its schedule, provider status, its winner markets (the moneyline, or the soccer 1X2 legs) with their available provider moneyline price states and liquidity, and the game's traded volume. The event's other markets are on GET /api/v1/games/{event_slug}/markets. Assembled from the same provider-first live and upcoming projections the site's boards use, with no request-time provider fan-out. */
|
|
1216
1240
|
export type Game = {
|
|
1217
1241
|
object: "game";
|
|
1218
1242
|
/** The game's identity, for example mlb-mil-cin-2026-06-22. The same key the live_sports_updated webhook pulse carries and the same key /api/v1/games/{event_slug} takes. */
|
|
@@ -1234,12 +1258,15 @@ export type Game = {
|
|
|
1234
1258
|
series_format?: string;
|
|
1235
1259
|
/** Whether this read includes a market classified as paying on a draw, including soccer's independent 1X2 draw leg. Read this instead of assuming a two-outcome moneyline. */
|
|
1236
1260
|
draw_offered: boolean;
|
|
1237
|
-
/**
|
|
1261
|
+
/** The game's winner markets the sports board binds to its sides (the moneyline, or a soccer game's three 1X2 legs), ordered by condition_id. Spreads, totals, period lines and props are on GET /api/v1/games/{event_slug}/markets. */
|
|
1238
1262
|
markets: GameMarket[];
|
|
1239
1263
|
freshness: GameFreshness;
|
|
1240
1264
|
coverage: GameCoverage;
|
|
1241
1265
|
/** The game's page on 0xinsider. */
|
|
1242
1266
|
url: string;
|
|
1267
|
+
sharp_money?: GameSharpMoney;
|
|
1268
|
+
/** The game's traded volume, the figure the sports board carries for it, with its source, basis, unit and observation clock. A client can rank or filter games by volume.value. Omitted when the board carries no volume for the game, and on a finished game read from its stored record (freshness.source stored); never 0 in place of a missing figure. */
|
|
1269
|
+
volume?: GameVolume;
|
|
1243
1270
|
};
|
|
1244
1271
|
/** One side of the game. */
|
|
1245
1272
|
export type GameCompetitor = {
|
|
@@ -1256,7 +1283,7 @@ export type GameCompetitor = {
|
|
|
1256
1283
|
};
|
|
1257
1284
|
/** What this game's read actually supplied, so a client branches on coverage instead of on a missing key. */
|
|
1258
1285
|
export type GameCoverage = {
|
|
1259
|
-
/** available when a live-score frame supplied this game
|
|
1286
|
+
/** available when a live-score frame supplied a score for this game. A game no live-score feed has reported yet, as most scheduled games are, reads unavailable. */
|
|
1260
1287
|
scores: "available" | "unavailable";
|
|
1261
1288
|
/** provider_ids when every side carries a provider id, labels when only the provider's names identify them, unavailable when neither exists. Do not join on names when this reads labels. */
|
|
1262
1289
|
competitors: "provider_ids" | "labels" | "unavailable";
|
|
@@ -1265,15 +1292,15 @@ export type GameCoverage = {
|
|
|
1265
1292
|
};
|
|
1266
1293
|
/** How current this game's facts are. Independent per source: the board half that produced the game, and the live-score frame that produced its scores. */
|
|
1267
1294
|
export type GameFreshness = {
|
|
1268
|
-
/**
|
|
1269
|
-
source: "live" | "upcoming";
|
|
1295
|
+
/** What produced this game: live or upcoming, the board half that carried it, or stored, the stored record of a finished game that has left the board (GET /api/v1/games/{event_slug}, and GET /api/v1/games with a finished status). */
|
|
1296
|
+
source: "live" | "upcoming" | "stored";
|
|
1270
1297
|
/** Whether that half returned a truthful source body for this read. */
|
|
1271
1298
|
source_status: "ok" | "unavailable";
|
|
1272
1299
|
/** Whether that half had a source body at all. not_applicable means the sport has no configured source for that half. */
|
|
1273
1300
|
source_availability: "available" | "unavailable" | "not_applicable";
|
|
1274
|
-
/** Freshness of the cached source body, never inferred from the response clock or the row count. */
|
|
1301
|
+
/** Freshness of the cached source body, never inferred from the response clock or the row count. not_applicable for a stored game, whose record is final. */
|
|
1275
1302
|
source_freshness: "fresh" | "stale" | "unknown" | "not_applicable";
|
|
1276
|
-
/** The source body's data vintage. Omitted when the read has no vintage anchor, which is not age zero. */
|
|
1303
|
+
/** The source body's data vintage. Omitted when the read has no vintage anchor, which is not age zero. For a stored game, the later of its last live-score write and its last leg settlement. */
|
|
1277
1304
|
source_observed_at?: string;
|
|
1278
1305
|
/** Age of source_observed_at in seconds, capped at 600. Omitted past the cap or with no anchor. */
|
|
1279
1306
|
source_age_seconds?: number;
|
|
@@ -1284,6 +1311,22 @@ export type GameFreshness = {
|
|
|
1284
1311
|
/** The provider's own frame clock. Omitted when the frame carries none. */
|
|
1285
1312
|
scores_source_at?: string;
|
|
1286
1313
|
};
|
|
1314
|
+
/** One market of a game holders batch: GET /api/v1/market/{condition_id}/holders unfiltered and cut to the batch limit. */
|
|
1315
|
+
export type GameHoldersItem = {
|
|
1316
|
+
/** The roster's top holders by current value, at most limit. */
|
|
1317
|
+
data: MarketHolder[];
|
|
1318
|
+
/** More graded holders than limit: page them on GET /api/v1/market/{condition_id}/holders. */
|
|
1319
|
+
has_more: boolean;
|
|
1320
|
+
/** Graded holders in the roster, across every page. */
|
|
1321
|
+
total: number;
|
|
1322
|
+
market: MarketHoldersMarket;
|
|
1323
|
+
scan: MarketHoldersScan;
|
|
1324
|
+
totals: MarketHoldersTotals;
|
|
1325
|
+
/** When this roster was computed. A cached roster is at most 60 seconds old. */
|
|
1326
|
+
computed_at: string;
|
|
1327
|
+
/** true when the roster came from the 60-second roster cache. */
|
|
1328
|
+
cached: boolean;
|
|
1329
|
+
};
|
|
1287
1330
|
/** One Polymarket market linked to this game. */
|
|
1288
1331
|
export type GameMarket = {
|
|
1289
1332
|
/** The mkt_-prefixed market id every other V1 response uses. */
|
|
@@ -1306,6 +1349,17 @@ export type GameMarket = {
|
|
|
1306
1349
|
outcome_token_ids?: string[];
|
|
1307
1350
|
/** Default provider moneyline state. Omitted when this market has no classified moneyline projection; incomplete and invalid projections remain explicit. */
|
|
1308
1351
|
prices?: GameMarketPrices;
|
|
1352
|
+
/** Polymarket's reported liquidity for this market. Omitted when the provider read carried none, and on a finished game read from its stored record; never 0 in place of a missing figure. */
|
|
1353
|
+
liquidity?: GameMarketLiquidity;
|
|
1354
|
+
};
|
|
1355
|
+
/** One market's liquidity as Polymarket reports it (Gamma liquidityNum), verbatim. Polymarket documents it only as reported market liquidity, with no unit. It describes the market's resting order book, not traded volume. */
|
|
1356
|
+
export type GameMarketLiquidity = {
|
|
1357
|
+
/** The provider's figure at full precision. */
|
|
1358
|
+
value: number;
|
|
1359
|
+
/** Always gamma: the Polymarket Gamma API. */
|
|
1360
|
+
source: "gamma";
|
|
1361
|
+
/** When 0xinsider read the sports board body this figure came from, never a provider-authored timestamp. Omitted when that read has no clock. */
|
|
1362
|
+
observed_at?: string;
|
|
1309
1363
|
};
|
|
1310
1364
|
/** How the existing sports-board writer bound prices to competitors. */
|
|
1311
1365
|
export type GameMarketPriceBindingProvenance = "provider_ids" | "exact_labels" | "containment_labels" | "elimination";
|
|
@@ -1366,18 +1420,66 @@ export type GameMarketProviderPrices = GameMarketPricePaired | GameMarketPriceIn
|
|
|
1366
1420
|
export type GamesCoverage = {
|
|
1367
1421
|
/** Canonical sport buckets served, sorted. */
|
|
1368
1422
|
sports: string[];
|
|
1369
|
-
/** League tags served, sorted. EuroLeague is euroleague under the Basketball sport bucket. */
|
|
1423
|
+
/** League tags served, sorted. EuroLeague is euroleague, NCAA men's college basketball cbb and NCAA women's college basketball cwbb, all under the Basketball sport bucket. */
|
|
1370
1424
|
leagues: string[];
|
|
1371
1425
|
/** Scopes whose source half was unavailable for this read, as <sport>:<half>. Empty means every scope answered. */
|
|
1372
1426
|
sources_unavailable: string[];
|
|
1373
1427
|
};
|
|
1428
|
+
/** Event-level sharp money for one game. Every aggregate field is null unless status is computed; null means unknown, never zero. */
|
|
1429
|
+
export type GameSharpMoney = {
|
|
1430
|
+
allocation: "exact" | "degraded" | null;
|
|
1431
|
+
computed_at: string | null;
|
|
1432
|
+
event_slug: string;
|
|
1433
|
+
holders_partial: boolean | null;
|
|
1434
|
+
lifecycle: "live" | "settled" | "indeterminate" | null;
|
|
1435
|
+
money_as_of: string | null;
|
|
1436
|
+
object: string;
|
|
1437
|
+
outcomes: ({
|
|
1438
|
+
is_leader: boolean;
|
|
1439
|
+
label: string;
|
|
1440
|
+
pct: number;
|
|
1441
|
+
side: "home" | "draw" | "away";
|
|
1442
|
+
usd: number;
|
|
1443
|
+
wallets: {
|
|
1444
|
+
a: number;
|
|
1445
|
+
b: number;
|
|
1446
|
+
s: number;
|
|
1447
|
+
};
|
|
1448
|
+
})[];
|
|
1449
|
+
status: "computed" | "not_computed" | "unavailable";
|
|
1450
|
+
total_usd: number | null;
|
|
1451
|
+
trader_count: number | null;
|
|
1452
|
+
unallocated_usd: number | null;
|
|
1453
|
+
verdict: {
|
|
1454
|
+
kind: "no_sharp_money";
|
|
1455
|
+
} | {
|
|
1456
|
+
kind: "all_on";
|
|
1457
|
+
label: string;
|
|
1458
|
+
} | {
|
|
1459
|
+
kind: "split";
|
|
1460
|
+
} | {
|
|
1461
|
+
kind: "leans";
|
|
1462
|
+
label: string;
|
|
1463
|
+
pct: number;
|
|
1464
|
+
} | {
|
|
1465
|
+
kind: "unavailable";
|
|
1466
|
+
} | {
|
|
1467
|
+
divergence_pts: number;
|
|
1468
|
+
kind: "leans_over_price";
|
|
1469
|
+
label: string;
|
|
1470
|
+
} | {
|
|
1471
|
+
kind: "no_clear_lean";
|
|
1472
|
+
} | {
|
|
1473
|
+
kind: "withheld";
|
|
1474
|
+
} | null;
|
|
1475
|
+
};
|
|
1374
1476
|
/** Where the game is in its own life, as the provider reports it. A postponement, a cancellation and a suspension each keep their own state, so a client can tell a game that will be played later from one that never will be. */
|
|
1375
1477
|
export type GameStatus = {
|
|
1376
|
-
/** scheduled: kickoff is ahead or the provider still
|
|
1478
|
+
/** scheduled: kickoff is ahead, or the provider still lists the game open and neither in play nor ended. With no live-score frame a game stays scheduled past its kickoff until the provider says otherwise. live: the provider reports it in play. paused: halftime or a provider-reported break. ended: the provider reported a final, an award or a forfeit. postponed, cancelled, suspended, delayed: the provider's own verdict, kept distinct. A tennis match that the provider still lists in play, with no live score feed and no change of period or score for 3 hours, also reads suspended. unknown: no provider state reached this read. A kickoff in the past is never read as live on its own. */
|
|
1377
1479
|
state: "scheduled" | "live" | "paused" | "ended" | "postponed" | "cancelled" | "suspended" | "delayed" | "unknown";
|
|
1378
|
-
/** The provider status folded onto one vocabulary across leagues. unknown means the provider sent a value this API has no meaning for; provider_status keeps that value verbatim. Omitted when no live-score frame carries a status. */
|
|
1480
|
+
/** The provider status folded onto one vocabulary across leagues. unknown means the provider sent a value this API has no meaning for; provider_status keeps that value verbatim. Omitted when no live-score frame carries a status, as for a listed game no live-score feed has reported yet. */
|
|
1379
1481
|
match_status?: "scheduled" | "in_progress" | "halftime" | "penalty_shootout" | "delayed" | "suspended" | "final" | "final_overtime" | "final_shootout" | "awarded" | "forfeit" | "not_necessary" | "postponed" | "cancelled" | "unknown";
|
|
1380
|
-
/** The
|
|
1482
|
+
/** The live-score feed's status string, verbatim. Omitted when no live-score frame carries one. This API never puts a label of its own here, such as Scheduled for a listed game. */
|
|
1381
1483
|
provider_status?: string;
|
|
1382
1484
|
/** The provider's period label, for example Q3, End Q2 or T5. Omitted when the provider sent none. */
|
|
1383
1485
|
period?: string;
|
|
@@ -1388,6 +1490,62 @@ export type GameStatus = {
|
|
|
1388
1490
|
/** Whether the game is over. Always present. */
|
|
1389
1491
|
ended: boolean;
|
|
1390
1492
|
};
|
|
1493
|
+
/** One fill in a game, as the game page's activity list shows it. */
|
|
1494
|
+
export type GameTrade = {
|
|
1495
|
+
/** Stable fill identity: {transaction_hash}:{token_id}:{wallet}:{shares}. Deduplicate on it across polls. */
|
|
1496
|
+
id: string;
|
|
1497
|
+
/** When the fill happened, to the second. */
|
|
1498
|
+
traded_at: string;
|
|
1499
|
+
/** The provider's side of the fill. */
|
|
1500
|
+
side: "BUY" | "SELL";
|
|
1501
|
+
/** The traded outcome's label; null when the provider named none. */
|
|
1502
|
+
outcome: string | null;
|
|
1503
|
+
/** 0 for the first (Yes) outcome token, 1 for the second (No); null when the provider did not say. */
|
|
1504
|
+
outcome_index: number | null;
|
|
1505
|
+
/** Fill price, 0 to 1. */
|
|
1506
|
+
price: number;
|
|
1507
|
+
/** Shares filled. */
|
|
1508
|
+
shares: number;
|
|
1509
|
+
/** USDC notional of the fill. */
|
|
1510
|
+
size_usd: number;
|
|
1511
|
+
/** The signed handicap the fill's side carries on a spread line, for example -1.5 or 1.5; null off spreads. */
|
|
1512
|
+
point: number | null;
|
|
1513
|
+
trader: {
|
|
1514
|
+
/** Lowercase proxy wallet. */
|
|
1515
|
+
address: string;
|
|
1516
|
+
/** The name the site shows: the 0xinsider username, else the provider's name or pseudonym, else the shortened address. */
|
|
1517
|
+
display_name: string;
|
|
1518
|
+
/** The trader's grade today; null for an ungraded or untracked wallet. */
|
|
1519
|
+
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
1520
|
+
};
|
|
1521
|
+
market: {
|
|
1522
|
+
/** The market's v1 id, mkt_ plus the condition_id. */
|
|
1523
|
+
id: string;
|
|
1524
|
+
/** The raw provider condition_id. */
|
|
1525
|
+
condition_id: string;
|
|
1526
|
+
/** The market's question. */
|
|
1527
|
+
title: string | null;
|
|
1528
|
+
/** The market's page slug. */
|
|
1529
|
+
slug: string | null;
|
|
1530
|
+
/** The market's name within the game, for example Draw, O/U 2.5, First to Score: CD Guadalajara, Game 2: Any Player Quadra Kill. */
|
|
1531
|
+
line_label: string | null;
|
|
1532
|
+
};
|
|
1533
|
+
};
|
|
1534
|
+
/** A game's traded volume as Polymarket reports it, read by the sports board with no request-time provider call. A one-side taker share count, the number Polymarket's own pages print behind a dollar sign, not the cash that changed hands. */
|
|
1535
|
+
export type GameVolume = {
|
|
1536
|
+
/** The volume at full precision, in unit. */
|
|
1537
|
+
value: number;
|
|
1538
|
+
/** taker_shares: cumulative one-side taker volume in shares. One share pays $1 at settlement, so this is not cash traded. Omitted only on a figure observed before units were recorded; never assume cash. */
|
|
1539
|
+
unit?: "taker_shares";
|
|
1540
|
+
/** game_lines: the game volume Polymarket's game page states, summed over the game's own lines. event_total: the whole event's volume, stated when no game volume was readable. The two can differ in either direction. Omitted when the basis is unknown. */
|
|
1541
|
+
basis?: "game_lines" | "event_total";
|
|
1542
|
+
/** The Polymarket API the figure was read from: polymarket_data (the Data API's live volume) or gamma (the Gamma API). */
|
|
1543
|
+
source: "polymarket_data" | "gamma";
|
|
1544
|
+
/** When 0xinsider read the figure from the provider, never a provider-authored timestamp. Omitted when no read time is held for it. */
|
|
1545
|
+
observed_at?: string;
|
|
1546
|
+
/** How long after observed_at 0xinsider treats the figure as current: 60 or 300 by source and basis, or 3600 for an older figure kept because a later read of the same total was lower or missing (a cumulative volume never falls). */
|
|
1547
|
+
fresh_for_seconds: number;
|
|
1548
|
+
};
|
|
1391
1549
|
/** Current category evidence, independent of the global grade. Pick of the Day stamps only the served display roster; frozen entry snapshots remain unchanged. */
|
|
1392
1550
|
export type HolderCategoryEvidence = {
|
|
1393
1551
|
status: "live" | "insufficient" | "stale" | "unknown" | "degraded";
|
|
@@ -1660,12 +1818,43 @@ export type LeaderboardEntry = {
|
|
|
1660
1818
|
win_rate?: number;
|
|
1661
1819
|
/** Additive (#27859): the wallet's sports and esports record, the same object as GET /api/v1/trader/{address} pnl.in_scope, as of the leaderboard's last refresh. The 0xinsider leaderboard page shows and sorts by in_scope.realized_pnl and in_scope.win_rate. Omitted until 0xinsider has computed the wallet's record; absent means not computed yet, never zero. */
|
|
1662
1820
|
in_scope?: TraderPnlInScope;
|
|
1821
|
+
/** Additive (#32270): the wallet's edge over the price paid on its sports and esports markets, the figures the 0xinsider leaderboard page's Edge column states for the row. sort=edge orders by price_edge.edge. Omitted when the wallet has no settled sports or esports market of $20 or more at a known entry price. */
|
|
1822
|
+
price_edge?: LeaderboardPriceEdge;
|
|
1663
1823
|
/** Observed trading style identifier. New rows use two_sided, category_focused, high_activity, diversified, mixed, or unclassified, counted over the wallet's sports and esports markets only. Historical identifiers remain readable during normal reclassification; style does not predict skill or intent. */
|
|
1664
1824
|
strategy_type?: string;
|
|
1665
1825
|
/** Provider platform. Always polymarket. */
|
|
1666
1826
|
platform: "polymarket";
|
|
1827
|
+
/** 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. */
|
|
1667
1828
|
last_active?: string;
|
|
1668
1829
|
};
|
|
1830
|
+
export type LeaderboardLeagues = {
|
|
1831
|
+
leagues: {
|
|
1832
|
+
category: string;
|
|
1833
|
+
name: string;
|
|
1834
|
+
ranked_traders: number;
|
|
1835
|
+
slug: string;
|
|
1836
|
+
sport: string;
|
|
1837
|
+
total_traders: number;
|
|
1838
|
+
}[];
|
|
1839
|
+
min_ranked: number;
|
|
1840
|
+
min_resolved: number;
|
|
1841
|
+
refreshed_at: string;
|
|
1842
|
+
};
|
|
1843
|
+
/** 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. */
|
|
1844
|
+
export type LeaderboardPriceEdge = {
|
|
1845
|
+
/** Settled sports and esports markets of $20 or more at a known entry price that the edge is measured over. */
|
|
1846
|
+
markets: number;
|
|
1847
|
+
/** Share of those markets whose bought side won, 0-1. */
|
|
1848
|
+
hit_rate: number;
|
|
1849
|
+
/** Mean entry price paid, 0-1. */
|
|
1850
|
+
avg_price: number;
|
|
1851
|
+
/** hit_rate minus avg_price, full precision. The value sort=edge orders by. */
|
|
1852
|
+
edge: number;
|
|
1853
|
+
/** 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 over the same markets. 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 no hold orders on sort=edge. */
|
|
1854
|
+
status: "ranked" | "too_few_markets" | "sample_mismatch";
|
|
1855
|
+
/** 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. */
|
|
1856
|
+
hold?: "record_incomplete";
|
|
1857
|
+
};
|
|
1669
1858
|
/** One side's score line inside a `live_sports_updated` pulse. */
|
|
1670
1859
|
export type LiveSportsScoreEntry = {
|
|
1671
1860
|
/** Team name, ordered for the league (away first where the league reads that way). */
|
|
@@ -1870,6 +2059,15 @@ export type MarketHoldersSideGrades = {
|
|
|
1870
2059
|
a: number;
|
|
1871
2060
|
b: number;
|
|
1872
2061
|
};
|
|
2062
|
+
/** Polymarket currentValue in USD per grade on one side, over the same wallets as that side's usd total. Each value is rounded to the cent after summing, so s + a + b can differ from the side total by up to 2 cents. */
|
|
2063
|
+
export type MarketHoldersSideGradeUsd = {
|
|
2064
|
+
/** USD held by S-grade wallets netting this side. */
|
|
2065
|
+
s: number;
|
|
2066
|
+
/** USD held by A-grade wallets netting this side. */
|
|
2067
|
+
a: number;
|
|
2068
|
+
/** USD held by B-grade wallets netting this side. */
|
|
2069
|
+
b: number;
|
|
2070
|
+
};
|
|
1873
2071
|
/** Roster totals BEFORE any `outcome` or `min_grade` filter, so a page always knows the whole market it was cut from. */
|
|
1874
2072
|
export type MarketHoldersTotals = {
|
|
1875
2073
|
/** Distinct graded wallets with net exposure; a two-sided wallet counts once. */
|
|
@@ -1884,6 +2082,10 @@ export type MarketHoldersTotals = {
|
|
|
1884
2082
|
no_usd: number;
|
|
1885
2083
|
yes_grades: MarketHoldersSideGrades;
|
|
1886
2084
|
no_grades: MarketHoldersSideGrades;
|
|
2085
|
+
/** yes_usd split by grade: where the S, A and B money on YES sits. */
|
|
2086
|
+
yes_grade_usd: MarketHoldersSideGradeUsd;
|
|
2087
|
+
/** no_usd split by grade: where the S, A and B money on NO sits. */
|
|
2088
|
+
no_grade_usd: MarketHoldersSideGradeUsd;
|
|
1887
2089
|
};
|
|
1888
2090
|
export type MarketSearchResult = {
|
|
1889
2091
|
id: string;
|
|
@@ -1895,6 +2097,7 @@ export type MarketSearchResult = {
|
|
|
1895
2097
|
platform: "polymarket" | null;
|
|
1896
2098
|
/** closed once Polymarket has closed trading or the market has resolved; active otherwise. The same rule labels a market on markets/search, markets/explore and market/{condition_id}/snapshot. */
|
|
1897
2099
|
status: "active" | "closed";
|
|
2100
|
+
event_slug?: string;
|
|
1898
2101
|
};
|
|
1899
2102
|
export type MarketSnapshot = {
|
|
1900
2103
|
market: {
|
|
@@ -1989,6 +2192,143 @@ export type MarketSnapshotTrust = {
|
|
|
1989
2192
|
current_price: TrustMetadata;
|
|
1990
2193
|
spread_bps: TrustMetadata;
|
|
1991
2194
|
};
|
|
2195
|
+
export type MarketTopHolder = {
|
|
2196
|
+
/** 1-based position on this outcome, by shares. */
|
|
2197
|
+
rank: number;
|
|
2198
|
+
/** `trd_`-prefixed trader id, accepted by `GET /api/v1/trader/{address}`. */
|
|
2199
|
+
trader_id: string;
|
|
2200
|
+
/** Lowercased proxy wallet. */
|
|
2201
|
+
address: string;
|
|
2202
|
+
/** The wallet's display name; null when it shows none. */
|
|
2203
|
+
name: string | null;
|
|
2204
|
+
/** All-time trader grade, S to F. Null for a wallet 0xinsider has not graded: this route lists every holder whatever its grade. */
|
|
2205
|
+
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
2206
|
+
/** Shares held on this outcome. */
|
|
2207
|
+
shares: number;
|
|
2208
|
+
/** Polymarket's current value of this position, in USD. Null when the provider served none. */
|
|
2209
|
+
current_value_usd: number | null;
|
|
2210
|
+
/** Average price paid for the shares still held, as a 0..1 fraction of $1. Null when the provider served none. */
|
|
2211
|
+
avg_entry_price: number | null;
|
|
2212
|
+
/** Shares on the other outcome when the wallet holds both; the wallet is then listed on both sides. Absent when it is one-sided. */
|
|
2213
|
+
other_outcome_shares?: number;
|
|
2214
|
+
/** Polymarket's realized P&L of this position (sells and redemptions), in USD. Null when the provider served no economics for the row. */
|
|
2215
|
+
position_realized_pnl: number | null;
|
|
2216
|
+
/** Polymarket's mark-to-market P&L of the shares still held, in USD. On a resolved market the mark is the settlement price. */
|
|
2217
|
+
position_unrealized_pnl: number | null;
|
|
2218
|
+
/** `position_realized_pnl` plus `position_unrealized_pnl`, in USD. */
|
|
2219
|
+
position_total_pnl: number | null;
|
|
2220
|
+
/** The wallet's realized P&L on sports and esports markets, in USD, the figure on its 0xinsider profile. Null until 0xinsider has computed the record, never 0 in its place, and null for every row when `profiles_status` is `unavailable`. */
|
|
2221
|
+
in_scope_realized_pnl: number | null;
|
|
2222
|
+
/** The wallet's volume traded on sports and esports markets, in USD. Null under the same rule as `in_scope_realized_pnl`. */
|
|
2223
|
+
in_scope_volume: number | null;
|
|
2224
|
+
/** The wallet's stored trading-style label (see Wallet trading styles); null when it has none. */
|
|
2225
|
+
strategy_type: string | null;
|
|
2226
|
+
/** The wallet's last recorded trade anywhere, null when unknown. */
|
|
2227
|
+
last_traded_at: string | null;
|
|
2228
|
+
/** This wallet's win rate in the market's canonical category (`market.category`): the share of its settled markets in that category (it closed its position by selling out, or the market resolved) whose realized P&L closed positive, as a 0..1 fraction. Present only with `category_win_rate_status` = `measured`. The same read `GET /api/v1/trader/{address}/categories` serves per wallet. */
|
|
2229
|
+
category_win_rate?: number;
|
|
2230
|
+
/** The two counts `category_win_rate` is the ratio of, from the same row: `wins / decided` equals the rate. Every settled Polymarket market the wallet traded (it closed its position by selling out, or the market resolved) in the market's canonical category, at any position size, rebuilt daily. Present only with `category_win_rate_status` = `measured`. */
|
|
2231
|
+
category_win_record?: {
|
|
2232
|
+
/** Settled markets in the category that this wallet closed with a profit. */
|
|
2233
|
+
wins: number;
|
|
2234
|
+
/** Settled markets in the category that this wallet closed with a profit or a loss. A market resolved at zero realized P&L is in neither count. */
|
|
2235
|
+
decided: number;
|
|
2236
|
+
};
|
|
2237
|
+
/** The wallet's average entry price in the market's canonical category, as a 0..1 fraction of $1 (0.98 is 98 cents). Its sample is the wallet's markets in that category that resolved to a winning side, of $20 or more where it bought one side at a known price, so it can differ from the `category_win_record` sample. A wallet that buys near-certain outcomes wins almost every time, so read the win rate beside this price. Present only with `category_win_rate_status` = `measured`, and only when that sample has at least 5 markets. When `category_win_rate_game` is present the price is still the whole `category` bucket's: this field has no per-game or per-league price. Absent otherwise and on payloads predating the field. */
|
|
2238
|
+
category_avg_price?: number;
|
|
2239
|
+
/** Where `category_win_rate` and `category_win_record` were measured: for an esports market the 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`), and for a market in a registered league that league, by the name Pick of the Day uses for it (`NBA`, `NFL`, `NHL`, `MLB`, `UFC`, `ATP`, `WTA`, `LaLiga`, `Premier League`, `Serie A`, `UEFA Champions League`, `MLS` and the other registered leagues). Present only when the wallet's record there clears the 5-settled-market floor, in which case the rate and record are the game's or league's rather than the whole `category` bucket's. Absent when the rate is the bucket's (the wallet's history there is under the floor, or the competition is not a registered league), on every other market, and beside every non-measured status. Label the rate with this when present and with the market's `category` otherwise. */
|
|
2240
|
+
category_win_rate_game?: string;
|
|
2241
|
+
/** Why `category_win_rate` is present or absent: `measured` (rate present), `not_enough_data` (under the floor of 5 decided markets in the category), or `unavailable` (the read failed; retry later). Absent when the market has no canonical category. */
|
|
2242
|
+
category_win_rate_status?: "measured" | "not_enough_data" | "unavailable";
|
|
2243
|
+
/** Whole days since this wallet's first trade, rounded down (3.6 days reads 3), so it changes once a day, not on every request. The five badge fields are present together, only for a wallet that draws at least one badge. */
|
|
2244
|
+
wallet_age_days?: number | null;
|
|
2245
|
+
/** True when the wallet's first trade was under 30 days ago. */
|
|
2246
|
+
is_new_wallet?: boolean;
|
|
2247
|
+
/** Distinct markets the wallet has traded. */
|
|
2248
|
+
markets_traded?: number | null;
|
|
2249
|
+
/** True when the wallet is flagged as automated. */
|
|
2250
|
+
is_bot?: boolean;
|
|
2251
|
+
/** The wallet's X handle without the @, when linked. */
|
|
2252
|
+
x_username?: string | null;
|
|
2253
|
+
};
|
|
2254
|
+
export type MarketTopHolders = {
|
|
2255
|
+
market: MarketHoldersMarket;
|
|
2256
|
+
/** The largest YES holders, by shares, up to `limit`. */
|
|
2257
|
+
yes: MarketTopHolder[];
|
|
2258
|
+
/** The largest NO holders, by shares, up to `limit`. */
|
|
2259
|
+
no: MarketTopHolder[];
|
|
2260
|
+
totals: MarketTopHoldersTotals;
|
|
2261
|
+
/** `unavailable` when the wallet record read failed: `in_scope_realized_pnl`, `in_scope_volume` and `strategy_type` are then null for every row because they were not read, not because they are unknown. */
|
|
2262
|
+
profiles_status: "available" | "unavailable";
|
|
2263
|
+
/** When the daily pass behind the rows' category win records began. Absent when the market has no category or the read answered no row. */
|
|
2264
|
+
category_records_as_of?: string;
|
|
2265
|
+
/** When this holder sample was built. */
|
|
2266
|
+
computed_at?: string;
|
|
2267
|
+
/** When Polymarket's holder board behind this sample was fetched: up to 120 s before `computed_at` on an open market. Absent on a resolved market, whose sample reads no live board, and when the fetch stamp could not be read. */
|
|
2268
|
+
positions_as_of?: string;
|
|
2269
|
+
};
|
|
2270
|
+
export type MarketTopHoldersTotals = {
|
|
2271
|
+
/** Holders in the YES sample, before `limit`. Equal to `sample_cap` means that many or more. */
|
|
2272
|
+
yes_count: number;
|
|
2273
|
+
/** Holders in the NO sample, before `limit`. */
|
|
2274
|
+
no_count: number;
|
|
2275
|
+
/** Shares summed over the YES sample. */
|
|
2276
|
+
yes_shares: number;
|
|
2277
|
+
/** Shares summed over the NO sample. */
|
|
2278
|
+
no_shares: number;
|
|
2279
|
+
/** The most holders the sample keeps per outcome (100). */
|
|
2280
|
+
sample_cap: number;
|
|
2281
|
+
};
|
|
2282
|
+
/** One market's net buyers and net sellers over a 24h or 7d window, as the market page's wallets in/out panel shows a Pro viewer. */
|
|
2283
|
+
export type MarketWalletsInOut = {
|
|
2284
|
+
/** The market's raw provider condition id. */
|
|
2285
|
+
condition_id: string;
|
|
2286
|
+
/** The window the nets are summed over: 24h or 7d. */
|
|
2287
|
+
window: string;
|
|
2288
|
+
/** The window's inclusive start; null only when the bounds are unknown. */
|
|
2289
|
+
window_start: string | null;
|
|
2290
|
+
/** The window's inclusive end, the read's clock; null only when the bounds are unknown. */
|
|
2291
|
+
window_end: string | null;
|
|
2292
|
+
/** Totals over every wallet that traded the market in the window, not only the listed 50. */
|
|
2293
|
+
summary: {
|
|
2294
|
+
/** Wallets with a positive net in the window. */
|
|
2295
|
+
wallets_in: number;
|
|
2296
|
+
/** Wallets with a negative net in the window. */
|
|
2297
|
+
wallets_out: number;
|
|
2298
|
+
/** The sum of every wallet's net, in USD. A fully rotated wallet nets zero and is on neither side. */
|
|
2299
|
+
net_usd: number;
|
|
2300
|
+
};
|
|
2301
|
+
/** Wallets whose net is positive, largest first, at most 25. */
|
|
2302
|
+
net_buyers: ({
|
|
2303
|
+
/** Lowercase proxy wallet. */
|
|
2304
|
+
address: string;
|
|
2305
|
+
/** The name the site shows: the 0xinsider username, else the shortened address. */
|
|
2306
|
+
display_name: string;
|
|
2307
|
+
/** Today's grade; null for an ungraded or untracked wallet. */
|
|
2308
|
+
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
2309
|
+
/** Buys minus sells in the window, both outcomes, in USD: the matched notional, fees excluded. */
|
|
2310
|
+
net_usd: number;
|
|
2311
|
+
/** Fills in the window. */
|
|
2312
|
+
trades: number;
|
|
2313
|
+
/** The wallet's newest trade on any market, at or before window_end; null when unknown. */
|
|
2314
|
+
last_traded_at: string | null;
|
|
2315
|
+
})[];
|
|
2316
|
+
/** Wallets whose net is negative, most negative first, at most 25. */
|
|
2317
|
+
net_sellers: ({
|
|
2318
|
+
/** Lowercase proxy wallet. */
|
|
2319
|
+
address: string;
|
|
2320
|
+
/** The name the site shows: the 0xinsider username, else the shortened address. */
|
|
2321
|
+
display_name: string;
|
|
2322
|
+
/** Today's grade; null for an ungraded or untracked wallet. */
|
|
2323
|
+
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
2324
|
+
/** Buys minus sells in the window, both outcomes, in USD: the matched notional, fees excluded. */
|
|
2325
|
+
net_usd: number;
|
|
2326
|
+
/** Fills in the window. */
|
|
2327
|
+
trades: number;
|
|
2328
|
+
/** The wallet's newest trade on any market, at or before window_end; null when unknown. */
|
|
2329
|
+
last_traded_at: string | null;
|
|
2330
|
+
})[];
|
|
2331
|
+
};
|
|
1992
2332
|
export type McpJsonRpcError = {
|
|
1993
2333
|
jsonrpc: "2.0";
|
|
1994
2334
|
/** The request's id, or null when the request could not be parsed. Omitted on the answer to an unsolicited response message. */
|
|
@@ -2616,6 +2956,405 @@ export type PickOfTheDayNoEntitledPicks = {
|
|
|
2616
2956
|
*/
|
|
2617
2957
|
supersedes_pick_id: string | null;
|
|
2618
2958
|
};
|
|
2959
|
+
export type PickOfTheDayStats = {
|
|
2960
|
+
categories: {
|
|
2961
|
+
canonical_category?: string;
|
|
2962
|
+
clv_avg_display?: string;
|
|
2963
|
+
clv_avg_pct?: number;
|
|
2964
|
+
clv_avg_pp?: number;
|
|
2965
|
+
clv_avg_pp_display?: string;
|
|
2966
|
+
clv_measured: number;
|
|
2967
|
+
edge_display?: string;
|
|
2968
|
+
edge_pp?: number;
|
|
2969
|
+
key: string;
|
|
2970
|
+
label: string;
|
|
2971
|
+
losses: number;
|
|
2972
|
+
net_profit_display?: string;
|
|
2973
|
+
net_profit_usd?: number;
|
|
2974
|
+
pending: number;
|
|
2975
|
+
picks: number;
|
|
2976
|
+
priced_decided: number;
|
|
2977
|
+
priced_in_display?: string;
|
|
2978
|
+
priced_in_pct?: number;
|
|
2979
|
+
roi_display?: string;
|
|
2980
|
+
roi_pct?: number;
|
|
2981
|
+
settled: number;
|
|
2982
|
+
small_sample: boolean;
|
|
2983
|
+
staked_usd: number;
|
|
2984
|
+
unit_score?: number;
|
|
2985
|
+
unit_score_display?: string;
|
|
2986
|
+
void: number;
|
|
2987
|
+
win_rate_display?: string;
|
|
2988
|
+
win_rate_pct?: number;
|
|
2989
|
+
wins: number;
|
|
2990
|
+
}[];
|
|
2991
|
+
days: ({
|
|
2992
|
+
date: string;
|
|
2993
|
+
losses: number;
|
|
2994
|
+
net_profit_display?: string;
|
|
2995
|
+
net_profit_usd?: number;
|
|
2996
|
+
pending: number;
|
|
2997
|
+
picks: number;
|
|
2998
|
+
sweep?: "win" | "loss";
|
|
2999
|
+
unit_score?: number;
|
|
3000
|
+
unit_score_display?: string;
|
|
3001
|
+
void: number;
|
|
3002
|
+
wins: number;
|
|
3003
|
+
})[];
|
|
3004
|
+
hit_rate: PickOfTheDayHitRate;
|
|
3005
|
+
market_expectations: {
|
|
3006
|
+
as_of_date: string;
|
|
3007
|
+
price_basis: string;
|
|
3008
|
+
timezone: string;
|
|
3009
|
+
windows: ({
|
|
3010
|
+
clv_avg_display: string | null;
|
|
3011
|
+
clv_avg_pct: number | null;
|
|
3012
|
+
clv_avg_pp: number | null;
|
|
3013
|
+
clv_avg_pp_display: string | null;
|
|
3014
|
+
clv_measured: number;
|
|
3015
|
+
clv_missing: number;
|
|
3016
|
+
expected_wins: number | null;
|
|
3017
|
+
expected_wins_display: string | null;
|
|
3018
|
+
from_date: string | null;
|
|
3019
|
+
key: string;
|
|
3020
|
+
label: string;
|
|
3021
|
+
numeric_unavailable: boolean;
|
|
3022
|
+
priced_decided: number;
|
|
3023
|
+
through_date: string;
|
|
3024
|
+
units: number | null;
|
|
3025
|
+
units_display: string | null;
|
|
3026
|
+
units_z: number | null;
|
|
3027
|
+
units_z_display: string | null;
|
|
3028
|
+
unpriced_decided: number;
|
|
3029
|
+
wins: number;
|
|
3030
|
+
wins_z: number | null;
|
|
3031
|
+
wins_z_display: string | null;
|
|
3032
|
+
})[];
|
|
3033
|
+
};
|
|
3034
|
+
market_types: {
|
|
3035
|
+
canonical_category?: string;
|
|
3036
|
+
clv_avg_display?: string;
|
|
3037
|
+
clv_avg_pct?: number;
|
|
3038
|
+
clv_avg_pp?: number;
|
|
3039
|
+
clv_avg_pp_display?: string;
|
|
3040
|
+
clv_measured: number;
|
|
3041
|
+
edge_display?: string;
|
|
3042
|
+
edge_pp?: number;
|
|
3043
|
+
key: string;
|
|
3044
|
+
label: string;
|
|
3045
|
+
losses: number;
|
|
3046
|
+
net_profit_display?: string;
|
|
3047
|
+
net_profit_usd?: number;
|
|
3048
|
+
pending: number;
|
|
3049
|
+
picks: number;
|
|
3050
|
+
priced_decided: number;
|
|
3051
|
+
priced_in_display?: string;
|
|
3052
|
+
priced_in_pct?: number;
|
|
3053
|
+
roi_display?: string;
|
|
3054
|
+
roi_pct?: number;
|
|
3055
|
+
settled: number;
|
|
3056
|
+
small_sample: boolean;
|
|
3057
|
+
staked_usd: number;
|
|
3058
|
+
unit_score?: number;
|
|
3059
|
+
unit_score_display?: string;
|
|
3060
|
+
void: number;
|
|
3061
|
+
win_rate_display?: string;
|
|
3062
|
+
win_rate_pct?: number;
|
|
3063
|
+
wins: number;
|
|
3064
|
+
}[];
|
|
3065
|
+
months: {
|
|
3066
|
+
canonical_category?: string;
|
|
3067
|
+
clv_avg_display?: string;
|
|
3068
|
+
clv_avg_pct?: number;
|
|
3069
|
+
clv_avg_pp?: number;
|
|
3070
|
+
clv_avg_pp_display?: string;
|
|
3071
|
+
clv_measured: number;
|
|
3072
|
+
edge_display?: string;
|
|
3073
|
+
edge_pp?: number;
|
|
3074
|
+
key: string;
|
|
3075
|
+
label: string;
|
|
3076
|
+
losses: number;
|
|
3077
|
+
net_profit_display?: string;
|
|
3078
|
+
net_profit_usd?: number;
|
|
3079
|
+
pending: number;
|
|
3080
|
+
picks: number;
|
|
3081
|
+
priced_decided: number;
|
|
3082
|
+
priced_in_display?: string;
|
|
3083
|
+
priced_in_pct?: number;
|
|
3084
|
+
roi_display?: string;
|
|
3085
|
+
roi_pct?: number;
|
|
3086
|
+
settled: number;
|
|
3087
|
+
small_sample: boolean;
|
|
3088
|
+
staked_usd: number;
|
|
3089
|
+
unit_score?: number;
|
|
3090
|
+
unit_score_display?: string;
|
|
3091
|
+
void: number;
|
|
3092
|
+
win_rate_display?: string;
|
|
3093
|
+
win_rate_pct?: number;
|
|
3094
|
+
wins: number;
|
|
3095
|
+
}[];
|
|
3096
|
+
outcome_stats: {
|
|
3097
|
+
concentration: {
|
|
3098
|
+
positive_wins: number;
|
|
3099
|
+
remaining_valued_decided: number;
|
|
3100
|
+
removed_wins: number;
|
|
3101
|
+
roi_without_top_wins_display: string | null;
|
|
3102
|
+
roi_without_top_wins_pct: number | null;
|
|
3103
|
+
target_wins: number;
|
|
3104
|
+
top_wins_share_display: string | null;
|
|
3105
|
+
top_wins_share_pct: number | null;
|
|
3106
|
+
valued_decided: number;
|
|
3107
|
+
};
|
|
3108
|
+
drawdown: {
|
|
3109
|
+
completed_days: number;
|
|
3110
|
+
current_days_below_peak: number | null;
|
|
3111
|
+
current_drawdown_display: string | null;
|
|
3112
|
+
current_drawdown_units: number | null;
|
|
3113
|
+
days_below_peak: number | null;
|
|
3114
|
+
excluded_days: number;
|
|
3115
|
+
from_date: string | null;
|
|
3116
|
+
longest_days_below_peak: number | null;
|
|
3117
|
+
longest_recovery_days: number | null;
|
|
3118
|
+
max_drawdown_display: string | null;
|
|
3119
|
+
max_drawdown_units: number | null;
|
|
3120
|
+
peak_date: string | null;
|
|
3121
|
+
peak_net_profit_usd: number | null;
|
|
3122
|
+
through_date: string | null;
|
|
3123
|
+
};
|
|
3124
|
+
profit_factor: {
|
|
3125
|
+
display: string | null;
|
|
3126
|
+
gross_loss_usd: number | null;
|
|
3127
|
+
gross_profit_usd: number | null;
|
|
3128
|
+
state: "empty" | "measured" | "no_losses" | "numeric_unavailable";
|
|
3129
|
+
value: number | null;
|
|
3130
|
+
valued_decided: number;
|
|
3131
|
+
};
|
|
3132
|
+
rolling: ({
|
|
3133
|
+
from_date: string | null;
|
|
3134
|
+
losses: number;
|
|
3135
|
+
roi_display: string | null;
|
|
3136
|
+
roi_pct: number | null;
|
|
3137
|
+
through_date: string | null;
|
|
3138
|
+
units: number | null;
|
|
3139
|
+
units_display: string | null;
|
|
3140
|
+
valued_decided: number;
|
|
3141
|
+
win_rate_display: string | null;
|
|
3142
|
+
win_rate_pct: number | null;
|
|
3143
|
+
window_size: number;
|
|
3144
|
+
wins: number;
|
|
3145
|
+
})[];
|
|
3146
|
+
};
|
|
3147
|
+
price_bands: {
|
|
3148
|
+
canonical_category?: string;
|
|
3149
|
+
clv_avg_display?: string;
|
|
3150
|
+
clv_avg_pct?: number;
|
|
3151
|
+
clv_avg_pp?: number;
|
|
3152
|
+
clv_avg_pp_display?: string;
|
|
3153
|
+
clv_measured: number;
|
|
3154
|
+
edge_display?: string;
|
|
3155
|
+
edge_pp?: number;
|
|
3156
|
+
key: string;
|
|
3157
|
+
label: string;
|
|
3158
|
+
losses: number;
|
|
3159
|
+
net_profit_display?: string;
|
|
3160
|
+
net_profit_usd?: number;
|
|
3161
|
+
pending: number;
|
|
3162
|
+
picks: number;
|
|
3163
|
+
priced_decided: number;
|
|
3164
|
+
priced_in_display?: string;
|
|
3165
|
+
priced_in_pct?: number;
|
|
3166
|
+
roi_display?: string;
|
|
3167
|
+
roi_pct?: number;
|
|
3168
|
+
settled: number;
|
|
3169
|
+
small_sample: boolean;
|
|
3170
|
+
staked_usd: number;
|
|
3171
|
+
unit_score?: number;
|
|
3172
|
+
unit_score_display?: string;
|
|
3173
|
+
void: number;
|
|
3174
|
+
win_rate_display?: string;
|
|
3175
|
+
win_rate_pct?: number;
|
|
3176
|
+
wins: number;
|
|
3177
|
+
}[];
|
|
3178
|
+
records: {
|
|
3179
|
+
best_day?: {
|
|
3180
|
+
date: string;
|
|
3181
|
+
date_display: string;
|
|
3182
|
+
losses: number;
|
|
3183
|
+
net_profit_display: string;
|
|
3184
|
+
net_profit_usd: number;
|
|
3185
|
+
picks: number;
|
|
3186
|
+
wins: number;
|
|
3187
|
+
};
|
|
3188
|
+
biggest_win?: {
|
|
3189
|
+
category: string;
|
|
3190
|
+
date: string;
|
|
3191
|
+
date_display: string;
|
|
3192
|
+
matchup: string;
|
|
3193
|
+
net_profit_display: string;
|
|
3194
|
+
net_profit_usd: number;
|
|
3195
|
+
};
|
|
3196
|
+
longest_losing_day_streak?: {
|
|
3197
|
+
days: number;
|
|
3198
|
+
end_date: string;
|
|
3199
|
+
net_profit_display: string;
|
|
3200
|
+
net_profit_usd: number;
|
|
3201
|
+
range_display: string;
|
|
3202
|
+
start_date: string;
|
|
3203
|
+
};
|
|
3204
|
+
longest_winning_day_streak?: {
|
|
3205
|
+
days: number;
|
|
3206
|
+
end_date: string;
|
|
3207
|
+
net_profit_display: string;
|
|
3208
|
+
net_profit_usd: number;
|
|
3209
|
+
range_display: string;
|
|
3210
|
+
start_date: string;
|
|
3211
|
+
};
|
|
3212
|
+
sweeps: {
|
|
3213
|
+
clean_sweeps: number;
|
|
3214
|
+
latest_clean_sweep?: {
|
|
3215
|
+
date: string;
|
|
3216
|
+
date_display: string;
|
|
3217
|
+
losses: number;
|
|
3218
|
+
wins: number;
|
|
3219
|
+
};
|
|
3220
|
+
latest_wipeout?: {
|
|
3221
|
+
date: string;
|
|
3222
|
+
date_display: string;
|
|
3223
|
+
losses: number;
|
|
3224
|
+
wins: number;
|
|
3225
|
+
};
|
|
3226
|
+
min_decided: number;
|
|
3227
|
+
wipeouts: number;
|
|
3228
|
+
};
|
|
3229
|
+
winning_days?: {
|
|
3230
|
+
flat: number;
|
|
3231
|
+
losing: number;
|
|
3232
|
+
settled: number;
|
|
3233
|
+
winning: number;
|
|
3234
|
+
winning_pct: number;
|
|
3235
|
+
winning_pct_display: string;
|
|
3236
|
+
};
|
|
3237
|
+
worst_day?: {
|
|
3238
|
+
date: string;
|
|
3239
|
+
date_display: string;
|
|
3240
|
+
losses: number;
|
|
3241
|
+
net_profit_display: string;
|
|
3242
|
+
net_profit_usd: number;
|
|
3243
|
+
picks: number;
|
|
3244
|
+
wins: number;
|
|
3245
|
+
};
|
|
3246
|
+
};
|
|
3247
|
+
sports: {
|
|
3248
|
+
canonical_category?: string;
|
|
3249
|
+
clv_avg_display?: string;
|
|
3250
|
+
clv_avg_pct?: number;
|
|
3251
|
+
clv_avg_pp?: number;
|
|
3252
|
+
clv_avg_pp_display?: string;
|
|
3253
|
+
clv_measured: number;
|
|
3254
|
+
edge_display?: string;
|
|
3255
|
+
edge_pp?: number;
|
|
3256
|
+
key: string;
|
|
3257
|
+
label: string;
|
|
3258
|
+
losses: number;
|
|
3259
|
+
net_profit_display?: string;
|
|
3260
|
+
net_profit_usd?: number;
|
|
3261
|
+
pending: number;
|
|
3262
|
+
picks: number;
|
|
3263
|
+
priced_decided: number;
|
|
3264
|
+
priced_in_display?: string;
|
|
3265
|
+
priced_in_pct?: number;
|
|
3266
|
+
roi_display?: string;
|
|
3267
|
+
roi_pct?: number;
|
|
3268
|
+
settled: number;
|
|
3269
|
+
small_sample: boolean;
|
|
3270
|
+
staked_usd: number;
|
|
3271
|
+
unit_score?: number;
|
|
3272
|
+
unit_score_display?: string;
|
|
3273
|
+
void: number;
|
|
3274
|
+
win_rate_display?: string;
|
|
3275
|
+
win_rate_pct?: number;
|
|
3276
|
+
wins: number;
|
|
3277
|
+
}[];
|
|
3278
|
+
streaks: {
|
|
3279
|
+
current?: number;
|
|
3280
|
+
current_day?: number;
|
|
3281
|
+
current_day_display?: string;
|
|
3282
|
+
current_display?: string;
|
|
3283
|
+
longest_loss: number;
|
|
3284
|
+
longest_win: number;
|
|
3285
|
+
};
|
|
3286
|
+
tiers: {
|
|
3287
|
+
canonical_category?: string;
|
|
3288
|
+
clv_avg_display?: string;
|
|
3289
|
+
clv_avg_pct?: number;
|
|
3290
|
+
clv_avg_pp?: number;
|
|
3291
|
+
clv_avg_pp_display?: string;
|
|
3292
|
+
clv_measured: number;
|
|
3293
|
+
edge_display?: string;
|
|
3294
|
+
edge_pp?: number;
|
|
3295
|
+
key: string;
|
|
3296
|
+
label: string;
|
|
3297
|
+
losses: number;
|
|
3298
|
+
net_profit_display?: string;
|
|
3299
|
+
net_profit_usd?: number;
|
|
3300
|
+
pending: number;
|
|
3301
|
+
picks: number;
|
|
3302
|
+
priced_decided: number;
|
|
3303
|
+
priced_in_display?: string;
|
|
3304
|
+
priced_in_pct?: number;
|
|
3305
|
+
roi_display?: string;
|
|
3306
|
+
roi_pct?: number;
|
|
3307
|
+
settled: number;
|
|
3308
|
+
small_sample: boolean;
|
|
3309
|
+
staked_usd: number;
|
|
3310
|
+
unit_score?: number;
|
|
3311
|
+
unit_score_display?: string;
|
|
3312
|
+
void: number;
|
|
3313
|
+
win_rate_display?: string;
|
|
3314
|
+
win_rate_pct?: number;
|
|
3315
|
+
wins: number;
|
|
3316
|
+
}[];
|
|
3317
|
+
total_sides: {
|
|
3318
|
+
canonical_category?: string;
|
|
3319
|
+
clv_avg_display?: string;
|
|
3320
|
+
clv_avg_pct?: number;
|
|
3321
|
+
clv_avg_pp?: number;
|
|
3322
|
+
clv_avg_pp_display?: string;
|
|
3323
|
+
clv_measured: number;
|
|
3324
|
+
edge_display?: string;
|
|
3325
|
+
edge_pp?: number;
|
|
3326
|
+
key: string;
|
|
3327
|
+
label: string;
|
|
3328
|
+
losses: number;
|
|
3329
|
+
net_profit_display?: string;
|
|
3330
|
+
net_profit_usd?: number;
|
|
3331
|
+
pending: number;
|
|
3332
|
+
picks: number;
|
|
3333
|
+
priced_decided: number;
|
|
3334
|
+
priced_in_display?: string;
|
|
3335
|
+
priced_in_pct?: number;
|
|
3336
|
+
roi_display?: string;
|
|
3337
|
+
roi_pct?: number;
|
|
3338
|
+
settled: number;
|
|
3339
|
+
small_sample: boolean;
|
|
3340
|
+
staked_usd: number;
|
|
3341
|
+
unit_score?: number;
|
|
3342
|
+
unit_score_display?: string;
|
|
3343
|
+
void: number;
|
|
3344
|
+
win_rate_display?: string;
|
|
3345
|
+
win_rate_pct?: number;
|
|
3346
|
+
wins: number;
|
|
3347
|
+
}[];
|
|
3348
|
+
voids: {
|
|
3349
|
+
backed_price?: number;
|
|
3350
|
+
backed_side?: string;
|
|
3351
|
+
category?: string;
|
|
3352
|
+
matchup?: string;
|
|
3353
|
+
pick_date: string;
|
|
3354
|
+
pick_id: string;
|
|
3355
|
+
pick_rank: number;
|
|
3356
|
+
}[];
|
|
3357
|
+
};
|
|
2619
3358
|
/** 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. */
|
|
2620
3359
|
export type PickOfTheDayUncommittedPayload = {
|
|
2621
3360
|
/** Frozen pre-game price of the backed side, 0..1, as the plain decimal text of the stored NUMERIC at full stored precision, trailing zeros included -- rendered exactly as the commitment payload renders it. */
|
|
@@ -2984,6 +3723,60 @@ export type ReportSourceRange = {
|
|
|
2984
3723
|
end_date: string;
|
|
2985
3724
|
timezone: "UTC";
|
|
2986
3725
|
};
|
|
3726
|
+
export type ResolutionReport = {
|
|
3727
|
+
accuracy: number | null;
|
|
3728
|
+
all_wallets_accuracy: number | null;
|
|
3729
|
+
all_wallets_right: number | null;
|
|
3730
|
+
all_wallets_wrong: number | null;
|
|
3731
|
+
date: string | null;
|
|
3732
|
+
generated_at: string | null;
|
|
3733
|
+
grade_basis: "at_resolution" | "current" | null;
|
|
3734
|
+
market_scope: "all_markets" | "sports_and_esports";
|
|
3735
|
+
markets?: ({
|
|
3736
|
+
all_wallets_right: boolean | null;
|
|
3737
|
+
category: string | null;
|
|
3738
|
+
condition_id: string | null;
|
|
3739
|
+
confidence: number | null;
|
|
3740
|
+
event_slug: string | null;
|
|
3741
|
+
out_of_product_scope: boolean;
|
|
3742
|
+
outcome_no: string | null;
|
|
3743
|
+
outcome_yes: string | null;
|
|
3744
|
+
report_at: string;
|
|
3745
|
+
smart_consensus: string | null;
|
|
3746
|
+
smart_right: boolean | null;
|
|
3747
|
+
smart_trader_count: number | null;
|
|
3748
|
+
time_basis: "polymarket_gamma_closed_time" | "observed_resolution";
|
|
3749
|
+
title: string | null;
|
|
3750
|
+
total_smart_pnl: number | null;
|
|
3751
|
+
traders: ({
|
|
3752
|
+
address: string | null;
|
|
3753
|
+
correct: boolean | null;
|
|
3754
|
+
cost: number | null;
|
|
3755
|
+
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
3756
|
+
last_traded_at: string | null;
|
|
3757
|
+
pnl: number | null;
|
|
3758
|
+
side: string | null;
|
|
3759
|
+
username: string | null;
|
|
3760
|
+
})[];
|
|
3761
|
+
weighted_no: number | null;
|
|
3762
|
+
weighted_yes: number | null;
|
|
3763
|
+
winning_outcome: number | null;
|
|
3764
|
+
})[];
|
|
3765
|
+
markets_without_smart_positions: number | null;
|
|
3766
|
+
no_consensus: number | null;
|
|
3767
|
+
positions_grade_unknown: number | null;
|
|
3768
|
+
positions_without_side: number | null;
|
|
3769
|
+
smart_money_right: number | null;
|
|
3770
|
+
smart_money_wrong: number | null;
|
|
3771
|
+
source_updates_pending: boolean;
|
|
3772
|
+
time_basis_counts: {
|
|
3773
|
+
observed_resolution: number;
|
|
3774
|
+
polymarket_gamma_closed_time: number;
|
|
3775
|
+
} | null;
|
|
3776
|
+
total_resolved: number | null;
|
|
3777
|
+
total_smart_pnl: number | null;
|
|
3778
|
+
with_smart_positions: number | null;
|
|
3779
|
+
};
|
|
2987
3780
|
export type ResponseMeta = {
|
|
2988
3781
|
/** Unique request ID (req_ prefix). The same value as the X-Request-Id response header, the request's usage accounting row and its log lines. */
|
|
2989
3782
|
request_id: string;
|
|
@@ -3148,6 +3941,50 @@ export type SnapshotState = {
|
|
|
3148
3941
|
/** When this body's source read started, the clock finality is judged on. null for a body stored before that clock was recorded. */
|
|
3149
3942
|
source_read_started_at: string | null;
|
|
3150
3943
|
};
|
|
3944
|
+
export type SportLeaderboard = {
|
|
3945
|
+
as_of: string | null;
|
|
3946
|
+
category: string | null;
|
|
3947
|
+
edge_average: number | null;
|
|
3948
|
+
league: {
|
|
3949
|
+
name: string;
|
|
3950
|
+
ranked_traders: number;
|
|
3951
|
+
slug: string;
|
|
3952
|
+
} | null;
|
|
3953
|
+
limit: number;
|
|
3954
|
+
min_resolved: number;
|
|
3955
|
+
rows: ({
|
|
3956
|
+
address: string;
|
|
3957
|
+
cost: number | null;
|
|
3958
|
+
edge_hold: "category_loss" | "record_incomplete" | null;
|
|
3959
|
+
edge_skill: number | null;
|
|
3960
|
+
grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
3961
|
+
id: string;
|
|
3962
|
+
last_category_trade_at: string | null;
|
|
3963
|
+
losses: number;
|
|
3964
|
+
n_resolved: number;
|
|
3965
|
+
platform: "polymarket";
|
|
3966
|
+
pnl: number | null;
|
|
3967
|
+
price_edge: {
|
|
3968
|
+
avg_price: number;
|
|
3969
|
+
edge: number;
|
|
3970
|
+
edge_lower: number;
|
|
3971
|
+
hit_rate: number;
|
|
3972
|
+
markets: number;
|
|
3973
|
+
status: "ranked" | "too_few_markets" | "sample_mismatch";
|
|
3974
|
+
} | null;
|
|
3975
|
+
rank: number;
|
|
3976
|
+
roi: number | null;
|
|
3977
|
+
username: string | null;
|
|
3978
|
+
volume: number | null;
|
|
3979
|
+
win_rate: number | null;
|
|
3980
|
+
win_rate_wilson_lb: number | null;
|
|
3981
|
+
wins: number;
|
|
3982
|
+
})[];
|
|
3983
|
+
sort: "edge" | "pnl" | "win_rate";
|
|
3984
|
+
sport: string;
|
|
3985
|
+
total_traders: number;
|
|
3986
|
+
volume_scope: "sports_and_esports";
|
|
3987
|
+
};
|
|
3151
3988
|
export type SuspiciousTrade = {
|
|
3152
3989
|
/** Prefixed ID (rf_...). */
|
|
3153
3990
|
id: string;
|
|
@@ -3276,7 +4113,7 @@ export type Trader = {
|
|
|
3276
4113
|
* @deprecated
|
|
3277
4114
|
*/
|
|
3278
4115
|
realized?: number;
|
|
3279
|
-
/** Unrealized P&L in USD of the wallet's open positions on its synced markets, from the open-position aggregate (dated by the positions data_quality group).
|
|
4116
|
+
/** Unrealized P&L in USD of the wallet's open positions on its synced sports and esports markets, from the open-position aggregate (dated by the positions data_quality group). Each open position's market is judged when the aggregate is read (#32119), so a stored position on a market of another category (one that moved out of sports and esports, or one stored before its category was known) is left out. Before 2026-10-27 (#29366) it covered every Polymarket market. */
|
|
3280
4117
|
unrealized?: number;
|
|
3281
4118
|
/**
|
|
3282
4119
|
* Deprecated since 2026-10-27 and never sent: its one member was the lossless counterpart of the retired pnl.realized (#29830).
|
|
@@ -3334,11 +4171,13 @@ export type Trader = {
|
|
|
3334
4171
|
/** Cross-sectional percentile rank of edge consistency versus all traders, 0-100. null when insufficient history. */
|
|
3335
4172
|
consistency_percentile: number | null;
|
|
3336
4173
|
};
|
|
4174
|
+
/** When the wallet last traded: its most recent recorded trade, the same value the leaderboard entry's last_active carries (which re-reads it hourly). A cached body (meta.cached true) can lag a new trade by up to 60 seconds. No data_quality group dates it: the value is itself a trade time. Since 2026-11-02 (#32324); before, it carried the time 0xinsider last synced the wallet, the same value as synced_at. Omitted when the wallet has no recorded trade. */
|
|
3337
4175
|
last_active?: string;
|
|
4176
|
+
/** When 0xinsider last completed a sync of the wallet (traders.last_synced), dated by the sync data_quality group. Not when the wallet traded: read last_active for that. */
|
|
3338
4177
|
synced_at?: string;
|
|
3339
4178
|
/** synced, unknown, or pending. */
|
|
3340
4179
|
sync_status?: string;
|
|
3341
|
-
/** Data age and coverage for this trader body. Always present. Its six groups are sync (traders.last_synced, covering last_active,
|
|
4180
|
+
/** Data age and coverage for this trader body. Always present. Its six groups are sync (traders.last_synced, covering synced_at and sync_status; it covered last_active until 2026-11-02, #32324, and no group covers last_active now, since the value is itself a trade time), sports_record (trader_product_scope_records.computed_at, covering pnl.in_scope, stats.markets_traded and stats.win_rate: unavailable until the wallet's sports and esports record is computed, partial while it has no decided sports or esports market; for a wallet that traded no sports or esports market, which never gets a record, partial with owner traders.last_synced, as of the completed sync that found none, stats.markets_traded 0 and pnl.in_scope and stats.win_rate omitted, since 2026-10-29, #30589, #30657; for a wallet that trades only combos and holds no single sports or esports market, partial with owner traders.last_synced and all three omitted, since 2026-10-29, #30637), ranking (trader_rankings.computed_at, covering grade, score, streak_tier, forecast_score and forecast_evidence), leaderboard_rank (leaderboard_rank_refresh_state.completed_at, the completion time of the latest fully completed global rank refresh, covering rank), volume (traders.last_synced, covering stats.total_volume, the sum of the trade days the sync stores: unavailable before the first completed sync and while a stored day's sports and esports volume is not computed) and positions (trader_position_snapshots.last_refreshed_at with traders.last_synced as fallback, covering pnl.unrealized, the open-position aggregate). Since 2026-10-27 (#29830) there is no leaderboard_pnl group, and volume is dated by the sync clock instead of trader_usd_volume.observed_at. The positions clock is the latest successful /positions snapshot when one exists, otherwise the last completed trader sync. A rank or position value remains unknown or unavailable when its clock or value is absent. For an unknown wallet every group is unavailable. If the open-position read itself fails, positions is unavailable with a reason that says so, pnl.unrealized is absent, and the body is answered fresh (meta.cached false) and is not kept for later callers. */
|
|
3342
4181
|
data_quality: DataQuality;
|
|
3343
4182
|
/** Field-level trust metadata. Present only when expand=trust or expand[]=trust is requested. */
|
|
3344
4183
|
trust?: TraderTrust;
|
|
@@ -3376,7 +4215,7 @@ export type TraderCategoryRecords = {
|
|
|
3376
4215
|
};
|
|
3377
4216
|
export type TraderContext = {
|
|
3378
4217
|
trader: Trader;
|
|
3379
|
-
/** Aggregate position and P&L coverage for the trader, over its synced markets.
|
|
4218
|
+
/** Aggregate position and P&L coverage for the trader, over its synced markets. markets_open, unrealized_mtm and cost_basis_locked cover the open positions on sports and esports markets, each market judged when the summary is read (#32119). markets_synced, markets_resolved and the resolved win figures count every stored market: since 2026-10-27 (#29366) those are mostly sports and esports markets, but a market that moved out of sports and esports, or one stored before its category was known, stays in them, and sync_coverage counts every category on both sides. markets_total, total_realized_pnl and synced_realized_pnl still cover every Polymarket market of the wallet. Omitted entirely (key absent, never null) when the trader is not in the local database or native net economics is unavailable. Realized fields remain numbers when present, including a genuine zero. */
|
|
3380
4219
|
position_summary?: {
|
|
3381
4220
|
/** Polymarket's count of the markets the wallet traded, every category, when known; null when the provider total is unavailable. */
|
|
3382
4221
|
markets_total: number | null;
|
|
@@ -3390,7 +4229,7 @@ export type TraderContext = {
|
|
|
3390
4229
|
markets_combo: number;
|
|
3391
4230
|
/** Synced markets the wallet has settled: it closed its position by selling out, or the market resolved. Its P&L there is final. */
|
|
3392
4231
|
markets_resolved: number;
|
|
3393
|
-
/** Synced markets still open with residual value (open positions with current value > 0). */
|
|
4232
|
+
/** Synced sports and esports markets still open with residual value (open positions with current value > 0); a stored market of another category is left out (#32119). */
|
|
3394
4233
|
markets_open: number;
|
|
3395
4234
|
/** markets_synced plus markets_pruned plus markets_unstored plus markets_combo, divided by markets_total when the provider total is known (capped at 1.0); 0.0-1.0. Both sides count every category: no Polymarket count of a wallet's sports and esports markets exists, so the ratio does not estimate one. When markets_total is unknown or not positive (null, 0, or negative), this is 1.0 if that sum is positive (else 0.0), so cross-check markets_total before treating 1.0 as full coverage. */
|
|
3396
4235
|
sync_coverage: number;
|
|
@@ -3398,9 +4237,9 @@ export type TraderContext = {
|
|
|
3398
4237
|
synced_realized_pnl: number;
|
|
3399
4238
|
/** Native net realized P&L (USD) over every Polymarket market of the wallet, including credited rebates, read directly from the accounting snapshot. For the sports and esports figure read trader.pnl.in_scope.realized_pnl. Position sync_coverage is separate from this accounting basis. */
|
|
3400
4239
|
total_realized_pnl: number;
|
|
3401
|
-
/** Mark-to-market unrealized P&L (USD) on open positions in synced markets. */
|
|
4240
|
+
/** Mark-to-market unrealized P&L (USD) on open positions in synced sports and esports markets (#32119). */
|
|
3402
4241
|
unrealized_mtm: number;
|
|
3403
|
-
/** Cost basis (USD) currently tied up in open positions in synced markets. */
|
|
4242
|
+
/** Cost basis (USD) currently tied up in open positions in synced sports and esports markets (#32119). */
|
|
3404
4243
|
cost_basis_locked: number;
|
|
3405
4244
|
/** Win rate as a percentage (0-100): resolved_wins over resolved_decided. A settled market that closed at exactly zero realized P&L (a void, a refund, a fully hedged position) is neither a win nor a loss and is not in the denominator, the same rule the leaderboard applies; null when no resolved market was decided. It is the rule of trader.stats.win_rate, read from the synced rows at request time; stats.win_rate is the stored figure the profile shows, refreshed by each sync and a few minutes after a closed-history write. context.md prints one Market win rate, stats.win_rate. */
|
|
3406
4245
|
resolved_win_rate: number | null;
|
|
@@ -4330,6 +5169,7 @@ export interface OperationData {
|
|
|
4330
5169
|
scopes: string[] | null;
|
|
4331
5170
|
};
|
|
4332
5171
|
getApiDiscovery: ApiDiscovery;
|
|
5172
|
+
getCategoryLeaderboard: CategoryLeader[];
|
|
4333
5173
|
getCombo: ComboDetail;
|
|
4334
5174
|
getCombosSummary: CombosSummary;
|
|
4335
5175
|
getCoverage: Platforms;
|
|
@@ -4337,6 +5177,8 @@ export interface OperationData {
|
|
|
4337
5177
|
getEdgeHunter: EdgeHunterBoard | EdgeHunterRankedSignal[] | EdgeHunterObservation[];
|
|
4338
5178
|
getEventReplaySince: EventReplayEvent[];
|
|
4339
5179
|
getGame: Game;
|
|
5180
|
+
getGameHolders: BatchGameHoldersItem[];
|
|
5181
|
+
getGameSharpMoney: GameSharpMoney;
|
|
4340
5182
|
getHealth: {
|
|
4341
5183
|
status: "ok" | "degraded" | "down" | "maintenance";
|
|
4342
5184
|
db: boolean;
|
|
@@ -4367,15 +5209,20 @@ export interface OperationData {
|
|
|
4367
5209
|
getMarketHolders: MarketHolder[];
|
|
4368
5210
|
getMarketIntel: MarketFlow;
|
|
4369
5211
|
getMarketSnapshot: MarketSnapshot;
|
|
5212
|
+
getMarketTopHolders: MarketTopHolders;
|
|
5213
|
+
getMarketWalletsInOut: MarketWalletsInOut;
|
|
4370
5214
|
getMonthlyReportSnapshot: ReportSnapshot;
|
|
4371
5215
|
getPickOfTheDay: PickOfTheDay | PickOfTheDayNoEntitledPicks;
|
|
4372
5216
|
getPickOfTheDayArchive: PickOfTheDayArchive;
|
|
4373
5217
|
getPickOfTheDayLedger: PickOfTheDayLedger;
|
|
4374
5218
|
getPickOfTheDayLedgerEntry: PickOfTheDayLedgerEntry;
|
|
5219
|
+
getPickOfTheDayStats: PickOfTheDayStats;
|
|
4375
5220
|
getPlatforms: Platforms;
|
|
4376
5221
|
getPositionTimeline: PositionTimelineEvent[];
|
|
4377
5222
|
getPositionTimelineById: PositionTimelineEvent[];
|
|
4378
5223
|
getReports: ReportSnapshot;
|
|
5224
|
+
getResolutionReport: ResolutionReport;
|
|
5225
|
+
getSportLeaderboard: SportLeaderboard;
|
|
4379
5226
|
getStream: string;
|
|
4380
5227
|
getSuspiciousTrade: SuspiciousTrade;
|
|
4381
5228
|
getTrader: Trader;
|
|
@@ -4528,8 +5375,43 @@ export interface OperationData {
|
|
|
4528
5375
|
filters: WhaleDatasetFilters;
|
|
4529
5376
|
};
|
|
4530
5377
|
getWhaleTrade: LargeTradeDetail;
|
|
5378
|
+
listCategoryLeaders: CategoryLeader[];
|
|
4531
5379
|
listComboFills: ComboFill[];
|
|
5380
|
+
listGameMarkets: ({
|
|
5381
|
+
condition_id: string;
|
|
5382
|
+
event_slug: string;
|
|
5383
|
+
group_item_title?: string;
|
|
5384
|
+
id: string;
|
|
5385
|
+
line?: number;
|
|
5386
|
+
line_outcome_index?: number;
|
|
5387
|
+
negative_risk?: boolean;
|
|
5388
|
+
outcomes: {
|
|
5389
|
+
index: number;
|
|
5390
|
+
label?: string;
|
|
5391
|
+
token_id?: string;
|
|
5392
|
+
}[];
|
|
5393
|
+
platform?: string;
|
|
5394
|
+
slug?: string;
|
|
5395
|
+
sports_market_type?: string;
|
|
5396
|
+
status: string;
|
|
5397
|
+
title?: string;
|
|
5398
|
+
sharp_money?: {
|
|
5399
|
+
money_as_of: string | null;
|
|
5400
|
+
outcomes: {
|
|
5401
|
+
index: number;
|
|
5402
|
+
usd: number;
|
|
5403
|
+
wallets: {
|
|
5404
|
+
a: number;
|
|
5405
|
+
b: number;
|
|
5406
|
+
s: number;
|
|
5407
|
+
};
|
|
5408
|
+
}[];
|
|
5409
|
+
status: "computed" | "not_computed" | "unavailable";
|
|
5410
|
+
trader_count: number | null;
|
|
5411
|
+
};
|
|
5412
|
+
})[];
|
|
4532
5413
|
listGames: Game[];
|
|
5414
|
+
listGameTrades: GameTrade[];
|
|
4533
5415
|
listInsiderRadar: SuspiciousTrade[];
|
|
4534
5416
|
listLargePositions: LargePosition[];
|
|
4535
5417
|
listLargeTradeCounterpartyExecutions: CounterpartyAnalysis;
|
|
@@ -4537,6 +5419,7 @@ export interface OperationData {
|
|
|
4537
5419
|
listLargeTradeHistory: LargeTrade[];
|
|
4538
5420
|
listLargeTrades: LargeTrade[];
|
|
4539
5421
|
listLeaderboard: LeaderboardEntry[];
|
|
5422
|
+
listLeaderboardLeagues: LeaderboardLeagues;
|
|
4540
5423
|
listPositions: Position[];
|
|
4541
5424
|
listSharpMoneyFlows: SmartMoneyFlowMarket[];
|
|
4542
5425
|
listSmartMoneyFlows: SmartMoneyFlowMarket[];
|
|
@@ -4693,6 +5576,16 @@ export interface OperationQuery {
|
|
|
4693
5576
|
};
|
|
4694
5577
|
getAccountIdentity: Record<string, never>;
|
|
4695
5578
|
getApiDiscovery: Record<string, never>;
|
|
5579
|
+
getCategoryLeaderboard: {
|
|
5580
|
+
/** Keep wallets that traded in the category within this window. all (the default) keeps every ranked wallet. */
|
|
5581
|
+
active_within?: "all" | "7d" | "30d" | "90d";
|
|
5582
|
+
/** Independent events a wallet needs in the category to be listed. The site offers 0, 50, 100 and 250. Clamped to 0..1000000. */
|
|
5583
|
+
min_events?: number;
|
|
5584
|
+
/** Maximum number of leaders to return. Out-of-range values are clamped to 1..100. */
|
|
5585
|
+
limit?: number;
|
|
5586
|
+
/** Opaque cel_ pagination cursor from a prior response. It binds the lower-bound/independent-event/wallet boundary to the committed category-skill ranking and to the slug, active_within and min_events of the request that issued it; a cursor from another filter is 400 on cursor, and one issued before the ranking refreshed is 400 with error.reason=cursor_expired. */
|
|
5587
|
+
cursor?: string;
|
|
5588
|
+
};
|
|
4696
5589
|
getCombo: Record<string, never>;
|
|
4697
5590
|
getCombosSummary: Record<string, never>;
|
|
4698
5591
|
getCoverage: Record<string, never>;
|
|
@@ -4751,6 +5644,13 @@ export interface OperationQuery {
|
|
|
4751
5644
|
expand?: "trade"[];
|
|
4752
5645
|
};
|
|
4753
5646
|
getGame: Record<string, never>;
|
|
5647
|
+
getGameHolders: {
|
|
5648
|
+
/** 1 to 25 condition_id values of this game's markets, comma-separated. The key may also repeat (condition_ids=a&condition_ids=b). A raw provider condition_id or the mkt_-prefixed market id. */
|
|
5649
|
+
condition_ids: string[];
|
|
5650
|
+
/** Holders per market. Out-of-range values are clamped to 1..100. */
|
|
5651
|
+
limit?: number;
|
|
5652
|
+
};
|
|
5653
|
+
getGameSharpMoney: Record<string, never>;
|
|
4754
5654
|
getHealth: Record<string, never>;
|
|
4755
5655
|
getInsiderRadarFlag: Record<string, never>;
|
|
4756
5656
|
getLargeTrade: Record<string, never>;
|
|
@@ -4787,14 +5687,26 @@ export interface OperationQuery {
|
|
|
4787
5687
|
/** Include trust metadata for current_price and spread_bps. Repeatable: trust. */
|
|
4788
5688
|
expand?: "trust"[];
|
|
4789
5689
|
};
|
|
5690
|
+
getMarketTopHolders: {
|
|
5691
|
+
/** Maximum holders per outcome. Out-of-range values are clamped to 1..100. `totals` covers the whole sample whatever the limit. */
|
|
5692
|
+
limit?: number;
|
|
5693
|
+
};
|
|
5694
|
+
getMarketWalletsInOut: {
|
|
5695
|
+
/** The window the nets are summed over, ending at the read's clock: 24h (the default) or 7d. */
|
|
5696
|
+
window?: "24h" | "7d";
|
|
5697
|
+
};
|
|
4790
5698
|
getMonthlyReportSnapshot: {
|
|
4791
5699
|
/** UTC report month in YYYY-MM format. A month that ends before 2024-03-01, the first day report data covers, or starts after tomorrow UTC returns 400 bad_request with error.param=month. */
|
|
4792
5700
|
month: string;
|
|
4793
5701
|
};
|
|
4794
|
-
getPickOfTheDay:
|
|
5702
|
+
getPickOfTheDay: {
|
|
5703
|
+
/** 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. */
|
|
5704
|
+
date?: string;
|
|
5705
|
+
};
|
|
4795
5706
|
getPickOfTheDayArchive: Record<string, never>;
|
|
4796
5707
|
getPickOfTheDayLedger: Record<string, never>;
|
|
4797
5708
|
getPickOfTheDayLedgerEntry: Record<string, never>;
|
|
5709
|
+
getPickOfTheDayStats: Record<string, never>;
|
|
4798
5710
|
getPlatforms: Record<string, never>;
|
|
4799
5711
|
getPositionTimeline: {
|
|
4800
5712
|
/** Market condition_id. One timeline per (trader, market). */
|
|
@@ -4818,6 +5730,20 @@ export interface OperationQuery {
|
|
|
4818
5730
|
/** Period token for the granularity. daily: UTC date YYYY-MM-DD. weekly: ISO week YYYY-WW for a durable canonical snapshot, or a from,to YYYY-MM-DD pair for an exact ephemeral range limited to 31 inclusive UTC days. A wider explicit range returns 400 invalid_query. monthly: UTC month YYYY-MM. A period that ends before 2024-03-01, the first day report data covers, or starts after tomorrow UTC returns 400 bad_request with error.param=period. */
|
|
4819
5731
|
period: string;
|
|
4820
5732
|
};
|
|
5733
|
+
getResolutionReport: {
|
|
5734
|
+
/** UTC report date in YYYY-MM-DD format, no later than today UTC. Any other value returns 400 bad_request with error.param=date. */
|
|
5735
|
+
date: string;
|
|
5736
|
+
/** `totals` returns the counts without `markets`. Any other value than full or totals returns 400 bad_request with error.param=view. */
|
|
5737
|
+
view?: "full" | "totals";
|
|
5738
|
+
};
|
|
5739
|
+
getSportLeaderboard: {
|
|
5740
|
+
/** A league slug of the sport, for example premier-league or cs2, from GET /api/v1/leaderboard/leagues. Omit it for the sport board. */
|
|
5741
|
+
league?: string;
|
|
5742
|
+
/** Ranking axis. Any other value returns 400 bad_request with error.param=sort. */
|
|
5743
|
+
sort?: "edge" | "pnl" | "win_rate";
|
|
5744
|
+
/** Rows to return from the top of the board. Out-of-range values are clamped to 1..100. */
|
|
5745
|
+
limit?: number;
|
|
5746
|
+
};
|
|
4821
5747
|
getStream: {
|
|
4822
5748
|
/** Query-string fallback for the Last-Event-ID resume cursor when the client cannot set the request header. Numeric cluster-shared sequence id; non-numeric or absent attaches live with no replay. A future or expired id emits resync. */
|
|
4823
5749
|
last_event_id?: string;
|
|
@@ -4881,6 +5807,7 @@ export interface OperationQuery {
|
|
|
4881
5807
|
};
|
|
4882
5808
|
getWhaleDatasetStatus: Record<string, never>;
|
|
4883
5809
|
getWhaleTrade: Record<string, never>;
|
|
5810
|
+
listCategoryLeaders: Record<string, never>;
|
|
4884
5811
|
listComboFills: {
|
|
4885
5812
|
/** CSV of pending, won, or lost; all clears the filter. Unknown results appear only in unfiltered lists. */
|
|
4886
5813
|
result?: string;
|
|
@@ -4905,21 +5832,45 @@ export interface OperationQuery {
|
|
|
4905
5832
|
/** Offset for ranked largest or payout ordering; use returned next_offset. */
|
|
4906
5833
|
offset?: number;
|
|
4907
5834
|
};
|
|
5835
|
+
listGameMarkets: {
|
|
5836
|
+
/** Comma-separated provider market types to keep, case-insensitive: spreads, totals, points, first_half_totals. Omitted keeps every type. An unknown type returns an empty page, not a 400; families lists the event's types. */
|
|
5837
|
+
sports_market_type?: string;
|
|
5838
|
+
/** active, closed or all. closed means the provider closed the market or it resolved. */
|
|
5839
|
+
status?: "active" | "closed" | "all";
|
|
5840
|
+
/** Page size. Out-of-range values are clamped to 1..100. */
|
|
5841
|
+
limit?: number;
|
|
5842
|
+
/** Opaque gmk_v1_ cursor from next_cursor, sent with the same filters. It pins the page position (sports_market_type, line, condition_id), not a snapshot. A cursor this endpoint did not issue returns 400 with error.param=cursor. */
|
|
5843
|
+
cursor?: string;
|
|
5844
|
+
/** sharp_money adds each row's sharp_money: the game page's per-line split, side USD and S, A and B wallet counts per outcome. One read for the event whatever the page size; the request costs 5 instead of 2. Pro and Max. Repeatable: sharp_money. */
|
|
5845
|
+
expand?: "sharp_money"[];
|
|
5846
|
+
/** Backward-compatible alias for expand. Repeatable: sharp_money. */
|
|
5847
|
+
"expand[]"?: "sharp_money"[];
|
|
5848
|
+
};
|
|
4908
5849
|
listGames: {
|
|
4909
5850
|
/** Canonical sport bucket, case-insensitive, with - and _ read as a space: table-tennis and Table Tennis are the same bucket. Omit for every covered sport. A bucket this deployment does not serve returns an empty page. */
|
|
4910
5851
|
sport?: string;
|
|
4911
|
-
/** League tag, case-insensitive, as coverage.leagues spells it: nfl, epl, cs2, euroleague. EuroLeague games use sport=Basketball and league=euroleague. Omit for every league inside the selected sports. */
|
|
5852
|
+
/** League tag, case-insensitive, as coverage.leagues spells it: nfl, epl, cs2, euroleague, cbb, cwbb. EuroLeague games use sport=Basketball and league=euroleague; NCAA men's and women's college basketball games use sport=Basketball with league=cbb and league=cwbb. Omit for every league inside the selected sports. */
|
|
4912
5853
|
league?: string;
|
|
4913
|
-
/** Keep only games in this state. A value outside the enum returns an empty page. */
|
|
5854
|
+
/** Keep only games in this state. ended, cancelled and postponed also list finished games that have left the live board, read from their stored records, for kickoffs within starts_after..starts_before (default: the 7 days before now). Without status, or with any other state, the list is the live and upcoming board. A value outside the enum returns an empty page. */
|
|
4914
5855
|
status?: "scheduled" | "live" | "paused" | "ended" | "postponed" | "cancelled" | "suspended" | "delayed" | "unknown";
|
|
4915
|
-
/** RFC 3339 instant. Keep only games whose kickoff is at or after it. Games with no published kickoff are excluded whenever either bound is set. */
|
|
5856
|
+
/** RFC 3339 instant. Keep only games whose kickoff is at or after it. Games with no published kickoff are excluded whenever either bound is set. With a finished status, the stored games' look-back starts here; omitted, it starts 7 days before starts_before, and nothing caps an earlier value. */
|
|
4916
5857
|
starts_after?: string;
|
|
4917
5858
|
/** RFC 3339 instant. Keep only games whose kickoff is at or before it. Must be at or after starts_after. */
|
|
4918
5859
|
starts_before?: string;
|
|
5860
|
+
/** Which games to read. all, the default, lists the whole covered catalog, which can start with games the provider still holds open weeks after kickoff. now lists what is on now: every game the provider reports in play (live or paused), plus any other game whose kickoff was at most 3 hours ago or is still to come; ended, postponed and cancelled games are left out, and a game with no published kickoff stays and sorts last. Combines with every other filter. A value other than all or now returns 400 invalid_query with error.param=window. */
|
|
5861
|
+
window?: "all" | "now";
|
|
4919
5862
|
/** Page size. Out-of-range values are clamped to 1..100. */
|
|
4920
5863
|
limit?: number;
|
|
4921
|
-
/** Opaque gms_v1_ cursor from next_cursor. It pins the page position (kickoff and event_slug), not a snapshot: the catalog is live, so a game added or removed between pages moves with it. A cursor this endpoint did not issue returns 400 with error.param=cursor. */
|
|
5864
|
+
/** Opaque gms_v1_ cursor from next_cursor. It pins the page position (kickoff and event_slug), not a snapshot: the catalog is live, so a game added or removed between pages moves with it. With a finished status, a page that spent its read budget carries a cursor past everything it read, which may be past the last game it returned. A cursor this endpoint did not issue returns 400 with error.param=cursor. */
|
|
4922
5865
|
cursor?: string;
|
|
5866
|
+
/** Backward-compatible alias for expand. Repeatable: sharp_money. */
|
|
5867
|
+
"expand[]"?: "sharp_money"[];
|
|
5868
|
+
/** sharp_money adds each game's sharp_money, the GameSharpMoney object GET /api/v1/games/{event_slug}/sharp-money returns, read from the sport board's cached aggregate: one board read per sport on the page, never a per-game compute. A game the board did not evaluate carries status not_computed (read the per-game route for it); a sport whose aggregate could not be read carries status unavailable while the rest of the page is served. Adds 3 to the request cost. Repeatable. */
|
|
5869
|
+
expand?: "sharp_money"[];
|
|
5870
|
+
};
|
|
5871
|
+
listGameTrades: {
|
|
5872
|
+
/** Newest fills to return. Out-of-range values are clamped to 1..200. */
|
|
5873
|
+
limit?: number;
|
|
4923
5874
|
};
|
|
4924
5875
|
listInsiderRadar: {
|
|
4925
5876
|
/** Maximum number of radar flags to return. Out-of-range values are clamped to 1..100. */
|
|
@@ -4990,6 +5941,8 @@ export interface OperationQuery {
|
|
|
4990
5941
|
min_market_volume_share?: number;
|
|
4991
5942
|
/** Order of the returned page. recent is newest first and is the default. market_volume_share ranks by each trade's share of its market's traded volume, biggest first, with a trade whose share is unavailable last. That ranking reads from, or the last 30 days when from is omitted, for the same reason. A cursor is bound to the order it was minted in, so a continuation cannot cross from one order into the other. */
|
|
4992
5943
|
sort?: "recent" | "market_volume_share";
|
|
5944
|
+
/** Only the large trades in one game: every market of the game behind this event slug, the moneyline, spreads, totals and props, as GET /api/v1/games/{event_slug}/trades reads them. Matched case-insensitively. Newest first only (sort=market_volume_share answers 400), and cannot be combined with condition_id (400). An unknown slug answers 404 not_found with error.param event_slug. */
|
|
5945
|
+
event_slug?: string;
|
|
4993
5946
|
};
|
|
4994
5947
|
listLargeTrades: {
|
|
4995
5948
|
/** Maximum number of recent large trades to return. Out-of-range values are clamped to 1..100. */
|
|
@@ -5010,17 +5963,28 @@ export interface OperationQuery {
|
|
|
5010
5963
|
sort?: "recent" | "market_volume_share";
|
|
5011
5964
|
/** Return only the trades recorded after this one. Pass the id of a large trade this API returned (wt_<n>, or the bare integer). The answer keeps the list shape and newest-first order, and next_cursor pages within it. After means commit order: a trade recorded late with an earlier traded_at is still returned, and a trade whose write has not committed yet is returned on a later poll, never skipped. To poll, send the id of the first trade on the first page of your last answer that had trades, with If-None-Match set to the ETag you last received; when nothing new was recorded the answer is 304 with an empty body. A late trade can come back once, so deduplicate on id. Only with sort=recent. An id that names no trade, or one more than 10000 trades behind the newest, answers 400 with error.param since; request the list without since and continue from its first trade. */
|
|
5012
5965
|
since?: string;
|
|
5966
|
+
/** Only this market's large trades: an exact raw provider condition_id. The page is read from the market's own index, newest first, and pages with cursor; it cannot be combined with since or with event_slug (400). An unknown market returns an empty list. */
|
|
5967
|
+
condition_id?: string;
|
|
5968
|
+
/** Only the large trades in one game: every market of the game behind this event slug, the moneyline, spreads, totals and props, as GET /api/v1/games/{event_slug}/trades reads them. Matched case-insensitively. Newest first only (sort=market_volume_share answers 400), pages with cursor, and cannot be combined with since or with condition_id (400). An unknown slug answers 404 not_found with error.param event_slug. */
|
|
5969
|
+
event_slug?: string;
|
|
5013
5970
|
};
|
|
5014
5971
|
listLeaderboard: {
|
|
5015
5972
|
/** Maximum number of ranked traders to return. Out-of-range values are clamped to 1..100. */
|
|
5016
5973
|
limit?: number;
|
|
5017
|
-
/** 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;
|
|
5974
|
+
/** 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. */
|
|
5018
5975
|
cursor?: string;
|
|
5019
5976
|
/** Filter by category: a sport or esports bucket. Values are matched to canonical category buckets: league values fold into their sport (NBA and NCAAB into Basketball, NFL into Football). Mapped buckets are case-insensitive; passthrough buckets (Cricket, Sports) match case-sensitively against the provider-native bucket key, so use exact casing. Sports and esports only (#27306): a category outside them returns 400 bad_request with param category and names the accepted buckets. */
|
|
5020
5977
|
category?: string;
|
|
5021
5978
|
/** 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. */
|
|
5022
5979
|
strategy?: "category_focused" | "diversified" | "high_activity" | "mixed" | "two_sided" | "unclassified";
|
|
5023
|
-
|
|
5980
|
+
/** Order of the list, the sort columns of the site's leaderboard (/skill-leaderboard). rank (default) is the board's own order, the rank the site and the trader profile show. grade orders by score. volume orders by sports and esports USD volume, the figure GET /api/v1/trader/{address} serves as stats.total_volume. predictions orders by markets_traded. pnl orders by in_scope.realized_pnl. win_rate orders by win_rate among wallets with at least 5 decided sports and esports markets; a wallet with fewer sorts as having none. edge orders by price_edge.edge among wallets whose price_edge.status is ranked and that carry no price_edge.hold; any other wallet sorts as having none. The site's Edge column ranks those same wallets by their edge pulled toward the sports and esports average, a figure the API does not send, so the two orders can differ. A wallet without the value sorts as the lowest, so last in the natural direction and first with the direction reversed. Ties fall to address ascending. With ?category= a sort still orders by these whole-record figures; the category only decides which wallets are listed. Since 2026-11-02 (#32237; edge, #32270). */
|
|
5981
|
+
sort?: "rank" | "grade" | "volume" | "predictions" | "pnl" | "win_rate" | "edge";
|
|
5982
|
+
/** Direction of sort. Omitted, each sort reads in its natural direction: rank 1 first for rank (asc), largest first for every other sort (desc). The opposite value reverses the list. Since 2026-11-02 (#32237). */
|
|
5983
|
+
dir?: "asc" | "desc";
|
|
5984
|
+
/** Limit the list to wallets by recent trading, the site leaderboard's split. active: the wallet's last trade, as its current grade recorded it and aged to today, is 30 days old or less. inactive: older than 30 days, or no trade on record. all (default): every ranked wallet. Since 2026-11-02 (#32237). */
|
|
5985
|
+
activity?: "all" | "active" | "inactive";
|
|
5986
|
+
};
|
|
5987
|
+
listLeaderboardLeagues: Record<string, never>;
|
|
5024
5988
|
listPositions: {
|
|
5025
5989
|
/** Maximum number of current positions to return. Out-of-range values are clamped to 1..100. */
|
|
5026
5990
|
limit?: number;
|
|
@@ -5058,6 +6022,10 @@ export interface OperationQuery {
|
|
|
5058
6022
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
5059
6023
|
/** Optional post-aggregate flow direction filter. */
|
|
5060
6024
|
direction?: "YES" | "NO";
|
|
6025
|
+
/** Only this market's flow: an exact raw provider condition_id. Cannot be combined with event_slug (400). An unknown market returns an empty list. */
|
|
6026
|
+
condition_id?: string;
|
|
6027
|
+
/** Only the markets of one game: every market of the game behind this event slug, the moneyline, spreads, totals and props, as GET /api/v1/games/{event_slug}/trades reads them, ranked as the unfiltered list ranks. Matched case-insensitively; cannot be combined with condition_id (400). An unknown slug answers 404 not_found with error.param event_slug. */
|
|
6028
|
+
event_slug?: string;
|
|
5061
6029
|
};
|
|
5062
6030
|
listSmartMoneyFlows: {
|
|
5063
6031
|
/** Lookback window for grade-filtered whale flow aggregation. */
|
|
@@ -5074,6 +6042,10 @@ export interface OperationQuery {
|
|
|
5074
6042
|
min_grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
5075
6043
|
/** Optional post-aggregate flow direction filter. */
|
|
5076
6044
|
direction?: "YES" | "NO";
|
|
6045
|
+
/** Only this market's flow: an exact raw provider condition_id. Cannot be combined with event_slug (400). An unknown market returns an empty list. */
|
|
6046
|
+
condition_id?: string;
|
|
6047
|
+
/** Only the markets of one game: every market of the game behind this event slug, the moneyline, spreads, totals and props, as GET /api/v1/games/{event_slug}/trades reads them, ranked as the unfiltered list ranks. Matched case-insensitively; cannot be combined with condition_id (400). An unknown slug answers 404 not_found with error.param event_slug. */
|
|
6048
|
+
event_slug?: string;
|
|
5077
6049
|
};
|
|
5078
6050
|
listSuspiciousTrades: {
|
|
5079
6051
|
/** Maximum number of suspicious trades to return. Out-of-range values are clamped to 1..100. */
|
|
@@ -5146,6 +6118,8 @@ export interface OperationQuery {
|
|
|
5146
6118
|
min_market_volume_share?: number;
|
|
5147
6119
|
/** Order of the returned page. recent is newest first and is the default. market_volume_share ranks by each trade's share of its market's traded volume, biggest first, with a trade whose share is unavailable last. That ranking reads from, or the last 30 days when from is omitted, for the same reason. A cursor is bound to the order it was minted in, so a continuation cannot cross from one order into the other. */
|
|
5148
6120
|
sort?: "recent" | "market_volume_share";
|
|
6121
|
+
/** Only the large trades in one game: every market of the game behind this event slug, the moneyline, spreads, totals and props, as GET /api/v1/games/{event_slug}/trades reads them. Matched case-insensitively. Newest first only (sort=market_volume_share answers 400), and cannot be combined with condition_id (400). An unknown slug answers 404 not_found with error.param event_slug. */
|
|
6122
|
+
event_slug?: string;
|
|
5149
6123
|
};
|
|
5150
6124
|
listWhaleTrades: {
|
|
5151
6125
|
/** Maximum number of recent large trades to return. Out-of-range values are clamped to 1..100. */
|
|
@@ -5166,6 +6140,10 @@ export interface OperationQuery {
|
|
|
5166
6140
|
sort?: "recent" | "market_volume_share";
|
|
5167
6141
|
/** Return only the trades recorded after this one. Pass the id of a large trade this API returned (wt_<n>, or the bare integer). The answer keeps the list shape and newest-first order, and next_cursor pages within it. After means commit order: a trade recorded late with an earlier traded_at is still returned, and a trade whose write has not committed yet is returned on a later poll, never skipped. To poll, send the id of the first trade on the first page of your last answer that had trades, with If-None-Match set to the ETag you last received; when nothing new was recorded the answer is 304 with an empty body. A late trade can come back once, so deduplicate on id. Only with sort=recent. An id that names no trade, or one more than 10000 trades behind the newest, answers 400 with error.param since; request the list without since and continue from its first trade. */
|
|
5168
6142
|
since?: string;
|
|
6143
|
+
/** Only this market's large trades: an exact raw provider condition_id. The page is read from the market's own index, newest first, and pages with cursor; it cannot be combined with since or with event_slug (400). An unknown market returns an empty list. */
|
|
6144
|
+
condition_id?: string;
|
|
6145
|
+
/** Only the large trades in one game: every market of the game behind this event slug, the moneyline, spreads, totals and props, as GET /api/v1/games/{event_slug}/trades reads them. Matched case-insensitively. Newest first only (sort=market_volume_share answers 400), pages with cursor, and cannot be combined with since or with condition_id (400). An unknown slug answers 404 not_found with error.param event_slug. */
|
|
6146
|
+
event_slug?: string;
|
|
5169
6147
|
};
|
|
5170
6148
|
prepareWebhookSecret: Record<string, never>;
|
|
5171
6149
|
redeliverWebhookDelivery: Record<string, never>;
|
|
@@ -5179,7 +6157,7 @@ export interface OperationQuery {
|
|
|
5179
6157
|
limit?: number;
|
|
5180
6158
|
};
|
|
5181
6159
|
searchMarkets: {
|
|
5182
|
-
/** Search query. Must be
|
|
6160
|
+
/** Search query. Must be 2-512 characters before whitespace trimming and hold at least 2 letters or digits after trimming; a query with fewer letters or digits (a, 7, ?) returns 400 bad_request with param q (#32309). */
|
|
5183
6161
|
q: string;
|
|
5184
6162
|
/** Maximum number of matching markets to return. Out-of-range values are clamped to 1..100. */
|
|
5185
6163
|
limit?: number;
|
|
@@ -5230,6 +6208,10 @@ export interface OperationPath {
|
|
|
5230
6208
|
exploreMarkets: Record<string, never>;
|
|
5231
6209
|
getAccountIdentity: Record<string, never>;
|
|
5232
6210
|
getApiDiscovery: Record<string, never>;
|
|
6211
|
+
getCategoryLeaderboard: {
|
|
6212
|
+
/** The category slug, for example soccer, basketball, tennis or esports, as GET /api/v1/leaderboard/categories lists it lowercased. Matched case-insensitively. */
|
|
6213
|
+
slug: string;
|
|
6214
|
+
};
|
|
5233
6215
|
getCombo: {
|
|
5234
6216
|
/** Combo identifier: 0x followed by 62 lowercase hex characters. This differs from a binary market condition ID. */
|
|
5235
6217
|
condition_id: string;
|
|
@@ -5243,6 +6225,14 @@ export interface OperationPath {
|
|
|
5243
6225
|
/** The game's event slug, for example nfl-buf-nyj-2026-09-22. Matched case-insensitively. */
|
|
5244
6226
|
event_slug: string;
|
|
5245
6227
|
};
|
|
6228
|
+
getGameHolders: {
|
|
6229
|
+
/** The game's event slug from GET /api/v1/games, for example nba-bos-orl-2026-11-01. Matched case-insensitively. */
|
|
6230
|
+
event_slug: string;
|
|
6231
|
+
};
|
|
6232
|
+
getGameSharpMoney: {
|
|
6233
|
+
/** The game's event slug, for example nba-bos-orl-2026-11-01. Matched case-insensitively; the response carries the canonical slug. */
|
|
6234
|
+
event_slug: string;
|
|
6235
|
+
};
|
|
5246
6236
|
getHealth: Record<string, never>;
|
|
5247
6237
|
getInsiderRadarFlag: {
|
|
5248
6238
|
/** Raw whale_alerts.id or rf_-prefixed radar flag id. */
|
|
@@ -5276,6 +6266,14 @@ export interface OperationPath {
|
|
|
5276
6266
|
/** Market condition ID. Accepts the raw provider-backed condition_id returned by /api/v1/markets/search or /api/v1/markets/explore, or the mkt_-prefixed market.id emitted by V1 responses. */
|
|
5277
6267
|
condition_id: string;
|
|
5278
6268
|
};
|
|
6269
|
+
getMarketTopHolders: {
|
|
6270
|
+
/** Market condition ID. Accepts the raw provider-backed condition_id returned by /api/v1/markets/search or the mkt_-prefixed market.id emitted by V1 responses. */
|
|
6271
|
+
condition_id: string;
|
|
6272
|
+
};
|
|
6273
|
+
getMarketWalletsInOut: {
|
|
6274
|
+
/** Market condition ID. Accepts the raw provider-backed condition_id returned by /api/v1/markets/search or /api/v1/markets/explore, or the mkt_-prefixed market.id emitted by V1 responses. */
|
|
6275
|
+
condition_id: string;
|
|
6276
|
+
};
|
|
5279
6277
|
getMonthlyReportSnapshot: Record<string, never>;
|
|
5280
6278
|
getPickOfTheDay: Record<string, never>;
|
|
5281
6279
|
getPickOfTheDayArchive: Record<string, never>;
|
|
@@ -5284,6 +6282,7 @@ export interface OperationPath {
|
|
|
5284
6282
|
/** Stable positive pick row id as canonical decimal text. */
|
|
5285
6283
|
pick_id: string;
|
|
5286
6284
|
};
|
|
6285
|
+
getPickOfTheDayStats: Record<string, never>;
|
|
5287
6286
|
getPlatforms: Record<string, never>;
|
|
5288
6287
|
getPositionTimeline: {
|
|
5289
6288
|
/** Trader identity: 0x... wallet address, username, trd_-prefixed trader id, bare integer traders.id, or @username. Resolved with precedence @username -> wallet -> trd_ -> integer -> username (a leading @ forces a username lookup, for all-digit usernames); wallet matching is case-insensitive. */
|
|
@@ -5294,6 +6293,11 @@ export interface OperationPath {
|
|
|
5294
6293
|
trader: string;
|
|
5295
6294
|
};
|
|
5296
6295
|
getReports: Record<string, never>;
|
|
6296
|
+
getResolutionReport: Record<string, never>;
|
|
6297
|
+
getSportLeaderboard: {
|
|
6298
|
+
/** The sport slug, for example soccer, basketball, football or esports. Matched case-insensitively. A league or title alias such as nba, epl or cs2 reads its sport's board, and the body's sport is that board's slug; pass league for one league's board. */
|
|
6299
|
+
sport: string;
|
|
6300
|
+
};
|
|
5297
6301
|
getStream: Record<string, never>;
|
|
5298
6302
|
getSuspiciousTrade: {
|
|
5299
6303
|
/** Raw whale_alerts.id or rf_-prefixed suspicious trade id. */
|
|
@@ -5351,8 +6355,17 @@ export interface OperationPath {
|
|
|
5351
6355
|
/** Raw whale_alerts.id or wt_-prefixed whale trade id. */
|
|
5352
6356
|
id: string;
|
|
5353
6357
|
};
|
|
6358
|
+
listCategoryLeaders: Record<string, never>;
|
|
5354
6359
|
listComboFills: Record<string, never>;
|
|
6360
|
+
listGameMarkets: {
|
|
6361
|
+
/** The event slug from GET /api/v1/games, GET /api/v1/games/{event_slug} or a markets/search result's event_slug, for example nba-bos-orl-2026-11-01. Matched case-insensitively. */
|
|
6362
|
+
event_slug: string;
|
|
6363
|
+
};
|
|
5355
6364
|
listGames: Record<string, never>;
|
|
6365
|
+
listGameTrades: {
|
|
6366
|
+
/** The game's event slug, for example nfl-buf-nyj-2026-09-22. Matched case-insensitively. */
|
|
6367
|
+
event_slug: string;
|
|
6368
|
+
};
|
|
5356
6369
|
listInsiderRadar: Record<string, never>;
|
|
5357
6370
|
listLargePositions: Record<string, never>;
|
|
5358
6371
|
listLargeTradeCounterpartyExecutions: {
|
|
@@ -5368,6 +6381,7 @@ export interface OperationPath {
|
|
|
5368
6381
|
listLargeTradeHistory: Record<string, never>;
|
|
5369
6382
|
listLargeTrades: Record<string, never>;
|
|
5370
6383
|
listLeaderboard: Record<string, never>;
|
|
6384
|
+
listLeaderboardLeagues: Record<string, never>;
|
|
5371
6385
|
listPositions: Record<string, never>;
|
|
5372
6386
|
listSharpMoneyFlows: Record<string, never>;
|
|
5373
6387
|
listSmartMoneyFlows: Record<string, never>;
|
|
@@ -5465,6 +6479,7 @@ export interface OperationBody {
|
|
|
5465
6479
|
exploreMarkets: never;
|
|
5466
6480
|
getAccountIdentity: never;
|
|
5467
6481
|
getApiDiscovery: never;
|
|
6482
|
+
getCategoryLeaderboard: never;
|
|
5468
6483
|
getCombo: never;
|
|
5469
6484
|
getCombosSummary: never;
|
|
5470
6485
|
getCoverage: never;
|
|
@@ -5472,6 +6487,8 @@ export interface OperationBody {
|
|
|
5472
6487
|
getEdgeHunter: never;
|
|
5473
6488
|
getEventReplaySince: never;
|
|
5474
6489
|
getGame: never;
|
|
6490
|
+
getGameHolders: never;
|
|
6491
|
+
getGameSharpMoney: never;
|
|
5475
6492
|
getHealth: never;
|
|
5476
6493
|
getInsiderRadarFlag: never;
|
|
5477
6494
|
getLargeTrade: never;
|
|
@@ -5481,15 +6498,20 @@ export interface OperationBody {
|
|
|
5481
6498
|
getMarketHolders: never;
|
|
5482
6499
|
getMarketIntel: never;
|
|
5483
6500
|
getMarketSnapshot: never;
|
|
6501
|
+
getMarketTopHolders: never;
|
|
6502
|
+
getMarketWalletsInOut: never;
|
|
5484
6503
|
getMonthlyReportSnapshot: never;
|
|
5485
6504
|
getPickOfTheDay: never;
|
|
5486
6505
|
getPickOfTheDayArchive: never;
|
|
5487
6506
|
getPickOfTheDayLedger: never;
|
|
5488
6507
|
getPickOfTheDayLedgerEntry: never;
|
|
6508
|
+
getPickOfTheDayStats: never;
|
|
5489
6509
|
getPlatforms: never;
|
|
5490
6510
|
getPositionTimeline: never;
|
|
5491
6511
|
getPositionTimelineById: never;
|
|
5492
6512
|
getReports: never;
|
|
6513
|
+
getResolutionReport: never;
|
|
6514
|
+
getSportLeaderboard: never;
|
|
5493
6515
|
getStream: never;
|
|
5494
6516
|
getSuspiciousTrade: never;
|
|
5495
6517
|
getTrader: never;
|
|
@@ -5506,8 +6528,11 @@ export interface OperationBody {
|
|
|
5506
6528
|
getWeeklyReportSnapshot: never;
|
|
5507
6529
|
getWhaleDatasetStatus: never;
|
|
5508
6530
|
getWhaleTrade: never;
|
|
6531
|
+
listCategoryLeaders: never;
|
|
5509
6532
|
listComboFills: never;
|
|
6533
|
+
listGameMarkets: never;
|
|
5510
6534
|
listGames: never;
|
|
6535
|
+
listGameTrades: never;
|
|
5511
6536
|
listInsiderRadar: never;
|
|
5512
6537
|
listLargePositions: never;
|
|
5513
6538
|
listLargeTradeCounterpartyExecutions: never;
|
|
@@ -5515,6 +6540,7 @@ export interface OperationBody {
|
|
|
5515
6540
|
listLargeTradeHistory: never;
|
|
5516
6541
|
listLargeTrades: never;
|
|
5517
6542
|
listLeaderboard: never;
|
|
6543
|
+
listLeaderboardLeagues: never;
|
|
5518
6544
|
listPositions: never;
|
|
5519
6545
|
listSharpMoneyFlows: never;
|
|
5520
6546
|
listSmartMoneyFlows: never;
|
|
@@ -5620,6 +6646,15 @@ export interface OperationResponse {
|
|
|
5620
6646
|
data: OperationData["getApiDiscovery"];
|
|
5621
6647
|
meta: ResponseMeta;
|
|
5622
6648
|
};
|
|
6649
|
+
getCategoryLeaderboard: {
|
|
6650
|
+
object: "list";
|
|
6651
|
+
data: OperationData["getCategoryLeaderboard"];
|
|
6652
|
+
has_more: boolean;
|
|
6653
|
+
next_cursor?: string;
|
|
6654
|
+
/** Wallets in the category whose edge lower bound is above zero, Wallets in the full walk across every page: those in the category, under this request's active_within and min_events, whose edge lower bound is above zero. The same on every page. */
|
|
6655
|
+
total?: number;
|
|
6656
|
+
meta: ResponseMeta;
|
|
6657
|
+
};
|
|
5623
6658
|
getCombo: ComboResponse;
|
|
5624
6659
|
getCombosSummary: CombosSummaryResponse;
|
|
5625
6660
|
getCoverage: {
|
|
@@ -5647,6 +6682,16 @@ export interface OperationResponse {
|
|
|
5647
6682
|
as_of: string;
|
|
5648
6683
|
meta: ResponseMeta;
|
|
5649
6684
|
};
|
|
6685
|
+
getGameHolders: {
|
|
6686
|
+
object: "game_holders_batch";
|
|
6687
|
+
data: OperationData["getGameHolders"];
|
|
6688
|
+
meta: BatchResponseMeta;
|
|
6689
|
+
};
|
|
6690
|
+
getGameSharpMoney: {
|
|
6691
|
+
object: "game_sharp_money";
|
|
6692
|
+
data: OperationData["getGameSharpMoney"];
|
|
6693
|
+
meta: ResponseMeta;
|
|
6694
|
+
};
|
|
5650
6695
|
getHealth: {
|
|
5651
6696
|
object: "health";
|
|
5652
6697
|
data: OperationData["getHealth"];
|
|
@@ -5696,6 +6741,16 @@ export interface OperationResponse {
|
|
|
5696
6741
|
data: OperationData["getMarketSnapshot"];
|
|
5697
6742
|
meta: ResponseMeta;
|
|
5698
6743
|
};
|
|
6744
|
+
getMarketTopHolders: {
|
|
6745
|
+
object: "market_top_holders";
|
|
6746
|
+
data: OperationData["getMarketTopHolders"];
|
|
6747
|
+
meta: ResponseMeta;
|
|
6748
|
+
};
|
|
6749
|
+
getMarketWalletsInOut: {
|
|
6750
|
+
object: "market_wallets_in_out";
|
|
6751
|
+
data: OperationData["getMarketWalletsInOut"];
|
|
6752
|
+
meta: ResponseMeta;
|
|
6753
|
+
};
|
|
5699
6754
|
getMonthlyReportSnapshot: {
|
|
5700
6755
|
object: "report_snapshot";
|
|
5701
6756
|
data: OperationData["getMonthlyReportSnapshot"];
|
|
@@ -5721,6 +6776,11 @@ export interface OperationResponse {
|
|
|
5721
6776
|
data: OperationData["getPickOfTheDayLedgerEntry"];
|
|
5722
6777
|
meta: ResponseMeta;
|
|
5723
6778
|
};
|
|
6779
|
+
getPickOfTheDayStats: {
|
|
6780
|
+
object: "pick_of_the_day_stats";
|
|
6781
|
+
data: OperationData["getPickOfTheDayStats"];
|
|
6782
|
+
meta: ResponseMeta;
|
|
6783
|
+
};
|
|
5724
6784
|
getPlatforms: {
|
|
5725
6785
|
object: "platforms";
|
|
5726
6786
|
data: OperationData["getPlatforms"];
|
|
@@ -5749,6 +6809,16 @@ export interface OperationResponse {
|
|
|
5749
6809
|
data: OperationData["getReports"];
|
|
5750
6810
|
meta: ResponseMeta;
|
|
5751
6811
|
};
|
|
6812
|
+
getResolutionReport: {
|
|
6813
|
+
object: "resolution_report";
|
|
6814
|
+
data: OperationData["getResolutionReport"];
|
|
6815
|
+
meta: ResponseMeta;
|
|
6816
|
+
};
|
|
6817
|
+
getSportLeaderboard: {
|
|
6818
|
+
object: "sport_leaderboard";
|
|
6819
|
+
data: OperationData["getSportLeaderboard"];
|
|
6820
|
+
meta: ResponseMeta;
|
|
6821
|
+
};
|
|
5752
6822
|
getStream: string;
|
|
5753
6823
|
getSuspiciousTrade: {
|
|
5754
6824
|
object: "suspicious_trade";
|
|
@@ -5809,18 +6879,52 @@ export interface OperationResponse {
|
|
|
5809
6879
|
data: OperationData["getWhaleTrade"];
|
|
5810
6880
|
meta: ResponseMeta;
|
|
5811
6881
|
};
|
|
6882
|
+
listCategoryLeaders: {
|
|
6883
|
+
object: "list";
|
|
6884
|
+
data: OperationData["listCategoryLeaders"];
|
|
6885
|
+
has_more: boolean;
|
|
6886
|
+
next_cursor?: string;
|
|
6887
|
+
/** Number of rows returned: up to three per category. */
|
|
6888
|
+
total?: number;
|
|
6889
|
+
meta: ResponseMeta;
|
|
6890
|
+
};
|
|
5812
6891
|
listComboFills: ComboFillsResponse;
|
|
6892
|
+
listGameMarkets: {
|
|
6893
|
+
data: OperationData["listGameMarkets"];
|
|
6894
|
+
event_slug: string;
|
|
6895
|
+
families: {
|
|
6896
|
+
active: number;
|
|
6897
|
+
markets: number;
|
|
6898
|
+
sports_market_type?: string;
|
|
6899
|
+
}[];
|
|
6900
|
+
has_more: boolean;
|
|
6901
|
+
meta: ResponseMeta;
|
|
6902
|
+
next_cursor?: string;
|
|
6903
|
+
object: string;
|
|
6904
|
+
};
|
|
5813
6905
|
listGames: {
|
|
5814
6906
|
object: "list";
|
|
5815
6907
|
data: OperationData["listGames"];
|
|
5816
6908
|
has_more: boolean;
|
|
5817
6909
|
/** Pass as cursor for the next page. Present only when has_more is true. */
|
|
5818
6910
|
next_cursor?: string;
|
|
5819
|
-
/** When this read assembled the catalog. Per-source vintage is on each game's freshness. */
|
|
6911
|
+
/** When this read assembled the catalog; with status ended, cancelled or postponed, when it read the stored records. Per-source vintage is on each game's freshness. */
|
|
5820
6912
|
as_of: string;
|
|
5821
6913
|
coverage: GamesCoverage;
|
|
5822
6914
|
meta: ResponseMeta;
|
|
5823
6915
|
};
|
|
6916
|
+
listGameTrades: {
|
|
6917
|
+
object: "list";
|
|
6918
|
+
/** Newest first. */
|
|
6919
|
+
data: OperationData["listGameTrades"];
|
|
6920
|
+
/** Always false: the list is the game's newest limit fills, not a walk. Poll again for newer fills. */
|
|
6921
|
+
has_more: boolean;
|
|
6922
|
+
/** The game the rows were read for, lowercased. */
|
|
6923
|
+
event_slug: string;
|
|
6924
|
+
/** true when the rows are the game's last complete read, served while its refresh runs. Read again in a few seconds for the live rows. */
|
|
6925
|
+
source_stale: boolean;
|
|
6926
|
+
meta: ResponseMeta;
|
|
6927
|
+
};
|
|
5824
6928
|
listInsiderRadar: {
|
|
5825
6929
|
object: "list";
|
|
5826
6930
|
data: OperationData["listInsiderRadar"];
|
|
@@ -5881,6 +6985,11 @@ export interface OperationResponse {
|
|
|
5881
6985
|
total?: number;
|
|
5882
6986
|
meta: ResponseMeta;
|
|
5883
6987
|
};
|
|
6988
|
+
listLeaderboardLeagues: {
|
|
6989
|
+
object: "leaderboard_leagues";
|
|
6990
|
+
data: OperationData["listLeaderboardLeagues"];
|
|
6991
|
+
meta: ResponseMeta;
|
|
6992
|
+
};
|
|
5884
6993
|
listPositions: {
|
|
5885
6994
|
object: "list";
|
|
5886
6995
|
data: OperationData["listPositions"];
|