@0xinsider/sdk 0.17.0 → 0.19.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 +25 -3
- package/dist/client.d.ts +25 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +58 -22
- package/dist/client.js.map +1 -1
- package/dist/data-quality.d.ts +4 -4
- package/dist/data-quality.d.ts.map +1 -1
- package/dist/data-quality.js +1 -1
- package/dist/data-quality.js.map +1 -1
- package/dist/errors.d.ts +7 -6
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +6 -5
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/pagination.d.ts +3 -3
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +3 -3
- package/dist/pagination.js.map +1 -1
- package/dist/provenance.d.ts +3 -3
- package/dist/provenance.d.ts.map +1 -1
- package/dist/provenance.js +4 -4
- package/dist/provenance.js.map +1 -1
- package/dist/retry.js +4 -2
- package/dist/retry.js.map +1 -1
- package/dist/schema.d.ts +399 -53
- package/dist/schema.d.ts.map +1 -1
- package/dist/stream.d.ts +7 -7
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +13 -10
- package/dist/stream.js.map +1 -1
- package/dist/webhooks.d.ts +6 -6
- package/dist/webhooks.d.ts.map +1 -1
- package/dist/webhooks.js +3 -3
- package/dist/webhooks.js.map +1 -1
- package/package.json +7 -3
package/dist/schema.d.ts
CHANGED
|
@@ -76,7 +76,7 @@ export type ApiError = {
|
|
|
76
76
|
/** The recommended next request instant (RFC3339), always in the future. Present on every retryable error: `pick_not_released`, `rate_limited`, `rate_limit_unavailable`, and `read_model_warming`. Omitted otherwise. The absolute twin of `Retry-After`; prefer the header for the sleep duration. For `pick_not_released`, the earliest of the next scheduled release, the next automatic selector attempt, the operating-window start, or about 60 seconds. See that response. */
|
|
77
77
|
retry_at?: string;
|
|
78
78
|
freshness?: FreshnessFailure;
|
|
79
|
-
/** 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 outside the HOT/WARM sync tiers -- stop asking for this wallet. 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
|
|
79
|
+
/** 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 outside the HOT/WARM sync tiers -- stop asking for this wallet. 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. */
|
|
80
80
|
reason?: "cursor_expired" | "unknown_endpoint" | "pick_not_released" | "trader_not_tracked" | "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" | "export_expired" | "freshness_ceiling_unsatisfied";
|
|
81
81
|
};
|
|
82
82
|
meta: ResponseMeta;
|
|
@@ -87,10 +87,10 @@ export type ApiErrorBody = {
|
|
|
87
87
|
message: string;
|
|
88
88
|
doc_url?: string;
|
|
89
89
|
param?: string;
|
|
90
|
-
/** The recommended next retry instant (RFC3339). Present on every retryable error (reason=pick_not_released, code=rate_limited including reason=monthly_quota_exceeded, code=rate_limit_unavailable, reason=read_model_warming) and omitted otherwise. Always in the future. For pick_not_released: before the
|
|
90
|
+
/** The recommended next retry instant (RFC3339). Present on every retryable error (reason=pick_not_released, code=rate_limited including reason=monthly_quota_exceeded, code=rate_limit_unavailable, reason=read_model_warming) and omitted otherwise. Always in the future. For pick_not_released: before the 03:00 America/New_York operating-window start, before a selected pick's stored release, or after a skipped day, it names the automatic system's next boundary. While no candidate exists in the live window it normally names the persisted next automatic selector attempt. Every value is advisory and can change before release. When the automatic schedule is absent/due or a pick is overdue it degrades to ~60s. Schedule one request and do not poll. Prefer Retry-After for the duration because it is immune to client clock skew. */
|
|
91
91
|
retry_at?: string;
|
|
92
92
|
freshness?: FreshnessFailure;
|
|
93
|
-
/** 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 outside the HOT/WARM sync tiers -- stop asking for this wallet. 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
|
|
93
|
+
/** 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 outside the HOT/WARM sync tiers -- stop asking for this wallet. 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. */
|
|
94
94
|
reason?: "cursor_expired" | "unknown_endpoint" | "pick_not_released" | "trader_not_tracked" | "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" | "export_expired" | "freshness_ceiling_unsatisfied";
|
|
95
95
|
};
|
|
96
96
|
export type BatchMarketFlowItem = {
|
|
@@ -171,6 +171,196 @@ export type CategorySkillV2 = {
|
|
|
171
171
|
edge_lower_95: number | null;
|
|
172
172
|
brier_event_avg: number | null;
|
|
173
173
|
};
|
|
174
|
+
export type Combo = {
|
|
175
|
+
/** Combo identifier: 0x followed by 62 lowercase hex characters. This differs from a binary market condition ID. */
|
|
176
|
+
condition_id: string;
|
|
177
|
+
leg_count: number | null;
|
|
178
|
+
prepared_at: string | null;
|
|
179
|
+
/** Whether the preparation event has been indexed. */
|
|
180
|
+
legs_known: boolean;
|
|
181
|
+
legs: ComboLeg[];
|
|
182
|
+
window: ComboWindowStats | null;
|
|
183
|
+
totals: ComboTotals | null;
|
|
184
|
+
/** Result of the YES conjunction, independent of the wallet side or its P&L. */
|
|
185
|
+
status: "pending" | "won" | "lost" | "unknown";
|
|
186
|
+
/** Reason the conjunction result cannot be verified, when unknown. */
|
|
187
|
+
status_reason: string | null;
|
|
188
|
+
};
|
|
189
|
+
export type ComboCoverage = {
|
|
190
|
+
state: "paused" | "uninitialized" | "stale" | "backfilling" | "live";
|
|
191
|
+
ingest_enabled: boolean;
|
|
192
|
+
cursors: ComboCoverageCursor[];
|
|
193
|
+
max_lag_blocks: number | null;
|
|
194
|
+
oldest_cursor_update: string | null;
|
|
195
|
+
lifecycle_lag_blocks: number | null;
|
|
196
|
+
lifecycle_backfilling: boolean;
|
|
197
|
+
/** Time the coverage state was evaluated; not a market-price timestamp. */
|
|
198
|
+
computed_at: string;
|
|
199
|
+
};
|
|
200
|
+
export type ComboCoverageCursor = {
|
|
201
|
+
/** Indexed contract. */
|
|
202
|
+
contract: string;
|
|
203
|
+
last_block: number;
|
|
204
|
+
seed_block: number;
|
|
205
|
+
seed_origin: string;
|
|
206
|
+
chain_finalized_block: number | null;
|
|
207
|
+
lag_blocks: number | null;
|
|
208
|
+
updated_at: string;
|
|
209
|
+
};
|
|
210
|
+
/** One combo with its newest 100 fills and all-time lifecycle totals. Paid API callers receive full access. */
|
|
211
|
+
export type ComboDetail = {
|
|
212
|
+
access: "full";
|
|
213
|
+
combo: Combo;
|
|
214
|
+
fills: ComboFill[];
|
|
215
|
+
lifecycle: ComboLifecycleStats | null;
|
|
216
|
+
coverage: ComboCoverage;
|
|
217
|
+
};
|
|
218
|
+
export type ComboFill = {
|
|
219
|
+
/** Stable fill identity. */
|
|
220
|
+
id: string;
|
|
221
|
+
block_number: number;
|
|
222
|
+
log_index: number;
|
|
223
|
+
block_timestamp: string;
|
|
224
|
+
tx_hash: string;
|
|
225
|
+
/** Taker wallet address. */
|
|
226
|
+
trader: string | null;
|
|
227
|
+
trader_name: string | null;
|
|
228
|
+
trader_grade: "S" | "A" | "B" | "C" | "D" | "F" | null;
|
|
229
|
+
/** Recorded wallet-wide trade time. */
|
|
230
|
+
last_traded_at: string | null;
|
|
231
|
+
action: "buy" | "sell";
|
|
232
|
+
/** Combo identifier: 0x followed by 62 lowercase hex characters. This differs from a binary market condition ID. */
|
|
233
|
+
condition_id: string;
|
|
234
|
+
/** 0 is YES, 1 is NO. */
|
|
235
|
+
outcome_index: number;
|
|
236
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
237
|
+
shares: string;
|
|
238
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
239
|
+
collateral_usdc: string;
|
|
240
|
+
/** Execution price for the traded outcome; null for a zero-share event. */
|
|
241
|
+
price: string | null;
|
|
242
|
+
/** Execution price normalized to YES. */
|
|
243
|
+
price_yes: string | null;
|
|
244
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
245
|
+
fee_usdc: string;
|
|
246
|
+
leg_count: number | null;
|
|
247
|
+
/** Result of the YES conjunction, independent of the wallet side or its P&L. */
|
|
248
|
+
status: "pending" | "won" | "lost" | "unknown";
|
|
249
|
+
status_reason: string | null;
|
|
250
|
+
won_legs: number;
|
|
251
|
+
/** Shares per dollar at execution; not a forecast or guaranteed return. */
|
|
252
|
+
payout_multiplier: string | null;
|
|
253
|
+
legs: ComboLeg[];
|
|
254
|
+
};
|
|
255
|
+
export type ComboFillsResponse = {
|
|
256
|
+
object: "list";
|
|
257
|
+
data: ComboFill[];
|
|
258
|
+
sort: "recent" | "largest" | "payout";
|
|
259
|
+
window: "24h" | "7d" | "all";
|
|
260
|
+
limit: number;
|
|
261
|
+
coverage: ComboCoverage;
|
|
262
|
+
/** A continuation is available based on page fullness. Its next page may be empty. */
|
|
263
|
+
has_more: boolean;
|
|
264
|
+
/** Exclusive block_number:log_index continuation for recent ordering. */
|
|
265
|
+
next_cursor?: string;
|
|
266
|
+
/** Continuation offset for largest or payout ordering. */
|
|
267
|
+
next_offset?: number;
|
|
268
|
+
meta: ResponseMeta;
|
|
269
|
+
/** Not computed for combo fill pages; omitted. */
|
|
270
|
+
total?: number;
|
|
271
|
+
};
|
|
272
|
+
export type ComboLeg = {
|
|
273
|
+
leg_index: number;
|
|
274
|
+
outcome_index: number;
|
|
275
|
+
module_id: number;
|
|
276
|
+
state: "pending" | "won" | "lost" | "void" | "unknown";
|
|
277
|
+
market: ComboLegMarket | null;
|
|
278
|
+
};
|
|
279
|
+
export type ComboLegMarket = {
|
|
280
|
+
/** Source of the leg facts. */
|
|
281
|
+
source: "markets" | "provider";
|
|
282
|
+
/** Full binary CTF condition ID for this leg. */
|
|
283
|
+
condition_id: string;
|
|
284
|
+
title: string | null;
|
|
285
|
+
slug: string | null;
|
|
286
|
+
event_slug: string | null;
|
|
287
|
+
/** Provider-resolved URL including the referral tag. */
|
|
288
|
+
polymarket_url?: string;
|
|
289
|
+
outcome_label: string | null;
|
|
290
|
+
image: string | null;
|
|
291
|
+
category: string | null;
|
|
292
|
+
/** Provider outcome index; negative sentinels describe void or unresolved states. */
|
|
293
|
+
winning_outcome: number | null;
|
|
294
|
+
resolved_at: string | null;
|
|
295
|
+
/** A closed market may still have no terminal outcome. */
|
|
296
|
+
market_closed: boolean | null;
|
|
297
|
+
/** Stored daily price for this leg outcome token; not a live quote. */
|
|
298
|
+
pick_price_daily: number | null;
|
|
299
|
+
/** Observation time of the stored daily price. */
|
|
300
|
+
pick_price_as_of: string | null;
|
|
301
|
+
/** Whole days since the stored daily bucket. */
|
|
302
|
+
pick_price_age_days: number | null;
|
|
303
|
+
/** Unmodified provider leg status when available. */
|
|
304
|
+
provider_leg_status: string | null;
|
|
305
|
+
};
|
|
306
|
+
export type ComboLifecycleStats = {
|
|
307
|
+
splits: number;
|
|
308
|
+
merges: number;
|
|
309
|
+
redeems: number;
|
|
310
|
+
compresses: number;
|
|
311
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
312
|
+
split_usdc: string;
|
|
313
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
314
|
+
merge_usdc: string;
|
|
315
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
316
|
+
redeemed_shares: string;
|
|
317
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
318
|
+
redeemed_usdc: string;
|
|
319
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
320
|
+
compressed_usdc: string;
|
|
321
|
+
last_event_at: string;
|
|
322
|
+
};
|
|
323
|
+
export type ComboLiveCount = {
|
|
324
|
+
/** Traded combos whose YES conjunction remains pending. */
|
|
325
|
+
count: number;
|
|
326
|
+
/** Time the count was computed; check its age before using it. */
|
|
327
|
+
computed_at: string;
|
|
328
|
+
};
|
|
329
|
+
export type ComboResponse = {
|
|
330
|
+
object: "combo";
|
|
331
|
+
data: ComboDetail;
|
|
332
|
+
meta: ResponseMeta;
|
|
333
|
+
};
|
|
334
|
+
/** Stored live combo count. Null means the first count is unavailable, never zero. */
|
|
335
|
+
export type CombosSummary = {
|
|
336
|
+
live: ComboLiveCount | null;
|
|
337
|
+
};
|
|
338
|
+
export type CombosSummaryResponse = {
|
|
339
|
+
object: "combos_summary";
|
|
340
|
+
data: CombosSummary;
|
|
341
|
+
meta: ResponseMeta;
|
|
342
|
+
};
|
|
343
|
+
export type ComboTotals = {
|
|
344
|
+
fills: number;
|
|
345
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
346
|
+
volume_usdc: string;
|
|
347
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
348
|
+
largest_fill_usdc: string;
|
|
349
|
+
first_fill_at: string;
|
|
350
|
+
last_fill_at: string;
|
|
351
|
+
/** Last taker execution normalized to YES; not a current quote. */
|
|
352
|
+
last_fill_price_yes: string | null;
|
|
353
|
+
last_fill_outcome_index: number;
|
|
354
|
+
last_fill_action: "buy" | "sell";
|
|
355
|
+
};
|
|
356
|
+
export type ComboWindowStats = {
|
|
357
|
+
fills: number;
|
|
358
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
359
|
+
volume_usdc: string;
|
|
360
|
+
distinct_traders: number;
|
|
361
|
+
/** Exact decimal string from the stored chain or SQL value; preserve precision until display. */
|
|
362
|
+
largest_fill_usdc: string;
|
|
363
|
+
};
|
|
174
364
|
export type ContentSearchResult = {
|
|
175
365
|
/** Backend-owned stable editorial content identifier. */
|
|
176
366
|
content_id: string;
|
|
@@ -538,7 +728,7 @@ export type Game = {
|
|
|
538
728
|
competitors: GameCompetitor[];
|
|
539
729
|
/** The esports series length, for example Bo3. Omitted for everything else. */
|
|
540
730
|
series_format?: string;
|
|
541
|
-
/** Whether
|
|
731
|
+
/** 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. */
|
|
542
732
|
draw_offered: boolean;
|
|
543
733
|
/** Every market this read linked to the game, ordered by condition_id. */
|
|
544
734
|
markets: GameMarket[];
|
|
@@ -602,7 +792,7 @@ export type GameMarket = {
|
|
|
602
792
|
slug?: string;
|
|
603
793
|
/** The provider's own market type, for example moneyline or spread. Omitted when the provider sent none. Not an enum: the provider owns this vocabulary and adds to it. */
|
|
604
794
|
sports_market_type?: string;
|
|
605
|
-
/** Which side of the game this market's YES leg pays.
|
|
795
|
+
/** Which side of the game this market's YES leg pays. Soccer 1X2 legs are explicitly classified as home, draw or away by the provider projection. draw is a real value, not a competitor. Omitted when the provider projection cannot classify the leg, which is not the same as other. */
|
|
606
796
|
side?: "home" | "away" | "draw" | "other";
|
|
607
797
|
/** The provider's label for the YES outcome. Omitted when the provider sent none. */
|
|
608
798
|
outcome_yes?: string;
|
|
@@ -781,7 +971,7 @@ export type LargePosition = {
|
|
|
781
971
|
username?: string;
|
|
782
972
|
grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
783
973
|
win_rate?: number;
|
|
784
|
-
/**
|
|
974
|
+
/** The wallet's Total P&L in USD, the figure its 0xinsider profile shows: native Polymarket position P&L across all markets, fees included, plus credited maker and taker rebates. Distinct from this position's position_unrealized_pnl. Omitted when the wallet has no native accounting snapshot. */
|
|
785
975
|
pnl?: number;
|
|
786
976
|
markets_traded?: number;
|
|
787
977
|
};
|
|
@@ -824,7 +1014,7 @@ export type LargeTrade = {
|
|
|
824
1014
|
suspicion_score: number | null;
|
|
825
1015
|
/** Persisted scorer track. Null when a legacy row has no stored track label. */
|
|
826
1016
|
suspicion_track: "whale" | "fresh_conviction" | "sliced_position" | null;
|
|
827
|
-
/** This fill's size relative to its market: size_usd divided by
|
|
1017
|
+
/** This fill's size relative to its market: its share count (size_usd / price) divided by the shares the market has traded, Polymarket's recorded volume, which counts shares rather than dollars, as observed at or after the trade, so the value always falls between 0 and 1 inclusive. A 20,000-share fill is 0.00005 of a market that has traded 400M shares and 0.125 of one that has traded 160,000, which size_usd alone cannot distinguish. Absent when no volume figure recorded at or after the trade is available, or when that figure is smaller than the fill; never 0 as a stand-in and never capped at 1, because a denominator we cannot trust publishes nothing rather than a trimmed number. A market's volume keeps growing, so the same trade reports a smaller share as the market trades on. */
|
|
828
1018
|
market_volume_share?: number;
|
|
829
1019
|
trader: {
|
|
830
1020
|
id: string;
|
|
@@ -885,7 +1075,7 @@ export type LeaderboardEntry = {
|
|
|
885
1075
|
/** Hot-streak tier (trailing-7d cross-sectional percentile); a separate axis from the all-time grade. Omitted when there is no recent activity. */
|
|
886
1076
|
streak_tier?: "hot" | "rising" | "neutral" | "cooling" | "cold";
|
|
887
1077
|
score?: number;
|
|
888
|
-
/**
|
|
1078
|
+
/** Polymarket leaderboard all-time P&L in USD (traders.total_pnl), including unrealized open positions. Kept for back-compat. Not the profile's Total P&L, which GET /api/v1/trader/{address} serves as pnl.net_total; the two can differ by a wide margin. Prefer realized_pnl for the banked figure. */
|
|
889
1079
|
pnl?: number;
|
|
890
1080
|
/** Native realized P&L plus credited maker and taker rebates in USD, with fees already included. The exact numeric value is truncated toward zero to cents before JSON conversion. Wallets without a native snapshot retain their historical stored realized P&L. Omitted when the native snapshot has no net realized value. */
|
|
891
1081
|
realized_pnl?: number;
|
|
@@ -1120,8 +1310,10 @@ export type MarketSnapshot = {
|
|
|
1120
1310
|
source: string;
|
|
1121
1311
|
live_match_key?: string;
|
|
1122
1312
|
live_league_key?: string;
|
|
1123
|
-
/** Live-score period and elapsed may be omitted when unavailable (older responses use null). A score entry may omit full_name when it equals team; fall back to team. Distinct aliases and score admission markers are preserved. */
|
|
1124
|
-
live_score?: Record<string, unknown
|
|
1313
|
+
/** Live-score period and elapsed may be omitted when unavailable (older responses use null). A score entry may omit full_name when it equals team; fall back to team. Distinct aliases and score admission markers are preserved. For live esports, scores[].map_score retains an available pair through an update omitting both sides only within the same live map, series format and series totals. Map changes and final state follow current provider updates; absent detail remains unavailable. Optional tennis_points supplies independently sourced current-game points and serving side; absence means unavailable. Compatible unexpired tennis_points survives temporary supplemental snapshot unavailability or contention; expiry and set/game mismatch still clear it. */
|
|
1314
|
+
live_score?: Record<string, unknown> & {
|
|
1315
|
+
tennis_points?: TennisPoints;
|
|
1316
|
+
};
|
|
1125
1317
|
reason?: string;
|
|
1126
1318
|
};
|
|
1127
1319
|
freshness: {
|
|
@@ -1211,8 +1403,39 @@ export type PickHolder = {
|
|
|
1211
1403
|
/** The wallet's X handle from its Polymarket profile, normalized to 1-15 characters of [A-Za-z0-9_] with no `@`. Link it as `https://x.com/<handle>`. Stamped at serve time from the wallet's current trader record, never frozen with the pick. The five badge fields are present together, and only for a wallet that carries at least one badge; all absent means no badge, or a body cached before the fields shipped. */
|
|
1212
1404
|
x_username?: string | null;
|
|
1213
1405
|
};
|
|
1406
|
+
/** Recorded lead wallet facts, available only on full newly certified picks. Position and category history are frozen at publication; they are not live balances or pick win probabilities. */
|
|
1407
|
+
export type PickLeadBacker = {
|
|
1408
|
+
/** Lead trader wallet address. */
|
|
1409
|
+
address: string;
|
|
1410
|
+
/** Recorded provider display name. */
|
|
1411
|
+
name: string | null;
|
|
1412
|
+
/** Trader grade recorded at publication. */
|
|
1413
|
+
grade: string;
|
|
1414
|
+
/** Canonical sport of the recorded directional history. */
|
|
1415
|
+
category: string;
|
|
1416
|
+
/** Provider-reported position value on the backed outcome at publication, in USD. It is the gross value on that outcome and does not subtract shares the wallet held on the other outcome; see net_position_usd. It is not the entry cost or a live balance. */
|
|
1417
|
+
position_usd: number;
|
|
1418
|
+
/** Net value of the lead's position toward the backed outcome at publication, in USD: shares held on the backed outcome minus shares held on the other outcome of the same market, valued at the backed outcome's provider price at publication. Present only when the wallet also held the other outcome; absent for a one-sided position, whose net equals position_usd. It is not a live balance. */
|
|
1419
|
+
net_position_usd?: number;
|
|
1420
|
+
/** Start time of the provider position fetch used at publication. This conservative observation clock precedes completion; the position is not a live balance. */
|
|
1421
|
+
position_observed_at: string;
|
|
1422
|
+
/** Distinct directional events in the recorded category history. */
|
|
1423
|
+
directional_event_count: number;
|
|
1424
|
+
/** Events with strictly positive native terminal P&L in the same frozen category sample as directional_event_count, realized_pnl_usd and roi. Multiple market positions in one event contribute one combined event result. Zero-profit events remain in directional_event_count but do not increase this count. This is a recorded wallet result, not a market win rate or the pick's win probability. */
|
|
1425
|
+
profitable_event_count: number;
|
|
1426
|
+
/** Realized P&L over the recorded directional category sample, in USD. Excludes open positions and later changes. */
|
|
1427
|
+
realized_pnl_usd: number;
|
|
1428
|
+
/** Recorded entry basis of that directional sample, in USD; not a claim of complete trading costs or fees. */
|
|
1429
|
+
entry_basis_usd: number;
|
|
1430
|
+
/** Realized P&L divided by recorded entry basis, as a fraction: 0.10 means 10%. This is a wallet statistic, not a pick win probability. */
|
|
1431
|
+
roi: number;
|
|
1432
|
+
/** Peak-to-trough realized P&L drawdown after each event result in the recorded sample, in USD. Excludes intragame, unrealized, and account equity drawdown. */
|
|
1433
|
+
max_realized_drawdown_usd: number;
|
|
1434
|
+
/** Timestamp when the directional history evidence was recorded, separate from the provider position snapshot clock. */
|
|
1435
|
+
recorded_at: string;
|
|
1436
|
+
};
|
|
1214
1437
|
export type PickOfTheDay = {
|
|
1215
|
-
/**
|
|
1438
|
+
/** Full success containing entitled proof-readable picks. */
|
|
1216
1439
|
state: "full";
|
|
1217
1440
|
/** The pick's local publication date (YYYY-MM-DD). */
|
|
1218
1441
|
pick_date?: string;
|
|
@@ -1225,17 +1448,17 @@ export type PickOfTheDay = {
|
|
|
1225
1448
|
picks?: PickOfTheDay[];
|
|
1226
1449
|
/** Number of items in `picks`: the proof-readable picks. Picks held in `proof_pending_picks` are not counted. */
|
|
1227
1450
|
pick_count?: number;
|
|
1228
|
-
/**
|
|
1451
|
+
/** Rank-ordered entitled selections that have not released. Every row retains release_at and kickoff; unauthorized scheduled ranks appear only in identity-free locked_picks. */
|
|
1229
1452
|
scheduled_picks?: ScheduledPickSlot[];
|
|
1230
1453
|
/** Human-readable matchup (e.g. "Portugal vs. Uzbekistan"). */
|
|
1231
1454
|
matchup?: string;
|
|
1232
1455
|
/** Recorded canonical sport category. Prefer display_category for the public competition label. */
|
|
1233
1456
|
category?: string;
|
|
1234
|
-
/** Frozen public presentation category
|
|
1457
|
+
/** Frozen public presentation category. Tennis uses the provider-verified ATP or WTA tour, including Wimbledon and doubles; unknown tours retain Tennis. Every men's and women's cricket competition uses Cricket. Other sports use the curated league, esports title or soccer competition label, then the provider series name without its season year, then category when no competition is known. The canonical category and measured cohort are unchanged: an esports title still uses the pooled Esports category. Optional for mixed-version client compatibility. */
|
|
1235
1458
|
display_category?: string;
|
|
1236
1459
|
/** Provider platform. Always polymarket. */
|
|
1237
1460
|
platform?: "polymarket";
|
|
1238
|
-
/** The pick's stored release instant.
|
|
1461
|
+
/** The pick's stored release instant. Qualified automatic selections are due immediately; explicitly scheduled selections retain their stored time. Final checks, worker or claim delay can make the actual publication later. */
|
|
1239
1462
|
release_at?: string;
|
|
1240
1463
|
/** True only before the pick's stored release instant (a pre-release embargo flag); effectively always false on a served, already-published pick. To detect that the backed game has kicked off, use `game_started`. */
|
|
1241
1464
|
is_locked?: boolean;
|
|
@@ -1305,7 +1528,7 @@ export type PickOfTheDay = {
|
|
|
1305
1528
|
sharp_pct?: number;
|
|
1306
1529
|
/** Recorded market-implied probability as a 0..1 fraction when available. */
|
|
1307
1530
|
market_pct?: number;
|
|
1308
|
-
/** Optional recorded specialist facts. These describe the trader and do not disclose selection decisions. Present only on a full response when available. */
|
|
1531
|
+
/** Optional legacy recorded specialist facts. These describe the trader and do not disclose selection decisions. Present only on a full response when available; newly certified picks use lead_backer instead. */
|
|
1309
1532
|
qualifying_expert?: {
|
|
1310
1533
|
/** Trader wallet address. */
|
|
1311
1534
|
address: string;
|
|
@@ -1328,16 +1551,14 @@ export type PickOfTheDay = {
|
|
|
1328
1551
|
};
|
|
1329
1552
|
/** Public V1 S/A wallet count on the backed side, equal to sharp_wallet_count. */
|
|
1330
1553
|
traders?: number;
|
|
1331
|
-
/** Recorded backed-side
|
|
1554
|
+
/** Recorded backed-side position value in USD when available. Newly certified picks sum only publication-certified wallet positions; legacy rows retain their recorded value. */
|
|
1332
1555
|
backed_sharp_usd?: number;
|
|
1333
|
-
/** Bounded S/A holder display projection.
|
|
1556
|
+
/** Bounded S/A holder display projection. Newly certified picks include only publication-certified wallets; historical rows retain their recorded display shape. */
|
|
1334
1557
|
holders?: PickHolder[];
|
|
1335
|
-
/** Optional complete holder display roster.
|
|
1558
|
+
/** Optional complete holder display roster. Newly certified picks list the recorded lead first, then any verified supporters, then the other graded wallets that held the backed side at publication, ordered by shares; only the lead and supporters are verified, the other rows are gross holdings that may also hold the other side and are not counted in the wallet counts, holder_count or backed_sharp_usd. Legacy rows retain their recorded display shape. */
|
|
1336
1559
|
display_holders?: PickHolder[];
|
|
1337
1560
|
/** S/A holder count for the public V1 compatibility projection. display_holders can include additional grades. */
|
|
1338
1561
|
holder_count?: number;
|
|
1339
|
-
/** Optional editorial note attached to the pick. */
|
|
1340
|
-
editorial_note?: string;
|
|
1341
1562
|
/** Required truthful thesis. With at least one profitable-wallet holder: Profitable wallets hold {pick_outcome_label}[, led by a grade-{top_grade} trader]. Without holder backing: 0xInsider's Pick of the Day is {pick_outcome_label}. Wallet counts are not appended. */
|
|
1342
1563
|
thesis?: string;
|
|
1343
1564
|
/** Canonical web market URL. */
|
|
@@ -1352,10 +1573,17 @@ export type PickOfTheDay = {
|
|
|
1352
1573
|
sports_context?: PickSportsContext;
|
|
1353
1574
|
/** Risk disclaimer shown with every pick. */
|
|
1354
1575
|
disclaimer?: string;
|
|
1355
|
-
/**
|
|
1576
|
+
/** Entitled published picks whose holder proof is unreadable, ordered by rank. Unauthorized ranks appear only in locked_picks and cannot trigger proof warming. Read retry_at for the next read. */
|
|
1356
1577
|
proof_pending_picks?: ProofPendingPickSlot[];
|
|
1357
1578
|
/** Optional full-response entry authorization. Missing or expired authorization cannot authorize an automated entry. */
|
|
1358
1579
|
entry_authorization?: PotdEntryAuthorization;
|
|
1580
|
+
/** Unauthorized unresolved published or scheduled ranks. Contains no game, provider identity, price, or identifying clock. Pro may upgrade to Max to open these ranks. */
|
|
1581
|
+
locked_picks?: {
|
|
1582
|
+
pick_rank: number;
|
|
1583
|
+
required_tier: "max";
|
|
1584
|
+
}[];
|
|
1585
|
+
/** Actionable status, including Upgrade to Max when only locked ranks are published. */
|
|
1586
|
+
message?: string;
|
|
1359
1587
|
/** Stable pick row identity as decimal text. Never use a quality rank as identity. */
|
|
1360
1588
|
pick_id?: string;
|
|
1361
1589
|
/** Compatibility release slot. No quality claim; historic scheduling order is retained. */
|
|
@@ -1364,11 +1592,13 @@ export type PickOfTheDay = {
|
|
|
1364
1592
|
is_free_selection?: boolean;
|
|
1365
1593
|
/** Replacement predecessor stable id; null when no lineage is recorded. */
|
|
1366
1594
|
supersedes_pick_id: string | null;
|
|
1595
|
+
/** Optional full-only lead wallet publication facts. Omitted on legacy picks or when the recorded evidence is unavailable. */
|
|
1596
|
+
lead_backer?: PickLeadBacker;
|
|
1367
1597
|
};
|
|
1368
1598
|
export type PickOfTheDayArchive = {
|
|
1369
|
-
/**
|
|
1599
|
+
/** Published Pick of the Day selections that have not been withdrawn, newest first by pick_date and then pick_rank within each product day. Withdrawn rows stay excluded after settlement. */
|
|
1370
1600
|
picks: PickOfTheDayArchiveEntry[];
|
|
1371
|
-
/** One entry per product day that has a published pick, newest first, in the same order as picks. Each carries that day's net units, accumulated in the same backend pass and behind the same visibility gate as hit_rate.unit_score, so both cover the same population of picks. Re-adding the day totals reproduces hit_rate.unit_score to display precision rather than bit-for-bit, since that re-associates the floating-point sum. */
|
|
1601
|
+
/** One entry per product day that has a published pick included in the archive, newest first, in the same order as picks. Each carries that day's net units, accumulated in the same backend pass and behind the same visibility gate as hit_rate.unit_score, so both cover the same population of picks. Re-adding the day totals reproduces hit_rate.unit_score to display precision rather than bit-for-bit, since that re-associates the floating-point sum. */
|
|
1372
1602
|
days: PickOfTheDayArchiveDay[];
|
|
1373
1603
|
hit_rate: PickOfTheDayHitRate;
|
|
1374
1604
|
};
|
|
@@ -1400,13 +1630,13 @@ export type PickOfTheDayArchiveEntry = {
|
|
|
1400
1630
|
* @deprecated
|
|
1401
1631
|
*/
|
|
1402
1632
|
pick_rank?: number;
|
|
1403
|
-
/** When this
|
|
1633
|
+
/** When this selection was published, as RFC3339 UTC. Use this instant for publication feeds and timelines; pick_date is the America/New_York product day, not a publication timestamp. Automatic picks publish from 03:00 America/New_York on pick_date. Absent only for historical rows whose publication instant is unknown. */
|
|
1404
1634
|
published_at?: string;
|
|
1405
1635
|
/** Human-readable matchup (e.g. "Portugal vs. Uzbekistan"). */
|
|
1406
|
-
matchup
|
|
1636
|
+
matchup?: string;
|
|
1407
1637
|
/** Frozen canonical calibration/report bucket (e.g. "Basketball", "MMA", or "Soccer"). Existing semantics are unchanged; presentation consumers should prefer display_category when present. */
|
|
1408
|
-
category
|
|
1409
|
-
/** Frozen public presentation category
|
|
1638
|
+
category?: string;
|
|
1639
|
+
/** Frozen public presentation category. Tennis uses the provider-verified ATP or WTA tour, including Wimbledon and doubles; unknown tours retain Tennis. Every men's and women's cricket competition uses Cricket. Other sports use the curated league, esports title or soccer competition label, then the provider series name without its season year, then category when no competition is known. The canonical category and measured cohort are unchanged: an esports title still uses the pooled Esports category. Optional for mixed-version client compatibility. */
|
|
1410
1640
|
display_category?: string;
|
|
1411
1641
|
/** Provider (Polymarket Gamma) market thumbnail URL (markets.image); omitted (not null) when the market has no image. Public regardless of the backed-side gate, so present for pending rows too. */
|
|
1412
1642
|
image_url?: string;
|
|
@@ -1450,6 +1680,10 @@ export type PickOfTheDayArchiveEntry = {
|
|
|
1450
1680
|
unit_score?: number;
|
|
1451
1681
|
/** Backend-formatted signed unit score, present exactly when unit_score is present. */
|
|
1452
1682
|
unit_score_display?: string;
|
|
1683
|
+
/** The account or paid tier needed to open this unresolved rank. */
|
|
1684
|
+
required_tier?: "account" | "insider" | "max";
|
|
1685
|
+
/** True for an unauthorized unresolved row. Game identity, category, image, publication clock and all backed facts are omitted. */
|
|
1686
|
+
backed_side_locked?: boolean;
|
|
1453
1687
|
/** Stable pick row identity as decimal text. Never use a quality rank as identity. */
|
|
1454
1688
|
pick_id: string;
|
|
1455
1689
|
/** Compatibility release slot. No quality claim; historic scheduling order is retained. */
|
|
@@ -1632,7 +1866,7 @@ export type PickOfTheDayLedgerOpenedEntry = {
|
|
|
1632
1866
|
/** Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank. */
|
|
1633
1867
|
commitment_version: 1 | 2;
|
|
1634
1868
|
};
|
|
1635
|
-
/**
|
|
1869
|
+
/** An unresolved published pick. Carries only date, rank, hash, algorithm, seal instant and permalink. Kickoff and game identity are withheld; seal time remains public commitment provenance. */
|
|
1636
1870
|
export type PickOfTheDayLedgerSealedEntry = {
|
|
1637
1871
|
state: "sealed";
|
|
1638
1872
|
/** ET product day the pick belongs to (YYYY-MM-DD). */
|
|
@@ -1648,8 +1882,6 @@ export type PickOfTheDayLedgerSealedEntry = {
|
|
|
1648
1882
|
commitment_algo: "sha256(canonical_json(payload)||nonce)";
|
|
1649
1883
|
/** When the hash was frozen. Always strictly before kickoff: a pick that reaches kickoff unsealed stays unsealed forever, because a seal written after the game started would be a backdated proof. */
|
|
1650
1884
|
sealed_at: string;
|
|
1651
|
-
/** The frozen provider kickoff in the canonical payload form: whole seconds, UTC, literal Z. This exact string reappears inside payload.kickoff when the pick opens. */
|
|
1652
|
-
kickoff: string;
|
|
1653
1885
|
/** The pick's public page. */
|
|
1654
1886
|
permalink: string;
|
|
1655
1887
|
/** Stable pick row identity as decimal text. Never use a quality rank as identity. */
|
|
@@ -1663,7 +1895,7 @@ export type PickOfTheDayLedgerSealedEntry = {
|
|
|
1663
1895
|
/** Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank. */
|
|
1664
1896
|
commitment_version: 1 | 2;
|
|
1665
1897
|
};
|
|
1666
|
-
/** A
|
|
1898
|
+
/** A pick without a commitment, retained so the record cannot omit unprovable entries. Unresolved entries omit game identity; once resolved, matchup, category and payload become public. Existing opened canonical payload bytes and hashes are unchanged. */
|
|
1667
1899
|
export type PickOfTheDayLedgerUncommittedEntry = {
|
|
1668
1900
|
state: "uncommitted";
|
|
1669
1901
|
/** ET product day the pick belongs to (YYYY-MM-DD). */
|
|
@@ -1678,9 +1910,9 @@ export type PickOfTheDayLedgerUncommittedEntry = {
|
|
|
1678
1910
|
/** How the pick settled, or pending. */
|
|
1679
1911
|
outcome: "pending" | "win" | "loss" | "void";
|
|
1680
1912
|
/** Frozen matchup, for a reader. */
|
|
1681
|
-
matchup
|
|
1913
|
+
matchup?: string;
|
|
1682
1914
|
/** Frozen canonical sport bucket used for selection calibration (Basketball, MMA), not the exact public league identity; the archive owns that. */
|
|
1683
|
-
category
|
|
1915
|
+
category?: string;
|
|
1684
1916
|
/** When outcome was LAST written to a settled value, or null when that instant is unknown. It moves with a corrected market re-mapping an already-settled pick, while commitment_hash stays untouched -- which is how a mirror that keeps history sees a correction. */
|
|
1685
1917
|
resolved_at: string | null;
|
|
1686
1918
|
/** The pick's market, side and price once it has settled; null while it is pending, and null for a settled pick whose stored row lacks one of these columns. Not hashed: nothing was committed over these values, which is what pre_commitment: true says. */
|
|
@@ -1696,6 +1928,30 @@ export type PickOfTheDayLedgerUncommittedEntry = {
|
|
|
1696
1928
|
/** Replacement predecessor stable id; null when no lineage is recorded. */
|
|
1697
1929
|
supersedes_pick_id: string | null;
|
|
1698
1930
|
};
|
|
1931
|
+
/** A successful current-day entitlement response when only unauthorized ranks have published. It carries an empty pick set, identity-free locked ranks and an upgrade message. Selection IDs, game identity, prices and unauthorized clocks are absent. Any scheduled or proof-pending rows are entitled rows. */
|
|
1932
|
+
export type PickOfTheDayNoEntitledPicks = {
|
|
1933
|
+
/** Only locked ranks are published for this account. */
|
|
1934
|
+
state: "none";
|
|
1935
|
+
/** Current product date in America/New_York (YYYY-MM-DD). */
|
|
1936
|
+
pick_date: string;
|
|
1937
|
+
/** Empty: no entitled proof-readable picks are returned. */
|
|
1938
|
+
picks: PickOfTheDay[];
|
|
1939
|
+
/** Zero entitled proof-readable picks. */
|
|
1940
|
+
pick_count: 0;
|
|
1941
|
+
/** Unauthorized unresolved published or scheduled ranks. Contains no game, provider identity, price, or identifying clock. Pro may upgrade to Max to open these ranks. */
|
|
1942
|
+
locked_picks: {
|
|
1943
|
+
pick_rank: number;
|
|
1944
|
+
required_tier: "max";
|
|
1945
|
+
}[];
|
|
1946
|
+
/** Actionable status, including Upgrade to Max when only locked ranks are published. */
|
|
1947
|
+
message: string;
|
|
1948
|
+
/** Rank-ordered entitled selections that have not released. Every row retains release_at and kickoff; unauthorized scheduled ranks appear only in identity-free locked_picks. */
|
|
1949
|
+
scheduled_picks?: ScheduledPickSlot[];
|
|
1950
|
+
/** Entitled published picks whose holder proof is unreadable, ordered by rank. Unauthorized ranks appear only in locked_picks and cannot trigger proof warming. Read retry_at for the next read. */
|
|
1951
|
+
proof_pending_picks?: ProofPendingPickSlot[];
|
|
1952
|
+
/** Null: the empty entitlement envelope has no selection lineage. */
|
|
1953
|
+
supersedes_pick_id: null;
|
|
1954
|
+
};
|
|
1699
1955
|
/** 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. */
|
|
1700
1956
|
export type PickOfTheDayUncommittedPayload = {
|
|
1701
1957
|
/** 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. */
|
|
@@ -1746,9 +2002,9 @@ export type PickSportsTeam = {
|
|
|
1746
2002
|
full_name: string | null;
|
|
1747
2003
|
/** Provider team identifier (Polymarket /teams id). */
|
|
1748
2004
|
provider_id: number | null;
|
|
1749
|
-
/** Team crest or flag URL.
|
|
2005
|
+
/** Team crest or flag URL. Official NFL (32), WNBA (15), NBA (30), NHL (32), and MLB (30) club crests use same-origin relative paths (`/api/sports/team-logos/{league}/{abbr}.svg?v=<content hash>`); resolve relative URLs against the API origin. Vendored soccer club crests use the same path with `.png`. Other teams use provider artwork, including country flags for national teams and tennis players. Novelty and national-team rows outside the vendored club sets retain provider artwork. */
|
|
1750
2006
|
logo: string | null;
|
|
1751
|
-
/** True when the team mark
|
|
2007
|
+
/** True when artwork measurements show that the team mark needs a light plate on a dark background. Vendored crest verdicts are tied to the exact asset bytes; provider artwork is measured by the teams sync. Always sent; false when no current measurement marks the logo dark. */
|
|
1752
2008
|
logo_mark_dark: boolean;
|
|
1753
2009
|
/** Team brand color as a hex string (provider-owned). */
|
|
1754
2010
|
color: string | null;
|
|
@@ -1758,8 +2014,6 @@ export type PickSportsTeam = {
|
|
|
1758
2014
|
score: string | null;
|
|
1759
2015
|
/** Tennis player headshot URL, served same-origin. Present only for a tennis competitor the headshot resolver matched; absent for team sports and for unmatched players, where `logo` stays the fallback. */
|
|
1760
2016
|
headshot?: string;
|
|
1761
|
-
/** Optional monotonic photo revision for this tennis player, independent of the sports score revision. Legacy stored photos start at zero. Successful new or changed image bytes advance it; source checks and attribution changes do not. Compare only for the same tour and provider_id: a higher revision replaces the portrait, an equal revision may fill a missing portrait, and a lower revision must not replace a newer one. Absent when no photo resolved. */
|
|
1762
|
-
headshot_revision?: number;
|
|
1763
2017
|
/** Tennis tour this competitor belongs to. Present for every tennis entry whether or not `headshot` resolved, so a consumer can tell a tennis player with no photo from a non-tennis team. Absent for every other sport. Only `atp` and `wta` name a gender; the ITF World Tennis Tour runs men's and women's events and the provider does not say which, so `itf` means tennis with gender unknown. */
|
|
1764
2018
|
tour?: "atp" | "wta" | "itf";
|
|
1765
2019
|
/** Per-set score cells for this side, in set order. Backend-owned: render these rather than parsing `score`. Omitted entirely when the provider score is not a structured multi-set match or could not be parsed, so an absent array and an empty one carry the same meaning. */
|
|
@@ -1767,6 +2021,10 @@ export type PickSportsTeam = {
|
|
|
1767
2021
|
format?: ScoreFormat;
|
|
1768
2022
|
/** Completed sets won by this side. Present only when both sides expose the same set columns, so a partially parsed scoreline reports no tally rather than a misleading one. */
|
|
1769
2023
|
sets_won?: number;
|
|
2024
|
+
/** Optional monotonic photo revision for this tennis player, independent of the sports score revision. Legacy stored photos start at zero. Successful new or changed image bytes advance it; source checks and attribution changes do not. Compare only for the same tour and provider_id: a higher revision replaces the portrait, an equal revision may fill a missing portrait, and a lower revision must not replace a newer one. Absent when no photo resolved. */
|
|
2025
|
+
headshot_revision?: number;
|
|
2026
|
+
/** Optional latest retrieved ATP/WTA singles rank for this player. Absent for unranked, ambiguous, doubles, expired, or unavailable identities. This is not rank at match time. */
|
|
2027
|
+
ranking?: TennisRanking;
|
|
1770
2028
|
};
|
|
1771
2029
|
export type PlatformCapabilities = {
|
|
1772
2030
|
grade: PlatformCapabilityStatus;
|
|
@@ -1823,6 +2081,7 @@ export type Position = {
|
|
|
1823
2081
|
grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
1824
2082
|
/** Percentage 0-100. */
|
|
1825
2083
|
win_rate?: number;
|
|
2084
|
+
/** The wallet's Total P&L in USD, the figure its 0xinsider profile shows: native Polymarket position P&L across all markets, fees included, plus credited maker and taker rebates (trader_trading_pnl.net_total_pnl). Not the Polymarket leaderboard figure, which GET /api/v1/trader/{address} still serves as pnl.total. Omitted when the wallet has no native accounting snapshot; the leaderboard figure is never substituted. */
|
|
1826
2085
|
pnl?: number;
|
|
1827
2086
|
markets?: number;
|
|
1828
2087
|
wallet_age_days?: number;
|
|
@@ -1877,11 +2136,12 @@ export type PositionTimelineEvent = {
|
|
|
1877
2136
|
/** Cumulative buy-weighted average of stored fills for this outcome, including older pages; not provider current-position avgPrice. Sells do not change this value. 0 when no stored buys have occurred yet. */
|
|
1878
2137
|
running_avg_price: number;
|
|
1879
2138
|
};
|
|
1880
|
-
/** Returned entry permission bound to the named market, token and outcome. Honor max_entry_price and expires_at, and
|
|
2139
|
+
/** Returned entry permission bound to the named market, token and outcome. New policy-8 grants allow five cents above the first reference ask, capped at 85 cents and floored to the provider tick; policy-7 grants retain their original two-cent allowance. Honor the immutable max_entry_price and expires_at, and quote a current executable book for the actual stake. The submitted order price must remain within the limit; fills may be lower. Fees are separate, and this grant does not guarantee liquidity, execution or positive expected value. */
|
|
1881
2140
|
export type PotdEntryAuthorization = {
|
|
1882
2141
|
version: 1;
|
|
1883
2142
|
authorization_id: string;
|
|
1884
|
-
|
|
2143
|
+
/** Entry allowance policy, independent of selection or feed policy. Policy 8 issues new grants at the first reference ask plus 0.05, capped at 0.85 and floored to the provider tick. Policy 7 retains its original plus-0.02 grant. Existing grants never rise or extend. */
|
|
2144
|
+
policy_version: 7 | 8;
|
|
1885
2145
|
condition_id: string;
|
|
1886
2146
|
token_id: string;
|
|
1887
2147
|
outcome_index: 0 | 1;
|
|
@@ -1889,13 +2149,14 @@ export type PotdEntryAuthorization = {
|
|
|
1889
2149
|
category: string;
|
|
1890
2150
|
/** Exact provider parent event ID, or provider event ID when no parent exists. */
|
|
1891
2151
|
canonical_event_id: string;
|
|
1892
|
-
/**
|
|
2152
|
+
/** Maximum authorized order price as an exact decimal string, excluding fees. Quote a current executable book for the actual stake and keep the submitted order price at or below this bound. Actual fills may be lower; this limit does not guarantee a fill or define fair probability. */
|
|
1893
2153
|
max_entry_price: string;
|
|
2154
|
+
/** Selected-token best ask at first issuance. The entry allowance uses this immutable reference, not the published pick price or a later quote. */
|
|
1894
2155
|
reference_best_ask: string;
|
|
1895
2156
|
reference_book_hash: string;
|
|
1896
2157
|
reference_book_at: string;
|
|
1897
2158
|
issued_at: string;
|
|
1898
|
-
/**
|
|
2159
|
+
/** Original authorization expiry at the earlier requested or provider kickoff; never extended. An expired authorization cannot authorize a new automated entry. */
|
|
1899
2160
|
expires_at: string;
|
|
1900
2161
|
};
|
|
1901
2162
|
/** One ranked pre-game sports market where graded sharp money is piled on one side, with required-status shadow category evidence from partial forward-observed Polymarket fills. */
|
|
@@ -2256,14 +2517,14 @@ export type ResponseMeta = {
|
|
|
2256
2517
|
/** Independent SHA-256 recomputation over the same base fields immediately after category-skill enrichment. Equality with category_skill_base_payload_hash proves shadow enrichment did not change funded inputs. Sports-edge-signals only. */
|
|
2257
2518
|
category_skill_enriched_base_payload_hash?: string;
|
|
2258
2519
|
};
|
|
2259
|
-
/**
|
|
2520
|
+
/** An entitled same-day pick selected but not yet released: stable rank and backend-owned release/kickoff instants. No matchup, category, platform, side, price, or holder fields appear before release. Unauthorized scheduled ranks appear only in locked_picks. */
|
|
2260
2521
|
export type ScheduledPickSlot = {
|
|
2261
2522
|
/**
|
|
2262
2523
|
* Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.
|
|
2263
2524
|
* @deprecated
|
|
2264
2525
|
*/
|
|
2265
2526
|
pick_rank: number;
|
|
2266
|
-
/** The slot's
|
|
2527
|
+
/** The slot's stored release instant. Qualified automatic selections are due immediately; explicitly scheduled selections retain their stored time. The actual publication can follow final checks and worker delay. */
|
|
2267
2528
|
release_at: string;
|
|
2268
2529
|
/** The backed game's current kickoff instant. */
|
|
2269
2530
|
kickoff: string;
|
|
@@ -2383,6 +2644,41 @@ export type SuspiciousTrade = {
|
|
|
2383
2644
|
/** Stored trade timestamp. */
|
|
2384
2645
|
created_at: string;
|
|
2385
2646
|
};
|
|
2647
|
+
/** Optional current-game tennis facts from API-Tennis, aligned with live_score.scores display order. These facts have their own revision and expiry; Polymarket remains the source of sets, match status, period, and the outer live-score revision. New observations require corroborated identity, current set/games, and live state. Cached responses and replayed frames may still carry expired facts, so clients must enforce expires_at. */
|
|
2648
|
+
export type TennisPoints = {
|
|
2649
|
+
source: "api_tennis";
|
|
2650
|
+
/** API-Tennis match ID. This is not a Polymarket market or event ID. */
|
|
2651
|
+
match_key: number;
|
|
2652
|
+
/** API-Tennis player IDs in the same first/second order as live_score.scores. These are not Polymarket team IDs. */
|
|
2653
|
+
player_keys: number[];
|
|
2654
|
+
/** Current-game point values in first/second order. Read strings, including A for advantage and numeric tiebreak points. Missing points are not zero. */
|
|
2655
|
+
points: string[];
|
|
2656
|
+
/** The serving player in live_score.scores display order. Omitted when API-Tennis does not identify the server. */
|
|
2657
|
+
serving_side?: "first" | "second";
|
|
2658
|
+
/** Orders only the tennis_points group for the same match. Never compare this with live_score.source_revision. */
|
|
2659
|
+
source_revision: number;
|
|
2660
|
+
/** When 0xinsider observed these API-Tennis facts. This is not a timestamp from the court. */
|
|
2661
|
+
observed_at: string;
|
|
2662
|
+
/** Stop displaying the point group at this instant, even if the enclosing score remains fresh. The group expires 30 seconds after observed_at. */
|
|
2663
|
+
expires_at: string;
|
|
2664
|
+
/** Current set number. Display points only while this matches the enclosing scoreboard. */
|
|
2665
|
+
set_number: number;
|
|
2666
|
+
/** Current-set games in first/second order. Display points only while these match the enclosing scoreboard. */
|
|
2667
|
+
games: number[];
|
|
2668
|
+
};
|
|
2669
|
+
/** A provider-reported ATP/WTA singles rank with independent retrieval and expiry clocks. API-Tennis provides no ranking publication date. Retrieval time does not establish when the tour published the ranking. */
|
|
2670
|
+
export type TennisRanking = {
|
|
2671
|
+
/** Provider-reported singles rank. */
|
|
2672
|
+
rank: number;
|
|
2673
|
+
/** The player ranking tour. */
|
|
2674
|
+
tour: "atp" | "wta";
|
|
2675
|
+
/** The standings provider. */
|
|
2676
|
+
source: "api_tennis";
|
|
2677
|
+
/** Successful snapshot retrieval time in UTC, not ranking publication date. */
|
|
2678
|
+
observed_at: string;
|
|
2679
|
+
/** UTC deadline after which clients must hide this rank, including when an older game or pick response remains cached. */
|
|
2680
|
+
expires_at: string;
|
|
2681
|
+
};
|
|
2386
2682
|
export type Trader = {
|
|
2387
2683
|
/** Prefixed ID (trd_...). */
|
|
2388
2684
|
id: string;
|
|
@@ -2398,7 +2694,10 @@ export type Trader = {
|
|
|
2398
2694
|
forecast_evidence?: number;
|
|
2399
2695
|
rank?: number;
|
|
2400
2696
|
pnl: {
|
|
2697
|
+
/** Polymarket leaderboard all-time P&L in USD (traders.total_pnl), kept for provider parity and back-compat. Not the profile's Total P&L and not realized plus unrealized: it can differ from net_total by a wide margin. Read net_total for the figure the 0xinsider profile shows. */
|
|
2401
2698
|
total?: number;
|
|
2699
|
+
/** The profile's Total P&L in USD: native Polymarket position P&L, with fees already included, plus credited maker and taker rebates (trader_trading_pnl.net_total_pnl). The same figure the 0xinsider profile, search, live feed, portfolio and watchlist show. Truncated toward zero to cents before conversion to a JSON number. Omitted when the wallet has no native accounting snapshot; pnl.total is never substituted. */
|
|
2700
|
+
net_total?: number;
|
|
2402
2701
|
/** For pnl.realized, expand=trust marks a matching native accounting snapshot as computed: native Polymarket realized P&L plus credited maker and taker rebates, with fees already included. The exact numeric value is truncated toward zero to cents before conversion to a JSON number. Without a matching native accounting snapshot, pnl.realized is omitted and its trust metadata is unavailable. Raw total P&L is never substituted for realized P&L. */
|
|
2403
2702
|
realized?: number;
|
|
2404
2703
|
unrealized?: number;
|
|
@@ -2451,7 +2750,7 @@ export type Trader = {
|
|
|
2451
2750
|
synced_at?: string;
|
|
2452
2751
|
/** synced, unknown, or pending. */
|
|
2453
2752
|
sync_status?: string;
|
|
2454
|
-
/** Data age and coverage for this trader body. Always present. Its five groups are sync (traders.last_synced, covering pnl.total, pnl.realized, stats.markets_traded, stats.win_rate, stats.daily_win_rate, last_active, synced_at and sync_status), 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 (trader_usd_volume.observed_at, covering stats.total_volume) and positions (trader_position_snapshots.last_refreshed_at with traders.last_synced as fallback, covering pnl.unrealized, the open-position aggregate). The positions clock is the latest successful /positions snapshot when one exists, otherwise the last completed trader sync; it does not date closed or native accounting values. 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. */
|
|
2753
|
+
/** Data age and coverage for this trader body. Always present. Its five groups are sync (traders.last_synced, covering pnl.total, pnl.net_total, pnl.realized, stats.markets_traded, stats.win_rate, stats.daily_win_rate, last_active, synced_at and sync_status), 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 (trader_usd_volume.observed_at, covering stats.total_volume) and positions (trader_position_snapshots.last_refreshed_at with traders.last_synced as fallback, covering pnl.unrealized, the open-position aggregate). The positions clock is the latest successful /positions snapshot when one exists, otherwise the last completed trader sync; it does not date closed or native accounting values. 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. */
|
|
2455
2754
|
data_quality: DataQuality;
|
|
2456
2755
|
/** Field-level trust metadata. Present only when expand=trust or expand[]=trust is requested. */
|
|
2457
2756
|
trust?: TraderTrust;
|
|
@@ -2680,7 +2979,7 @@ export type TraderGradeAt = {
|
|
|
2680
2979
|
observed_at: string;
|
|
2681
2980
|
/** Upper bound: a later snapshot confirmed the observation was committed. This is not an exact commit timestamp. */
|
|
2682
2981
|
published_by: string;
|
|
2683
|
-
/** Writer-proven model family, such as grading
|
|
2982
|
+
/** Writer-proven model family, such as grading. Null when unknown. */
|
|
2684
2983
|
model_version: string | null;
|
|
2685
2984
|
/** Exact writer build SHA when recorded. Null on old and non-model observations. */
|
|
2686
2985
|
model_build_sha: string | null;
|
|
@@ -2814,6 +3113,7 @@ export type TraderStatsExact = {
|
|
|
2814
3113
|
export type TraderTrust = {
|
|
2815
3114
|
total_pnl: TrustMetadata;
|
|
2816
3115
|
realized_pnl: TrustMetadata;
|
|
3116
|
+
net_total_pnl: TrustMetadata;
|
|
2817
3117
|
unrealized_pnl: TrustMetadata;
|
|
2818
3118
|
markets_traded: TrustMetadata;
|
|
2819
3119
|
win_rate: TrustMetadata;
|
|
@@ -2858,6 +3158,7 @@ export type TrendingWallet = {
|
|
|
2858
3158
|
grade?: "S" | "A" | "B" | "C" | "D" | "F";
|
|
2859
3159
|
/** Hot-streak tier (trailing-7d cross-sectional percentile). Omitted when there is no recent activity. */
|
|
2860
3160
|
streak_tier?: "hot" | "rising" | "neutral" | "cooling" | "cold";
|
|
3161
|
+
/** The wallet's all-time Total P&L in USD, the figure its 0xinsider profile shows: native Polymarket position P&L across all markets, fees included, plus credited maker and taker rebates (trader_trading_pnl.net_total_pnl). Context only: it does not affect the ranking, which follows trending_pnl_usd. Omitted when the wallet is not in the 0xinsider database or has no native accounting snapshot; the Polymarket leaderboard all-time figure is never substituted. */
|
|
2861
3162
|
all_time_pnl_usd?: number;
|
|
2862
3163
|
all_time_score?: number;
|
|
2863
3164
|
last_synced?: string;
|
|
@@ -2924,11 +3225,11 @@ export type Usage = {
|
|
|
2924
3225
|
reset_at: number;
|
|
2925
3226
|
window_seconds: number;
|
|
2926
3227
|
};
|
|
2927
|
-
/** The monthly request quota (#16111): where the account stands against the requests Pro includes per UTC calendar month. Reading it here spends nothing. null only when the month's count could not be read for this response. */
|
|
3228
|
+
/** The monthly request quota (#16111): where the account stands against the requests the current Pro or Max plan includes per UTC calendar month. Reading it here spends nothing. null only when the month's count could not be read for this response. */
|
|
2928
3229
|
monthly_quota: {
|
|
2929
3230
|
/** Admitted requests so far this UTC calendar month. */
|
|
2930
3231
|
used: number;
|
|
2931
|
-
/** Requests
|
|
3232
|
+
/** Requests the account's plan includes per UTC calendar month: 500,000 for Pro, 2,000,000 for Max. */
|
|
2932
3233
|
limit: number;
|
|
2933
3234
|
remaining: number;
|
|
2934
3235
|
/** Unix seconds: the first instant of the next UTC calendar month. */
|
|
@@ -2939,8 +3240,10 @@ export type Usage = {
|
|
|
2939
3240
|
binding: boolean;
|
|
2940
3241
|
/** Pay as you go is on: requests over the quota keep answering and bill on a monthly invoice, up to ceiling. */
|
|
2941
3242
|
pay_as_you_go: boolean;
|
|
2942
|
-
/** The most requests this account is admitted in a UTC calendar month once enforcement has begun: limit, or
|
|
3243
|
+
/** The most requests this account is admitted in a UTC calendar month once enforcement has begun: limit, or four times limit with pay as you go on (2,000,000 for Pro). null for an admin account, which no number stops. Additive since 2026-09-22. */
|
|
2943
3244
|
ceiling: number | null;
|
|
3245
|
+
/** A historical usage price has not been reconciled to this plan allowance. Pay as you go remains unavailable until billing reconciliation. */
|
|
3246
|
+
unavailable_reason?: "usage_price_reconciliation_required" | null;
|
|
2944
3247
|
} | null;
|
|
2945
3248
|
};
|
|
2946
3249
|
meta: ResponseMeta;
|
|
@@ -3312,6 +3615,8 @@ export interface OperationData {
|
|
|
3312
3615
|
scopes: string[] | null;
|
|
3313
3616
|
};
|
|
3314
3617
|
getApiDiscovery: ApiDiscovery;
|
|
3618
|
+
getCombo: ComboDetail;
|
|
3619
|
+
getCombosSummary: CombosSummary;
|
|
3315
3620
|
getCoverage: Platforms;
|
|
3316
3621
|
getDailyReportSnapshot: ReportSnapshot;
|
|
3317
3622
|
getEventReplaySince: EventReplayEvent[];
|
|
@@ -3347,7 +3652,7 @@ export interface OperationData {
|
|
|
3347
3652
|
getMarketIntel: MarketFlow;
|
|
3348
3653
|
getMarketSnapshot: MarketSnapshot;
|
|
3349
3654
|
getMonthlyReportSnapshot: ReportSnapshot;
|
|
3350
|
-
getPickOfTheDay: PickOfTheDay;
|
|
3655
|
+
getPickOfTheDay: PickOfTheDay | PickOfTheDayNoEntitledPicks;
|
|
3351
3656
|
getPickOfTheDayArchive: PickOfTheDayArchive;
|
|
3352
3657
|
getPickOfTheDayLedger: PickOfTheDayLedger;
|
|
3353
3658
|
getPickOfTheDayLedgerEntry: PickOfTheDayLedgerEntry;
|
|
@@ -3429,11 +3734,11 @@ export interface OperationData {
|
|
|
3429
3734
|
reset_at: number;
|
|
3430
3735
|
window_seconds: number;
|
|
3431
3736
|
};
|
|
3432
|
-
/** The monthly request quota (#16111): where the account stands against the requests Pro includes per UTC calendar month. Reading it here spends nothing. null only when the month's count could not be read for this response. */
|
|
3737
|
+
/** The monthly request quota (#16111): where the account stands against the requests the current Pro or Max plan includes per UTC calendar month. Reading it here spends nothing. null only when the month's count could not be read for this response. */
|
|
3433
3738
|
monthly_quota: {
|
|
3434
3739
|
/** Admitted requests so far this UTC calendar month. */
|
|
3435
3740
|
used: number;
|
|
3436
|
-
/** Requests
|
|
3741
|
+
/** Requests the account's plan includes per UTC calendar month: 500,000 for Pro, 2,000,000 for Max. */
|
|
3437
3742
|
limit: number;
|
|
3438
3743
|
remaining: number;
|
|
3439
3744
|
/** Unix seconds: the first instant of the next UTC calendar month. */
|
|
@@ -3444,8 +3749,10 @@ export interface OperationData {
|
|
|
3444
3749
|
binding: boolean;
|
|
3445
3750
|
/** Pay as you go is on: requests over the quota keep answering and bill on a monthly invoice, up to ceiling. */
|
|
3446
3751
|
pay_as_you_go: boolean;
|
|
3447
|
-
/** The most requests this account is admitted in a UTC calendar month once enforcement has begun: limit, or
|
|
3752
|
+
/** The most requests this account is admitted in a UTC calendar month once enforcement has begun: limit, or four times limit with pay as you go on (2,000,000 for Pro). null for an admin account, which no number stops. Additive since 2026-09-22. */
|
|
3448
3753
|
ceiling: number | null;
|
|
3754
|
+
/** A historical usage price has not been reconciled to this plan allowance. Pay as you go remains unavailable until billing reconciliation. */
|
|
3755
|
+
unavailable_reason?: "usage_price_reconciliation_required" | null;
|
|
3449
3756
|
} | null;
|
|
3450
3757
|
};
|
|
3451
3758
|
getWebhook: WebhookEndpoint;
|
|
@@ -3502,6 +3809,7 @@ export interface OperationData {
|
|
|
3502
3809
|
filters: WhaleDatasetFilters;
|
|
3503
3810
|
};
|
|
3504
3811
|
getWhaleTrade: LargeTradeDetail;
|
|
3812
|
+
listComboFills: ComboFill[];
|
|
3505
3813
|
listGames: Game[];
|
|
3506
3814
|
listInsiderRadar: SuspiciousTrade[];
|
|
3507
3815
|
listLargePositions: LargePosition[];
|
|
@@ -3668,6 +3976,8 @@ export interface OperationQuery {
|
|
|
3668
3976
|
};
|
|
3669
3977
|
getAccountIdentity: Record<string, never>;
|
|
3670
3978
|
getApiDiscovery: Record<string, never>;
|
|
3979
|
+
getCombo: Record<string, never>;
|
|
3980
|
+
getCombosSummary: Record<string, never>;
|
|
3671
3981
|
getCoverage: Record<string, never>;
|
|
3672
3982
|
getDailyReportSnapshot: {
|
|
3673
3983
|
/** UTC report date in YYYY-MM-DD format, from 2024-03-01 (the first day report data covers) through tomorrow UTC. Any other date returns 400 bad_request with error.param=date. */
|
|
@@ -3715,7 +4025,7 @@ export interface OperationQuery {
|
|
|
3715
4025
|
min_grade?: "S" | "A" | "B";
|
|
3716
4026
|
/** Maximum holders per page. Out-of-range values are clamped to 1..100. */
|
|
3717
4027
|
limit?: number;
|
|
3718
|
-
/** Opaque pagination cursor from the previous response's next_cursor.
|
|
4028
|
+
/** Opaque pagination cursor from the previous response's next_cursor. New cursors carry an absolute next offset bound to normalized condition_id, outcome and effective min_grade, so limit can change without skipping or repeating rows on the same roster. Different market/filter bindings return 400 bad_request with param=cursor; omitted filters match all/B and mkt_-prefixed IDs match their raw condition_id. Legacy page-only cursors remain accepted without scheduled retirement and require their original limit; their next response emits the new format. A cursor remains valid across roster refreshes, which can still repeat or skip holders as the live roster changes. */
|
|
3719
4029
|
cursor?: string;
|
|
3720
4030
|
};
|
|
3721
4031
|
getMarketIntel: {
|
|
@@ -3822,6 +4132,30 @@ export interface OperationQuery {
|
|
|
3822
4132
|
};
|
|
3823
4133
|
getWhaleDatasetStatus: Record<string, never>;
|
|
3824
4134
|
getWhaleTrade: Record<string, never>;
|
|
4135
|
+
listComboFills: {
|
|
4136
|
+
/** CSV of pending, won, or lost; all clears the filter. Unknown results appear only in unfiltered lists. */
|
|
4137
|
+
result?: string;
|
|
4138
|
+
/** CSV of 2, 3, 4, or 5+; all clears the filter. A combo matches any named pick count. */
|
|
4139
|
+
legs?: string;
|
|
4140
|
+
/** Minimum collateral in whole USDC. */
|
|
4141
|
+
min_stake?: number;
|
|
4142
|
+
/** 0 disables the filter; otherwise use 2..1000000. Minimum shares per dollar at execution. */
|
|
4143
|
+
min_multiplier?: number;
|
|
4144
|
+
/** CSV of S, A, B, C, D, F; all clears the filter. Ungraded wallets do not match. */
|
|
4145
|
+
grades?: string;
|
|
4146
|
+
/** CSV of nfl, ncaaf, nba, wnba, baseball, hockey, soccer, tennis, table-tennis, esports, mma, boxing, golf, cricket, f1, pickleball; all clears the filter. Matches when any leg belongs to a selected sport. */
|
|
4147
|
+
sports?: string;
|
|
4148
|
+
/** Recent is newest first; largest ranks collateral; payout ranks buy-fill shares and excludes sells. */
|
|
4149
|
+
sort?: "recent" | "largest" | "payout";
|
|
4150
|
+
/** Defaults to all for recent and 24h for largest or payout. */
|
|
4151
|
+
window?: "24h" | "7d" | "all";
|
|
4152
|
+
/** Page size. Integer values outside the range are clamped to 1..200. */
|
|
4153
|
+
limit?: number;
|
|
4154
|
+
/** Exclusive block_number:log_index cursor for recent only; send the returned next_cursor unchanged. */
|
|
4155
|
+
cursor?: string;
|
|
4156
|
+
/** Offset for ranked largest or payout ordering; use returned next_offset. */
|
|
4157
|
+
offset?: number;
|
|
4158
|
+
};
|
|
3825
4159
|
listGames: {
|
|
3826
4160
|
/** 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. */
|
|
3827
4161
|
sport?: string;
|
|
@@ -4191,6 +4525,11 @@ export interface OperationPath {
|
|
|
4191
4525
|
exploreMarkets: Record<string, never>;
|
|
4192
4526
|
getAccountIdentity: Record<string, never>;
|
|
4193
4527
|
getApiDiscovery: Record<string, never>;
|
|
4528
|
+
getCombo: {
|
|
4529
|
+
/** Combo identifier: 0x followed by 62 lowercase hex characters. This differs from a binary market condition ID. */
|
|
4530
|
+
condition_id: string;
|
|
4531
|
+
};
|
|
4532
|
+
getCombosSummary: Record<string, never>;
|
|
4194
4533
|
getCoverage: Record<string, never>;
|
|
4195
4534
|
getDailyReportSnapshot: Record<string, never>;
|
|
4196
4535
|
getEventReplaySince: Record<string, never>;
|
|
@@ -4306,6 +4645,7 @@ export interface OperationPath {
|
|
|
4306
4645
|
/** Raw whale_alerts.id or wt_-prefixed whale trade id. */
|
|
4307
4646
|
id: string;
|
|
4308
4647
|
};
|
|
4648
|
+
listComboFills: Record<string, never>;
|
|
4309
4649
|
listGames: Record<string, never>;
|
|
4310
4650
|
listInsiderRadar: Record<string, never>;
|
|
4311
4651
|
listLargePositions: Record<string, never>;
|
|
@@ -4423,6 +4763,8 @@ export interface OperationBody {
|
|
|
4423
4763
|
exploreMarkets: never;
|
|
4424
4764
|
getAccountIdentity: never;
|
|
4425
4765
|
getApiDiscovery: never;
|
|
4766
|
+
getCombo: never;
|
|
4767
|
+
getCombosSummary: never;
|
|
4426
4768
|
getCoverage: never;
|
|
4427
4769
|
getDailyReportSnapshot: never;
|
|
4428
4770
|
getEventReplaySince: never;
|
|
@@ -4461,6 +4803,7 @@ export interface OperationBody {
|
|
|
4461
4803
|
getWeeklyReportSnapshot: never;
|
|
4462
4804
|
getWhaleDatasetStatus: never;
|
|
4463
4805
|
getWhaleTrade: never;
|
|
4806
|
+
listComboFills: never;
|
|
4464
4807
|
listGames: never;
|
|
4465
4808
|
listInsiderRadar: never;
|
|
4466
4809
|
listLargePositions: never;
|
|
@@ -4576,6 +4919,8 @@ export interface OperationResponse {
|
|
|
4576
4919
|
data: OperationData["getApiDiscovery"];
|
|
4577
4920
|
meta: ResponseMeta;
|
|
4578
4921
|
};
|
|
4922
|
+
getCombo: ComboResponse;
|
|
4923
|
+
getCombosSummary: CombosSummaryResponse;
|
|
4579
4924
|
getCoverage: {
|
|
4580
4925
|
object: "platforms";
|
|
4581
4926
|
data: OperationData["getCoverage"];
|
|
@@ -4762,6 +5107,7 @@ export interface OperationResponse {
|
|
|
4762
5107
|
data: OperationData["getWhaleTrade"];
|
|
4763
5108
|
meta: ResponseMeta;
|
|
4764
5109
|
};
|
|
5110
|
+
listComboFills: ComboFillsResponse;
|
|
4765
5111
|
listGames: {
|
|
4766
5112
|
object: "list";
|
|
4767
5113
|
data: OperationData["listGames"];
|