{"openapi":"3.2.0","info":{"title":"Predict REST API","summary":"REST API proxy for Predict.fun prediction marketplace","version":"1.0.0"},"servers":[{"url":"https://api.predict.fun/v1"},{"url":"https://api-testnet.predict.fun/v1"}],"tags":[{"name":"Auth","description":"Authentication endpoints for obtaining JWT tokens","x-displayName":"Auth"},{"name":"Categories","description":"Category and tag endpoints","x-displayName":"Categories"},{"name":"Markets","description":"Market data endpoints","x-displayName":"Markets"},{"name":"Series","description":"Recurring up/down series and the rounds they roll over through","x-displayName":"Series"},{"name":"Orders","description":"Order management endpoints (create, cancel, query)","x-displayName":"Orders"},{"name":"Account","description":"User account management","x-displayName":"Account"},{"name":"Fee Events","description":"Referral fee and maker rebate event history","x-displayName":"Fee Events"},{"name":"Positions","description":"Position tracking endpoints","x-displayName":"Positions"},{"name":"Activity","x-displayName":"Activity"},{"name":"Search","description":"Search functionality","x-displayName":"Search"},{"name":"Translations","description":"Translation language and content endpoints","x-displayName":"Translations"}],"paths":{"/auth/message":{"get":{"tags":["Auth"],"summary":"Get auth message","description":"Get the message to sign to generate a JWT token.\nDo not hardcode this message as it is dynamic and can be subject to changes.","responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/AuthMessageResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/auth":{"post":{"tags":["Auth"],"summary":"Get JWT with valid signature","description":"Provide a signature and get back a valid JWT that allows order actions.","requestBody":{"content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/PostAuthRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/AuthTokenResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/categories":{"get":{"tags":["Categories"],"summary":"Get categories","description":"Get categories information and their markets.\nMarkets within RESOLVED categories are not tradable.","parameters":[{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 100. Defaults to 20. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true},{"name":"status","schema":{"$ref":"#/components/schemas/CategoryStatusFilter"},"in":"query","description":"`RESOLVED` returns only resolved categories, and any other value only unresolved\nones. Omit it to get both.","required":false,"deprecated":false,"explode":true},{"name":"sort","schema":{"$ref":"#/components/schemas/CategorySort"},"in":"query","description":"Defaults to `PUBLISHED_AT_DESC`, most recently published first. `POPULAR` sorts like\n`VOLUME_24H_DESC`, and `VOLUME` like `VOLUME_ALL_DESC`.","required":false,"deprecated":false,"explode":true},{"name":"tagIds","schema":{"type":"string"},"in":"query","description":"Only categories with at least one of these tag IDs, comma-separated. Entries that\nare not numbers are ignored.","required":false,"deprecated":false,"explode":true},{"name":"marketVariant","schema":{"$ref":"#/components/schemas/MarketVariant"},"in":"query","description":"Only categories of this variant. Cannot be combined with `marketVariants`.","required":false,"deprecated":false,"explode":true},{"name":"marketVariants","schema":{"type":"array","items":{"$ref":"#/components/schemas/MarketVariant"}},"in":"query","description":"Only categories of any of these variants (comma-separated or\nrepeated). Cannot be combined with `marketVariant`.","required":false,"deprecated":false,"explode":true},{"name":"includeStats","schema":{"type":"boolean"},"in":"query","description":"Whether to fill in `stats` with volume and liquidity figures. Defaults to `false`,\nwhich leaves `stats` null.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/CategoriesResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/categories/{slug}":{"get":{"tags":["Categories"],"summary":"Get category by slug","description":"Get category information and its markets by slug.","parameters":[{"name":"slug","schema":{"type":"string","maxLength":256},"in":"path","description":"The category's slug.","required":true,"deprecated":false,"explode":true},{"name":"includeStats","schema":{"type":"boolean"},"in":"query","description":"Whether to fill in `stats` with volume and liquidity figures. Defaults to `false`,\nwhich leaves `stats` null.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/CategoryResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/categories/{id}/stats":{"get":{"tags":["Categories"],"summary":"Get category statistics","description":"Get statistics about a specific category including volume and liquidity.","parameters":[{"name":"id","schema":{"type":"integer","format":"int64"},"in":"path","description":"The category's ID.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/CategoryStatsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/categories/{slug}/translations":{"get":{"tags":["Categories"],"summary":"Get category translations","description":"Fetch all available translations for a category, its markets, and their\noutcomes for the requested languages in a single call.\n\n`languages` is a comma-separated list of BCP 47 language codes\n(e.g. `zh-CN,ja-JP,ko-KR`). If a language code has no completed\ntranslations it is omitted from the response rather than returning an error.","parameters":[{"name":"slug","schema":{"type":"string","maxLength":256},"in":"path","description":"The category's slug.","required":true,"deprecated":false,"explode":true},{"name":"languages","schema":{"type":"string","maxLength":256},"in":"query","description":"Language codes to return, comma-separated, as `GET /v1/languages` lists them.\nWithout any, `translations` comes back empty.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/CategoryTranslationsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tags":{"get":{"tags":["Categories"],"summary":"Get all tags","description":"Get all supported tags for filtering categories and markets.","responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/TagsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets":{"get":{"tags":["Markets"],"summary":"Get markets","description":"Get information about markets with optional filters and sorting.","parameters":[{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 100. Defaults to 20. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true},{"name":"isBoosted","schema":{"type":"boolean"},"in":"query","description":"Deprecated. Boosts are no longer used.","required":false,"deprecated":true,"explode":true},{"name":"hasActiveRewards","schema":{"type":"boolean"},"in":"query","description":"Only markets with a reward period running now (`true`), or only markets without\none (`false`). Omit it to get both.","required":false,"deprecated":false,"explode":true},{"name":"status","schema":{"$ref":"#/components/schemas/MarketStatusFilter"},"in":"query","description":"Only open or only resolved markets. Paused markets count as neither, so they are\nonly listed when this is omitted.","required":false,"deprecated":false,"explode":true},{"name":"tagIds","schema":{"type":"string"},"in":"query","description":"Only markets whose category has at least one of these tag IDs, comma-separated.\nEntries that are not numbers are ignored.","required":false,"deprecated":false,"explode":true},{"name":"marketVariant","schema":{"$ref":"#/components/schemas/MarketVariant"},"in":"query","description":"Only markets of this variant.","required":false,"deprecated":false,"explode":true},{"name":"sort","schema":{"$ref":"#/components/schemas/MarketSort"},"in":"query","description":"Without it, markets are grouped by category, with categories in the platform's\nown ranking and markets in their order within the category.","required":false,"deprecated":false,"explode":true},{"name":"includeStats","schema":{"type":"boolean"},"in":"query","description":"Whether to fill in `stats` with volume and liquidity figures. Defaults to `false`,\nwhich leaves `stats` null.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/MarketsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/{id}":{"get":{"tags":["Markets"],"summary":"Get market by ID","description":"Get detailed information about a specific market by its ID.","parameters":[{"name":"id","schema":{"type":"integer","format":"int64"},"in":"path","description":"The market's ID.","required":true,"deprecated":false,"explode":true},{"name":"includeStats","schema":{"type":"boolean"},"in":"query","description":"Whether to fill in `stats` with volume and liquidity figures. Defaults to `false`,\nwhich leaves `stats` null.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/MarketResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/{id}/stats":{"get":{"tags":["Markets"],"summary":"Get market statistics","description":"Get statistics about a specific market including volume and liquidity.","parameters":[{"name":"id","schema":{"type":"integer","format":"int64"},"in":"path","description":"The market's ID.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/MarketStatsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/{id}/last-sale":{"get":{"tags":["Markets"],"summary":"Get market last sale","description":"Get the last sale information for a specific market.","parameters":[{"name":"id","schema":{"type":"integer","format":"int64"},"in":"path","description":"The market's ID.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/LastSaleResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/{id}/orderbook":{"get":{"tags":["Markets"],"summary":"Get market orderbook","description":"Get the orderbook for a specific market.\nThe order book stores prices based on the Yes outcome.","parameters":[{"name":"id","schema":{"type":"integer","format":"int64"},"in":"path","description":"The market's ID.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/OrderbookResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/{id}/quote":{"get":{"tags":["Markets"],"summary":"Get market quote","description":"Get the best bid and best ask resting on a market's order book, quoted\nagainst the outcome whose `indexSet` is 1, as the book itself is.\n\nPrefer this over the full order book when only the current price matters,\nand over the quotes embedded in a market payload, which are deprecated.","parameters":[{"name":"id","schema":{"type":"integer","format":"int64"},"in":"path","description":"The market's ID.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/QuoteResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/{id}/timeseries":{"get":{"tags":["Markets"],"summary":"Get market timeseries","parameters":[{"name":"id","schema":{"type":"integer","format":"int64"},"in":"path","description":"The market's ID.","required":true,"deprecated":false,"explode":true},{"name":"metric","schema":{"$ref":"#/components/schemas/Metric"},"in":"query","description":"The metric to query","required":true,"deprecated":false,"explode":true},{"name":"resolution","schema":{"$ref":"#/components/schemas/Resolution"},"in":"query","description":"Resolution (bucket size) for aggregation","required":false,"deprecated":false,"explode":true},{"name":"from","schema":{"type":"integer","format":"int64"},"in":"query","description":"Start of the time range in unix seconds, inclusive. It must be before `to` and at\nmost 365 days earlier.","required":true,"deprecated":false,"explode":true},{"name":"to","schema":{"type":"integer","format":"int64"},"in":"query","description":"End of the time range in unix seconds, inclusive. Defaults to now.","required":false,"deprecated":false,"explode":true},{"name":"limit","schema":{"type":"integer","format":"int32"},"in":"query","description":"Most data points to return, from 1 to 250. Defaults to 50, and a value outside that\nrange is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/TimeseriesResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/{id}/timeseries/latest":{"get":{"tags":["Markets"],"summary":"Get latest market timeseries value","parameters":[{"name":"id","schema":{"type":"integer","format":"int64"},"in":"path","description":"The market's ID.","required":true,"deprecated":false,"explode":true},{"name":"metric","schema":{"$ref":"#/components/schemas/Metric"},"in":"query","description":"The metric to query","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/TimeseriesLatestResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/orderbooks":{"get":{"tags":["Markets"],"summary":"Get orderbooks for multiple markets","description":"Returns orderbooks for up to 100 markets in a single call.\nMarkets without an orderbook are omitted from the response.","parameters":[{"name":"ids","schema":{"type":"array","items":{"type":"integer","format":"int64"}},"in":"query","description":"Up to 100 market IDs, comma-separated or repeated. A longer list is rejected.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/OrderbooksResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/quotes":{"get":{"tags":["Markets"],"summary":"Get quotes for multiple markets","description":"Returns a quote for up to 500 markets in a single call. This is the\ncheapest way to keep a board of prices current.\n\nMarkets without a live book are omitted from the response rather than\nreturned empty, so the result may be shorter than the request.","parameters":[{"name":"ids","schema":{"type":"array","items":{"type":"integer","format":"int64"}},"in":"query","description":"Up to 500 market IDs, comma-separated or repeated. A longer list is rejected.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/QuotesResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/timeseries":{"get":{"tags":["Markets"],"summary":"Get timeseries for multiple markets","description":"Paginated chance points for up to 20 markets in one call. The cursor\nis a single shared timestamp that advances across all markets.","parameters":[{"name":"ids","schema":{"type":"array","items":{"type":"integer","format":"int64"}},"in":"query","description":"Up to 20 market IDs, comma-separated or repeated. A longer list is rejected.","required":true,"deprecated":false,"explode":true},{"name":"metric","schema":{"$ref":"#/components/schemas/Metric"},"in":"query","description":"The metric to query.","required":true,"deprecated":false,"explode":true},{"name":"resolution","schema":{"$ref":"#/components/schemas/Resolution"},"in":"query","description":"Bucket size of the data points, the same for every market. Defaults to one chosen\nfrom the length of the time range.","required":false,"deprecated":false,"explode":true},{"name":"from","schema":{"type":"integer","format":"int64"},"in":"query","description":"Start of the time range in unix seconds, inclusive. It must be before `to` and at\nmost 365 days earlier.","required":true,"deprecated":false,"explode":true},{"name":"to","schema":{"type":"integer","format":"int64"},"in":"query","description":"End of the time range in unix seconds, inclusive. Defaults to now.","required":false,"deprecated":false,"explode":true},{"name":"limit","schema":{"type":"integer","format":"int32"},"in":"query","description":"Most distinct timestamps to return across all markets, from 1 to 250. Defaults to\n50, and a value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/TimeseriesBatchResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/timeseries/latest":{"get":{"tags":["Markets"],"summary":"Get latest timeseries value for multiple markets","description":"Returns the current chance for up to 20 markets in one call.\nMissing markets are omitted.","parameters":[{"name":"ids","schema":{"type":"array","items":{"type":"integer","format":"int64"}},"in":"query","description":"Up to 20 market IDs, comma-separated or repeated. A longer list is rejected.","required":true,"deprecated":false,"explode":true},{"name":"metric","schema":{"$ref":"#/components/schemas/Metric"},"in":"query","description":"The metric to query.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/TimeseriesLatestBatchResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/markets/status-logs":{"get":{"tags":["Markets"],"summary":"Get market status logs","description":"Returns the on-chain status transitions (registration, price proposal,\ndispute, pause, resolution) of up to 100 markets in a single call,\neach market's oldest first. Markets that are not listed, or have no\ntransitions yet, are omitted from the response.","parameters":[{"name":"ids","schema":{"type":"array","items":{"type":"integer","format":"int64"}},"in":"query","description":"Market ids (comma-separated or repeated)","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/MarketStatusLogsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/series":{"get":{"tags":["Series"],"summary":"Get series","description":"Get every recurring up/down series, active or retired, sorted by slug.\n`marketVariant` keeps the series whose rounds are of that variant, as it\ndoes on `GET /v1/categories`.","parameters":[{"name":"marketVariant","schema":{"$ref":"#/components/schemas/MarketVariant"},"in":"query","description":"Only series whose rounds are of this variant.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/SeriesListResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/series/{slug}":{"get":{"tags":["Series"],"summary":"Get series by slug","description":"Get one recurring up/down series by its slug, e.g. `btc-updown-5m`.","parameters":[{"name":"slug","schema":{"type":"string","maxLength":256},"in":"path","description":"The series' slug, for example `btc-updown-5m`.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/SeriesResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/series/{slug}/rounds":{"get":{"tags":["Series"],"summary":"Get series rounds","description":"Get the rounds of a series, each one a category with its markets.\n\n`ACTIVE`, the default, lists the rounds that have not ended yet in start\norder, so the first is the live round, and the rest are the rounds it\nrolls over to. Rounds are created ahead of time, so one page is enough to\nfollow a series through several rollovers. `ENDED` lists the rounds that\nhave ended, newest first.\n\nPages are cached for a few seconds, so a round can still be listed as\nactive for a moment after its `endsAt`.","parameters":[{"name":"slug","schema":{"type":"string","maxLength":256},"in":"path","description":"The series' slug, for example `btc-updown-5m`.","required":true,"deprecated":false,"explode":true},{"name":"status","schema":{"$ref":"#/components/schemas/RoundStatusFilter"},"in":"query","description":"Which rounds to list, by whether they have ended. Defaults to `ACTIVE`, the rounds\nthat have not ended yet.","required":false,"deprecated":false,"explode":true},{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 100. Defaults to 20. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one. A cursor from a page of\nthe other `status` is rejected.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/CategoriesResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/orders/{hash}":{"get":{"tags":["Orders"],"summary":"Get order by hash","description":"Get the order information for one of your own orders by its hash.\nRequires JWT authentication.","parameters":[{"name":"hash","schema":{"type":"string","maxLength":66},"in":"path","description":"The order's hash, in lowercase hex with the `0x` prefix.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/orders":{"get":{"tags":["Orders"],"summary":"Get orders","description":"Get a list of your own orders with optional filters.\nRequires JWT authentication.","parameters":[{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 150. Defaults to 50. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true},{"name":"status","schema":{"$ref":"#/components/schemas/OrderStatusFilter"},"in":"query","description":"Only orders with this status. Defaults to `OPEN`.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/OrdersResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]},"post":{"tags":["Orders"],"summary":"Create an order","description":"Create a LIMIT or MARKET order for the authenticated user.\nRequires JWT authentication.","requestBody":{"content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/CreateOrderRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/CreateOrderResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/orders/matches":{"get":{"tags":["Orders"],"summary":"Get order match events","description":"Get a paginated list of order match events with optional filtering.\nResults are sorted by executedAt DESC. The executedAfter and\nexecutedBefore filters are unix timestamps in milliseconds and both\nbounds are exclusive. The orderHashes filter accepts up to 25 order\nhashes, comma separated or repeated, and returns the match events in\nwhich any of those orders took part as maker or taker. Hashes that do\nnot belong to any order are ignored. A match event describes a whole\ntransaction, so filtering by a maker order also includes the other\nfills settled in the same transaction.","parameters":[{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 150. Defaults to 50. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string"},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true},{"name":"categoryId","schema":{"type":"string"},"in":"query","description":"Only matches in the category with this slug, which markets return as `categorySlug`.","required":false,"deprecated":false,"explode":true},{"name":"marketId","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only matches in this market.","required":false,"deprecated":false,"explode":true},{"name":"minValueUsdtWei","schema":{"type":"string"},"in":"query","description":"Only matches with at least one fill worth this much or more, in wei, where 1 USDT is\n10^18 units.","required":false,"deprecated":false,"explode":true},{"name":"signerAddress","schema":{"type":"string"},"in":"query","description":"Only matches in which this address was the maker or the taker. For a Predict account,\nuse the account's address.","required":false,"deprecated":false,"explode":true},{"name":"isSignerMaker","schema":{"type":"boolean"},"in":"query","description":"Set to `true` for only the matches where `signerAddress` was the maker, or `false` for\nthose where it was the taker. Requires `signerAddress`.","required":false,"deprecated":false,"explode":true},{"name":"orderHashes","schema":{"type":"array","items":{"type":"string"}},"in":"query","description":"Only matches in which one of these orders was the maker or the taker. Takes up to 25\nhashes, comma-separated or repeated.","required":false,"deprecated":false,"explode":true},{"name":"executedAfter","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only include matches executed strictly after this unix timestamp (milliseconds).","required":false,"deprecated":false,"explode":true},{"name":"executedBefore","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only include matches executed strictly before this unix timestamp (milliseconds).","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/MatchesResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/orders/remove":{"post":{"tags":["Orders"],"summary":"Remove orders","description":"Remove orders from the orderbook for the authenticated signer (max 100).\nThis will not cancel the order on-chain.\nRequires JWT or project authentication.","requestBody":{"content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/RemoveOrdersRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/RemoveOrdersResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/orders/remove-by-hash":{"post":{"tags":["Orders"],"summary":"Remove orders by hash","description":"Remove orders from the orderbook by their hash for the authenticated signer (max 100).\nThis will not cancel the order on-chain.\nRequires JWT or project authentication.","requestBody":{"content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/RemoveOrdersByHashRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/RemoveOrdersResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/account":{"get":{"tags":["Account"],"summary":"Get connected account","description":"Get information for the connected user account. `points` are for\none season, `season` or the current season by default.\nRequires JWT authentication.","parameters":[{"name":"season","schema":{"type":"integer","format":"int32"},"in":"query","description":"The id of the points season to report `points` for, which must exist. Defaults to the\ncurrent season, the latest one to have started.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/account/activity":{"get":{"tags":["Account"],"summary":"Get account activity","description":"Get a paginated list of trading activity including orders, matches,\nconversions, merges, and splits for the authenticated user.\n\nThe `occurredAfter` and `occurredBefore` filters are unix timestamps in\nmilliseconds and both bounds are exclusive: only events that occurred\nstrictly after `occurredAfter` and strictly before `occurredBefore` are\nreturned.\n\nRequires JWT authentication.","parameters":[{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 150. Defaults to 50. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true},{"name":"eventTypes","schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityEventName"}},"in":"query","description":"Filter by event types (comma-separated or repeated)","required":false,"deprecated":false,"explode":true},{"name":"occurredAfter","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only include events that occurred strictly after this unix timestamp (milliseconds)","required":false,"deprecated":false,"explode":true},{"name":"occurredBefore","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only include events that occurred strictly before this unix timestamp (milliseconds)","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ActivityResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/account/points/weekly":{"get":{"tags":["Account"],"summary":"Get weekly points breakdown","description":"Returns the authenticated user's per-week points history for one\nseason, `season` or the current season by default, alongside each\nweek's points budget. Entries are ordered chronologically from week 1\nof the season.\n\nThe current in-progress round is included with `calculated: false`\nuntil it closes.\n\nRequires JWT authentication.","parameters":[{"name":"season","schema":{"type":"integer","format":"int32"},"in":"query","description":"The id of the points season to list the weeks of, which must exist. Defaults to the\ncurrent season, the latest one to have started.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/WeeklyPointsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/account/{address}":{"get":{"tags":["Account"],"summary":"Get account by address","description":"Get the public profile of any wallet address: its display name, its\nprofile image once it has passed moderation, and its leaderboard\npoints and rank. A wallet that never set up a profile has a `null`\nname. An address with no wallet returns 404.","parameters":[{"name":"address","schema":{"type":"string"},"in":"path","description":"The wallet's address. For a Predict account, use the account's address.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/PublicAccountResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/account/{address}/activity":{"get":{"tags":["Account"],"summary":"Get account activity by address","description":"Get a paginated list of the conversions, merges, splits, redemptions\nand refunds of any wallet address. Order events are not included. The\nfills of an address are available from `GET /v1/orders/matches` with\n`signerAddress`. An address with no account returns an empty list.\n\nThe `occurredAfter` and `occurredBefore` filters are unix timestamps in\nmilliseconds and both bounds are exclusive: only events that occurred\nstrictly after `occurredAfter` and strictly before `occurredBefore` are\nreturned.","parameters":[{"name":"address","schema":{"type":"string"},"in":"path","description":"The wallet's address. For a Predict account, use the account's address.","required":true,"deprecated":false,"explode":true},{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 150. Defaults to 50. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true},{"name":"eventTypes","schema":{"type":"array","items":{"$ref":"#/components/schemas/PublicActivityEventName"}},"in":"query","description":"Filter by event types (comma-separated or repeated)","required":false,"deprecated":false,"explode":true},{"name":"occurredAfter","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only include events that occurred strictly after this unix timestamp (milliseconds)","required":false,"deprecated":false,"explode":true},{"name":"occurredBefore","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only include events that occurred strictly before this unix timestamp (milliseconds)","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ActivityResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/account/{address}/pnl":{"get":{"tags":["Account"],"summary":"Get PnL history by address","description":"Cumulative profit and loss in USD for any wallet, the series the\npredict.fun profile chart shows. `period` picks the window and with it\nthe spacing: hourly points for `1d`, daily for `7d` and `30d`, and the\nwhole history for `all` (the default). The latest point is the current\nPnL.\n\nThe whole series comes back in one response, so there is no cursor.\nResults are cached for up to 30 seconds, so polling faster than that\nreturns the same series. An address with no account returns an empty\nseries.","parameters":[{"name":"address","schema":{"type":"string"},"in":"path","description":"The wallet's address. For a Predict account, use the account's address.","required":true,"deprecated":false,"explode":true},{"name":"period","schema":{"$ref":"#/components/schemas/PnlPeriod"},"in":"query","description":"Window of history to return. Defaults to `all`.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/WalletPnlResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/account/referral":{"post":{"tags":["Account"],"summary":"Set a referral","description":"Set a referral code if not already set.\nRequires JWT or project authentication. Project auth requires an\nEIP-712 signature in the `x-signature` header.","requestBody":{"content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/SetReferralRequest"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/SetReferralResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/maker-rebates":{"get":{"tags":["Fee Events"],"summary":"Get maker rebate events","description":"Returns paginated on-chain maker rebate earnings for the authenticated wallet,\nnewest first.\n\nThe `occurred_after` and `occurred_before` filters are unix timestamps in\nmilliseconds and both bounds are exclusive: only events that occurred\nstrictly after `occurred_after` and strictly before `occurred_before` are\nreturned. Neither bound is carried in the pagination cursor, so send the\nsame filters again when requesting the next page.","parameters":[{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 150. Defaults to 50. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true},{"name":"fee_in_collateral","schema":{"type":"boolean"},"in":"query","description":"Set to `true` for the amounts paid in USDT, or `false` for those paid in outcome\ntokens.","required":true,"deprecated":false,"explode":true},{"name":"occurred_after","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only include events that occurred strictly after this unix timestamp (milliseconds)","required":false,"deprecated":false,"explode":true},{"name":"occurred_before","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only include events that occurred strictly before this unix timestamp (milliseconds)","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/FeeEventsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/referral-fees":{"get":{"tags":["Fee Events"],"summary":"Get referral fee events","description":"Returns paginated on-chain referral fee earnings for the authenticated wallet,\nnewest first.\n\nThe `occurred_after` and `occurred_before` filters are unix timestamps in\nmilliseconds and both bounds are exclusive: only events that occurred\nstrictly after `occurred_after` and strictly before `occurred_before` are\nreturned. Neither bound is carried in the pagination cursor, so send the\nsame filters again when requesting the next page.","parameters":[{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 150. Defaults to 50. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true},{"name":"fee_in_collateral","schema":{"type":"boolean"},"in":"query","description":"Set to `true` for the amounts paid in USDT, or `false` for those paid in outcome\ntokens.","required":true,"deprecated":false,"explode":true},{"name":"occurred_after","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only include events that occurred strictly after this unix timestamp (milliseconds)","required":false,"deprecated":false,"explode":true},{"name":"occurred_before","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only include events that occurred strictly before this unix timestamp (milliseconds)","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/FeeEventsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/positions":{"get":{"tags":["Positions"],"summary":"Get positions","description":"Get data about your positions.\nRequires JWT authentication.","parameters":[{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 100. Defaults to 20. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true},{"name":"marketId","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only positions in this market. Cannot be combined with `marketIds`.","required":false,"deprecated":false,"explode":true},{"name":"marketIds","schema":{"type":"array","items":{"type":"integer","format":"int64"}},"in":"query","description":"Only positions in these markets (comma-separated or repeated, up to\n100). Cannot be combined with `marketId`.","required":false,"deprecated":false,"explode":true},{"name":"categoryId","schema":{"type":"string","maxLength":256},"in":"query","description":"Only positions in the category with this slug, which markets return as `categorySlug`.","required":false,"deprecated":false,"explode":true},{"name":"isResolved","schema":{"type":"boolean"},"in":"query","description":"Set to `true` for only positions in resolved markets, or `false` for only those in\nunresolved markets. Both are listed by default.","required":false,"deprecated":false,"explode":true},{"name":"includeLost","schema":{"type":"boolean"},"in":"query","description":"Also list positions in outcomes that settled as losing. Off by\ndefault, since those need no action from the holder.","required":false,"deprecated":false,"explode":true},{"name":"sort","schema":{"$ref":"#/components/schemas/PositionSort"},"in":"query","description":"How to order the positions. Defaults to `EVENT_BLOCK_DESC`, which lists the most\nrecently changed positions first.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/PositionsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/positions/{address}":{"get":{"tags":["Positions"],"summary":"Get positions by address","description":"Get positions for a specific wallet address.","parameters":[{"name":"address","schema":{"type":"string"},"in":"path","description":"The wallet's address. For a Predict account, use the account's address.","required":true,"deprecated":false,"explode":true},{"name":"first","schema":{"type":"integer","format":"int32"},"in":"query","description":"Page size, from 1 to 100. Defaults to 20. A value outside that range is clamped.","required":false,"deprecated":false,"explode":true},{"name":"after","schema":{"type":"string","maxLength":1024},"in":"query","description":"The `cursor` from the previous page, to get the next one.","required":false,"deprecated":false,"explode":true},{"name":"marketId","schema":{"type":"integer","format":"int64"},"in":"query","description":"Only positions in this market. Cannot be combined with `marketIds`.","required":false,"deprecated":false,"explode":true},{"name":"marketIds","schema":{"type":"array","items":{"type":"integer","format":"int64"}},"in":"query","description":"Only positions in these markets (comma-separated or repeated, up to\n100). Cannot be combined with `marketId`.","required":false,"deprecated":false,"explode":true},{"name":"categoryId","schema":{"type":"string","maxLength":256},"in":"query","description":"Only positions in the category with this slug, which markets return as `categorySlug`.","required":false,"deprecated":false,"explode":true},{"name":"isResolved","schema":{"type":"boolean"},"in":"query","description":"Set to `true` for only positions in resolved markets, or `false` for only those in\nunresolved markets. Both are listed by default.","required":false,"deprecated":false,"explode":true},{"name":"includeLost","schema":{"type":"boolean"},"in":"query","description":"Also list positions in outcomes that settled as losing. Off by\ndefault, since those need no action from the holder.","required":false,"deprecated":false,"explode":true},{"name":"sort","schema":{"$ref":"#/components/schemas/PositionSort"},"in":"query","description":"How to order the positions. Defaults to `EVENT_BLOCK_DESC`, which lists the most\nrecently changed positions first.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/PositionsResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/activities/{activityCode}/join":{"post":{"tags":["Activity"],"summary":"Join an activity","description":"Registers the signed-in wallet for the activity named by `activityCode`, for example\n`lol-worlds`.","parameters":[{"name":"activityCode","schema":{"type":"string"},"in":"path","description":"The activity's code, for example `lol-worlds`.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ActivityRegistrationResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ActivityErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/activities/{activityCode}/me/registration":{"get":{"tags":["Activity"],"summary":"Get activity registration","description":"The signed-in wallet's registration for the activity named by `activityCode`, for\nexample `lol-worlds`.","parameters":[{"name":"activityCode","schema":{"type":"string"},"in":"path","description":"The activity's code, for example `lol-worlds`.","required":true,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ActivityRegistrationResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ActivityErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[],"BearerAuth":[]}]}},"/search":{"get":{"tags":["Search"],"summary":"Search categories and markets","description":"Full-text search across categories and markets.\nReturns separate arrays for each type, sorted by relevance.","parameters":[{"name":"query","schema":{"type":"string","maxLength":256},"in":"query","description":"The text to search for. It is matched against titles, market questions and tag\nnames.","required":true,"deprecated":false,"explode":true},{"name":"includeResolved","schema":{"type":"boolean"},"in":"query","description":"Whether to also return resolved categories and the markets in them. Defaults to\n`false`.","required":false,"deprecated":false,"explode":true},{"name":"limit","schema":{"type":"integer","format":"uint64"},"in":"query","description":"Most results of each type to return, from 1 to 50. Defaults to 10.","required":false,"deprecated":false,"explode":true},{"name":"includeStats","schema":{"type":"boolean"},"in":"query","description":"Whether to fill in `stats` with volume and liquidity figures. Defaults to `false`,\nwhich leaves `stats` null.","required":false,"deprecated":false,"explode":true}],"responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/languages":{"get":{"tags":["Translations"],"summary":"Get available languages","description":"Get all enabled translation languages. Use the returned codes with the\n`/categories/:slug/translations` endpoint.","responses":{"200":{"description":"","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/LanguagesResponse"}}}},"400":{"description":"Bad request (400) - Invalid input or parameters","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized (401) - Missing or invalid authentication","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden (403) - Valid auth but insufficient permissions","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found (404) - Resource doesn't exist","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Gone (410) - Resource has been permanently removed","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests (429) - Rate limit exceeded","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error (500) - Unexpected error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad gateway (502) - Upstream API error","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service unavailable (503) - Upstream API unreachable","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"ApiKeyAuth":[]}]}}},"components":{"schemas":{"AccountData":{"type":"object","title":"AccountData","description":"Account data","required":["name","address","referral","points"],"properties":{"name":{"type":"string"},"address":{"type":"string"},"imageUrl":{"type":"string"},"referral":{"$ref":"#/components/schemas/ReferralInfo"},"points":{"$ref":"#/components/schemas/PointsInfo"}}},"AccountResponse":{"type":"object","title":"AccountResponse","description":"Response for GET /v1/account","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/AccountData"}}},"ActivityErrorDetails":{"type":"object","title":"ActivityErrorDetails","required":["reason","retryable","violations"],"properties":{"reason":{"type":"string"},"retryable":{"type":"boolean"},"violations":{"type":"array","items":{"$ref":"#/components/schemas/ActivityViolation"}}}},"ActivityErrorResponse":{"type":"object","title":"ActivityErrorResponse","description":"Activity-specific extension of the standard 400 error response.","required":["success","code","error","message","timestamp"],"properties":{"success":{"type":"boolean","description":"Always `false` for errors"},"code":{"type":"integer","format":"uint16","description":"HTTP status code"},"error":{"description":"Stable machine-readable error code for client-side matching.\n\nFor 400 responses this is the granular bad-request code (e.g.\n`create_order_insufficient_collateral_allowance`). For all other\nresponses it is the HTTP-status-derived code (e.g. `unauthorized`).","allOf":[{"$ref":"#/components/schemas/ErrorCode"},{"description":"Stable machine-readable error code for client-side matching.\n\nFor 400 responses this is the granular bad-request code (e.g.\n`create_order_insufficient_collateral_allowance`). For all other\nresponses it is the HTTP-status-derived code (e.g. `unauthorized`)."}]},"message":{"type":"string","description":"Human-readable error message"},"timestamp":{"type":"string","description":"RFC 3339 timestamp of when the error occurred"},"trace":{"type":"string","description":"Trace ID for correlating with server logs"},"details":{"$ref":"#/components/schemas/ActivityErrorDetails"}}},"ActivityEvent":{"type":"object","title":"ActivityEvent","description":"Activity event data","required":["name","createdAt","market"],"properties":{"name":{"$ref":"#/components/schemas/ActivityEventName"},"createdAt":{"type":"string"},"transactionHash":{"type":"string"},"amountFilled":{"type":"string"},"priceExecuted":{"type":"string"},"order":{"$ref":"#/components/schemas/ActivityOrderData"},"market":{"$ref":"#/components/schemas/Market"},"outcome":{"$ref":"#/components/schemas/Outcome"}}},"ActivityEventName":{"type":"string","description":"Activity event name","enum":["CREATE","MATCH_SUCCESS","CANCEL","INVALIDATE","NO_MARKET_MATCH","EXPIRED","REJECTED_POST_ONLY","CONVERT","MERGE","SPLIT","REDEEM","REFUND"]},"ActivityOrderData":{"type":"object","title":"ActivityOrderData","description":"Order data in activity events","required":["quoteType","amount","price"],"properties":{"quoteType":{"$ref":"#/components/schemas/QuoteType"},"amount":{"type":"string"},"price":{"type":"string"},"fee":{"description":"The fee for the order, only present for MATCH_SUCCESS events","allOf":[{"$ref":"#/components/schemas/Fee"},{"description":"The fee for the order, only present for MATCH_SUCCESS events"}]}}},"ActivityRegistration":{"type":"object","title":"ActivityRegistration","required":["joined"],"properties":{"joined":{"type":"boolean"},"joinedAt":{"type":"string"}}},"ActivityRegistrationResponse":{"type":"object","title":"ActivityRegistrationResponse","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/ActivityRegistration"}}},"ActivityResponse":{"type":"object","title":"ActivityResponse","description":"Response for GET /v1/account/activity and GET /v1/account/{address}/activity","required":["success","data"],"properties":{"success":{"type":"boolean"},"cursor":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}}}},"ActivityViolation":{"type":"object","title":"ActivityViolation","required":["inputIndex","questionId","optionId","code","retryable","message"],"properties":{"inputIndex":{"type":"integer","format":"uint64"},"questionId":{"type":"string"},"optionId":{"type":"string"},"code":{"type":"string"},"retryable":{"type":"boolean"},"message":{"type":"string"}}},"AuthMessageData":{"type":"object","title":"AuthMessageData","description":"Authentication message data","required":["message"],"properties":{"message":{"type":"string","description":"The message to sign with your wallet"}}},"AuthMessageResponse":{"type":"object","title":"AuthMessageResponse","description":"Response for GET /v1/auth/message","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/AuthMessageData"}}},"AuthTokenData":{"type":"object","title":"AuthTokenData","description":"Authentication token data","required":["token"],"properties":{"token":{"type":"string","description":"JWT token for authenticated requests"}}},"AuthTokenResponse":{"type":"object","title":"AuthTokenResponse","description":"Response for POST /v1/auth","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/AuthTokenData"}}},"CategoriesResponse":{"type":"object","title":"CategoriesResponse","description":"Response for GET /v1/categories","required":["success","data"],"properties":{"success":{"type":"boolean"},"cursor":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/CategoryWithStats"}}}},"CategoryResponse":{"type":"object","title":"CategoryResponse","description":"Response for GET /v1/categories/:slug","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/CategoryWithStats"}}},"CategorySort":{"type":"string","description":"Category sort options","enum":["POPULAR","VOLUME","VOLUME_24H_DESC","VOLUME_ALL_DESC","PUBLISHED_AT_ASC","PUBLISHED_AT_DESC"]},"CategoryStatsData":{"type":"object","title":"CategoryStatsData","description":"Category statistics data","required":["totalLiquidityUsd","volumeTotalUsd","volume24hUsd","holdersCount"],"properties":{"totalLiquidityUsd":{"type":"number","format":"double"},"volumeTotalUsd":{"type":"number","format":"double"},"volume24hUsd":{"type":"number","format":"double"},"holdersCount":{"type":"integer","format":"int64"}}},"CategoryStatsResponse":{"type":"object","title":"CategoryStatsResponse","description":"Response for GET /v1/categories/:id/stats","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/CategoryStatsData"}}},"CategoryStatus":{"type":"string","description":"Category status","enum":["OPEN","RESOLVED","REMOVED"]},"CategoryStatusFilter":{"type":"string","description":"Category status filter for queries","enum":["OPEN","ACTIVE","RESOLVED","REMOVED"]},"CategoryTranslationData":{"type":"object","title":"CategoryTranslationData","description":"All translated content for one language.","required":["category","markets"],"properties":{"category":{"$ref":"#/components/schemas/CategoryTranslationFields"},"markets":{"type":"array","items":{"$ref":"#/components/schemas/MarketTranslationData"}}}},"CategoryTranslationFields":{"type":"object","title":"CategoryTranslationFields","description":"Translated fields for the category itself.","properties":{"title":{"type":"string"},"shortTitle":{"type":"string"}}},"CategoryTranslationsResponse":{"type":"object","title":"CategoryTranslationsResponse","description":"Response for GET /v1/categories/:slug/translations","required":["translations"],"properties":{"translations":{"type":"object","description":"Map from language code (e.g. `\"zh-CN\"`) to its translations.","additionalProperties":{"$ref":"#/components/schemas/CategoryTranslationData"}}}},"CategoryVariantDetails":{"type":"object","title":"CategoryVariantDetails","description":"What a category is about, one key per kind of category.\n\nSee [`MarketVariantDetails`].","properties":{"sports":{"description":"Set for a sports category.","allOf":[{"$ref":"#/components/schemas/SportsCategoryDetails"},{"description":"Set for a sports category."}]},"crypto":{"description":"Set for a crypto up down category.\n\nSuperseded by `up_down`, which says the same thing for every asset\nclass. Both are populated for crypto so existing readers keep working.","allOf":[{"$ref":"#/components/schemas/UpDownCategoryDetails"},{"description":"Set for a crypto up down category.\n\nSuperseded by `up_down`, which says the same thing for every asset\nclass. Both are populated for crypto so existing readers keep working."}]},"upDown":{"description":"Set for an up down price category, whatever the asset class.","allOf":[{"$ref":"#/components/schemas/UpDownCategoryDetails"},{"description":"Set for an up down price category, whatever the asset class."}]},"tweet":{"description":"Set for a tweet count category.","allOf":[{"$ref":"#/components/schemas/TweetCategoryDetails"},{"description":"Set for a tweet count category."}]}}},"CategoryWithStats":{"type":"object","title":"CategoryWithStats","description":"Category data with optional inline statistics.","required":["id","slug","title","description","imageUrl","isNegRisk","protocol","isYieldBearing","marketVariant","createdAt","publishedAt","markets","startsAt","status","isVisible","resolutionProvider","tags"],"properties":{"id":{"type":"integer","format":"int64"},"slug":{"type":"string"},"title":{"type":"string"},"shortTitle":{"type":"string","description":"Short, human-readable label, e.g. `\"BTC Up or Down 15m\"`. `null` when not available."},"seriesSlug":{"type":"string","description":"Slug of the recurring series this category is a round of, e.g.\n`\"btc-updown-5m\"`. Absent when it is not a round of one. The series and\nits next rounds are at `GET /v1/series/{slug}`."},"description":{"type":"string"},"imageUrl":{"type":"string"},"isNegRisk":{"type":"boolean"},"protocol":{"$ref":"#/components/schemas/Protocol"},"isYieldBearing":{"type":"boolean"},"negRiskOnChainId":{"type":"string","description":"On-chain NegRisk market ID as a 32-byte hex string."},"marketVariant":{"$ref":"#/components/schemas/MarketVariant"},"variantData":{"description":"Deprecated in favour of `variantDetails`, which says the same thing\nwithout a type of its own.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/VariantData"},{"description":"Deprecated in favour of `variantDetails`, which says the same thing\nwithout a type of its own.","deprecated":true}]},"variantDetails":{"description":"What this category is about, replacing `variantData`.","allOf":[{"$ref":"#/components/schemas/CategoryVariantDetails"},{"description":"What this category is about, replacing `variantData`."}]},"createdAt":{"type":"string"},"publishedAt":{"type":"string"},"markets":{"type":"array","items":{"$ref":"#/components/schemas/Market"}},"startsAt":{"type":"string"},"endsAt":{"type":"string"},"tradingSession":{"description":"Exchange session containing this Up/Down round's entire `startsAt` to `endsAt` window.\nSession times can differ from the round's times and remain available after closing.\nReturns `null` when no applicable session covers the complete round.\nUse each market's `tradingStatus` for its current trading status.","allOf":[{"$ref":"#/components/schemas/TradingSession"},{"description":"Exchange session containing this Up/Down round's entire `startsAt` to `endsAt` window.\nSession times can differ from the round's times and remain available after closing.\nReturns `null` when no applicable session covers the complete round.\nUse each market's `tradingStatus` for its current trading status."}]},"status":{"$ref":"#/components/schemas/CategoryStatus"},"isVisible":{"type":"boolean"},"resolutionProvider":{"$ref":"#/components/schemas/ResolutionProvider"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}},"teams":{"type":"array","description":"Deprecated in favour of `variantDetails.sports.teams`. The teams\nplaying, where the category is a fixture.","items":{"$ref":"#/components/schemas/Team"},"deprecated":true},"parentSlug":{"type":"string","description":"The slug of the parent category, when this is a prop/child market."},"stats":{"$ref":"#/components/schemas/CategoryStatsData"}}},"ContractOrder":{"type":"object","title":"ContractOrder","description":"Contract order data (the signed order)","required":["salt","maker","signer","taker","tokenId","makerAmount","takerAmount","expiration","nonce","feeRateBps","side","signatureType"],"properties":{"hash":{"type":"string","maxLength":66},"salt":{"type":"string"},"maker":{"type":"string"},"signer":{"type":"string"},"taker":{"type":"string"},"tokenId":{"type":"string"},"makerAmount":{"type":"string"},"takerAmount":{"type":"string"},"expiration":{"type":"integer","format":"int64","description":"Unix timestamp in seconds"},"nonce":{"type":"string"},"feeRateBps":{"type":"string"},"side":{"type":"integer","format":"int32"},"signatureType":{"type":"integer","format":"int32"},"signature":{"type":"string","description":"Capped at `order_core::order_create::validate::MAX_SIGNATURE_CHARS`.\nThe attribute takes only a literal, so a test pins the two together.","maxLength":1026}}},"CreateOrderData":{"type":"object","title":"CreateOrderData","description":"Create order request data","required":["pricePerShare","strategy","order"],"properties":{"pricePerShare":{"type":"string"},"strategy":{"$ref":"#/components/schemas/OrderStrategy"},"slippageBps":{"type":"string"},"isFillOrKill":{"type":"boolean"},"isPostOnly":{"type":"boolean"},"reservedBalancePolicy":{"$ref":"#/components/schemas/ReservedBalancePolicy"},"isMinAmountOut":{"type":"boolean","description":"Signals that `takerAmount` is deflated and represents a signed minimum,\nnot the actual fill target. When `true` the backend derives the actual\nshare quantity from the expected cost:\n`amount = makerAmount * 1e18 / priceInCurrency`."},"selfTradePrevention":{"$ref":"#/components/schemas/SelfTradePreventionStrategy"},"order":{"$ref":"#/components/schemas/ContractOrder"}}},"CreateOrderRequest":{"type":"object","title":"CreateOrderRequest","description":"Create order request","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/CreateOrderData"}}},"CreateOrderResponse":{"type":"object","title":"CreateOrderResponse","description":"Response for POST /v1/orders","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/CreateOrderResponseData"}}},"CreateOrderResponseData":{"type":"object","title":"CreateOrderResponseData","description":"Create order response data","required":["code","orderId","orderHash"],"properties":{"code":{"type":"string"},"orderId":{"type":"string"},"orderHash":{"type":"string"},"removalLockedUntil":{"type":"string","description":"RFC 3339 timestamp before which this order cannot be removed."}}},"CryptoUpDownVariantData":{"type":"object","title":"CryptoUpDownVariantData","description":"Variant data for CRYPTO_UP_DOWN markets","required":["priceFeedProvider"],"properties":{"priceFeedProvider":{"$ref":"#/components/schemas/PriceFeedProvider"},"startPrice":{"type":"number","format":"double","description":"Starting price, null before market start"},"endPrice":{"type":"number","format":"double","description":"Ending price from Pyth oracle, null if not yet resolved"},"priceFeedId":{"type":"string","description":"Pyth oracle price feed identifier"},"priceFeedSymbol":{"type":"string","description":"Price feed symbol (e.g. \"BTCUSDT\" for Binance, \"BTC_USD\" for Pyth)"}}},"ErrorCode":{"type":"string","description":"Machine-readable error codes for all API error responses.","enum":["unauthorized","forbidden","not_found","gone","too_many_requests","internal_server_error","bad_gateway","service_unavailable","bad_request","activity_invalid_input","activity_lock_rejected","activity_state_conflict","invalid_cursor","token_not_found","create_order_invalid_fee_rate_bps","create_order_invalid_nonce","create_order_invalid_salt","create_order_invalid_slippage_bps","create_order_invalid_signer_address","create_order_invalid_token_id","create_order_invalid_signature_hex","create_order_invalid_expiration_timestamp","create_order_invalid_numeric_value","create_order_invalid_decimal_value","create_order_market_token_not_found","create_order_market_not_trading","create_order_market_orders_disabled","create_order_trading_disabled","create_order_signer_mismatch","create_order_reserved_balance_policy_invalid","create_order_fill_or_kill_not_supported","create_order_post_only_not_supported","create_order_maker_signer_mismatch","create_order_expiry_too_far","create_order_expiry_too_soon","create_order_min_order_value_not_met","create_order_min_order_size_not_met","create_order_limit_amounts_mismatch","create_order_price_precision_too_high","create_order_market_amounts_mismatch","create_order_slippage_non_market","create_order_maker_fee_out_of_range","create_order_taker_fee_out_of_range","create_order_fee_rate_too_low","create_order_price_field_zero","create_order_amount_field_zero","create_order_price_field_precision_invalid","create_order_contract_order_expired","create_order_contract_invalid_signature","create_order_contract_fee_too_high","create_order_contract_invalid_token_id","create_order_contract_order_filled_or_cancelled","create_order_contract_invalid_nonce","create_order_contract_invalid_signature_length","create_order_contract_paused","create_order_exchange_paused","create_order_unsupported_wallet","create_order_hash_mismatch","create_order_duplicate_order","create_order_max_orders_per_market_exceeded","create_order_insufficient_collateral_allowance","create_order_insufficient_collateral_balance","create_order_exchange_not_approved","create_order_neg_risk_adapter_not_approved","create_order_insufficient_shares_balance","create_order_price_out_of_range","blocktrade_duplicate_order","blocktrade_self_fulfil","blocktrade_fulfil_symmetry","blocktrade_complement_not_supported","blocktrade_max_open_orders_exceeded"]},"ErrorResponse":{"type":"object","title":"ErrorResponse","description":"Structured error response body.\n\nEvery error path in the API produces this shape.","required":["success","code","error","message","timestamp"],"properties":{"success":{"type":"boolean","description":"Always `false` for errors"},"code":{"type":"integer","format":"uint16","description":"HTTP status code"},"error":{"description":"Stable machine-readable error code for client-side matching.\n\nFor 400 responses this is the granular bad-request code (e.g.\n`create_order_insufficient_collateral_allowance`). For all other\nresponses it is the HTTP-status-derived code (e.g. `unauthorized`).","allOf":[{"$ref":"#/components/schemas/ErrorCode"},{"description":"Stable machine-readable error code for client-side matching.\n\nFor 400 responses this is the granular bad-request code (e.g.\n`create_order_insufficient_collateral_allowance`). For all other\nresponses it is the HTTP-status-derived code (e.g. `unauthorized`)."}]},"message":{"type":"string","description":"Human-readable error message"},"timestamp":{"type":"string","description":"RFC 3339 timestamp of when the error occurred"},"trace":{"type":"string","description":"Trace ID for correlating with server logs"}},"examples":[{"code":500,"error":"internal_server_error","message":"Internal server error","success":false,"timestamp":"2026-01-01T00:00:00.000000Z","trace":null}]},"EsportsVariantData":{"type":"object","title":"EsportsVariantData","description":"Variant data for esports match categories sourced from Grid.gg.","required":["provider","teams"],"properties":{"provider":{"$ref":"#/components/schemas/SportsDataProvider"},"providerEventId":{"type":"string","description":"Null when the category has no linked series yet."},"teams":{"type":"array","items":{"$ref":"#/components/schemas/SportsEventTeam"}}}},"Fee":{"type":"object","title":"Fee","description":"Fee information","required":["amount","type"],"properties":{"amount":{"type":"string","description":"The fee amount in wei"},"type":{"description":"The fee side, either COLLATERAL (e.g. USDT) or SHARES","allOf":[{"$ref":"#/components/schemas/FeeType"},{"description":"The fee side, either COLLATERAL (e.g. USDT) or SHARES"}]}}},"FeeEventData":{"type":"object","title":"FeeEventData","description":"A single on-chain fee distribution event (referral fee or maker rebate).","required":["transactionHash","createdAt","takerFeeTokenId","amount","price"],"properties":{"transactionHash":{"type":"string"},"createdAt":{"type":"string"},"takerFeeTokenId":{"type":"string"},"amount":{"type":"string"},"marketQuestion":{"type":"string"},"marketOutcomeName":{"type":"string"},"price":{"type":"string"}}},"FeeEventsResponse":{"type":"object","title":"FeeEventsResponse","description":"Paginated fee event response.","required":["success","data"],"properties":{"success":{"type":"boolean"},"cursor":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/FeeEventData"}}}},"FeeType":{"type":"string","description":"Fee type","enum":["COLLATERAL","SHARES"]},"Language":{"type":"object","title":"Language","required":["code","name"],"properties":{"code":{"type":"string"},"name":{"type":"string"}}},"LanguagesResponse":{"type":"object","title":"LanguagesResponse","description":"Response for GET /v1/languages","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Language"}}}},"LastOrderSettled":{"type":"object","title":"LastOrderSettled","description":"Last order settled in orderbook","required":["id","price","kind","marketId","side","outcome"],"properties":{"id":{"type":"string"},"price":{"type":"string"},"kind":{"type":"string"},"marketId":{"type":"integer","format":"int64"},"side":{"$ref":"#/components/schemas/QuoteType"},"outcome":{"$ref":"#/components/schemas/OutcomeSide"}}},"LastSaleData":{"type":"object","title":"LastSaleData","description":"Last sale information","required":["quoteType","outcome","priceInCurrency","strategy"],"properties":{"quoteType":{"$ref":"#/components/schemas/QuoteType"},"outcome":{"$ref":"#/components/schemas/OutcomeSide"},"priceInCurrency":{"type":"string"},"strategy":{"$ref":"#/components/schemas/OrderStrategy"}}},"LastSaleResponse":{"type":"object","title":"LastSaleResponse","description":"Response for GET /v1/markets/:id/last-sale","required":["success"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/LastSaleData"}}},"Market":{"type":"object","title":"Market","description":"Full market data as returned by the API","required":["id","imageUrl","title","question","description","tradingStatus","status","isVisible","isNegRisk","isYieldBearing","feeRateBps","makerFeeBps","oracleQuestionId","conditionId","resolverAddress","outcomes","spreadThreshold","shareThreshold","isBoosted","polymarketConditionIds","categorySlug","createdAt","decimalPrecision","marketVariant","rewards"],"properties":{"id":{"type":"integer","format":"int64"},"imageUrl":{"type":"string"},"title":{"type":"string"},"question":{"type":"string"},"description":{"type":"string"},"tradingStatus":{"$ref":"#/components/schemas/MarketTradingStatus"},"status":{"$ref":"#/components/schemas/MarketStatus"},"isVisible":{"type":"boolean"},"isNegRisk":{"type":"boolean"},"isYieldBearing":{"type":"boolean"},"feeRateBps":{"type":"integer","format":"int32","description":"Taker fee in basis points, charged on each matched trade."},"makerFeeBps":{"type":"integer","format":"int32","description":"Maker fee in basis points. Always `0`: no market charges makers.\n\nDefaults on decode so market entries cached before the field existed\nstill decode rather than reading as misses, and the default is the\nonly value it takes."},"resolution":{"$ref":"#/components/schemas/Outcome"},"oracleQuestionId":{"type":"string"},"conditionId":{"type":"string"},"resolverAddress":{"type":"string"},"outcomes":{"type":"array","items":{"$ref":"#/components/schemas/Outcome"}},"questionIndex":{"type":"integer","format":"int32"},"spreadThreshold":{"type":"number","format":"double"},"shareThreshold":{"type":"integer","format":"int32"},"isBoosted":{"type":"boolean"},"boostStartsAt":{"type":"string"},"boostEndsAt":{"type":"string"},"polymarketConditionIds":{"type":"array","items":{"type":"string"}},"kalshiMarketTicker":{"type":"string"},"categorySlug":{"type":"string"},"seriesSlug":{"type":"string","description":"Slug of the recurring series this market's category is a round of,\ne.g. `\"btc-updown-5m\"`. Absent when it is not a round of one. The\nseries and its next rounds are at `GET /v1/series/{slug}`."},"createdAt":{"type":"string"},"decimalPrecision":{"type":"integer","format":"int32"},"marketVariant":{"$ref":"#/components/schemas/MarketVariant"},"variantData":{"description":"Deprecated in favour of `variantDetails`, which says the same thing\nwithout a type of its own.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/VariantData"},{"description":"Deprecated in favour of `variantDetails`, which says the same thing\nwithout a type of its own.","deprecated":true}]},"variantDetails":{"description":"What this market is about. Absent when the market is about the fixture\nas a whole, whose teams its outcomes name.","allOf":[{"$ref":"#/components/schemas/MarketVariantDetails"},{"description":"What this market is about. Absent when the market is about the fixture\nas a whole, whose teams its outcomes name."}]},"team":{"description":"Deprecated in favour of `variantDetails.sports.team`. Set when this\nmarket as a whole is about a single team.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/Team"},{"description":"Deprecated in favour of `variantDetails.sports.team`. Set when this\nmarket as a whole is about a single team.","deprecated":true}]},"marketType":{"description":"Classification of the individual market's prediction mechanic.\nNull for markets created before this field was introduced.","allOf":[{"$ref":"#/components/schemas/MarketType"},{"description":"Classification of the individual market's prediction mechanic.\nNull for markets created before this field was introduced."}]},"rewards":{"$ref":"#/components/schemas/MarketRewards"}}},"MarketQuote":{"type":"object","title":"MarketQuote","description":"Top of a market's order book: the best price resting on each side.\n\nThis is the lightweight alternative to fetching a whole order book, or to\nreading the quotes that used to be embedded in a market payload. Both sides\ncome from a single reading, so the two ends of a spread are always observed\nat the same instant.\n\nPrices are quoted against the outcome whose `indexSet` is 1, the same\nconvention the order book itself uses. To price the complementary outcome,\nswap the sides and subtract from one: its best bid is `1 - bestAsk.price` and\nits best ask is `1 - bestBid.price`, at the same sizes. Round the result to\nsix decimal places, or binary floating point will hand you values like\n`0.17000000000000004`.\n\nA quote reports the order book as it stands and says nothing about whether\nthe market is still trading. Read the market itself for that, and note that\nan absent quote means only that no book is being maintained.","required":["marketId","updateTimestampMs"],"properties":{"marketId":{"type":"integer","format":"int64"},"updateTimestampMs":{"type":"integer","format":"int64","description":"When this book last changed, in unix milliseconds. Use it to discard a\nquote that arrives out of order."},"bestBid":{"description":"Absent when nobody is bidding.","allOf":[{"$ref":"#/components/schemas/PriceLevel"},{"description":"Absent when nobody is bidding."}]},"bestAsk":{"description":"Absent when nobody is offering.","allOf":[{"$ref":"#/components/schemas/PriceLevel"},{"description":"Absent when nobody is offering."}]}}},"MarketResponse":{"type":"object","title":"MarketResponse","description":"Response for GET /v1/markets/:id","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/MarketWithStats"}}},"MarketRewards":{"type":"object","title":"MarketRewards","description":"Reward schedule for a market.","required":["schedule"],"properties":{"current":{"description":"Active period at request time, or `null` if no rewards are accruing.","allOf":[{"$ref":"#/components/schemas/RewardPeriod"},{"description":"Active period at request time, or `null` if no rewards are accruing."}]},"schedule":{"type":"array","description":"Full schedule of past and future reward periods for this market.","items":{"$ref":"#/components/schemas/RewardPeriod"}}}},"MarketSort":{"type":"string","description":"Market sort options","enum":["CHANCE_24H_CHANGE_ASC","CHANCE_24H_CHANGE_DESC","VOLUME_24H_ASC","VOLUME_24H_DESC","VOLUME_24H_CHANGE_ASC","VOLUME_24H_CHANGE_DESC","VOLUME_TOTAL_ASC","VOLUME_TOTAL_DESC","REWARD_RATE_ASC","REWARD_RATE_DESC"]},"MarketStatsData":{"type":"object","title":"MarketStatsData","description":"Market statistics data","required":["totalLiquidityUsd","liquidity3cAskUsd","volumeTotalUsd","volume24hUsd"],"properties":{"totalLiquidityUsd":{"type":"number","format":"double"},"liquidity3cAskUsd":{"type":"number","format":"double"},"volumeTotalUsd":{"type":"number","format":"double"},"volume24hUsd":{"type":"number","format":"double"}}},"MarketStatsResponse":{"type":"object","title":"MarketStatsResponse","description":"Response for GET /v1/markets/:id/stats","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/MarketStatsData"}}},"MarketStatus":{"type":"string","description":"Market lifecycle state, from registration through resolution.\n\n`Removed` is a synthetic status reported for markets that have been\nwithdrawn, meaning it is not part of the normal lifecycle progression.","enum":["REGISTERED","PRICE_PROPOSED","PRICE_DISPUTED","PAUSED","UNPAUSED","RESOLVED","REMOVED"]},"MarketStatusFilter":{"type":"string","description":"Market status filter for queries","enum":["OPEN","RESOLVED"]},"MarketStatusLog":{"type":"object","title":"MarketStatusLog","description":"One on-chain status transition of a market","required":["status","timestamp","transactionHash","resolutionProvider"],"properties":{"status":{"$ref":"#/components/schemas/MarketStatus"},"timestamp":{"type":"string","description":"ISO 8601 UTC timestamp of the transaction that made the transition."},"transactionHash":{"type":"string"},"logIndex":{"type":"integer","format":"int32","description":"Position of the event within its block. `null` for transitions with no\nblock context."},"proposedOutcomeId":{"type":"integer","format":"int32","description":"The outcome proposed for resolution: 1 and 2 are the outcomes with\nthat `indexSet`, 3 is a draw. Only set on `PRICE_PROPOSED` entries."},"proposedOutcomeLabel":{"type":"string","description":"Name of the proposed outcome, e.g. `\"Yes\"` or `\"Draw\"`. Only set on\n`PRICE_PROPOSED` entries."},"resolutionProvider":{"description":"The oracle that made the transition.","allOf":[{"$ref":"#/components/schemas/ResolutionProvider"},{"description":"The oracle that made the transition."}]}}},"MarketStatusLogs":{"type":"object","title":"MarketStatusLogs","description":"A market's status transitions, oldest first","required":["marketId","logs"],"properties":{"marketId":{"type":"integer","format":"int64"},"logs":{"type":"array","items":{"$ref":"#/components/schemas/MarketStatusLog"}}}},"MarketStatusLogsResponse":{"type":"object","title":"MarketStatusLogsResponse","description":"Response for GET /v1/markets/status-logs","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"$ref":"#/components/schemas/MarketStatusLogs"}}}},"MarketTimeseries":{"type":"object","title":"MarketTimeseries","required":["marketId","series"],"properties":{"marketId":{"type":"integer","format":"int64"},"series":{"type":"array","items":{"$ref":"#/components/schemas/TimeseriesPoint"}}}},"MarketTimeseriesLatest":{"type":"object","title":"MarketTimeseriesLatest","required":["marketId","x","y"],"properties":{"marketId":{"type":"integer","format":"int64"},"x":{"type":"number","format":"double","description":"Unix timestamp (seconds)"},"y":{"type":"number","format":"double","description":"The metric value"}}},"MarketTradingStatus":{"type":"string","description":"Trading status derived from market visibility and deletion state.","enum":["OPEN","MATCHING_NOT_ENABLED","CANCEL_ONLY","CLOSED"]},"MarketTranslationData":{"type":"object","title":"MarketTranslationData","description":"Translated fields for a single market.","required":["id","outcomes"],"properties":{"id":{"type":"integer","format":"int64"},"title":{"type":"string"},"question":{"type":"string"},"description":{"type":"string"},"outcomes":{"type":"array","items":{"$ref":"#/components/schemas/OutcomeTranslation"}}}},"MarketType":{"type":"string","description":"Market type (DB `market.market_type_id` values as repr).\n\nClassifies what kind of prediction an individual market represents,\nindependent of the category it belongs to. Works alongside [`MarketVariant`]:\nthe variant describes how the category container renders; the market type\ndescribes the prediction mechanic of the individual market.","enum":["SPORTS_MONEYLINE","SPORTS_SPREADS","SPORTS_TOTALS","SPORTS_BOTH_TEAMS_TO_SCORE","SPORTS_HALFTIME_RESULT","SPORTS_EXACT_SCORE","SPORTS_FIRST_TO_SCORE","SPORTS_TOTAL_CORNERS","SPORTS_TEAM_TOTAL_CORNERS","SPORTS_CORNERS_ODD_EVEN","SPORTS_PLAYER_GOALS","SPORTS_PLAYER_ASSISTS","SPORTS_PLAYER_GOALS_PLUS_ASSISTS","SPORTS_PLAYER_SHOTS","SPORTS_PLAYER_SHOTS_ON_TARGET","SPORTS_PLAYER_GOALKEEPER_SAVES","SPORTS_TEAM_TO_ADVANCE","SPORTS_EXTRA_TIME","SPORTS_PENALTY_SHOOTOUT","SPORTS_TEAM_TOTALS","SPORTS_CHILD_MONEYLINE","SPORTS_MAP_HANDICAP","SPORTS_BOTH_TEAMS_TO_SCORE_FIRST_HALF","SPORTS_BOTH_TEAMS_TO_SCORE_SECOND_HALF","SPORTS_FIRST_HALF_TOTAL_CORNERS","SPORTS_SECOND_HALF_TOTAL_CORNERS","SPORTS_SECOND_HALF_RESULT","SPORTS_FIRST_CORNER","SPORTS_FIRST_HALF_TOTALS","SPORTS_SECOND_HALF_TOTALS","SPORTS_FIRST_HALF_TEAM_TOTALS","SPORTS_SECOND_HALF_TEAM_TOTALS","SPORTS_FIRST_BLOOD_GAME","SPORTS_KILL_OVER_UNDER_GAME","SPORTS_ROUND_HANDICAP","SPORTS_ROUND_TOTALS","SPORTS_ANYTIME_TOUCHDOWNS","SPORTS_RACE_TO_POINTS","SPORTS_ODD_EVEN"]},"MarketVariant":{"type":"string","description":"Classifies the market template type.\n\nControls the UI layout and trading mechanics of a category. See also\n[`MarketType`] which classifies individual markets within a category.","enum":["DEFAULT","SPORTS_MATCH","CRYPTO_UP_DOWN","TWEET_COUNT","SPORTS_TEAM_MATCH","SPORTS_NBA","SPORTS_FIFA_WORLD_CUP","SPORTS_EXACT_SCORE","SPORTS_HALFTIME_RESULT","SPORTS_PROPS","SPORTS_FIFA_FRIENDLIES","ESPORTS_LOL","ESPORTS_CS2","ESPORTS_DOTA2","SPORTS_FIRST_TO_SCORE","SPORTS_TOTAL_CORNERS","SPORTS_SECOND_HALF_RESULT","UP_DOWN"]},"MarketVariantDetails":{"type":"object","title":"MarketVariantDetails","description":"What a market is about, one key per kind of market.\n\nGrouping by kind rather than discriminating on a type means a kind that\ngains a payload is a new key, and one that loses it is a key removed, with\nnothing to keep in step. A market names the kinds that apply to it, which\ntoday is at most one.\n\nAdd a kind by adding a key. Each is filled independently, so a populator\nsets its own key on the value already there rather than replacing it.","properties":{"sports":{"description":"Set for a market of a sports category.","allOf":[{"$ref":"#/components/schemas/SportsMarketDetails"},{"description":"Set for a market of a sports category."}]}}},"MarketWithStats":{"type":"object","title":"MarketWithStats","description":"Market data with optional inline statistics.","required":["id","imageUrl","title","question","description","tradingStatus","status","isVisible","isNegRisk","isYieldBearing","feeRateBps","makerFeeBps","oracleQuestionId","conditionId","resolverAddress","outcomes","spreadThreshold","shareThreshold","isBoosted","polymarketConditionIds","categorySlug","createdAt","decimalPrecision","marketVariant","rewards"],"properties":{"id":{"type":"integer","format":"int64"},"imageUrl":{"type":"string"},"title":{"type":"string"},"question":{"type":"string"},"description":{"type":"string"},"tradingStatus":{"$ref":"#/components/schemas/MarketTradingStatus"},"status":{"$ref":"#/components/schemas/MarketStatus"},"isVisible":{"type":"boolean"},"isNegRisk":{"type":"boolean"},"isYieldBearing":{"type":"boolean"},"feeRateBps":{"type":"integer","format":"int32","description":"Taker fee in basis points, charged on each matched trade."},"makerFeeBps":{"type":"integer","format":"int32","description":"Maker fee in basis points. Always `0`: no market charges makers.\n\nDefaults on decode so market entries cached before the field existed\nstill decode rather than reading as misses, and the default is the\nonly value it takes."},"resolution":{"$ref":"#/components/schemas/Outcome"},"oracleQuestionId":{"type":"string"},"conditionId":{"type":"string"},"resolverAddress":{"type":"string"},"outcomes":{"type":"array","items":{"$ref":"#/components/schemas/Outcome"}},"questionIndex":{"type":"integer","format":"int32"},"spreadThreshold":{"type":"number","format":"double"},"shareThreshold":{"type":"integer","format":"int32"},"isBoosted":{"type":"boolean"},"boostStartsAt":{"type":"string"},"boostEndsAt":{"type":"string"},"polymarketConditionIds":{"type":"array","items":{"type":"string"}},"kalshiMarketTicker":{"type":"string"},"categorySlug":{"type":"string"},"seriesSlug":{"type":"string","description":"Slug of the recurring series this market's category is a round of,\ne.g. `\"btc-updown-5m\"`. Absent when it is not a round of one. The\nseries and its next rounds are at `GET /v1/series/{slug}`."},"createdAt":{"type":"string"},"decimalPrecision":{"type":"integer","format":"int32"},"marketVariant":{"$ref":"#/components/schemas/MarketVariant"},"variantData":{"description":"Deprecated in favour of `variantDetails`, which says the same thing\nwithout a type of its own.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/VariantData"},{"description":"Deprecated in favour of `variantDetails`, which says the same thing\nwithout a type of its own.","deprecated":true}]},"variantDetails":{"description":"What this market is about. Absent when the market is about the fixture\nas a whole, whose teams its outcomes name.","allOf":[{"$ref":"#/components/schemas/MarketVariantDetails"},{"description":"What this market is about. Absent when the market is about the fixture\nas a whole, whose teams its outcomes name."}]},"team":{"description":"Deprecated in favour of `variantDetails.sports.team`. Set when this\nmarket as a whole is about a single team.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/Team"},{"description":"Deprecated in favour of `variantDetails.sports.team`. Set when this\nmarket as a whole is about a single team.","deprecated":true}]},"marketType":{"description":"Classification of the individual market's prediction mechanic.\nNull for markets created before this field was introduced.","allOf":[{"$ref":"#/components/schemas/MarketType"},{"description":"Classification of the individual market's prediction mechanic.\nNull for markets created before this field was introduced."}]},"rewards":{"$ref":"#/components/schemas/MarketRewards"},"stats":{"$ref":"#/components/schemas/MarketStatsData"}}},"MarketsResponse":{"type":"object","title":"MarketsResponse","description":"Response for GET /v1/markets","required":["success","data"],"properties":{"success":{"type":"boolean"},"cursor":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/MarketWithStats"}}}},"MatchData":{"type":"object","title":"MatchData","description":"Match event data","required":["market","taker","amountFilled","priceExecuted","makers","transactionHash","executedAt"],"properties":{"market":{"$ref":"#/components/schemas/Market"},"taker":{"$ref":"#/components/schemas/OrderFillData"},"amountFilled":{"type":"string"},"priceExecuted":{"type":"string"},"makers":{"type":"array","items":{"$ref":"#/components/schemas/OrderFillData"}},"transactionHash":{"type":"string"},"settlementId":{"type":"string","description":"Identifier of the off-chain settlement that produced this match."},"executedAt":{"type":"string"}}},"MatchesResponse":{"type":"object","title":"MatchesResponse","description":"Response for GET /v1/orders/matches","required":["success","data"],"properties":{"success":{"type":"boolean"},"cursor":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/MatchData"}}}},"Metric":{"type":"string","description":"The metric to query","enum":["chance"]},"OrderData":{"type":"object","title":"OrderData","description":"Order data as returned by the API","required":["order","id","marketId","currency","amount","amountFilled","isNegRisk","isYieldBearing","strategy","status","rewardEarningRate"],"properties":{"order":{"$ref":"#/components/schemas/ContractOrder"},"id":{"type":"string"},"marketId":{"type":"integer","format":"int64"},"currency":{"type":"string"},"amount":{"type":"string"},"amountFilled":{"type":"string"},"isNegRisk":{"type":"boolean"},"isYieldBearing":{"type":"boolean"},"strategy":{"$ref":"#/components/schemas/OrderStrategy"},"status":{"$ref":"#/components/schemas/OrderStatus"},"rewardEarningRate":{"type":"integer","format":"int32"}}},"OrderFillData":{"type":"object","title":"OrderFillData","description":"Order fill data (for maker/taker in matches)","required":["quoteType","amount","price","outcome","signer","hash","fee"],"properties":{"quoteType":{"$ref":"#/components/schemas/QuoteType"},"amount":{"type":"string"},"price":{"type":"string"},"outcome":{"$ref":"#/components/schemas/Outcome"},"signer":{"type":"string"},"hash":{"type":"string"},"fee":{"$ref":"#/components/schemas/Fee"}}},"OrderResponse":{"type":"object","title":"OrderResponse","description":"Response for GET /v1/orders/:hash","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/OrderData"}}},"OrderStatus":{"type":"string","description":"Order status","enum":["OPEN","FILLED","EXPIRED","CANCELLED","INVALIDATED"]},"OrderStatusFilter":{"type":"string","description":"Order status filter for queries.","enum":["OPEN","FILLED"]},"OrderStrategy":{"type":"string","description":"Order execution strategy.","enum":["MARKET","LIMIT"]},"OrderbookData":{"type":"object","title":"OrderbookData","description":"Orderbook data (single object, not array)","required":["marketId","updateTimestampMs","asks","bids"],"properties":{"marketId":{"type":"integer","format":"int64"},"updateTimestampMs":{"type":"integer","format":"int64"},"lastOrderSettled":{"$ref":"#/components/schemas/LastOrderSettled"},"asks":{"type":"array","description":"Array of [price, size] tuples","items":{"type":"array","items":{"type":"number","format":"double"}}},"bids":{"type":"array","description":"Array of [price, size] tuples","items":{"type":"array","items":{"type":"number","format":"double"}}}}},"OrderbookResponse":{"type":"object","title":"OrderbookResponse","description":"Response for GET /v1/markets/:id/orderbook","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/OrderbookData"}}},"OrderbooksResponse":{"type":"object","title":"OrderbooksResponse","description":"Response for GET /v1/markets/orderbooks","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"$ref":"#/components/schemas/OrderbookData"}}}},"OrdersResponse":{"type":"object","title":"OrdersResponse","description":"Response for GET /v1/orders","required":["success","data"],"properties":{"success":{"type":"boolean"},"cursor":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/OrderData"}}}},"Outcome":{"type":"object","title":"Outcome","description":"Outcome data (from markets, positions, etc.)/// Outcome data (from markets, positions, etc.)","required":["name","indexSet","onChainId"],"properties":{"name":{"type":"string"},"indexSet":{"type":"integer","format":"int32"},"onChainId":{"type":"string","description":"bigint string"},"status":{"$ref":"#/components/schemas/OutcomeStatus"},"bestBid":{"description":"`None` for resolved outcomes or when the side is empty.\n\nDeprecated: subscribe to the WebSocket firehose for live quotes, or poll\n`GET /v1/markets/:id/quote` (or `GET /v1/markets/quotes` for a batch),\nwhich returns the same price levels without the catalogue around them.\nThose routes quote the market once, against the outcome whose `indexSet`\nis 1, so a consumer of the other outcome derives it as described there\nrather than reading it pre-inverted from here.\n\nTop-of-book moves on every trade, and because `Outcome` is embedded in\n`Market` and `Market` in `Category`, these two fields make every market\nlisting and every category page change from one second to the next.\nThat is what caps the shared-cache TTL on those routes at seconds, and\nit is why a majority of their cache entries expire into a full origin\nfetch rather than a revalidation. Nothing else in the catalogue payload\nchanges anywhere near this fast.\n\nStill populated; the attribute is a signal to consumers, not a removal.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/PriceLevel"},{"description":"`None` for resolved outcomes or when the side is empty.\n\nDeprecated: subscribe to the WebSocket firehose for live quotes, or poll\n`GET /v1/markets/:id/quote` (or `GET /v1/markets/quotes` for a batch),\nwhich returns the same price levels without the catalogue around them.\nThose routes quote the market once, against the outcome whose `indexSet`\nis 1, so a consumer of the other outcome derives it as described there\nrather than reading it pre-inverted from here.\n\nTop-of-book moves on every trade, and because `Outcome` is embedded in\n`Market` and `Market` in `Category`, these two fields make every market\nlisting and every category page change from one second to the next.\nThat is what caps the shared-cache TTL on those routes at seconds, and\nit is why a majority of their cache entries expire into a full origin\nfetch rather than a revalidation. Nothing else in the catalogue payload\nchanges anywhere near this fast.\n\nStill populated; the attribute is a signal to consumers, not a removal.","deprecated":true}]},"bestAsk":{"description":"`None` for resolved outcomes or when the side is empty.\n\nDeprecated: see [`Outcome::best_bid`] for what to use instead, and why.\n\nStill populated; the attribute is a signal to consumers, not a removal.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/PriceLevel"},{"description":"`None` for resolved outcomes or when the side is empty.\n\nDeprecated: see [`Outcome::best_bid`] for what to use instead, and why.\n\nStill populated; the attribute is a signal to consumers, not a removal.","deprecated":true}]},"team":{"description":"Deprecated in favour of `variantDetails.sports.team`. Set when this\noutcome resolves to a specific team.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/Team"},{"description":"Deprecated in favour of `variantDetails.sports.team`. Set when this\noutcome resolves to a specific team.","deprecated":true}]},"variantData":{"description":"Deprecated in favour of `variantDetails`, which says the same thing\nwithout a type of its own.","deprecated":true,"allOf":[{"$ref":"#/components/schemas/OutcomeVariantData"},{"description":"Deprecated in favour of `variantDetails`, which says the same thing\nwithout a type of its own.","deprecated":true}]},"variantDetails":{"description":"What this outcome is about. Absent when it is about neither team.","allOf":[{"$ref":"#/components/schemas/OutcomeVariantDetails"},{"description":"What this outcome is about. Absent when it is about neither team."}]}}},"OutcomeSide":{"type":"string","description":"Outcome side in a binary market: yes or no.","enum":["Yes","No"]},"OutcomeStatus":{"type":"string","description":"Resolution status of a market outcome.","enum":["WON","LOST"]},"OutcomeTranslation":{"type":"object","title":"OutcomeTranslation","description":"Translated fields for a single outcome.","required":["index","name"],"properties":{"index":{"type":"integer","format":"int32","description":"Outcome index (matches `Outcome.index_set`)."},"name":{"type":"string"}}},"OutcomeVariantData":{"type":"object","description":"Outcome-level variant data, discriminated by sport type.\n\nDifferent leagues carry different outcome metadata.","oneOf":[{"$ref":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData"},{"$ref":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData"},{"$ref":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData"},{"$ref":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData"},{"$ref":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData"},{"$ref":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData"}],"discriminator":{"propertyName":"type","mapping":{"SPORTS_NBA":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData","SPORTS_FIFA_WORLD_CUP":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData","SPORTS_FIFA_FRIENDLIES":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData","ESPORTS_LOL":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData","ESPORTS_CS2":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData","ESPORTS_DOTA2":"#/components/schemas/OutcomeVariantData_SportsTeamOutcomeData"}}},"OutcomeVariantData_SportsTeamOutcomeData":{"description":"Outcome-level variant data, discriminated by sport type.\n\nDifferent leagues carry different outcome metadata.","allOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["ESPORTS_DOTA2"],"examples":["ESPORTS_DOTA2"]}}},{"$ref":"#/components/schemas/SportsTeamOutcomeData"}]},"OutcomeVariantDetails":{"type":"object","title":"OutcomeVariantDetails","description":"What an outcome is about, one key per kind of market.\n\nSee [`MarketVariantDetails`].","properties":{"sports":{"description":"Set for an outcome that resolves to a team.","allOf":[{"$ref":"#/components/schemas/SportsOutcomeDetails"},{"description":"Set for an outcome that resolves to a team."}]}}},"PnlPeriod":{"type":"string","description":"Window of PnL history to return. Each value is a period the upstream PnL\nhistory service computes natively, so a request maps to exactly one\nupstream call and nothing is trimmed or resampled here.","enum":["1d","7d","30d","all"]},"PnlPoint":{"type":"object","title":"PnlPoint","description":"One point of a wallet's cumulative PnL","required":["x","y"],"properties":{"x":{"type":"integer","format":"int64","description":"Unix timestamp (seconds) at the start of the bucket"},"y":{"type":"number","format":"double","description":"Cumulative PnL in USD as of this bucket"}}},"PointsInfo":{"type":"object","title":"PointsInfo","description":"Points information","required":["total"],"properties":{"total":{"type":"number","format":"double","description":"The user's points total for `season`."},"rank":{"type":"integer","format":"int32","description":"The user's rank within `season`, or null if they have no points\nin it yet."},"season":{"type":"integer","format":"int32","description":"The season these points are for: the one requested, or the current\nseason. Null only before any season exists."}}},"PositionData":{"type":"object","title":"PositionData","description":"Position data","required":["id","market","outcome","amount","valueUsd","averageBuyPriceUsd","pnlUsd"],"properties":{"id":{"type":"string"},"market":{"$ref":"#/components/schemas/Market"},"outcome":{"$ref":"#/components/schemas/Outcome"},"amount":{"type":"string","description":"bigint string"},"valueUsd":{"type":"string"},"averageBuyPriceUsd":{"type":"string"},"pnlUsd":{"type":"string"}}},"PositionSort":{"type":"string","description":"Sort options for position queries.","enum":["AMOUNT_DESC","EVENT_BLOCK_ASC","EVENT_BLOCK_DESC","SHARES_VALUE_DESC","RETURN_DESC"]},"PositionsResponse":{"type":"object","title":"PositionsResponse","description":"Response for GET /v1/positions","required":["success","data"],"properties":{"success":{"type":"boolean"},"cursor":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/PositionData"}}}},"PostAuthRequest":{"type":"object","title":"PostAuthRequest","description":"Request body for POST /v1/auth","required":["signer","signature","message"],"properties":{"signer":{"type":"string","description":"The wallet address (checksummed)"},"signature":{"type":"string","description":"The signature of the message","maxLength":200},"message":{"type":"string","description":"The signed message (from GET /v1/auth/message)","maxLength":2048}}},"PriceFeedProvider":{"type":"string","description":"Provider of the price feed backing a crypto market.","enum":["PYTH","BINANCE","CHAINLINK","ATLAS"]},"PriceLevel":{"type":"object","title":"PriceLevel","required":["price","size"],"properties":{"price":{"type":"number","format":"double","description":"In [0.0, 1.0]."},"size":{"type":"number","format":"double"}}},"Protocol":{"type":"string","description":"The protocol a category's markets trade on. Every market in a category\nshares it, and it decides which exchange contracts a client talks to.","enum":["LEGACY","PREDICT"]},"PublicAccountData":{"type":"object","title":"PublicAccountData","description":"The public profile of a wallet","required":["address","points"],"properties":{"name":{"type":"string","description":"The name the wallet set on its profile. `null` when it has none."},"address":{"type":"string"},"imageUrl":{"type":"string","description":"The profile image, once it has passed moderation."},"points":{"$ref":"#/components/schemas/PointsInfo"}}},"PublicAccountResponse":{"type":"object","title":"PublicAccountResponse","description":"Response for GET /v1/account/{address}","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/PublicAccountData"}}},"PublicActivityEventName":{"type":"string","description":"Activity event name that can be read for any address.\n\nThese are the on-chain position changes of a wallet. Order lifecycle\nevents stay private to the wallet owner.","enum":["CONVERT","MERGE","SPLIT","REDEEM","REFUND"]},"QuoteResponse":{"type":"object","title":"QuoteResponse","description":"Response for GET /v1/markets/:id/quote","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/MarketQuote"}}},"QuoteType":{"type":"string","description":"Quote type: ask or bid.","enum":["Ask","Bid"]},"QuotesResponse":{"type":"object","title":"QuotesResponse","description":"Response for GET /v1/markets/quotes","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"$ref":"#/components/schemas/MarketQuote"}}}},"ReferralInfo":{"type":"object","title":"ReferralInfo","description":"Referral information","required":["status"],"properties":{"code":{"type":"string"},"status":{"$ref":"#/components/schemas/ReferralStatus"}}},"ReferralStatus":{"type":"string","description":"Referral status","enum":["LOCKED","UNLOCKED"]},"RemoveOrdersByHashData":{"type":"object","title":"RemoveOrdersByHashData","description":"Remove orders by hash request data","required":["hashes"],"properties":{"hashes":{"type":"array","description":"An array of order hashes (0x-prefixed 32-byte hex strings, max 100)","items":{"type":"string"},"maxItems":100,"minItems":1}}},"RemoveOrdersByHashRequest":{"type":"object","title":"RemoveOrdersByHashRequest","description":"Remove orders by hash request","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/RemoveOrdersByHashData"}}},"RemoveOrdersData":{"type":"object","title":"RemoveOrdersData","description":"Remove orders request data","required":["ids"],"properties":{"ids":{"type":"array","description":"An array of order IDs (max 100)","items":{"type":"string"},"maxItems":100,"minItems":1}}},"RemoveOrdersRequest":{"type":"object","title":"RemoveOrdersRequest","description":"Remove orders request","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/RemoveOrdersData"}}},"RemoveOrdersResponse":{"type":"object","title":"RemoveOrdersResponse","description":"Response for POST /v1/orders/remove","required":["success","removed","noop","rejected"],"properties":{"success":{"type":"boolean"},"removed":{"type":"array","description":"Orders that were successfully removed","items":{"type":"string"}},"noop":{"type":"array","description":"Orders that were not removed because they were already filled, removed or cancelled","items":{"type":"string"}},"rejected":{"type":"array","description":"Orders whose removal was rejected because they are still within their\nmarket's removal lock window. These may be retried after the order's\nremoval lock expires.","items":{"type":"string"}}}},"ReservedBalancePolicy":{"type":"string","description":"Reserved balance policy","enum":["REJECT_MARKET_ORDER","SKIP_RESERVED_BALANCE_CHECKS"]},"Resolution":{"type":"string","description":"Resolution (bucket size) for timeseries data","enum":["1m","5m","1h","1d","1w","1M"]},"ResolutionProvider":{"type":"string","description":"Resolution provider for a category (maps to `resolution_provider_type` table).","enum":["PREDICT_DOT_FUN","THREE_PO","CHAINLINK","ATLAS"]},"RewardPeriod":{"type":"object","title":"RewardPeriod","description":"A single span during which a market accrues rewards at a fixed hourly rate.","required":["hourlyRate","startsAt","endsAt"],"properties":{"hourlyRate":{"type":"integer","format":"int32","description":"Reward points earned per hour while this period is active."},"startsAt":{"type":"string"},"endsAt":{"type":"string"}}},"RoundStatusFilter":{"type":"string","description":"Which rounds of a series to list, by time rather than by resolution: a\nround that has ended can still be awaiting its outcome, which each round's\nown `status` reports.","enum":["ACTIVE","ENDED"]},"ScoreboardSource":{"type":"string","description":"The source a scoreboard is built on.","enum":["GRID","POLYMARKET","PREDICT_DOT_FUN"]},"SearchData":{"type":"object","title":"SearchData","description":"Search results data","required":["categories","markets"],"properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/CategoryWithStats"}},"markets":{"type":"array","items":{"$ref":"#/components/schemas/MarketWithStats"}}}},"SearchResponse":{"type":"object","title":"SearchResponse","description":"Response for GET /v1/search","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/SearchData"}}},"SelfTradePreventionStrategy":{"type":"string","description":"Self-trade prevention strategy","enum":["CANCEL_MAKER","CANCEL_TAKER","CANCEL_BOTH"]},"Series":{"type":"object","title":"Series","description":"A recurring up/down series: one asset at one cadence, rolling over from one\nround to the next. Each round is a category, listed by\n`GET /v1/series/{slug}/rounds`. A retired series stays listed, with its past\nrounds still readable, and simply has no active rounds.","required":["slug","symbol","marketVariant","intervalSeconds"],"properties":{"slug":{"type":"string","description":"Stable identifier, e.g. `\"btc-updown-5m\"`. A published slug never\nchanges, and every round of the series carries it as `seriesSlug`."},"symbol":{"type":"string","description":"Asset symbol, e.g. `\"BTC\"` or `\"NVDA\"`."},"marketVariant":{"description":"The market variant every round of the series is created with, the same\nvalue each round reports as its own `marketVariant`.","allOf":[{"$ref":"#/components/schemas/MarketVariant"},{"description":"The market variant every round of the series is created with, the same\nvalue each round reports as its own `marketVariant`."}]},"intervalSeconds":{"type":"integer","format":"int32","description":"Nominal seconds between the starts of consecutive rounds. Series that\nfollow a trading calendar skip the hours their market is closed, so read\neach round's own `startsAt` and `endsAt` rather than adding this up."}}},"SeriesListResponse":{"type":"object","title":"SeriesListResponse","description":"Response for GET /v1/series","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Series"}}}},"SeriesResponse":{"type":"object","title":"SeriesResponse","description":"Response for GET /v1/series/{slug}","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/Series"}}},"SetReferralData":{"type":"object","title":"SetReferralData","description":"Set referral data","required":["referralCode"],"properties":{"referralCode":{"type":"string","description":"a string 5 character(s) long","maxLength":5,"minLength":5}}},"SetReferralRequest":{"type":"object","title":"SetReferralRequest","description":"Set referral request","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/SetReferralData"}}},"SetReferralResponse":{"type":"object","title":"SetReferralResponse","description":"Response for POST /v1/account/referral","required":["success"],"properties":{"success":{"type":"boolean"}}},"SportsCategoryDetails":{"type":"object","title":"SportsCategoryDetails","description":"What a sports category is about.","required":["provider","teams"],"properties":{"provider":{"description":"The provider that supplies the fixture.","allOf":[{"$ref":"#/components/schemas/SportsDataProvider"},{"description":"The provider that supplies the fixture."}]},"providerEventId":{"type":"string","description":"The provider's own id for the fixture, where it has one."},"teams":{"type":"array","description":"The two sides of the fixture.","items":{"$ref":"#/components/schemas/SportsEventTeam"}},"scoreboard":{"description":"Absent until a source has reported on the match.","allOf":[{"$ref":"#/components/schemas/SportsScoreboard"},{"description":"Absent until a source has reported on the match."}]}}},"SportsDataProvider":{"type":"string","description":"Sports data provider.","enum":["PREDICT_SPORTS","GRID","POLYMARKET"]},"SportsEventTeam":{"type":"object","title":"SportsEventTeam","description":"A sportsdata provider team as exposed in category variant data.","required":["id"],"properties":{"id":{"type":"integer","format":"int64","description":"Team identifier."},"name":{"type":"string"},"abbreviation":{"type":"string","description":"Team key abbreviation (e.g., \"MIN\", \"SA\"). Null when not available."},"providerTeamId":{"type":"string","description":"The team identifier used by the sportsdata provider. Null when no game is linked."},"isHome":{"type":"boolean","description":"Marks the side the fixture lists as home, which may be a neutral venue. Null when the\nprovider does not say."},"record":{"description":"Omitted when the provider sends none, or sends one whose format is not known.","allOf":[{"$ref":"#/components/schemas/SportsTeamRecord"},{"description":"Omitted when the provider sends none, or sends one whose format is not known."}]},"color":{"type":"string","description":"Team colour as a hex string from the provider. Omitted when the provider does not send\none."}}},"SportsFifaFriendliesVariantData":{"type":"object","title":"SportsFifaFriendliesVariantData","description":"Variant data for SPORTS_FIFA_FRIENDLIES categories (SportsDataIO).","required":["provider","teams"],"properties":{"provider":{"$ref":"#/components/schemas/SportsDataProvider"},"providerEventId":{"type":"string","description":"Null when the category has no linked game yet."},"teams":{"type":"array","items":{"$ref":"#/components/schemas/SportsEventTeam"}}}},"SportsFifaWorldCupVariantData":{"type":"object","title":"SportsFifaWorldCupVariantData","description":"Variant data for SPORTS_FIFA_WORLD_CUP categories (SportsDataIO).","required":["provider","teams"],"properties":{"provider":{"$ref":"#/components/schemas/SportsDataProvider"},"providerEventId":{"type":"string","description":"Null when the category has no linked game yet."},"teams":{"type":"array","items":{"$ref":"#/components/schemas/SportsEventTeam"}}}},"SportsMarketDetails":{"type":"object","title":"SportsMarketDetails","description":"What a market of a sports category is about.","properties":{"provider":{"description":"The provider that links the team. Absent when no team is named.","allOf":[{"$ref":"#/components/schemas/SportsDataProvider"},{"description":"The provider that links the team. Absent when no team is named."}]},"team":{"description":"The team this market is about, when it is about one. .","allOf":[{"$ref":"#/components/schemas/SportsEventTeam"},{"description":"The team this market is about, when it is about one. ."}]},"line":{"type":"number","format":"double","description":"The line this market is about: a total, a spread, or a player count.\n\nTODO which side of a spread the line runs is not stated. It belongs to\nthe market's `team`, so it needs the importer to record the subject:\npolymarket orders a spread's outcomes subject first, and where the feed\ncarries `marketMetadata.opticOddsTeamId` that agrees with it. Until then\nonly the deprecated `variantData.spreadSide` says anything, and only for\nsoccer, where a slug pattern happens to name the side."},"gameNumber":{"type":"integer","format":"int32"}}},"SportsNbaVariantData":{"type":"object","title":"SportsNbaVariantData","description":"Variant data for SPORTS_NBA categories (SportsDataIO).","required":["provider","teams"],"properties":{"provider":{"$ref":"#/components/schemas/SportsDataProvider"},"providerEventId":{"type":"string","description":"Null when the category has no linked game yet."},"teams":{"type":"array","items":{"$ref":"#/components/schemas/SportsEventTeam"}}}},"SportsOutcomeDetails":{"type":"object","title":"SportsOutcomeDetails","description":"What an outcome of a sports market is about.\n\nCarries no type of its own, for the same reason as [`SportsMarketDetails`].","required":["provider","team"],"properties":{"provider":{"description":"The provider that links the team.","allOf":[{"$ref":"#/components/schemas/SportsDataProvider"},{"description":"The provider that links the team."}]},"team":{"description":"The team this outcome resolves to.","allOf":[{"$ref":"#/components/schemas/SportsEventTeam"},{"description":"The team this outcome resolves to."}]}}},"SportsPropsMarketData":{"type":"object","title":"SportsPropsMarketData","description":"Per-market data for `SPORTS_PROPS` prop markets.\n\nFields are market-type-specific: `spreadSide` is set for spread markets,\n`line` is set for totals markets. Both-teams-to-score markets emit no\n`variantData` of this shape.","properties":{"spreadSide":{"description":"Which side of the parent match this spread market is on. Present for spread markets only.","allOf":[{"$ref":"#/components/schemas/TeamSide"},{"description":"Which side of the parent match this spread market is on. Present for spread markets only."}]},"line":{"type":"number","format":"double","description":"The line value for this totals market. Present for totals markets only."}}},"SportsScoreboard":{"type":"object","title":"SportsScoreboard","description":"How a match stands.","required":["source","score","games"],"properties":{"source":{"description":"The source the record is built on.","allOf":[{"$ref":"#/components/schemas/ScoreboardSource"},{"description":"The source the record is built on."}]},"bestOf":{"type":"integer","format":"int32"},"isLive":{"type":"boolean"},"finished":{"type":"boolean"},"currentGame":{"type":"integer","format":"int32","description":"Counted from one."},"period":{"type":"string","description":"As the feed labels it: `1H`, `Q3`, `2/3`."},"clock":{"type":"string","description":"The game clock as the live feed shows it. Its meaning depends on the sport: time left in\nthe period for basketball, time played for soccer."},"score":{"type":"array","description":"Games won in a series, the match score otherwise.","items":{"$ref":"#/components/schemas/SportsTeamScore"}},"games":{"type":"array","items":{"$ref":"#/components/schemas/SportsScoreboardGame"}}}},"SportsScoreboardGame":{"type":"object","title":"SportsScoreboardGame","description":"One game of a best-of series.","required":["gameNumber","isLive","finished","scores"],"properties":{"gameNumber":{"type":"integer","format":"int32","description":"Counted from one."},"isLive":{"type":"boolean"},"finished":{"type":"boolean"},"winnerTeamId":{"type":"integer","format":"int64"},"scores":{"type":"array","description":"Empty when only the winner is known.","items":{"$ref":"#/components/schemas/SportsTeamScore"}}}},"SportsTeamOutcomeData":{"type":"object","title":"SportsTeamOutcomeData","description":"Outcome variant data for sports markets where the outcome maps to a team.","required":["provider","team"],"properties":{"provider":{"$ref":"#/components/schemas/SportsDataProvider"},"team":{"$ref":"#/components/schemas/SportsEventTeam"}}},"SportsTeamRecord":{"type":"object","title":"SportsTeamRecord","description":"A team's win-loss record, in one shape whatever the sport or provider.","required":["wins","losses"],"properties":{"wins":{"type":"integer","format":"int32"},"losses":{"type":"integer","format":"int32"},"draws":{"type":"integer","format":"int32","description":"Ties count as draws. Omitted where the sport's record has no draws, as in basketball."},"overtimeLosses":{"type":"integer","format":"int32","description":"Ice hockey losses after regulation, counted apart from `losses`. Omitted elsewhere."}}},"SportsTeamScore":{"type":"object","title":"SportsTeamScore","description":"One team's count in a series or a game.","required":["teamId","score"],"properties":{"teamId":{"type":"integer","format":"int64","description":"The id the category's `teams` entries carry."},"score":{"type":"integer","format":"int32","description":"Games won, goals, rounds or kills, by what the entry is."}}},"Tag":{"type":"object","title":"Tag","description":"Tag data","required":["id","name"],"properties":{"id":{"type":"string","description":"bigint string"},"name":{"type":"string"},"level":{"type":"integer","format":"int32","description":"Hierarchy level of the tag (1, 2, or 3), or null for flat tags. Tags form a\ntree up to three levels deep, e.g. Sports -> Soccer -> EPL."},"parentId":{"type":"string","description":"Id of the parent tag as a bigint string, or null for root and flat tags.\nTogether with `level` this allows rendering nested tag menus."},"makerRebateBps":{"type":"integer","format":"int32","description":"Maker rebate in basis points for fills on categories carrying this tag,\nor null if no rebate applies."}}},"TagsResponse":{"type":"object","title":"TagsResponse","description":"Response for GET /v1/tags","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}}}},"Team":{"type":"object","title":"Team","description":"Sports team identity.","required":["id","name","abbreviation","league"],"properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"abbreviation":{"type":"string"},"alias":{"type":"string"},"league":{"type":"string"}}},"TeamSide":{"type":"string","description":"Which side of a sports match a team plays on.","enum":["HOME","AWAY"]},"TimeseriesBatchData":{"type":"object","title":"TimeseriesBatchData","description":"`resolution` is shared across all markets in the request.","required":["resolution","markets"],"properties":{"resolution":{"$ref":"#/components/schemas/Resolution"},"markets":{"type":"array","items":{"$ref":"#/components/schemas/MarketTimeseries"}}}},"TimeseriesBatchResponse":{"type":"object","title":"TimeseriesBatchResponse","required":["success","data"],"properties":{"success":{"type":"boolean"},"cursor":{"type":"string"},"data":{"$ref":"#/components/schemas/TimeseriesBatchData"}}},"TimeseriesData":{"type":"object","title":"TimeseriesData","description":"Inner data for the timeseries response","required":["resolution","series"],"properties":{"resolution":{"description":"The resolution of the returned data points","allOf":[{"$ref":"#/components/schemas/Resolution"},{"description":"The resolution of the returned data points"}]},"series":{"type":"array","description":"Data points ordered by time ascending","items":{"$ref":"#/components/schemas/TimeseriesPoint"}}}},"TimeseriesLatestBatchResponse":{"type":"object","title":"TimeseriesLatestBatchResponse","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"$ref":"#/components/schemas/MarketTimeseriesLatest"}}}},"TimeseriesLatestData":{"type":"object","title":"TimeseriesLatestData","description":"Inner data for the latest timeseries response","required":["x","y"],"properties":{"x":{"type":"number","format":"double","description":"Unix timestamp (seconds)"},"y":{"type":"number","format":"double","description":"The metric value"}}},"TimeseriesLatestResponse":{"type":"object","title":"TimeseriesLatestResponse","description":"Response for market timeseries latest","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/TimeseriesLatestData"}}},"TimeseriesPoint":{"type":"object","title":"TimeseriesPoint","description":"A single timeseries data point","required":["x","y"],"properties":{"x":{"type":"number","format":"double","description":"Unix timestamp (seconds)"},"y":{"type":"number","format":"double","description":"The metric value"}}},"TimeseriesResponse":{"type":"object","title":"TimeseriesResponse","description":"Response for market timeseries","required":["success","data"],"properties":{"success":{"type":"boolean"},"cursor":{"type":"string"},"data":{"$ref":"#/components/schemas/TimeseriesData"}}},"TradingSession":{"type":"object","title":"TradingSession","description":"Exchange session during which the settlement price is live, without trading buffers.","required":["opensAt","closesAt"],"properties":{"opensAt":{"type":"string","description":"Session opening time as an ISO 8601 UTC timestamp with millisecond precision."},"closesAt":{"type":"string","description":"Session closing time as an ISO 8601 UTC timestamp with millisecond precision."}}},"TweetCategoryDetails":{"type":"object","title":"TweetCategoryDetails","description":"What a tweet count category is about.","required":["xAccountUsername","tweetCount"],"properties":{"xAccountUsername":{"type":"string","description":"The account whose posts are counted."},"tweetCount":{"type":"integer","format":"int64","description":"Posts counted so far within the category's window."}}},"TweetCountVariantData":{"type":"object","title":"TweetCountVariantData","description":"Variant data for TWEET_COUNT markets","required":["xAccountUsername","tweetCount"],"properties":{"xAccountUsername":{"type":"string","description":"X (Twitter) account username being tracked"},"tweetCount":{"type":"integer","format":"int64","description":"Current count of tweets within the category date range"}}},"UpDownCategoryDetails":{"type":"object","title":"UpDownCategoryDetails","description":"What an up down price category is about, whatever the asset class.","required":["priceFeedProvider"],"properties":{"priceFeedProvider":{"description":"Who publishes the price this category settles against.","allOf":[{"$ref":"#/components/schemas/PriceFeedProvider"},{"description":"Who publishes the price this category settles against."}]},"priceFeedId":{"type":"string","description":"The feed's own identifier, where it has one."},"priceFeedSymbol":{"type":"string","description":"The symbol the feed publishes under, eg. `BTCUSDT` or `SPYUSDT`."},"startPrice":{"type":"number","format":"double","description":"The price at the start of the window, once the window has opened."},"endPrice":{"type":"number","format":"double","description":"The price at the end of the window, once it has closed."}}},"VariantData":{"type":"object","description":"Variant-specific metadata, discriminated by the `type` field.\n\nKnown variant types are deserialized into typed structs. Unknown variant\ntypes are handled gracefully by the [`deserialize_variant_data`] helper\non parent structs so that new upstream types don't break deserialization.","oneOf":[{"$ref":"#/components/schemas/VariantData_CryptoUpDownVariantData"},{"$ref":"#/components/schemas/VariantData_TweetCountVariantData"},{"$ref":"#/components/schemas/VariantData_SportsNbaVariantData"},{"$ref":"#/components/schemas/VariantData_SportsFifaWorldCupVariantData"},{"$ref":"#/components/schemas/VariantData_SportsFifaFriendliesVariantData"},{"$ref":"#/components/schemas/VariantData_SportsPropsMarketData"},{"$ref":"#/components/schemas/VariantData_EsportsVariantData"},{"$ref":"#/components/schemas/VariantData_EsportsVariantData"},{"$ref":"#/components/schemas/VariantData_EsportsVariantData"}],"discriminator":{"propertyName":"type","mapping":{"CRYPTO_UP_DOWN":"#/components/schemas/VariantData_CryptoUpDownVariantData","TWEET_COUNT":"#/components/schemas/VariantData_TweetCountVariantData","SPORTS_NBA":"#/components/schemas/VariantData_SportsNbaVariantData","SPORTS_FIFA_WORLD_CUP":"#/components/schemas/VariantData_SportsFifaWorldCupVariantData","SPORTS_FIFA_FRIENDLIES":"#/components/schemas/VariantData_SportsFifaFriendliesVariantData","SPORTS_PROPS":"#/components/schemas/VariantData_SportsPropsMarketData","ESPORTS_LOL":"#/components/schemas/VariantData_EsportsVariantData","ESPORTS_CS2":"#/components/schemas/VariantData_EsportsVariantData","ESPORTS_DOTA2":"#/components/schemas/VariantData_EsportsVariantData"}}},"VariantData_CryptoUpDownVariantData":{"description":"Variant-specific metadata, discriminated by the `type` field.\n\nKnown variant types are deserialized into typed structs. Unknown variant\ntypes are handled gracefully by the [`deserialize_variant_data`] helper\non parent structs so that new upstream types don't break deserialization.","allOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["CRYPTO_UP_DOWN"],"examples":["CRYPTO_UP_DOWN"]}}},{"$ref":"#/components/schemas/CryptoUpDownVariantData"}]},"VariantData_EsportsVariantData":{"description":"Variant-specific metadata, discriminated by the `type` field.\n\nKnown variant types are deserialized into typed structs. Unknown variant\ntypes are handled gracefully by the [`deserialize_variant_data`] helper\non parent structs so that new upstream types don't break deserialization.","allOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["ESPORTS_DOTA2"],"examples":["ESPORTS_DOTA2"]}}},{"$ref":"#/components/schemas/EsportsVariantData"}]},"VariantData_SportsFifaFriendliesVariantData":{"description":"Variant-specific metadata, discriminated by the `type` field.\n\nKnown variant types are deserialized into typed structs. Unknown variant\ntypes are handled gracefully by the [`deserialize_variant_data`] helper\non parent structs so that new upstream types don't break deserialization.","allOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["SPORTS_FIFA_FRIENDLIES"],"examples":["SPORTS_FIFA_FRIENDLIES"]}}},{"$ref":"#/components/schemas/SportsFifaFriendliesVariantData"}]},"VariantData_SportsFifaWorldCupVariantData":{"description":"Variant-specific metadata, discriminated by the `type` field.\n\nKnown variant types are deserialized into typed structs. Unknown variant\ntypes are handled gracefully by the [`deserialize_variant_data`] helper\non parent structs so that new upstream types don't break deserialization.","allOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["SPORTS_FIFA_WORLD_CUP"],"examples":["SPORTS_FIFA_WORLD_CUP"]}}},{"$ref":"#/components/schemas/SportsFifaWorldCupVariantData"}]},"VariantData_SportsNbaVariantData":{"description":"Variant-specific metadata, discriminated by the `type` field.\n\nKnown variant types are deserialized into typed structs. Unknown variant\ntypes are handled gracefully by the [`deserialize_variant_data`] helper\non parent structs so that new upstream types don't break deserialization.","allOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["SPORTS_NBA"],"examples":["SPORTS_NBA"]}}},{"$ref":"#/components/schemas/SportsNbaVariantData"}]},"VariantData_SportsPropsMarketData":{"description":"Variant-specific metadata, discriminated by the `type` field.\n\nKnown variant types are deserialized into typed structs. Unknown variant\ntypes are handled gracefully by the [`deserialize_variant_data`] helper\non parent structs so that new upstream types don't break deserialization.","allOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["SPORTS_PROPS"],"examples":["SPORTS_PROPS"]}}},{"$ref":"#/components/schemas/SportsPropsMarketData"}]},"VariantData_TweetCountVariantData":{"description":"Variant-specific metadata, discriminated by the `type` field.\n\nKnown variant types are deserialized into typed structs. Unknown variant\ntypes are handled gracefully by the [`deserialize_variant_data`] helper\non parent structs so that new upstream types don't break deserialization.","allOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["TWEET_COUNT"],"examples":["TWEET_COUNT"]}}},{"$ref":"#/components/schemas/TweetCountVariantData"}]},"WalletPnlData":{"type":"object","title":"WalletPnlData","description":"A wallet's PnL history","required":["period","points"],"properties":{"period":{"$ref":"#/components/schemas/PnlPeriod"},"points":{"type":"array","description":"Oldest first. Empty for an address that has never traded.","items":{"$ref":"#/components/schemas/PnlPoint"}}}},"WalletPnlResponse":{"type":"object","title":"WalletPnlResponse","description":"Response for GET /v1/account/{address}/pnl","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/WalletPnlData"}}},"WeeklyPointsEntry":{"type":"object","title":"WeeklyPointsEntry","description":"A single week of points data","required":["week","startTime","endTime","userPoints","userReferralPoints","allocationAmount","calculated"],"properties":{"week":{"type":"integer","format":"int32","description":"Week number within the season, starting at 1."},"startTime":{"type":"string","description":"Round start time, RFC3339."},"endTime":{"type":"string","description":"Round end time, RFC3339."},"userPoints":{"type":"number","format":"double","description":"Points earned by the authenticated user that week, from every\nsource, as in the account's total.\n\n`0` until the weekly calculation is finalised, check `calculated`\nto disambiguate from a real zero."},"userReferralPoints":{"type":"number","format":"double","description":"Subset of points attributable to referral sources."},"allocationAmount":{"type":"integer","format":"int32","description":"The budgeted point allocation for the round."},"calculated":{"type":"boolean","description":"Whether the weekly calculation has been finalised.\n\nWhen `false`, the point fields will be `0`, as the round is still\nin-progress / \"TBD\". Distribution happens on a near-weekly cadence."}}},"WeeklyPointsResponse":{"type":"object","title":"WeeklyPointsResponse","description":"Response for GET /v1/account/points/weekly","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"$ref":"#/components/schemas/WeeklyPointsEntry"}}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","description":"API key authentication via the `x-api-key` header.","name":"x-api-key","in":"header"},"BearerAuth":{"type":"http","description":"Bearer authentication via the `Authorization: Bearer <token>` header.","scheme":"bearer","bearerFormat":"JWT"}}}}