{"openapi":"3.1.0","info":{"title":"Statyx Sports Data API","version":"1.0.0","description":"Read-only HTTPS/JSON API for NFL, NBA, MLB, Soccer and WNBA — raw feeds plus\ncomputed analytics (hit rates, defense-vs-position) and a cross-book odds board.\n\n## Authentication\nSend your key in the `x-api-key` header (or `Authorization: Bearer <key>`).\n\n## Responses\nList endpoints return `{ data, meta }`; single-resource endpoints return `{ data }`; errors always use `{ error: { code, message, details? } }`.\n\n## Identifiers\nEvery `player_id`, `team_id` and `game_id` is a stable Statyx identifier that is consistent across all endpoints — use it to join data (a player’s bio, game logs, season stats and hit rates all share one id) with no external id mapping. Ids are opaque integers; do not infer meaning from their value.\n\n## Pagination\nList endpoints accept `limit` (1–200, default 50) and `offset`; applied values are echoed in `meta`.\n\n## Rate limits\nPer-key limits are returned in `RateLimit-*` headers. Limits and scopes depend on your tier.","contact":{"name":"Statyx","url":"https://statyx.io"}},"servers":[{"url":"https://api.statyx.io","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"NFL"},{"name":"NBA"},{"name":"MLB"},{"name":"Soccer"},{"name":"WNBA"},{"name":"Odds"},{"name":"History"}],"x-statyx-scopes":[{"scope":"reference:read","description":"Teams, players, schedules, standings and probable lineups."},{"scope":"stats:read","description":"Box scores, advanced/tracking stats and defense-vs-position."},{"scope":"hit-rates:read","description":"Computed hit-rate endpoints across every sport."},{"scope":"odds:read","description":"Player/game props and the cross-sport odds board."}],"x-statyx-tiers":[{"tier":"free","label":"Free","priceMonthly":0,"rateLimitPerMin":60,"scopes":["reference:read"],"description":"Reference data for evaluation and hobby projects."},{"tier":"pro","label":"Pro","priceMonthly":149,"rateLimitPerMin":600,"scopes":["reference:read","stats:read","hit-rates:read"],"description":"Full stats and computed hit-rates for production models."},{"tier":"elite","label":"Elite","priceMonthly":null,"rateLimitPerMin":6000,"scopes":["reference:read","stats:read","hit-rates:read","odds:read"],"description":"Everything in Pro plus live odds, the highest limits and priority support."}],"paths":{"/v1/nfl/teams":{"get":{"tags":["NFL"],"summary":"List NFL teams","operationId":"get_nfl_teams","description":"List NFL teams. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/nfl/teams/{teamId}":{"get":{"tags":["NFL"],"summary":"Get one NFL team","operationId":"get_nfl_teams_teamId","description":"Get one NFL team. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx team id (source-neutral surrogate, consistent across all endpoints)."}]}},"/v1/nfl/schedule":{"get":{"tags":["NFL"],"summary":"NFL schedule","operationId":"get_nfl_schedule","description":"NFL schedule. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"week","in":"query","schema":{"minimum":1,"maximum":30,"type":"integer"}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}}]}},"/v1/nfl/games/{gameId}":{"get":{"tags":["NFL"],"summary":"Get one NFL game","operationId":"get_nfl_games_gameId","description":"Get one NFL game. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"gameId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx game id."}]}},"/v1/nfl/players":{"get":{"tags":["NFL"],"summary":"Search NFL players","operationId":"get_nfl_players","description":"Search NFL players. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"position","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"search","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"active","in":"query","schema":{"type":"string","enum":["true","false"]}}]}},"/v1/nfl/players/{playerId}":{"get":{"tags":["NFL"],"summary":"Get one NFL player","operationId":"get_nfl_players_playerId","description":"Get one NFL player. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."}]}},"/v1/nfl/players/{playerId}/stats":{"get":{"tags":["NFL"],"summary":"NFL player game stats","operationId":"get_nfl_players_playerId_stats","description":"NFL player game stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}}]}},"/v1/nfl/players/{playerId}/season-stats":{"get":{"tags":["NFL"],"summary":"NFL player season + advanced stats","operationId":"get_nfl_players_playerId_season-stats","description":"NFL player season + advanced stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"season_type","in":"query","schema":{"type":"string","enum":["REG","POST"]}}]}},"/v1/nfl/players/{playerId}/hit-rates":{"get":{"tags":["NFL"],"summary":"NFL player hit rates","operationId":"get_nfl_players_playerId_hit-rates","description":"NFL player hit rates. Requires the `hit-rates:read` scope (Pro tier and above).","x-required-scope":"hit-rates:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HitRatesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"market","in":"query","schema":{"type":"string","minLength":1,"maxLength":48},"required":true},{"name":"line","in":"query","schema":{"type":"number"},"required":true},{"name":"side","in":"query","schema":{"type":"string","enum":["over","under"],"default":"over"}},{"name":"season","in":"query","schema":{"minimum":1,"maximum":3000,"type":"integer"}},{"name":"windows","in":"query","schema":{"type":"string","maxLength":64}}]}},"/v1/nfl/standings":{"get":{"tags":["NFL"],"summary":"NFL standings","operationId":"get_nfl_standings","description":"NFL standings. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"conference","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"division","in":"query","schema":{"type":"string","minLength":1,"maxLength":16}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}}]}},"/v1/nfl/team-stats":{"get":{"tags":["NFL"],"summary":"NFL team game stats","operationId":"get_nfl_team-stats","description":"NFL team game stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"week","in":"query","schema":{"minimum":1,"maximum":30,"type":"integer"}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"game_id","in":"query","schema":{"minimum":1,"type":"integer"}}]}},"/v1/nfl/defense-vs-position":{"get":{"tags":["NFL"],"summary":"NFL defense vs position","operationId":"get_nfl_defense-vs-position","description":"NFL defense vs position. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"season_type","in":"query","schema":{"type":"string","enum":["REG","POST"]}},{"name":"position","in":"query","schema":{"type":"string","minLength":1,"maxLength":4}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}}]}},"/v1/nfl/depth-charts":{"get":{"tags":["NFL"],"summary":"NFL depth charts","operationId":"get_nfl_depth-charts","description":"NFL depth charts. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"position","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}}]}},"/v1/nfl/injuries":{"get":{"tags":["NFL"],"summary":"NFL injury report","operationId":"get_nfl_injuries","description":"NFL injury report. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"status","in":"query","schema":{"type":"string","minLength":1,"maxLength":32}}]}},"/v1/nfl/players/{playerId}/advanced-stats":{"get":{"tags":["NFL"],"summary":"NFL player advanced (Next Gen) stats","operationId":"get_nfl_players_playerId_advanced-stats","description":"NFL player advanced (Next Gen) stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"stat_type","in":"query","schema":{"type":"string","enum":["rushing","passing","receiving"]}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"week","in":"query","schema":{"minimum":0,"maximum":30,"type":"integer"}}]}},"/v1/nba/schedule":{"get":{"tags":["NBA"],"summary":"NBA schedule","operationId":"get_nba_schedule","description":"NBA schedule. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"date","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}]}},"/v1/nba/players":{"get":{"tags":["NBA"],"summary":"Search NBA players","operationId":"get_nba_players","description":"Search NBA players. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"position","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"search","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"active","in":"query","schema":{"type":"string","enum":["true","false"]}}]}},"/v1/nba/standings":{"get":{"tags":["NBA"],"summary":"NBA standings","operationId":"get_nba_standings","description":"NBA standings. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"conference","in":"query","schema":{"type":"string","minLength":1,"maxLength":16}}]}},"/v1/nba/players/{playerId}/game-stats":{"get":{"tags":["NBA"],"summary":"NBA player game stats","operationId":"get_nba_players_playerId_game-stats","description":"NBA player game stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}}]}},"/v1/nba/players/{playerId}/advanced-stats":{"get":{"tags":["NBA"],"summary":"NBA player advanced/tracking stats","operationId":"get_nba_players_playerId_advanced-stats","description":"NBA player advanced/tracking stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"since","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}]}},"/v1/nba/players/{playerId}/hit-rates":{"get":{"tags":["NBA"],"summary":"NBA player hit rates","operationId":"get_nba_players_playerId_hit-rates","description":"NBA player hit rates. Requires the `hit-rates:read` scope (Pro tier and above).","x-required-scope":"hit-rates:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HitRatesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"market","in":"query","schema":{"type":"string","minLength":1,"maxLength":48},"required":true},{"name":"line","in":"query","schema":{"type":"number"},"required":true},{"name":"side","in":"query","schema":{"type":"string","enum":["over","under"],"default":"over"}},{"name":"season","in":"query","schema":{"minimum":1,"maximum":3000,"type":"integer"}},{"name":"windows","in":"query","schema":{"type":"string","maxLength":64}}]}},"/v1/nba/defense-vs-position":{"get":{"tags":["NBA"],"summary":"NBA defense vs position","operationId":"get_nba_defense-vs-position","description":"NBA defense vs position. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"pos","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}}]}},"/v1/nba/contracts":{"get":{"tags":["NBA"],"summary":"NBA player contracts","operationId":"get_nba_contracts","description":"NBA player contracts. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}}]}},"/v1/mlb/teams":{"get":{"tags":["MLB"],"summary":"List MLB teams","operationId":"get_mlb_teams","description":"List MLB teams. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/mlb/schedule":{"get":{"tags":["MLB"],"summary":"MLB schedule","operationId":"get_mlb_schedule","description":"MLB schedule. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"team_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"date","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"status","in":"query","schema":{"type":"string","minLength":1,"maxLength":32}}]}},"/v1/mlb/players":{"get":{"tags":["MLB"],"summary":"Search MLB players","operationId":"get_mlb_players","description":"Search MLB players. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"team_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"position","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"search","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"active","in":"query","schema":{"type":"string","enum":["true","false"]}}]}},"/v1/mlb/standings":{"get":{"tags":["MLB"],"summary":"MLB standings","operationId":"get_mlb_standings","description":"MLB standings. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"league","in":"query","schema":{"type":"string","minLength":1,"maxLength":16}},{"name":"division","in":"query","schema":{"type":"string","minLength":1,"maxLength":16}}]}},"/v1/mlb/players/{playerId}/game-stats":{"get":{"tags":["MLB"],"summary":"MLB player game stats","operationId":"get_mlb_players_playerId_game-stats","description":"MLB player game stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}}]}},"/v1/mlb/players/{playerId}/season-stats":{"get":{"tags":["MLB"],"summary":"MLB player season stats","operationId":"get_mlb_players_playerId_season-stats","description":"MLB player season stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}}]}},"/v1/mlb/games/{gameId}/props":{"get":{"tags":["MLB"],"summary":"MLB per-book player props","operationId":"get_mlb_games_gameId_props","description":"MLB per-book player props. Requires the `odds:read` scope (Elite tier and above).","x-required-scope":"odds:read","x-minimum-tier":"elite","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"gameId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx game id."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"prop_type","in":"query","schema":{"type":"string","minLength":1,"maxLength":48}},{"name":"vendor","in":"query","schema":{"type":"string","minLength":1,"maxLength":48}}]}},"/v1/mlb/probable-lineups":{"get":{"tags":["MLB"],"summary":"MLB probable lineups","operationId":"get_mlb_probable-lineups","description":"MLB probable lineups. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"date","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"game_id","in":"query","schema":{"minimum":0,"type":"integer"}}]}},"/v1/mlb/players/{playerId}/hit-rates":{"get":{"tags":["MLB"],"summary":"MLB player hit rates","operationId":"get_mlb_players_playerId_hit-rates","description":"MLB player hit rates. Requires the `hit-rates:read` scope (Pro tier and above).","x-required-scope":"hit-rates:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HitRatesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"market","in":"query","schema":{"type":"string","minLength":1,"maxLength":48},"required":true},{"name":"line","in":"query","schema":{"type":"number"},"required":true},{"name":"side","in":"query","schema":{"type":"string","enum":["over","under"],"default":"over"}},{"name":"season","in":"query","schema":{"minimum":1,"maximum":3000,"type":"integer"}},{"name":"windows","in":"query","schema":{"type":"string","maxLength":64}}]}},"/v1/football/competitions":{"get":{"tags":["Soccer"],"summary":"List competitions","operationId":"get_football_competitions","description":"List competitions. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"country_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"search","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"active","in":"query","schema":{"type":"string","enum":["true","false"]}}]}},"/v1/football/teams":{"get":{"tags":["Soccer"],"summary":"List clubs","operationId":"get_football_teams","description":"List clubs. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"country_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"competition_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"search","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}}]}},"/v1/football/players":{"get":{"tags":["Soccer"],"summary":"Search players","operationId":"get_football_players","description":"Search players. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"club_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"position_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"search","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}}]}},"/v1/football/fixtures":{"get":{"tags":["Soccer"],"summary":"Fixtures","operationId":"get_football_fixtures","description":"Fixtures. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"competition_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"team_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"date","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"status_group","in":"query","schema":{"minimum":1,"maximum":4,"type":"integer"}}]}},"/v1/football/players/{playerId}/game-stats":{"get":{"tags":["Soccer"],"summary":"Player match stats","operationId":"get_football_players_playerId_game-stats","description":"Player match stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"competition_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"season_num","in":"query","schema":{"minimum":1,"maximum":100,"type":"integer"}}]}},"/v1/football/players/{playerId}/season-stats":{"get":{"tags":["Soccer"],"summary":"Player season stats","operationId":"get_football_players_playerId_season-stats","description":"Player season stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"competition_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"season","in":"query","schema":{"type":"string","minLength":1,"maxLength":16}}]}},"/v1/football/players/{playerId}/shotmap":{"get":{"tags":["Soccer"],"summary":"Player xG shot map","operationId":"get_football_players_playerId_shotmap","description":"Player xG shot map. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"last_num_games","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer"}}]}},"/v1/football/teams/{teamId}/form":{"get":{"tags":["Soccer"],"summary":"Team form","operationId":"get_football_teams_teamId_form","description":"Team form. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx team id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"num_games","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer"}}]}},"/v1/football/games/{gameId}/props":{"get":{"tags":["Soccer"],"summary":"Fixture proposition props","operationId":"get_football_games_gameId_props","description":"Fixture proposition props. Requires the `odds:read` scope (Elite tier and above).","x-required-scope":"odds:read","x-minimum-tier":"elite","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"gameId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx game id."}]}},"/v1/football/players/{playerId}/hit-rates":{"get":{"tags":["Soccer"],"summary":"Player hit rates","operationId":"get_football_players_playerId_hit-rates","description":"Player hit rates. Requires the `hit-rates:read` scope (Pro tier and above).","x-required-scope":"hit-rates:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HitRatesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"market","in":"query","schema":{"type":"string","minLength":1,"maxLength":48},"required":true},{"name":"line","in":"query","schema":{"type":"number"},"required":true},{"name":"side","in":"query","schema":{"type":"string","enum":["over","under"],"default":"over"}},{"name":"season","in":"query","schema":{"minimum":1,"maximum":3000,"type":"integer"}},{"name":"windows","in":"query","schema":{"type":"string","maxLength":64}}]}},"/v1/wnba/schedule":{"get":{"tags":["WNBA"],"summary":"WNBA schedule","operationId":"get_wnba_schedule","description":"WNBA schedule. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"date","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}]}},"/v1/wnba/players":{"get":{"tags":["WNBA"],"summary":"Search WNBA players","operationId":"get_wnba_players","description":"Search WNBA players. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"position","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"search","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}}]}},"/v1/wnba/standings":{"get":{"tags":["WNBA"],"summary":"WNBA standings","operationId":"get_wnba_standings","description":"WNBA standings. Requires the `reference:read` scope (Free tier and above).","x-required-scope":"reference:read","x-minimum-tier":"free","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"conference","in":"query","schema":{"type":"string","minLength":1,"maxLength":16}}]}},"/v1/wnba/players/{playerId}/game-stats":{"get":{"tags":["WNBA"],"summary":"WNBA player game stats","operationId":"get_wnba_players_playerId_game-stats","description":"WNBA player game stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}}]}},"/v1/wnba/players/{playerId}/season-stats":{"get":{"tags":["WNBA"],"summary":"WNBA player season stats","operationId":"get_wnba_players_playerId_season-stats","description":"WNBA player season stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}}]}},"/v1/wnba/players/{playerId}/advanced-stats":{"get":{"tags":["WNBA"],"summary":"WNBA player advanced stats","operationId":"get_wnba_players_playerId_advanced-stats","description":"WNBA player advanced stats. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}}]}},"/v1/wnba/players/{playerId}/shot-locations":{"get":{"tags":["WNBA"],"summary":"WNBA player shot locations","operationId":"get_wnba_players_playerId_shot-locations","description":"WNBA player shot locations. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}}]}},"/v1/wnba/players/{playerId}/odds":{"get":{"tags":["WNBA"],"summary":"WNBA player prop odds","operationId":"get_wnba_players_playerId_odds","description":"WNBA player prop odds. Requires the `odds:read` scope (Elite tier and above).","x-required-scope":"odds:read","x-minimum-tier":"elite","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"prop_type","in":"query","schema":{"type":"string","minLength":1,"maxLength":48}},{"name":"vendor","in":"query","schema":{"type":"string","minLength":1,"maxLength":48}}]}},"/v1/wnba/games/{gameId}/odds":{"get":{"tags":["WNBA"],"summary":"WNBA game prop odds","operationId":"get_wnba_games_gameId_odds","description":"WNBA game prop odds. Requires the `odds:read` scope (Elite tier and above).","x-required-scope":"odds:read","x-minimum-tier":"elite","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"gameId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx game id."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"prop_type","in":"query","schema":{"type":"string","minLength":1,"maxLength":48}},{"name":"vendor","in":"query","schema":{"type":"string","minLength":1,"maxLength":48}}]}},"/v1/wnba/players/{playerId}/hit-rates":{"get":{"tags":["WNBA"],"summary":"WNBA player hit rates","operationId":"get_wnba_players_playerId_hit-rates","description":"WNBA player hit rates. Requires the `hit-rates:read` scope (Pro tier and above).","x-required-scope":"hit-rates:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HitRatesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"playerId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx player id (source-neutral surrogate, consistent across all endpoints)."},{"name":"market","in":"query","schema":{"type":"string","minLength":1,"maxLength":48},"required":true},{"name":"line","in":"query","schema":{"type":"number"},"required":true},{"name":"side","in":"query","schema":{"type":"string","enum":["over","under"],"default":"over"}},{"name":"season","in":"query","schema":{"minimum":1,"maximum":3000,"type":"integer"}},{"name":"windows","in":"query","schema":{"type":"string","maxLength":64}}]}},"/v1/wnba/defense-vs-position":{"get":{"tags":["WNBA"],"summary":"WNBA defense vs position","operationId":"get_wnba_defense-vs-position","description":"WNBA defense vs position. Requires the `stats:read` scope (Pro tier and above).","x-required-scope":"stats:read","x-minimum-tier":"pro","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"season","in":"query","schema":{"minimum":2000,"maximum":2100,"type":"integer"}},{"name":"team","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}},{"name":"pos","in":"query","schema":{"type":"string","minLength":1,"maxLength":8}}]}},"/v1/odds/sports":{"get":{"tags":["Odds"],"summary":"Sports with a live odds board","operationId":"get_odds_sports","description":"Sports with a live odds board. Requires the `odds:read` scope (Elite tier and above).","x-required-scope":"odds:read","x-minimum-tier":"elite","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/odds/{sport}/board":{"get":{"tags":["Odds"],"summary":"Normalized cross-book odds board","operationId":"get_odds_sport_board","description":"Normalized cross-book odds board. Requires the `odds:read` scope (Elite tier and above).","x-required-scope":"odds:read","x-minimum-tier":"elite","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","enum":["mlb","nba","soccer","nfl"]},"description":"Board sport."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"market","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"game_id","in":"query","schema":{"type":"string","minLength":1,"maxLength":128}},{"name":"player","in":"query","schema":{"type":"string","minLength":1,"maxLength":128}}]}},"/v1/history/games":{"get":{"tags":["History"],"summary":"List archived games (2016+)","operationId":"get_history_games","description":"List archived games (2016+). Requires the `odds:read` scope (Elite tier and above).","x-required-scope":"odds:read","x-minimum-tier":"elite","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"sport","in":"query","schema":{"type":"string","enum":["mlb","nba"]}},{"name":"team_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"season","in":"query","schema":{"type":"string","minLength":1,"maxLength":16}},{"name":"start_date","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"end_date","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}]}},"/v1/history/games/{gameId}/closing-odds":{"get":{"tags":["History"],"summary":"Per-book closing game odds (moneyline/spread/total)","operationId":"get_history_games_gameId_closing-odds","description":"Per-book closing game odds (moneyline/spread/total). Requires the `odds:read` scope (Elite tier and above).","x-required-scope":"odds:read","x-minimum-tier":"elite","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"gameId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx game id."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"book","in":"query","schema":{"type":"string","minLength":1,"maxLength":40}}]}},"/v1/history/games/{gameId}/closing-props":{"get":{"tags":["History"],"summary":"Per-book closing player props (open + close)","operationId":"get_history_games_gameId_closing-props","description":"Per-book closing player props (open + close). Requires the `odds:read` scope (Elite tier and above).","x-required-scope":"odds:read","x-minimum-tier":"elite","responses":{"200":{"description":"Success.","headers":{"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}},"parameters":[{"name":"gameId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Stable Statyx game id."},{"name":"limit","in":"query","schema":{"minimum":1,"maximum":200,"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"minimum":0,"maximum":100000,"type":"integer","default":0}},{"name":"player_id","in":"query","schema":{"minimum":0,"type":"integer"}},{"name":"prop_type","in":"query","schema":{"type":"string","minLength":1,"maxLength":60}},{"name":"book","in":"query","schema":{"type":"string","minLength":1,"maxLength":40}}]}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Partner API key. Also accepted as `Authorization: Bearer <key>`."}},"headers":{"RateLimitRemaining":{"description":"Requests remaining in the current window.","schema":{"type":"integer"}}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"VALIDATION_ERROR"},"message":{"type":"string"},"details":{}}}}},"ListMeta":{"type":"object","properties":{"count":{"type":"integer","description":"Number of rows in `data`."},"limit":{"type":"integer"},"offset":{"type":"integer"}},"additionalProperties":true},"ListResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":true}},"meta":{"$ref":"#/components/schemas/ListMeta"}}},"ItemResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"object","additionalProperties":true}}},"WindowResult":{"type":"object","properties":{"games":{"type":"integer"},"hits":{"type":"integer"},"hit_rate":{"type":"number","description":"hits / games, 0..1."},"pct":{"type":"integer","description":"Rounded percentage (Over%)."},"average":{"type":["number","null"],"description":"Mean value over the window."}}},"HitRatesResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"object","properties":{"player_id":{"type":"integer"},"market":{"type":"string"},"line":{"type":"number"},"side":{"type":"string","enum":["over","under"]},"season":{"type":["integer","null"]},"sample_size":{"type":"integer"},"windows":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/WindowResult"},"description":"Keyed by window label (e.g. `L5`, `L10`, `L20`, `season`)."}}},"meta":{"type":"object","additionalProperties":true}}}},"responses":{"Unauthorized":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"UNAUTHORIZED","message":"Invalid or revoked API key."}}}}},"Forbidden":{"description":"The key lacks the required scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"FORBIDDEN","message":"Your plan does not include the 'odds:read' scope."}}}}},"BadRequest":{"description":"Malformed path or parameter value.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"BAD_REQUEST","message":"Invalid request."}}}}},"NotFound":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"NOT_FOUND","message":"Resource not found"}}}}},"ValidationError":{"description":"Query parameters failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"VALIDATION_ERROR","message":"Invalid query parameters"}}}}},"RateLimited":{"description":"Per-key rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded"}}}}}}}}