openapi: 3.1.0 info: title: BALLDONTLIE version: "1.0.0" description: | API for accessing NBA, NFL, MLB, NCAAF, NCAAB, EPL, NHL, WNBA, MMA, CS2, LOL, Dota 2, FIFA World Cup 2026, Formula 1, La Liga, Serie A, UEFA Champions League, Bundesliga, Ligue 1, MLS, PGA Tour, and ATP Tennis statistics and data. Includes comprehensive endpoints for teams, players, games, statistics, and more. servers: - url: https://api.balldontlie.io description: Production server components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: Authorization schemas: # Common Components Error: type: object properties: error: type: string description: Error message Pagination: type: object properties: next_cursor: type: integer description: Cursor for the next page of results prev_cursor: type: integer nullable: true description: Cursor for the previous page of results per_page: type: integer description: Number of results per page PlayerPropMeta: type: object description: Metadata for player prop responses (no pagination - all results returned in single response) properties: per_page: type: integer description: Total number of results returned # NBA Components NBATeam: type: object properties: id: type: integer conference: type: string enum: [East, West] division: type: string enum: [Atlantic, Central, Southeast, Northwest, Pacific, Southwest] city: type: string name: type: string full_name: type: string abbreviation: type: string NBAPlayer: type: object properties: id: type: integer first_name: type: string last_name: type: string position: type: string height: type: string weight: type: string jersey_number: type: string college: type: string country: type: string draft_year: type: integer draft_round: type: integer draft_number: type: integer team: $ref: "#/components/schemas/NBATeam" NBAGame: type: object properties: id: type: integer date: type: string format: date season: type: integer status: type: string nullable: true period: type: integer nullable: true time: type: string nullable: true period_detail: type: string nullable: true description: Detailed period information (e.g., 'Final', '1:00 - 2nd Half') datetime: type: string format: date-time nullable: true postseason: type: boolean home_team_score: type: integer visitor_team_score: type: integer home_team: $ref: "#/components/schemas/NBATeam" visitor_team: $ref: "#/components/schemas/NBATeam" ist_stage: type: string nullable: true description: NBA Cup stage (e.g., 'West Semifinal', 'Championship'). Only populated for NBA Cup games. Only available starting with the 2025 season. NBAStats: type: object properties: id: type: integer min: type: string fgm: type: integer fga: type: integer fg_pct: type: number fg3m: type: integer fg3a: type: integer fg3_pct: type: number ftm: type: integer fta: type: integer ft_pct: type: number oreb: type: integer dreb: type: integer reb: type: integer ast: type: integer stl: type: integer blk: type: integer turnover: type: integer pf: type: integer pts: type: integer plus_minus: type: integer nullable: true description: Plus/minus for the player in this game player: $ref: "#/components/schemas/NBAPlayer" team: $ref: "#/components/schemas/NBATeam" game: $ref: "#/components/schemas/NBAGame" NBASeasonAverages: type: object properties: games_played: type: integer pts: type: number ast: type: number reb: type: number stl: type: number blk: type: number turnover: type: number min: type: string fgm: type: number fga: type: number fg_pct: type: number fg3m: type: number fg3a: type: number fg3_pct: type: number ftm: type: number fta: type: number ft_pct: type: number oreb: type: number dreb: type: number player_id: type: integer season: type: integer NBASeasonAverageV2: type: object properties: player_id: type: integer season: type: integer season_type: type: string stats: type: object additionalProperties: true NBATeamSeasonStat: type: object properties: team: $ref: "#/components/schemas/NBATeam" season: type: integer description: Season year season_type: type: string enum: [regular, playoffs, ist] description: Season type stats: type: object additionalProperties: true description: Dynamic stats object with stat names as keys and numeric values. Content varies by category/type combination. NBAStandings: type: object properties: team: $ref: "#/components/schemas/NBATeam" conference_record: type: string conference_rank: type: integer division_record: type: string division_rank: type: integer wins: type: integer losses: type: integer home_record: type: string road_record: type: string season: type: integer NBABoxScore: type: object properties: date: type: string format: date season: type: integer status: type: string period: type: integer time: type: string postseason: type: boolean home_team_score: type: integer visitor_team_score: type: integer home_team: type: object properties: team: $ref: "#/components/schemas/NBATeam" players: type: array items: type: object properties: min: type: string fgm: type: integer fga: type: integer fg_pct: type: number fg3m: type: integer fg3a: type: integer fg3_pct: type: number ftm: type: integer fta: type: integer ft_pct: type: number oreb: type: integer dreb: type: integer reb: type: integer ast: type: integer stl: type: integer blk: type: integer turnover: type: integer pf: type: integer pts: type: integer plus_minus: type: integer nullable: true description: Plus/minus for the player in this game player: $ref: "#/components/schemas/NBAPlayer" visitor_team: type: object properties: team: $ref: "#/components/schemas/NBATeam" players: type: array items: type: object properties: min: type: string fgm: type: integer fga: type: integer fg_pct: type: number fg3m: type: integer fg3a: type: integer fg3_pct: type: number ftm: type: integer fta: type: integer ft_pct: type: number oreb: type: integer dreb: type: integer reb: type: integer ast: type: integer stl: type: integer blk: type: integer turnover: type: integer pf: type: integer pts: type: integer plus_minus: type: integer nullable: true description: Plus/minus for the player in this game player: $ref: "#/components/schemas/NBAPlayer" NBALineup: type: object properties: id: type: integer description: Unique identifier for the lineup entry game_id: type: integer description: ID of the game this lineup belongs to starter: type: boolean description: Whether the player is a starter (true) or bench player (false) position: type: string description: Position the player is listed at for this game player: type: object description: Player information (slim version with team_id) properties: id: type: integer first_name: type: string last_name: type: string position: type: string height: type: string weight: type: string jersey_number: type: string college: type: string country: type: string draft_year: type: integer draft_round: type: integer draft_number: type: integer team_id: type: integer description: ID of the player's current team team: $ref: "#/components/schemas/NBATeam" NBAPlayerInjury: type: object properties: player: $ref: "#/components/schemas/NBAPlayer" return_date: type: string description: type: string status: type: string NBALeader: type: object properties: player: $ref: "#/components/schemas/NBAPlayer" value: type: number stat_type: type: string enum: [reb, dreb, tov, ast, oreb, min, pts, stl, blk] rank: type: integer season: type: integer games_played: type: integer NBAAdvancedStats: type: object properties: id: type: integer pie: type: number pace: type: number assist_percentage: type: number assist_ratio: type: number assist_to_turnover: type: number defensive_rating: type: number defensive_rebound_percentage: type: number effective_field_goal_percentage: type: number net_rating: type: number offensive_rating: type: number offensive_rebound_percentage: type: number rebound_percentage: type: number true_shooting_percentage: type: number turnover_ratio: type: number usage_percentage: type: number player: $ref: "#/components/schemas/NBAPlayer" team: $ref: "#/components/schemas/NBATeam" game: $ref: "#/components/schemas/NBAGame" NBAAdvancedStatsV2: type: object description: Comprehensive NBA advanced stats including tracking data, hustle stats, and defensive metrics properties: id: type: integer period: type: integer description: Game period (0 for full game) player: $ref: "#/components/schemas/NBAPlayer" team: $ref: "#/components/schemas/NBATeam" game: $ref: "#/components/schemas/NBAGame" # Box Score Advanced pie: type: number nullable: true description: Player Impact Estimate assist_percentage: type: number nullable: true assist_ratio: type: number nullable: true assist_to_turnover: type: number nullable: true defensive_rating: type: number nullable: true defensive_rebound_percentage: type: number nullable: true effective_field_goal_percentage: type: number nullable: true estimated_defensive_rating: type: number nullable: true estimated_net_rating: type: number nullable: true estimated_offensive_rating: type: number nullable: true estimated_pace: type: number nullable: true estimated_usage_percentage: type: number nullable: true net_rating: type: number nullable: true offensive_rating: type: number nullable: true offensive_rebound_percentage: type: number nullable: true pace: type: number nullable: true pace_per_40: type: number nullable: true possessions: type: number nullable: true rebound_percentage: type: number nullable: true true_shooting_percentage: type: number nullable: true turnover_ratio: type: number nullable: true usage_percentage: type: number nullable: true # Box Score Misc blocks_against: type: number nullable: true fouls_drawn: type: number nullable: true points_fast_break: type: number nullable: true points_off_turnovers: type: number nullable: true points_paint: type: number nullable: true points_second_chance: type: number nullable: true opp_points_fast_break: type: number nullable: true opp_points_off_turnovers: type: number nullable: true opp_points_paint: type: number nullable: true opp_points_second_chance: type: number nullable: true # Box Score Scoring pct_assisted_2pt: type: number nullable: true pct_assisted_3pt: type: number nullable: true pct_assisted_fgm: type: number nullable: true pct_fga_2pt: type: number nullable: true pct_fga_3pt: type: number nullable: true pct_pts_2pt: type: number nullable: true pct_pts_3pt: type: number nullable: true pct_pts_fast_break: type: number nullable: true pct_pts_free_throw: type: number nullable: true pct_pts_midrange_2pt: type: number nullable: true pct_pts_off_turnovers: type: number nullable: true pct_pts_paint: type: number nullable: true pct_unassisted_2pt: type: number nullable: true pct_unassisted_3pt: type: number nullable: true pct_unassisted_fgm: type: number nullable: true # Four Factors four_factors_efg_pct: type: number nullable: true free_throw_attempt_rate: type: number nullable: true four_factors_oreb_pct: type: number nullable: true opp_efg_pct: type: number nullable: true opp_free_throw_attempt_rate: type: number nullable: true opp_oreb_pct: type: number nullable: true opp_turnover_pct: type: number nullable: true team_turnover_pct: type: number nullable: true # Hustle Stats box_outs: type: number nullable: true box_out_player_rebounds: type: number nullable: true box_out_player_team_rebounds: type: number nullable: true defensive_box_outs: type: number nullable: true offensive_box_outs: type: number nullable: true charges_drawn: type: number nullable: true contested_shots: type: number nullable: true contested_shots_2pt: type: number nullable: true contested_shots_3pt: type: number nullable: true deflections: type: number nullable: true loose_balls_recovered_def: type: number nullable: true loose_balls_recovered_off: type: number nullable: true loose_balls_recovered_total: type: number nullable: true screen_assists: type: number nullable: true screen_assist_points: type: number nullable: true # Defensive Stats matchup_minutes: type: string nullable: true matchup_fg_pct: type: number nullable: true matchup_fga: type: number nullable: true matchup_fgm: type: number nullable: true matchup_3pt_pct: type: number nullable: true matchup_3pa: type: number nullable: true matchup_3pm: type: number nullable: true matchup_assists: type: number nullable: true matchup_turnovers: type: number nullable: true partial_possessions: type: number nullable: true matchup_player_points: type: number nullable: true switches_on: type: number nullable: true # Player Tracking speed: type: number nullable: true distance: type: number nullable: true touches: type: number nullable: true passes: type: number nullable: true secondary_assists: type: number nullable: true free_throw_assists: type: number nullable: true contested_fga: type: number nullable: true contested_fgm: type: number nullable: true contested_fg_pct: type: number nullable: true uncontested_fga: type: number nullable: true uncontested_fgm: type: number nullable: true uncontested_fg_pct: type: number nullable: true defended_at_rim_fga: type: number nullable: true defended_at_rim_fgm: type: number nullable: true defended_at_rim_fg_pct: type: number nullable: true rebound_chances_def: type: number nullable: true rebound_chances_off: type: number nullable: true rebound_chances_total: type: number nullable: true # Usage Stats pct_blocks: type: number nullable: true pct_blocks_allowed: type: number nullable: true pct_fga: type: number nullable: true pct_fgm: type: number nullable: true pct_fta: type: number nullable: true pct_ftm: type: number nullable: true pct_personal_fouls: type: number nullable: true pct_personal_fouls_drawn: type: number nullable: true pct_points: type: number nullable: true pct_rebounds_def: type: number nullable: true pct_rebounds_off: type: number nullable: true pct_rebounds_total: type: number nullable: true pct_steals: type: number nullable: true pct_3pa: type: number nullable: true pct_3pm: type: number nullable: true pct_turnovers: type: number nullable: true NBABettingOdd: type: object properties: id: type: integer description: Betting odd ID game_id: type: integer description: Game ID vendor: type: string description: Sportsbook vendor name spread_home_value: type: string nullable: true description: Home team spread value spread_home_odds: type: integer nullable: true description: Home team spread odds spread_away_value: type: string nullable: true description: Away team spread value spread_away_odds: type: integer nullable: true description: Away team spread odds moneyline_home_odds: type: integer nullable: true description: Home team moneyline odds moneyline_away_odds: type: integer nullable: true description: Away team moneyline odds total_value: type: string nullable: true description: Total points line value total_over_odds: type: integer nullable: true description: Over total odds total_under_odds: type: integer nullable: true description: Under total odds updated_at: type: string format: date-time description: Last update timestamp NBAPlayerPropMarketOverUnder: type: object description: Over/under market type for player props required: - type - over_odds - under_odds properties: type: type: string enum: [over_under] description: Market type identifier over_odds: type: integer description: American odds for over bet under_odds: type: integer description: American odds for under bet NBAPlayerPropMarketMilestone: type: object description: Milestone market type for player props required: - type - odds properties: type: type: string enum: [milestone] description: Market type identifier odds: type: integer description: American odds for milestone bet NBAPlayerProp: type: object description: NBA player prop betting data required: - id - game_id - player_id - vendor - prop_type - line_value - market - updated_at properties: id: type: integer description: Unique player prop ID game_id: type: integer description: NBA game ID player_id: type: integer description: NBA player ID vendor: type: string description: Sportsbook vendor name enum: - draftkings - betway - betrivers - ballybet prop_type: type: string description: Type of player prop enum: - points - rebounds - assists - threes - steals - blocks - points_1q - rebounds_1q - assists_1q - points_first3min - rebounds_first3min - assists_first3min example: points line_value: type: string description: The line value for the prop example: "25.5" market: oneOf: - $ref: "#/components/schemas/NBAPlayerPropMarketOverUnder" - $ref: "#/components/schemas/NBAPlayerPropMarketMilestone" description: Market information - either over_under or milestone type updated_at: type: string format: date-time description: ISO 8601 timestamp of when this prop was last updated NBAContract: type: object properties: id: type: integer description: Contract ID player_id: type: integer description: Player ID season: type: integer description: Contract season year team_id: type: integer description: Team ID cap_hit: type: integer nullable: true description: Annual salary cap hit in dollars total_cash: type: integer nullable: true description: Total cash payment for the season in dollars base_salary: type: integer nullable: true description: Base salary in dollars rank: type: integer nullable: true description: Salary rank player: type: object description: Player information properties: id: type: integer first_name: type: string last_name: type: string position: type: string height: type: string weight: type: string jersey_number: type: string college: type: string country: type: string draft_year: type: integer draft_round: type: integer draft_number: type: integer team_id: type: integer team: $ref: "#/components/schemas/NBATeam" NBAContractAggregate: type: object properties: id: type: integer description: Contract aggregate ID player_id: type: integer description: Player ID start_year: type: integer description: First year of contract end_year: type: integer description: Last year of contract contract_type: type: string description: Contract type (e.g., Rookie, Free Agent, Extension) contract_status: type: string nullable: true description: Contract status (e.g., CURRENT, UPCOMING EXTENSION) contract_years: type: integer nullable: true description: Number of years in contract total_value: type: integer nullable: true description: Total contract value in dollars average_salary: type: integer nullable: true description: Average annual salary in dollars guaranteed_at_signing: type: integer nullable: true description: Guaranteed amount at signing in dollars total_guaranteed: type: integer nullable: true description: Total guaranteed amount in dollars signed_using: type: string nullable: true description: Exception or method used to sign (e.g., Bird Rights, Cap Space) free_agent_year: type: integer nullable: true description: Year player becomes a free agent free_agent_status: type: string nullable: true description: Free agent status (e.g., UFA, RFA) contract_notes: type: object nullable: true description: Additional contract notes (options, escalators, etc.) team_id: type: integer nullable: true description: Team ID that signed the contract player: type: object description: Player information properties: id: type: integer first_name: type: string last_name: type: string position: type: string height: type: string weight: type: string jersey_number: type: string college: type: string country: type: string draft_year: type: integer draft_round: type: integer draft_number: type: integer team_id: type: integer team: nullable: true allOf: - $ref: "#/components/schemas/NBATeam" NBAPlay: type: object properties: game_id: type: integer description: Game ID order: type: integer description: Play order number (starts at 1 and increments sequentially) type: type: string description: Play type (e.g., "Jump Shot", "Layup", "Dunk") text: type: string description: Play description home_score: type: integer description: Home team score after play away_score: type: integer description: Away team score after play period: type: integer description: Period number (1-4 for regulation, 5+ for overtime) period_display: type: string description: Period display text (e.g., "1st Quarter", "OT1") clock: type: string description: Game clock at time of play scoring_play: type: boolean description: Whether this is a scoring play shooting_play: type: boolean description: Whether this is a shooting play score_value: type: integer description: Points scored on this play team: $ref: '#/components/schemas/NBATeam' coordinate_x: type: number nullable: true description: X coordinate on court (if available) coordinate_y: type: number nullable: true description: Y coordinate on court (if available) wallclock: type: string format: date-time nullable: true description: Real-world timestamp of play NFLTeam: type: object properties: id: type: integer conference: type: string enum: [AFC, NFC] division: type: string enum: [NORTH, SOUTH, EAST, WEST] location: type: string name: type: string full_name: type: string abbreviation: type: string NFLPlayer: type: object properties: id: type: integer first_name: type: string last_name: type: string position: type: string position_abbreviation: type: string height: type: string weight: type: string jersey_number: type: string college: type: string experience: type: string age: type: integer team: $ref: "#/components/schemas/NFLTeam" NFLRosterPlayer: type: object description: NFL player object without team reference (used in roster responses) properties: id: type: integer first_name: type: string last_name: type: string position: type: string position_abbreviation: type: string height: type: string nullable: true weight: type: string nullable: true jersey_number: type: string nullable: true college: type: string nullable: true experience: type: string nullable: true age: type: integer nullable: true NFLRosterEntry: type: object description: NFL team roster entry with depth chart information properties: player: nullable: true allOf: - $ref: "#/components/schemas/NFLRosterPlayer" position: type: string description: Position on the depth chart depth: type: integer description: Depth chart position (1 = starter, 2 = backup, etc.) player_name: type: string description: Player name injury_status: type: string nullable: true description: Current injury status if applicable NFLGame: type: object properties: id: type: integer visitor_team: $ref: "#/components/schemas/NFLTeam" home_team: $ref: "#/components/schemas/NFLTeam" summary: type: string venue: type: string week: type: integer date: type: string format: date-time season: type: integer postseason: type: boolean status: type: string home_team_score: type: integer visitor_team_score: type: integer home_team_q1: type: integer home_team_q2: type: integer home_team_q3: type: integer home_team_q4: type: integer home_team_ot: type: integer visitor_team_q1: type: integer visitor_team_q2: type: integer visitor_team_q3: type: integer visitor_team_q4: type: integer visitor_team_ot: type: integer NFLStats: type: object properties: player: $ref: "#/components/schemas/NFLPlayer" team: $ref: "#/components/schemas/NFLTeam" game: $ref: "#/components/schemas/NFLGame" passing_completions: type: integer passing_attempts: type: integer passing_yards: type: integer yards_per_pass_attempt: type: integer passing_touchdowns: type: integer passing_interceptions: type: integer sacks: type: integer sacks_loss: type: integer qbr: type: integer qb_rating: type: integer rushing_attempts: type: integer rushing_yards: type: integer yards_per_rush_attempt: type: integer rushing_touchdowns: type: integer long_rushing: type: integer receptions: type: integer receiving_yards: type: integer yards_per_reception: type: integer receiving_touchdowns: type: integer long_reception: type: integer receiving_targets: type: integer fumbles: type: integer fumbles_lost: type: integer fumbles_recovered: type: integer total_tackles: type: integer defensive_sacks: type: integer solo_tackles: type: integer tackles_for_loss: type: integer passes_defended: type: integer qb_hits: type: integer fumbles_touchdowns: type: integer defensive_interceptions: type: integer interception_yards: type: integer interception_touchdowns: type: integer kick_returns: type: integer kick_return_yards: type: integer yards_per_kick_return: type: integer long_kick_return: type: integer kick_return_touchdowns: type: integer punt_returns: type: integer punt_return_yards: type: integer yards_per_punt_return: type: integer long_punt_return: type: integer punt_return_touchdowns: type: integer field_goal_attempts: type: integer field_goals_made: type: integer field_goal_pct: type: integer long_field_goal_made: type: integer extra_points_made: type: integer total_points: type: integer punts: type: integer punt_yards: type: integer gross_avg_punt_yards: type: integer touchbacks: type: integer punts_inside_20: type: integer long_punt: type: integer NFLStandings: type: object properties: team: $ref: "#/components/schemas/NFLTeam" win_streak: type: integer points_for: type: integer points_against: type: integer playoff_seed: type: integer point_differential: type: integer overall_record: type: string conference_record: type: string division_record: type: string wins: type: integer losses: type: integer ties: type: integer home_record: type: string road_record: type: string season: type: integer NFLPlayerInjury: type: object properties: player: $ref: "#/components/schemas/NFLPlayer" status: type: string comment: type: string date: type: string format: date-time NFLSeasonStats: type: object properties: player: $ref: "#/components/schemas/NFLPlayer" games_played: type: integer season: type: integer postseason: type: boolean passing_completions: type: integer passing_attempts: type: integer passing_yards: type: integer passing_yards_per_game: type: number passing_touchdowns: type: integer passing_interceptions: type: integer passing_completion_pct: type: number passing_first_downs: type: integer passing_first_down_pct: type: number passing_20_plus_yards: type: integer passing_40_plus_yards: type: integer passing_long: type: integer passing_sacks: type: integer passing_sack_yards: type: integer qb_rating: type: number rushing_attempts: type: integer rushing_yards: type: integer rushing_yards_per_game: type: number rushing_average: type: number rushing_touchdowns: type: integer rushing_first_downs: type: integer rushing_first_down_pct: type: number rushing_20_plus_yards: type: integer rushing_40_plus_yards: type: integer rushing_long: type: integer rushing_fumbles: type: integer receptions: type: integer receiving_yards: type: integer receiving_yards_per_game: type: number receiving_average: type: number receiving_touchdowns: type: integer receiving_targets: type: integer receiving_first_downs: type: integer receiving_first_down_pct: type: number receiving_20_plus_yards: type: integer receiving_40_plus_yards: type: integer receiving_long: type: integer receiving_fumbles: type: integer fumbles: type: integer fumbles_lost: type: integer fumbles_forced: type: integer fumbles_recovered: type: integer fumbles_touchdowns: type: integer NFLAdvancedRushingStats: type: object properties: player: $ref: "#/components/schemas/NFLPlayer" season: type: integer week: type: integer postseason: type: boolean avg_time_to_los: type: number expected_rush_yards: type: number rush_attempts: type: integer rush_pct_over_expected: type: number rush_touchdowns: type: integer rush_yards: type: integer rush_yards_over_expected: type: number rush_yards_over_expected_per_att: type: number efficiency: type: number percent_attempts_gte_eight_defenders: type: number avg_rush_yards: type: number NFLAdvancedPassingStats: type: object properties: player: $ref: "#/components/schemas/NFLPlayer" season: type: integer week: type: integer postseason: type: boolean aggressiveness: type: number attempts: type: integer avg_air_distance: type: number avg_air_yards_differential: type: number avg_air_yards_to_sticks: type: number avg_completed_air_yards: type: number avg_intended_air_yards: type: number avg_time_to_throw: type: number completion_percentage: type: number completion_percentage_above_expectation: type: number completions: type: integer expected_completion_percentage: type: number games_played: type: number interceptions: type: number max_air_distance: type: number max_completed_air_distance: type: number pass_touchdowns: type: number pass_yards: type: number passer_rating: type: number NFLAdvancedReceivingStats: type: object properties: player: $ref: "#/components/schemas/NFLPlayer" season: type: integer week: type: integer postseason: type: boolean avg_cushion: type: number avg_expected_yac: type: number avg_intended_air_yards: type: number avg_separation: type: number avg_yac: type: number avg_yac_above_expectation: type: number catch_percentage: type: number percent_share_of_intended_air_yards: type: number rec_touchdowns: type: integer receptions: type: integer targets: type: integer yards: type: integer NFLBettingOdd: type: object properties: id: type: integer description: Betting odd ID game_id: type: integer description: Game ID vendor: type: string description: Sportsbook vendor name spread_home_value: type: string nullable: true description: Home team spread value spread_home_odds: type: integer nullable: true description: Home team spread odds spread_away_value: type: string nullable: true description: Away team spread value spread_away_odds: type: integer nullable: true description: Away team spread odds moneyline_home_odds: type: integer nullable: true description: Home team moneyline odds moneyline_away_odds: type: integer nullable: true description: Away team moneyline odds total_value: type: string nullable: true description: Total points line value total_over_odds: type: integer nullable: true description: Over total odds total_under_odds: type: integer nullable: true description: Under total odds updated_at: type: string format: date-time description: Last update timestamp NFLPlayerPropMarketOverUnder: type: object description: Over/under market type for NFL player props required: - type - over_odds - under_odds properties: type: type: string enum: [over_under] description: Market type identifier over_odds: type: integer description: American odds for over bet under_odds: type: integer description: American odds for under bet NFLPlayerPropMarketMilestone: type: object description: Milestone market type for NFL player props required: - type - odds properties: type: type: string enum: [milestone] description: Market type identifier odds: type: integer description: American odds for milestone bet NFLPlayerProp: type: object description: NFL player prop betting data required: - id - game_id - player_id - vendor - prop_type - line_value - market - updated_at properties: id: type: integer description: Unique player prop ID game_id: type: integer description: NFL game ID player_id: type: integer description: NFL player ID vendor: type: string description: Sportsbook vendor name enum: - draftkings - betway - betrivers - ballybet - betparx prop_type: type: string description: Type of player prop enum: - anytime_td - anytime_td_1h - anytime_td_1q - anytime_td_2h - fg_made - fg_made_1h - first_td - interceptions - kicking_points - longest_pass - longest_reception - longest_rush - passing_attempts - passing_completions - passing_tds - passing_tds_1h - passing_yards - passing_yards_1h - receiving_yards - receiving_yards_1h - receptions - rushing_attempts - rushing_receiving_yards - rushing_yards - rushing_yards_1h example: rushing_yards line_value: type: string description: The line value for the prop example: "275.5" market: oneOf: - $ref: "#/components/schemas/NFLPlayerPropMarketOverUnder" - $ref: "#/components/schemas/NFLPlayerPropMarketMilestone" description: Market information - either over_under or milestone type updated_at: type: string format: date-time description: ISO 8601 timestamp of when this prop was last updated NFLTeamSeasonStat: type: object description: Comprehensive team season statistics including offense, defense, special teams, and opponent stats properties: team: $ref: "#/components/schemas/NFLTeam" season: type: integer season_type: type: integer description: Season type (2 = regular season, 3 = postseason) games_played: type: number nullable: true total_offensive_yards: type: number nullable: true description: Total offensive yards (corrected from passing_total_yards) total_offensive_yards_per_game: type: number nullable: true total_points: type: number nullable: true total_points_per_game: type: number nullable: true passing_completions: type: number nullable: true passing_yards: type: number nullable: true passing_yards_per_game: type: number nullable: true passing_attempts: type: number nullable: true passing_touchdowns: type: number nullable: true passing_interceptions: type: number nullable: true rushing_yards: type: number nullable: true rushing_yards_per_game: type: number nullable: true rushing_attempts: type: number nullable: true rushing_touchdowns: type: number nullable: true receiving_receptions: type: number nullable: true receiving_yards: type: number nullable: true receiving_touchdowns: type: number nullable: true # Note: Schema includes 200+ additional fields for detailed stats, special teams, and opponent stats NFLTeamStat: type: object description: Team game statistics properties: game: $ref: "#/components/schemas/NFLGame" team: $ref: "#/components/schemas/NFLTeam" home_away: type: string description: Whether team is home or away first_downs: type: integer nullable: true first_downs_passing: type: integer nullable: true first_downs_rushing: type: integer nullable: true third_down_efficiency: type: string nullable: true third_down_conversions: type: integer nullable: true third_down_attempts: type: integer nullable: true total_yards: type: integer nullable: true yards_per_play: type: integer nullable: true net_passing_yards: type: integer nullable: true passing_completions: type: integer nullable: true passing_attempts: type: integer nullable: true sacks: type: integer nullable: true rushing_yards: type: integer nullable: true rushing_attempts: type: integer nullable: true turnovers: type: integer nullable: true fumbles_lost: type: integer nullable: true interceptions_thrown: type: integer nullable: true penalties: type: integer nullable: true penalty_yards: type: integer nullable: true possession_time: type: string nullable: true NFLPlay: type: object description: Play-by-play data for NFL games properties: id: type: string game: $ref: "#/components/schemas/NFLGame" type_slug: type: string nullable: true type_abbreviation: type: string nullable: true type_text: type: string nullable: true text: type: string description: Full play description short_text: type: string nullable: true away_score: type: integer home_score: type: integer scoring_play: type: boolean period: type: integer clock_display: type: string nullable: true team: allOf: - $ref: "#/components/schemas/NFLTeam" nullable: true start_yard_line: type: integer nullable: true start_down: type: integer nullable: true start_distance: type: integer nullable: true end_yard_line: type: integer nullable: true end_down: type: integer nullable: true end_distance: type: integer nullable: true stat_yardage: type: integer nullable: true home_win_probability: type: number nullable: true wallclock: type: string format: date-time nullable: true description: Real-time timestamp of the play MLBTeam: type: object properties: id: type: integer slug: type: string abbreviation: type: string display_name: type: string short_display_name: type: string name: type: string location: type: string league: type: string enum: [American, National] division: type: string enum: [East, Central, West] MLBPlayer: type: object properties: id: type: integer first_name: type: string last_name: type: string full_name: type: string debut_year: type: integer nullable: true jersey: type: string college: type: string position: type: string active: type: boolean birth_place: type: string dob: type: string age: type: integer nullable: true height: type: string weight: type: string draft: type: string bats_throws: type: string team: $ref: "#/components/schemas/MLBTeam" MLBGame: type: object properties: id: type: integer home_team_name: type: string away_team_name: type: string home_team: $ref: "#/components/schemas/MLBTeam" away_team: $ref: "#/components/schemas/MLBTeam" season: type: integer postseason: type: boolean date: type: string format: date-time home_team_data: type: object properties: hits: type: integer runs: type: integer errors: type: integer inning_scores: type: array items: type: integer away_team_data: type: object properties: hits: type: integer runs: type: integer errors: type: integer inning_scores: type: array items: type: integer venue: type: string attendance: type: integer conference_play: type: boolean period: type: integer nullable: true clock: type: string nullable: true display_clock: type: string nullable: true scoring_summary: type: array items: type: object status: type: string MLBStats: type: object properties: player: $ref: "#/components/schemas/MLBPlayer" game: $ref: "#/components/schemas/MLBGame" team_name: type: string at_bats: type: integer runs: type: integer hits: type: integer rbi: type: integer hr: type: integer bb: type: integer k: type: integer avg: type: number obp: type: number slg: type: number ip: type: number p_hits: type: integer p_runs: type: integer er: type: integer p_bb: type: integer p_k: type: integer p_hr: type: integer pitch_count: type: integer strikes: type: integer era: type: number MLBStandings: type: object properties: team: $ref: "#/components/schemas/MLBTeam" league_name: type: string league_short_name: type: string division_name: type: string division_short_name: type: string wins: type: integer losses: type: integer win_percent: type: number games_behind: type: number streak: type: integer last_ten_games: type: string season: type: integer clinch_indicator: type: string elimination_number: type: integer wild_card_elimination_number: type: integer league_rank: type: integer sport_rank: type: integer division_rank: type: integer league_games_back: type: number sport_games_back: type: number division_games_back: type: number conference_games_back: type: number division_leader: type: boolean division_champ: type: boolean runs_allowed: type: integer runs_scored: type: integer run_differential: type: integer home_wins: type: integer home_losses: type: integer away_wins: type: integer away_losses: type: integer last_updated: type: string records: type: object day_wins: type: integer day_losses: type: integer night_wins: type: integer night_losses: type: integer one_run_wins: type: integer one_run_losses: type: integer extra_inning_wins: type: integer extra_inning_losses: type: integer MLBSeasonStats: type: object properties: player: $ref: "#/components/schemas/MLBPlayer" team_name: type: string season: type: integer postseason: type: boolean batting_gp: type: integer batting_ab: type: integer batting_r: type: integer batting_h: type: integer batting_avg: type: number batting_2b: type: integer batting_3b: type: integer batting_hr: type: integer batting_rbi: type: integer batting_tb: type: integer batting_bb: type: integer batting_so: type: integer batting_sb: type: integer batting_obp: type: number batting_slg: type: number batting_ops: type: number batting_war: type: number pitching_gp: type: integer pitching_gs: type: integer pitching_qs: type: integer pitching_w: type: integer pitching_l: type: integer pitching_era: type: number pitching_sv: type: integer pitching_hld: type: integer pitching_ip: type: number pitching_h: type: integer pitching_er: type: integer pitching_hr: type: integer pitching_bb: type: integer pitching_whip: type: number pitching_k: type: integer pitching_k_per_9: type: number pitching_war: type: number fielding_gp: type: integer fielding_gs: type: integer fielding_fip: type: number fielding_tc: type: integer fielding_po: type: integer fielding_a: type: integer fielding_fp: type: number fielding_e: type: integer fielding_dp: type: integer fielding_rf: type: number fielding_dwar: type: number fielding_pb: type: integer fielding_cs: type: integer fielding_cs_percent: type: number fielding_sba: type: integer MLBTeamSeasonStats: type: object properties: team: $ref: "#/components/schemas/MLBTeam" team_name: type: string postseason: type: boolean season: type: integer gp: type: integer batting_ab: type: integer batting_r: type: integer batting_h: type: integer batting_2b: type: integer batting_3b: type: integer batting_hr: type: integer batting_rbi: type: integer batting_tb: type: integer batting_bb: type: integer batting_so: type: integer batting_sb: type: integer batting_avg: type: number batting_obp: type: number batting_slg: type: number batting_ops: type: number pitching_w: type: integer pitching_l: type: integer pitching_era: type: number pitching_sv: type: integer pitching_cg: type: integer pitching_sho: type: integer pitching_qs: type: integer pitching_ip: type: number pitching_h: type: integer pitching_er: type: integer pitching_hr: type: integer pitching_bb: type: integer pitching_k: type: integer pitching_oba: type: number pitching_whip: type: number fielding_e: type: integer fielding_fp: type: number fielding_tc: type: integer fielding_po: type: integer fielding_a: type: integer EPLPlayerStatEnum: type: string enum: &PLAYER_STAT_TYPES [ "goals", "goal_assist", "clean_sheet", "appearances", "mins_played", "yellow_card", "red_card", "total_pass", "touches", "total_scoring_att", "hit_woodwork", "big_chance_missed", "total_offside", "total_tackle", "fouls", "dispossessed", "own_goals", "total_clearance", "clearance_off_line", "saves", "penalty_save", "total_high_claim", "punches" ] EPLTeamStatEnum: type: string enum: &TEAM_STAT_TYPES [ "wins", "losses", "touches", "own_goals", "total_yel_card", "total_red_card", "goals", "total_pass", "total_scoring_att", "total_offside", "hit_woodwork", "big_chance_missed", "total_tackle", "total_clearance", "clearance_off_line", "dispossessed", "clean_sheet", "saves", "penalty_save", "total_high_claim", "punches" ] EPLTeam: type: object properties: id: type: integer name: type: string short_name: type: string abbr: type: string city: type: string stadium: type: string EPLPlayer: type: object properties: id: type: integer position: type: string nullable: true national_team: type: string nullable: true height: type: integer nullable: true weight: type: integer nullable: true birth_date: type: string format: date-time nullable: true age: type: string nullable: true name: type: string first_name: type: string nullable: true last_name: type: string nullable: true team_ids: type: array nullable: true items: type: integer EPLTeamSeasonStat: type: object properties: value: type: number name: type: string rank: type: integer season: type: integer EPLPlayerSeasonStat: type: object properties: value: type: number name: type: string rank: type: integer season: type: integer EPLGame: type: object properties: id: type: integer week: type: integer kickoff: type: string format: date-time nullable: true provisional_kickoff: type: string format: date-time nullable: true home_team_id: type: integer away_team_id: type: integer home_score: type: integer nullable: true away_score: type: integer nullable: true status: type: string nullable: true season: type: integer ground: type: string nullable: true clock: type: integer nullable: true clock_display: type: string nullable: true extra_time: type: boolean nullable: true EPLGameLineup: type: object properties: team_id: type: integer player: $ref: '#/components/schemas/EPLPlayer' substitute: type: boolean captain: type: boolean position: type: string nullable: true shirt_number: type: integer nullable: true sub_clock: type: integer nullable: true sub_clock_display: type: string nullable: true EPLGameGoal: type: object properties: game_id: type: integer scorer: $ref: '#/components/schemas/EPLPlayer' assister: $ref: '#/components/schemas/EPLPlayer' nullable: true clock: type: integer clock_display: type: string nullable: true phase: type: string nullable: true type: type: string nullable: true EPLGameTeamStats: type: object properties: game_id: type: integer teams: type: array items: type: object properties: team_id: type: integer stats: type: array items: type: object properties: name: type: string value: type: number EPLGamePlayerStats: type: object properties: game_id: type: integer players: type: array items: type: object properties: team_id: type: integer player_id: type: integer stats: type: array items: type: object properties: name: type: string value: type: number EPLStanding: type: object properties: team: $ref: '#/components/schemas/EPLTeam' season: type: integer position: type: integer form: type: string home_played: type: integer home_drawn: type: integer home_won: type: integer home_lost: type: integer home_goals_against: type: integer home_goals_difference: type: integer home_goals_for: type: integer home_points: type: integer away_played: type: integer away_drawn: type: integer away_won: type: integer away_lost: type: integer away_goals_against: type: integer away_goals_difference: type: integer away_goals_for: type: integer away_points: type: integer overall_played: type: integer overall_drawn: type: integer overall_won: type: integer overall_lost: type: integer overall_goals_against: type: integer overall_goals_difference: type: integer overall_goals_for: type: integer overall_points: type: integer EPLPlayerStatLeaders: type: object properties: player: $ref: '#/components/schemas/EPLPlayer' season: type: integer rank: type: integer value: type: number name: type: string EPLTeamStatLeaders: type: object properties: team: $ref: '#/components/schemas/EPLTeam' season: type: integer rank: type: integer value: type: number name: type: string EPLBettingOdd: type: object properties: id: type: integer description: Betting odd ID game_id: type: integer description: Game ID vendor: type: string description: Sportsbook vendor name moneyline_home_odds: type: integer nullable: true description: Home team moneyline odds moneyline_away_odds: type: integer nullable: true description: Away team moneyline odds moneyline_draw_odds: type: integer nullable: true description: Draw moneyline odds updated_at: type: string format: date-time description: Last update timestamp EPLPlayerPropMarketOverUnder: type: object description: Over/under market type for EPL player props required: - type - over_odds - under_odds properties: type: type: string enum: [over_under] description: Market type identifier over_odds: type: integer description: American odds for over bet under_odds: type: integer description: American odds for under bet EPLPlayerPropMarketMilestone: type: object description: Milestone market type for EPL player props required: - type - odds properties: type: type: string enum: [milestone] description: Market type identifier odds: type: integer description: American odds for milestone bet EPLPlayerProp: type: object description: EPL player prop betting data required: - id - game_id - player_id - vendor - prop_type - line_value - market - updated_at properties: id: type: integer description: Unique player prop ID game_id: type: integer description: EPL game ID player_id: type: integer description: EPL player ID vendor: type: string description: Sportsbook vendor name enum: - draftkings - fanduel - caesars prop_type: type: string description: Type of player prop enum: - anytime_goal - assists - first_goal - first_half_goal - goals_assists - header_goal - last_goal - outside_box_goal - saves - second_half_goal - shots - shots_on_target - tackles example: anytime_goal line_value: type: string description: The line value for the prop example: "1.0" market: oneOf: - $ref: "#/components/schemas/EPLPlayerPropMarketOverUnder" - $ref: "#/components/schemas/EPLPlayerPropMarketMilestone" description: Market information - either over_under or milestone type updated_at: type: string format: date-time description: ISO 8601 timestamp of when this prop was last updated # Soccer League Schemas (shared by La Liga, Serie A, UCL, Bundesliga, Ligue 1) SoccerTeam: type: object properties: id: type: integer name: type: string short_name: type: string nullable: true abbreviation: type: string nullable: true location: type: string nullable: true SoccerPlayer: type: object properties: id: type: integer first_name: type: string nullable: true last_name: type: string nullable: true display_name: type: string short_name: type: string nullable: true date_of_birth: type: string format: date nullable: true age: type: integer nullable: true height: type: string nullable: true weight: type: string nullable: true citizenship: type: string nullable: true team_ids: type: array nullable: true items: type: integer SoccerRoster: type: object properties: team_id: type: integer player: $ref: '#/components/schemas/SoccerPlayer' season: type: integer jersey_number: type: string nullable: true position: type: string nullable: true position_abbreviation: type: string nullable: true is_active: type: boolean SoccerStanding: type: object properties: team: $ref: '#/components/schemas/SoccerTeam' season: type: integer rank: type: integer rank_change: type: integer nullable: true group_name: type: string nullable: true description: Group identifier for tournament-style leagues (e.g., UCL Group A) note: type: string nullable: true games_played: type: integer wins: type: integer losses: type: integer draws: type: integer points: type: integer goals_for: type: integer goals_against: type: integer goal_differential: type: integer points_per_game: type: number nullable: true SoccerMatch: type: object properties: id: type: integer season: type: integer home_team_id: type: integer nullable: true away_team_id: type: integer nullable: true date: type: string format: date-time name: type: string nullable: true short_name: type: string nullable: true status: type: string nullable: true status_detail: type: string nullable: true home_score: type: integer nullable: true away_score: type: integer nullable: true venue_name: type: string nullable: true venue_city: type: string nullable: true attendance: type: integer nullable: true SoccerMatchEvent: type: object properties: id: type: integer match_id: type: integer team_id: type: integer nullable: true event_type: type: string description: Type of event (e.g., goal, yellow_card, red_card, substitution) event_time: type: integer nullable: true description: Time in minutes when the event occurred period: type: integer nullable: true description: Period/half when the event occurred player: $ref: '#/components/schemas/SoccerPlayer' nullable: true secondary_player: $ref: '#/components/schemas/SoccerPlayer' nullable: true description: Second player involved (e.g., substitute coming in, assisting player) goal_type: type: string nullable: true is_own_goal: type: boolean SoccerMatchLineup: type: object properties: match_id: type: integer team_id: type: integer player: $ref: '#/components/schemas/SoccerPlayer' is_starter: type: boolean position: type: string nullable: true position_abbreviation: type: string nullable: true formation_position: type: string nullable: true jersey_number: type: string nullable: true SoccerPlayerMatchStats: type: object properties: match_id: type: integer player_id: type: integer team_id: type: integer appearances: type: integer goals: type: integer assists: type: integer shots_total: type: integer nullable: true shots_on_target: type: integer nullable: true fouls_committed: type: integer nullable: true fouls_suffered: type: integer nullable: true offsides: type: integer nullable: true saves: type: integer nullable: true yellow_cards: type: integer red_cards: type: integer own_goals: type: integer SoccerTeamMatchStats: type: object properties: match_id: type: integer team_id: type: integer possession_pct: type: number nullable: true shots: type: integer nullable: true shots_on_target: type: integer nullable: true fouls: type: integer nullable: true yellow_cards: type: integer nullable: true red_cards: type: integer nullable: true corners: type: integer nullable: true passes: type: integer nullable: true pass_accuracy_pct: type: number nullable: true SoccerBettingOdd: type: object properties: id: type: integer description: Betting odd ID match_id: type: integer description: Match ID vendor: type: string description: Sportsbook vendor name moneyline_home_odds: type: integer nullable: true description: Home team moneyline odds moneyline_away_odds: type: integer nullable: true description: Away team moneyline odds moneyline_draw_odds: type: integer nullable: true description: Draw moneyline odds updated_at: type: string format: date-time description: Last update timestamp SoccerPlayerPropMarketOverUnder: type: object description: Over/under market type for soccer player props required: - type - over_odds - under_odds properties: type: type: string enum: [over_under] description: Market type identifier over_odds: type: integer description: American odds for over bet under_odds: type: integer description: American odds for under bet SoccerPlayerPropMarketMilestone: type: object description: Milestone market type for soccer player props required: - type - odds properties: type: type: string enum: [milestone] description: Market type identifier odds: type: integer description: American odds for milestone bet SoccerPlayerProp: type: object description: Soccer player prop betting data required: - id - match_id - player_id - vendor - prop_type - line_value - market - updated_at properties: id: type: integer description: Unique player prop ID match_id: type: integer description: Match ID player_id: type: integer description: Player ID vendor: type: string description: Sportsbook vendor name enum: - draftkings - fanduel - caesars prop_type: type: string description: Type of player prop enum: - anytime_goal - assists - first_goal - first_half_goal - goals_assists - header_goal - last_goal - outside_box_goal - saves - second_half_goal - shots - shots_on_target - tackles example: anytime_goal line_value: type: string description: The line value for the prop example: "0.5" market: oneOf: - $ref: "#/components/schemas/SoccerPlayerPropMarketOverUnder" - $ref: "#/components/schemas/SoccerPlayerPropMarketMilestone" description: Market information - either over_under or milestone type updated_at: type: string format: date-time description: ISO 8601 timestamp of when this prop was last updated SoccerFuturesOdd: type: object description: Soccer futures betting odds (tournament winner, etc.) properties: id: type: integer description: Unique futures odd ID market_type: type: string description: Type of futures market (e.g., outright_winner) market_name: type: string description: Human-readable market name subject: $ref: '#/components/schemas/SoccerTeam' description: Team that this futures odd is for vendor: type: string description: Sportsbook vendor name american_odds: type: integer nullable: true description: American odds format decimal_odds: type: number nullable: true description: Decimal odds format updated_at: type: string format: date-time nullable: true description: Last update timestamp WNBATeam: type: object properties: id: type: integer description: Team ID conference: type: string description: Conference name city: type: string description: Team city name: type: string description: Team name full_name: type: string description: Team full name abbreviation: type: string description: Team abbreviation WNBAPlayer: type: object properties: id: type: integer description: Player ID first_name: type: string description: Player first name last_name: type: string description: Player last name position: type: string description: Player position position_abbreviation: type: string description: Player position abbreviation height: type: string description: Player height weight: type: string description: Player weight jersey_number: type: string description: Player jersey number college: type: string description: Player college age: type: integer description: Player age team: $ref: '#/components/schemas/WNBATeam' WNBAGame: type: object properties: id: type: integer description: Game ID date: type: string format: date-time description: Game date and time season: type: integer description: Season year postseason: type: boolean description: Whether this is a postseason game status: type: string description: Game status period: type: integer description: Current period time: type: string description: Time remaining in period home_team: $ref: '#/components/schemas/WNBATeam' visitor_team: $ref: '#/components/schemas/WNBATeam' home_score: type: integer description: Home team score away_score: type: integer description: Away team score WNBAPlayerStat: type: object properties: player: $ref: '#/components/schemas/WNBAPlayer' team: $ref: '#/components/schemas/WNBATeam' game: type: object properties: id: type: integer date: type: string format: date-time season: type: integer min: type: string description: Minutes played fgm: type: integer description: Field goals made fga: type: integer description: Field goals attempted fg3m: type: integer description: Three-pointers made fg3a: type: integer description: Three-pointers attempted ftm: type: integer description: Free throws made fta: type: integer description: Free throws attempted oreb: type: integer description: Offensive rebounds dreb: type: integer description: Defensive rebounds reb: type: integer description: Total rebounds ast: type: integer description: Assists stl: type: integer description: Steals blk: type: integer description: Blocks turnover: type: integer description: Turnovers pf: type: integer description: Personal fouls pts: type: integer description: Points scored plus_minus: type: integer description: Plus/minus rating WNBATeamStat: type: object properties: team: $ref: '#/components/schemas/WNBATeam' game: type: object properties: id: type: integer date: type: string format: date-time season: type: integer fgm: type: integer description: Field goals made fga: type: integer description: Field goals attempted fg_pct: type: number description: Field goal percentage fg3m: type: integer description: Three-pointers made fg3a: type: integer description: Three-pointers attempted fg3_pct: type: number description: Three-point percentage ftm: type: integer description: Free throws made fta: type: integer description: Free throws attempted ft_pct: type: number description: Free throw percentage oreb: type: integer description: Offensive rebounds dreb: type: integer description: Defensive rebounds reb: type: integer description: Total rebounds ast: type: integer description: Assists stl: type: integer description: Steals blk: type: integer description: Blocks turnovers: type: integer description: Turnovers fouls: type: integer description: Team fouls WNBAPlayerSeasonStat: type: object properties: player: $ref: '#/components/schemas/WNBAPlayer' team: $ref: '#/components/schemas/WNBATeam' season: type: integer description: Season year season_type: type: integer description: Season type (2=regular, 3=playoffs) games_played: type: integer description: Games played min: type: number description: Average minutes per game fgm: type: number description: Average field goals made fga: type: number description: Average field goals attempted fg_pct: type: number description: Field goal percentage fg3m: type: number description: Average three-pointers made fg3a: type: number description: Average three-pointers attempted fg3_pct: type: number description: Three-point percentage ftm: type: number description: Average free throws made fta: type: number description: Average free throws attempted ft_pct: type: number description: Free throw percentage reb: type: number description: Average rebounds ast: type: number description: Average assists stl: type: number description: Average steals blk: type: number description: Average blocks turnover: type: number description: Average turnovers pts: type: number description: Average points WNBATeamSeasonStat: type: object properties: team: $ref: '#/components/schemas/WNBATeam' season: type: integer description: Season year season_type: type: integer description: Season type (2=regular, 3=playoffs) games_played: type: integer description: Games played fgm: type: number description: Average field goals made fga: type: number description: Average field goals attempted fg_pct: type: number description: Field goal percentage fg3m: type: number description: Average three-pointers made fg3a: type: number description: Average three-pointers attempted fg3_pct: type: number description: Three-point percentage ftm: type: number description: Average free throws made fta: type: number description: Average free throws attempted ft_pct: type: number description: Free throw percentage oreb: type: number description: Average offensive rebounds dreb: type: number description: Average defensive rebounds reb: type: number description: Average total rebounds ast: type: number description: Average assists stl: type: number description: Average steals blk: type: number description: Average blocks turnover: type: number description: Average turnovers pts: type: number description: Average points WNBAStanding: type: object properties: team: $ref: '#/components/schemas/WNBATeam' season: type: integer description: Season year conference: type: string description: Conference name wins: type: integer description: Number of wins losses: type: integer description: Number of losses win_percentage: type: number description: Win percentage games_behind: type: number description: Games behind leader home_record: type: string description: Home record away_record: type: string description: Away record conference_record: type: string description: Conference record playoff_seed: type: integer description: Playoff seed WNBAPlayerInjury: type: object properties: player: $ref: '#/components/schemas/WNBAPlayer' status: type: string description: Injury status return_date: type: string description: Estimated return date comment: type: string description: Injury details WNBAPlay: type: object properties: game_id: type: integer description: Game ID order: type: integer description: Play order number (starts at 1 and increments sequentially) type: type: string description: Play type text: type: string description: Play description home_score: type: integer description: Home team score after play away_score: type: integer description: Away team score after play period: type: integer description: Period number clock: type: string description: Game clock scoring_play: type: boolean description: Whether this is a scoring play score_value: type: integer description: Points scored on this play team: $ref: '#/components/schemas/WNBATeam' # NHL Components NHLTeam: type: object properties: id: type: integer full_name: type: string tricode: type: string conference_name: type: string nullable: true division_name: type: string nullable: true season: type: integer nullable: true NHLPlayer: type: object properties: id: type: integer first_name: type: string last_name: type: string full_name: type: string nullable: true position_code: type: string shoots_catches: type: string nullable: true height_in_inches: type: integer nullable: true weight_in_pounds: type: integer nullable: true birth_date: type: string nullable: true birth_place: type: string nullable: true teams: type: array items: $ref: '#/components/schemas/NHLTeam' nullable: true sweater_number: type: integer nullable: true NHLGame: type: object properties: id: type: integer season: type: integer game_date: type: string format: date start_time_utc: type: string nullable: true home_team: $ref: '#/components/schemas/NHLTeam' away_team: $ref: '#/components/schemas/NHLTeam' home_sog: type: integer nullable: true away_sog: type: integer nullable: true home_score: type: integer nullable: true away_score: type: integer nullable: true venue: type: string nullable: true venue_location: type: string nullable: true game_state: type: string nullable: true period: type: integer nullable: true time_remaining: type: string nullable: true postseason: type: boolean NHLPlay: type: object properties: game_id: type: integer order: type: integer description: Sequential play number (1, 2, 3, ...) period: type: integer period_type: type: string nullable: true time_in_period: type: string nullable: true time_remaining: type: string nullable: true type: type: string description: Play type (e.g., faceoff, shot-on-goal, goal, hit, penalty) away_score: type: integer nullable: true home_score: type: integer nullable: true details: type: object additionalProperties: true description: Play-specific details (coordinates, player IDs, etc.) NHLStanding: type: object properties: team: $ref: '#/components/schemas/NHLTeam' season: type: integer conference_name: type: string division_name: type: string games_played: type: integer points: type: integer regulation_wins: type: integer regulation_plus_ot_wins: type: integer wins: type: integer losses: type: integer ot_losses: type: integer points_pctg: type: number goals_for: type: integer goals_against: type: integer goal_differential: type: integer home_record: type: string road_record: type: string streak: type: string nullable: true NHLBoxScore: type: object properties: player: $ref: '#/components/schemas/NHLPlayer' team: $ref: '#/components/schemas/NHLTeam' game: $ref: '#/components/schemas/NHLGame' position: type: string goals: type: integer nullable: true assists: type: integer nullable: true points: type: integer nullable: true plus_minus: type: integer nullable: true penalty_minutes: type: integer nullable: true power_play_goals: type: integer nullable: true shots_on_goal: type: integer nullable: true faceoff_winning_pctg: type: number nullable: true time_on_ice: type: string nullable: true blocked_shots: type: integer nullable: true hits: type: integer nullable: true shifts: type: integer nullable: true giveaways: type: integer nullable: true takeaways: type: integer nullable: true sweater_number: type: integer nullable: true saves: type: integer nullable: true shots_against: type: integer nullable: true save_pctg: type: number nullable: true goals_against: type: integer nullable: true starter: type: boolean nullable: true decision: type: string nullable: true NHLPlayerInjury: type: object properties: player: $ref: '#/components/schemas/NHLPlayer' status: type: string nullable: true description: Injury status (e.g., Day-To-Day, Out) status_abbreviation: type: string nullable: true description: Abbreviated injury status (e.g., DTD, OUT) injury_type: type: string nullable: true description: Type of injury (e.g., Undisclosed, Lower Body) return_date: type: string nullable: true description: Expected return date if known comment: type: string nullable: true description: Additional comments about the injury NHLPlayerSeasonStat: type: object properties: value: type: number name: type: string NHLTeamSeasonStat: type: object properties: value: type: number name: type: string NHLPlayerStatLeader: type: object properties: player: $ref: '#/components/schemas/NHLPlayer' name: type: string value: type: number season: type: integer postseason: type: boolean NHLTeamStatLeader: type: object properties: team: $ref: '#/components/schemas/NHLTeam' name: type: string value: type: number season: type: integer postseason: type: boolean NHLBettingOdd: type: object properties: id: type: integer description: Betting odd ID game_id: type: integer description: Game ID vendor: type: string description: Sportsbook vendor name spread_home_value: type: string nullable: true description: Home team spread value (puck line) spread_home_odds: type: integer nullable: true description: Home team spread odds spread_away_value: type: string nullable: true description: Away team spread value (puck line) spread_away_odds: type: integer nullable: true description: Away team spread odds moneyline_home_odds: type: integer nullable: true description: Home team moneyline odds moneyline_away_odds: type: integer nullable: true description: Away team moneyline odds total_value: type: string nullable: true description: Total goals line value total_over_odds: type: integer nullable: true description: Over total odds total_under_odds: type: integer nullable: true description: Under total odds updated_at: type: string format: date-time NHLPlayerPropMarketOverUnder: type: object description: Over/under market type for NHL player props required: - type - over_odds - under_odds properties: type: type: string enum: [over_under] description: Market type identifier over_odds: type: integer description: American odds for over bet under_odds: type: integer description: American odds for under bet NHLPlayerPropMarketMilestone: type: object description: Milestone market type for NHL player props required: - type - odds properties: type: type: string enum: [milestone] description: Market type identifier odds: type: integer description: American odds for milestone bet NHLPlayerProp: type: object description: NHL player prop betting data required: - id - game_id - player_id - vendor - prop_type - line_value - market - updated_at properties: id: type: integer description: Unique player prop ID game_id: type: integer description: NHL game ID player_id: type: integer description: NHL player ID vendor: type: string description: Sportsbook vendor name enum: - fanduel - draftkings - caesars prop_type: type: string description: Type of player prop enum: - anytime_goal - anytime_goal_1p - anytime_goal_2p - anytime_goal_3p - assists - first_goal - first_goal_2p - first_goal_3p - goals - last_goal - overtime_goal - points - points_1p - points_2p - points_3p - power_play_points - saves - second_goal - shots_on_goal - shots_on_goal_1p - shots_on_goal_2p - shots_on_goal_3p - third_goal example: points line_value: type: string description: The line value for the prop example: "1.5" market: oneOf: - $ref: "#/components/schemas/NHLPlayerPropMarketOverUnder" - $ref: "#/components/schemas/NHLPlayerPropMarketMilestone" description: Market information - either over_under or milestone type updated_at: type: string format: date-time description: ISO 8601 timestamp of when this prop was last updated # NCAAF Components NCAAFConference: type: object properties: id: type: integer name: type: string abbreviation: type: string NCAAFTeam: type: object properties: id: type: integer conference: type: string city: type: string name: type: string full_name: type: string abbreviation: type: string NCAAFPlayer: type: object properties: id: type: integer first_name: type: string last_name: type: string position: type: string nullable: true position_abbreviation: type: string nullable: true height: type: string nullable: true weight: type: string nullable: true jersey_number: type: string nullable: true team: $ref: '#/components/schemas/NCAAFTeam' NCAAFGame: type: object properties: id: type: integer date: type: string format: date-time season: type: integer week: type: integer status: type: string nullable: true period: type: integer time: type: string nullable: true home_team: $ref: '#/components/schemas/NCAAFTeam' visitor_team: $ref: '#/components/schemas/NCAAFTeam' home_score_q1: type: integer nullable: true home_score_q2: type: integer nullable: true home_score_q3: type: integer nullable: true home_score_q4: type: integer nullable: true home_score_ot: type: integer nullable: true away_score_q1: type: integer nullable: true away_score_q2: type: integer nullable: true away_score_q3: type: integer nullable: true away_score_q4: type: integer nullable: true away_score_ot: type: integer nullable: true home_score: type: integer away_score: type: integer NCAAFStanding: type: object properties: team: $ref: '#/components/schemas/NCAAFTeam' conference: $ref: '#/components/schemas/NCAAFConference' season: type: integer wins: type: integer losses: type: integer win_percentage: type: number nullable: true games_behind: type: number nullable: true home_record: type: string nullable: true away_record: type: string nullable: true conference_record: type: string nullable: true NCAAFRanking: type: object properties: team: $ref: '#/components/schemas/NCAAFTeam' season: type: integer week: type: integer rank: type: integer first_place_votes: type: integer nullable: true points: type: integer nullable: true trend: type: string nullable: true record: type: string nullable: true NCAAFPlayerStat: type: object properties: player: $ref: '#/components/schemas/NCAAFPlayer' team: $ref: '#/components/schemas/NCAAFTeam' game: $ref: '#/components/schemas/NCAAFGame' passing_completions: type: integer nullable: true passing_attempts: type: integer nullable: true passing_yards: type: integer nullable: true passing_touchdowns: type: integer nullable: true passing_interceptions: type: integer nullable: true passing_qbr: type: number nullable: true passing_rating: type: number nullable: true rushing_attempts: type: integer nullable: true rushing_yards: type: integer nullable: true rushing_touchdowns: type: integer nullable: true rushing_long: type: integer nullable: true receptions: type: integer nullable: true receiving_yards: type: integer nullable: true receiving_touchdowns: type: integer nullable: true receiving_targets: type: integer nullable: true receiving_long: type: integer nullable: true total_tackles: type: integer nullable: true solo_tackles: type: integer nullable: true tackles_for_loss: type: number nullable: true sacks: type: number nullable: true interceptions: type: integer nullable: true passes_defended: type: integer nullable: true NCAAFTeamStat: type: object properties: team: $ref: '#/components/schemas/NCAAFTeam' game: type: object properties: id: type: integer date: type: string format: date-time season: type: integer week: type: integer first_downs: type: integer nullable: true third_down_efficiency: type: string nullable: true fourth_down_efficiency: type: string nullable: true passing_yards: type: integer nullable: true rushing_yards: type: integer nullable: true total_yards: type: integer nullable: true turnovers: type: integer nullable: true penalties: type: integer nullable: true penalty_yards: type: integer nullable: true possession_time: type: string nullable: true NCAAFPlayerSeasonStat: type: object properties: player: $ref: '#/components/schemas/NCAAFPlayer' team: $ref: '#/components/schemas/NCAAFTeam' season: type: integer passing_completions: type: integer nullable: true passing_attempts: type: integer nullable: true passing_yards: type: integer nullable: true passing_touchdowns: type: integer nullable: true passing_interceptions: type: integer nullable: true passing_yards_per_game: type: number nullable: true passing_rating: type: number nullable: true rushing_attempts: type: integer nullable: true rushing_yards: type: integer nullable: true rushing_touchdowns: type: integer nullable: true rushing_yards_per_game: type: number nullable: true rushing_avg: type: number nullable: true receptions: type: integer nullable: true receiving_yards: type: integer nullable: true receiving_touchdowns: type: integer nullable: true receiving_yards_per_game: type: number nullable: true receiving_avg: type: number nullable: true total_tackles: type: integer nullable: true solo_tackles: type: integer nullable: true tackles_for_loss: type: number nullable: true sacks: type: number nullable: true interceptions: type: integer nullable: true passes_defended: type: integer nullable: true NCAAFTeamSeasonStat: type: object properties: team: $ref: '#/components/schemas/NCAAFTeam' season: type: integer passing_yards: type: number nullable: true passing_yards_per_game: type: number nullable: true passing_touchdowns: type: number nullable: true passing_interceptions: type: number nullable: true passing_qb_rating: type: number nullable: true rushing_yards: type: number nullable: true rushing_yards_per_game: type: number nullable: true rushing_touchdowns: type: number nullable: true receiving_yards: type: number nullable: true receiving_touchdowns: type: number nullable: true opp_passing_yards: type: number nullable: true opp_rushing_yards: type: number nullable: true NCAAFPlay: type: object properties: game_id: type: integer order: type: integer description: Play order number (starts at 1 and increments sequentially) type: type: string nullable: true text: type: string home_score: type: integer away_score: type: integer period: type: integer clock: type: string nullable: true scoring_play: type: boolean score_value: type: integer nullable: true team: $ref: '#/components/schemas/NCAAFTeam' nullable: true NCAAFBettingOdd: type: object properties: id: type: integer description: Betting odd ID game_id: type: integer description: Game ID vendor: type: string description: Sportsbook vendor name spread_home_value: type: string nullable: true description: Home team spread value spread_home_odds: type: integer nullable: true description: Home team spread odds spread_away_value: type: string nullable: true description: Away team spread value spread_away_odds: type: integer nullable: true description: Away team spread odds moneyline_home_odds: type: integer nullable: true description: Home team moneyline odds moneyline_away_odds: type: integer nullable: true description: Away team moneyline odds total_value: type: string nullable: true description: Total points line value total_over_odds: type: integer nullable: true description: Over total odds total_under_odds: type: integer nullable: true description: Under total odds updated_at: type: string format: date-time description: Last update timestamp # NCAAB Components NCAABConference: type: object properties: id: type: integer name: type: string short_name: type: string NCAABTeam: type: object properties: id: type: integer conference_id: type: integer nullable: true name: type: string full_name: type: string college: type: string nullable: true abbreviation: type: string nullable: true NCAABPlayer: type: object properties: id: type: integer first_name: type: string last_name: type: string position: type: string nullable: true height: type: string nullable: true weight: type: string nullable: true jersey_number: type: string nullable: true team: $ref: '#/components/schemas/NCAABTeam' NCAABGame: type: object properties: id: type: integer date: type: string format: date-time season: type: integer description: Season year (note - API accepts and returns season year that is 1 less than DB storage) postseason: type: boolean status: type: string nullable: true period: type: integer period_detail: type: string nullable: true home_team: $ref: '#/components/schemas/NCAABTeam' visitor_team: $ref: '#/components/schemas/NCAABTeam' home_score: type: integer away_score: type: integer home_score_h1: type: integer nullable: true description: Home team score in first half away_score_h1: type: integer nullable: true description: Away team score in first half home_score_h2: type: integer nullable: true description: Home team score in second half away_score_h2: type: integer nullable: true description: Away team score in second half home_ot_scores: type: array items: type: integer nullable: true description: Array of home team scores for each overtime period away_ot_scores: type: array items: type: integer nullable: true description: Array of away team scores for each overtime period NCAABStanding: type: object properties: team: $ref: '#/components/schemas/NCAABTeam' conference: $ref: '#/components/schemas/NCAABConference' season: type: integer description: Season year (note - API accepts and returns season year that is 1 less than DB storage) wins: type: integer losses: type: integer win_percentage: type: number nullable: true conference_win_percentage: type: number nullable: true games_behind: type: number nullable: true home_record: type: string nullable: true away_record: type: string nullable: true conference_record: type: string nullable: true playoff_seed: type: integer nullable: true NCAABRanking: type: object properties: poll_id: type: string nullable: true team: $ref: '#/components/schemas/NCAABTeam' season: type: integer description: Season year (note - API accepts and returns season year that is 1 less than DB storage) week: type: integer rank: type: integer first_place_votes: type: integer nullable: true trend: type: string nullable: true points: type: integer nullable: true record: type: string nullable: true NCAABPlayerStat: type: object properties: player: $ref: '#/components/schemas/NCAABPlayer' team: $ref: '#/components/schemas/NCAABTeam' game: type: object properties: id: type: integer date: type: string format: date-time season: type: integer min: type: string nullable: true fgm: type: integer nullable: true fga: type: integer nullable: true fg3m: type: integer nullable: true fg3a: type: integer nullable: true ftm: type: integer nullable: true fta: type: integer nullable: true oreb: type: integer nullable: true dreb: type: integer nullable: true reb: type: integer nullable: true ast: type: integer nullable: true stl: type: integer nullable: true blk: type: integer nullable: true turnover: type: integer nullable: true pf: type: integer nullable: true pts: type: integer nullable: true NCAABTeamStat: type: object properties: team: $ref: '#/components/schemas/NCAABTeam' game: type: object properties: id: type: integer date: type: string format: date-time season: type: integer fgm: type: integer nullable: true fga: type: integer nullable: true fg_pct: type: number nullable: true fg3m: type: integer nullable: true fg3a: type: integer nullable: true fg3_pct: type: number nullable: true ftm: type: integer nullable: true fta: type: integer nullable: true ft_pct: type: number nullable: true oreb: type: integer nullable: true dreb: type: integer nullable: true reb: type: integer nullable: true ast: type: integer nullable: true stl: type: integer nullable: true blk: type: integer nullable: true turnovers: type: integer nullable: true fouls: type: integer nullable: true NCAABPlayerSeasonStat: type: object properties: player: $ref: '#/components/schemas/NCAABPlayer' team: $ref: '#/components/schemas/NCAABTeam' season: type: integer description: Season year (note - API accepts and returns season year that is 1 less than DB storage) games_played: type: integer nullable: true min: type: number nullable: true fgm: type: number nullable: true fga: type: number nullable: true fg_pct: type: number nullable: true fg3m: type: number nullable: true fg3a: type: number nullable: true fg3_pct: type: number nullable: true ftm: type: number nullable: true fta: type: number nullable: true ft_pct: type: number nullable: true reb: type: number nullable: true ast: type: number nullable: true stl: type: number nullable: true blk: type: number nullable: true turnover: type: number nullable: true pts: type: number nullable: true NCAABTeamSeasonStat: type: object properties: team: $ref: '#/components/schemas/NCAABTeam' season: type: integer description: Season year (note - API accepts and returns season year that is 1 less than DB storage) games_played: type: integer nullable: true fgm: type: number nullable: true fga: type: number nullable: true fg_pct: type: number nullable: true fg3m: type: number nullable: true fg3a: type: number nullable: true fg3_pct: type: number nullable: true ftm: type: number nullable: true fta: type: number nullable: true ft_pct: type: number nullable: true oreb: type: number nullable: true dreb: type: number nullable: true reb: type: number nullable: true ast: type: number nullable: true stl: type: number nullable: true blk: type: number nullable: true turnover: type: number nullable: true pts: type: number nullable: true NCAABPlay: type: object properties: game_id: type: integer order: type: integer description: Play order number (starts at 1 and increments sequentially) type: type: string nullable: true text: type: string home_score: type: integer away_score: type: integer period: type: integer clock: type: string nullable: true scoring_play: type: boolean score_value: type: integer nullable: true team: $ref: '#/components/schemas/NCAABTeam' nullable: true NCAABBracketTeam: type: object description: Team information in bracket context with seed and game outcome properties: id: type: integer nullable: true description: Team ID (null if TBD or placeholder) conference_id: type: integer nullable: true description: Conference ID name: type: string description: Team name full_name: type: string nullable: true description: Team full display name abbreviation: type: string nullable: true description: Team abbreviation seed: type: string nullable: true description: Tournament seed (e.g., "1", "16") score: type: integer nullable: true description: Team's score in this game winner: type: boolean nullable: true description: Whether this team won the game NCAABBracket: type: object description: NCAA Tournament bracket entry representing a single game properties: game_id: type: integer nullable: true description: Associated game ID season: type: integer description: Season year (offset by -1 from database value) round: type: integer description: Round ID (1=First Four/Play-in, 2=Round of 64, 3=Round of 32, 4=Sweet 16, 5=Elite 8, 6=Final Four, 7=Championship) region_id: type: integer nullable: true description: Region ID region_label: type: string nullable: true description: Region name (e.g., East, West, South, Midwest) bracket_location: type: integer nullable: true description: Position in bracket visualization date: type: string format: date-time nullable: true description: Game date and time location: type: string nullable: true description: Physical location/venue of the game status: type: string nullable: true description: Game status (pre, in, post) status_detail: type: string nullable: true description: Detailed status information broadcasts: type: array nullable: true description: TV/streaming broadcast channels items: type: string home_team: allOf: - $ref: '#/components/schemas/NCAABBracketTeam' - nullable: true description: Home team with tournament seed and game outcome away_team: allOf: - $ref: '#/components/schemas/NCAABBracketTeam' - nullable: true description: Away team with tournament seed and game outcome NCAABBettingOdd: type: object properties: id: type: integer description: Betting odd ID game_id: type: integer description: Game ID vendor: type: string description: Sportsbook vendor name spread_home_value: type: string nullable: true description: Home team spread value spread_home_odds: type: integer nullable: true description: Home team spread odds spread_away_value: type: string nullable: true description: Away team spread value spread_away_odds: type: integer nullable: true description: Away team spread odds moneyline_home_odds: type: integer nullable: true description: Home team moneyline odds moneyline_away_odds: type: integer nullable: true description: Away team moneyline odds total_value: type: string nullable: true description: Total points line value total_over_odds: type: integer nullable: true description: Odds for over total total_under_odds: type: integer nullable: true description: Odds for under total updated_at: type: string format: date-time description: Last update timestamp # MMA Components MMALeague: type: object properties: id: type: integer name: type: string abbreviation: type: string nullable: true MMAWeightClass: type: object properties: id: type: integer name: type: string abbreviation: type: string nullable: true weight_limit_lbs: type: integer nullable: true gender: type: string nullable: true MMAFighter: type: object properties: id: type: integer name: type: string first_name: type: string nullable: true last_name: type: string nullable: true nickname: type: string nullable: true date_of_birth: type: string format: date nullable: true birth_place: type: string nullable: true nationality: type: string nullable: true height_inches: type: integer nullable: true reach_inches: type: integer nullable: true weight_lbs: type: integer nullable: true stance: type: string nullable: true record_wins: type: integer nullable: true record_losses: type: integer nullable: true record_draws: type: integer nullable: true record_no_contests: type: integer nullable: true active: type: boolean weight_class: $ref: '#/components/schemas/MMAWeightClass' nullable: true MMAEvent: type: object properties: id: type: integer name: type: string short_name: type: string nullable: true date: type: string format: date venue_name: type: string nullable: true venue_city: type: string nullable: true venue_state: type: string nullable: true venue_country: type: string nullable: true status: type: string nullable: true main_card_start_time: type: string format: date-time nullable: true prelims_start_time: type: string format: date-time nullable: true early_prelims_start_time: type: string format: date-time nullable: true league: $ref: '#/components/schemas/MMALeague' nullable: true MMAFight: type: object properties: id: type: integer event: $ref: '#/components/schemas/MMAEvent' nullable: true fighter1: $ref: '#/components/schemas/MMAFighter' fighter2: $ref: '#/components/schemas/MMAFighter' winner: $ref: '#/components/schemas/MMAFighter' nullable: true weight_class: $ref: '#/components/schemas/MMAWeightClass' nullable: true is_main_event: type: boolean is_title_fight: type: boolean card_segment: type: string nullable: true fight_order: type: integer nullable: true scheduled_rounds: type: integer result_method: type: string nullable: true result_method_detail: type: string nullable: true result_round: type: integer nullable: true result_time: type: string nullable: true status: type: string nullable: true MMAFightStat: type: object properties: id: type: integer fight_id: type: integer fighter: $ref: '#/components/schemas/MMAFighter' is_winner: type: boolean nullable: true knockdowns: type: integer nullable: true significant_strikes_landed: type: integer nullable: true significant_strikes_attempted: type: integer nullable: true significant_strike_pct: type: number nullable: true total_strikes_landed: type: integer nullable: true total_strikes_attempted: type: integer nullable: true head_strikes_landed: type: integer nullable: true head_strikes_attempted: type: integer nullable: true body_strikes_landed: type: integer nullable: true body_strikes_attempted: type: integer nullable: true leg_strikes_landed: type: integer nullable: true leg_strikes_attempted: type: integer nullable: true sig_distance_head_landed: type: integer nullable: true sig_distance_head_attempted: type: integer nullable: true sig_distance_body_landed: type: integer nullable: true sig_distance_body_attempted: type: integer nullable: true sig_distance_leg_landed: type: integer nullable: true sig_distance_leg_attempted: type: integer nullable: true sig_clinch_head_landed: type: integer nullable: true sig_clinch_head_attempted: type: integer nullable: true sig_clinch_body_landed: type: integer nullable: true sig_clinch_body_attempted: type: integer nullable: true sig_clinch_leg_landed: type: integer nullable: true sig_clinch_leg_attempted: type: integer nullable: true sig_ground_head_landed: type: integer nullable: true sig_ground_head_attempted: type: integer nullable: true sig_ground_body_landed: type: integer nullable: true sig_ground_body_attempted: type: integer nullable: true sig_ground_leg_landed: type: integer nullable: true sig_ground_leg_attempted: type: integer nullable: true target_head_pct: type: number nullable: true target_body_pct: type: number nullable: true target_leg_pct: type: number nullable: true takedowns_landed: type: integer nullable: true takedowns_attempted: type: integer nullable: true takedown_pct: type: number nullable: true takedown_slams: type: integer nullable: true slam_rate: type: number nullable: true reversals: type: integer nullable: true submissions_attempted: type: integer nullable: true control_time_seconds: type: integer nullable: true advances: type: integer nullable: true advance_to_back: type: integer nullable: true advance_to_half_guard: type: integer nullable: true advance_to_mount: type: integer nullable: true advance_to_side: type: integer nullable: true MMAFighterRanking: type: object properties: rank: type: integer is_champion: type: boolean is_interim_champion: type: boolean fighter: $ref: '#/components/schemas/MMAFighter' MMAWeightClassRanking: type: object properties: weight_class: $ref: '#/components/schemas/MMAWeightClass' league: $ref: '#/components/schemas/MMALeague' rankings: type: array items: $ref: '#/components/schemas/MMAFighterRanking' MMABettingOdd: type: object properties: id: type: integer fight_id: type: integer vendor: type: string fighter1: $ref: '#/components/schemas/MMAFighter' fighter2: $ref: '#/components/schemas/MMAFighter' fighter1_odds: type: integer nullable: true fighter2_odds: type: integer nullable: true updated_at: type: string format: date-time # CS2 (Counter-Strike 2) Components CS2Team: type: object properties: id: type: integer name: type: string slug: type: string nullable: true short_name: type: string nullable: true CS2TeamSlim: type: object properties: id: type: integer name: type: string short_name: type: string nullable: true CS2Player: type: object properties: id: type: integer nickname: type: string first_name: type: string nullable: true last_name: type: string nullable: true full_name: type: string nullable: true team: $ref: '#/components/schemas/CS2TeamSlim' nullable: true age: type: integer nullable: true birthday: type: string format: date nullable: true steam_id: type: string nullable: true is_active: type: boolean CS2PlayerSlim: type: object properties: id: type: integer nickname: type: string CS2TournamentStage: type: object properties: id: type: integer name: type: string stage_type: type: string nullable: true stage_order: type: integer nullable: true best_of: type: integer nullable: true rounds_count: type: integer nullable: true start_date: type: string format: date nullable: true end_date: type: string format: date nullable: true status: type: string nullable: true CS2Tournament: type: object properties: id: type: integer name: type: string slug: type: string nullable: true tier: type: string nullable: true description: Tournament tier (S, A, B, C, D) start_date: type: string format: date nullable: true end_date: type: string format: date nullable: true prize_pool: type: integer nullable: true prize_pool_currency: type: string nullable: true location: type: string nullable: true country: type: string nullable: true is_online: type: boolean status: type: string nullable: true CS2TeamMapPoolStat: type: object properties: team_id: type: integer map_name: type: string matches_played: type: integer wins: type: integer losses: type: integer win_rate: type: number is_permaban: type: boolean CS2TeamRanking: type: object properties: rank: type: integer points: type: number ranking_type: type: string description: Ranking type (bo3, bo1) ranking_date: type: string format: date team: $ref: '#/components/schemas/CS2TeamSlim' CS2Match: type: object properties: id: type: integer slug: type: string nullable: true tournament: $ref: '#/components/schemas/CS2Tournament' stage: $ref: '#/components/schemas/CS2TournamentStage' nullable: true team1: $ref: '#/components/schemas/CS2TeamSlim' nullable: true team2: $ref: '#/components/schemas/CS2TeamSlim' nullable: true team1_score: type: integer nullable: true team2_score: type: integer nullable: true winner: $ref: '#/components/schemas/CS2TeamSlim' nullable: true best_of: type: integer nullable: true status: type: string nullable: true start_time: type: string format: date-time nullable: true end_time: type: string format: date-time nullable: true CS2MatchMap: type: object properties: id: type: integer match_id: type: integer map_name: type: string map_number: type: integer team1_score: type: integer nullable: true team2_score: type: integer nullable: true winner: $ref: '#/components/schemas/CS2TeamSlim' nullable: true duration_seconds: type: integer nullable: true overtime_rounds: type: integer nullable: true CS2RoundTeamStat: type: object properties: id: type: integer team: $ref: '#/components/schemas/CS2TeamSlim' team_side: type: string description: CT or T won: type: boolean is_pistol_round: type: boolean kills: type: integer deaths: type: integer assists: type: integer headshots: type: integer first_kills: type: integer first_deaths: type: integer trade_kills: type: integer trade_deaths: type: integer damage: type: integer utility_value: type: integer nullable: true equipment_value: type: integer nullable: true money_spent: type: integer nullable: true money_saved: type: integer nullable: true loss_bonus_streak: type: integer nullable: true win_streak: type: integer nullable: true clutches: type: integer nullable: true clutch_attempts: type: integer nullable: true CS2Round: type: object properties: id: type: integer round_number: type: integer winner_side: type: string description: CT or T loser_side: type: string description: CT or T end_reason: type: string nullable: true duration_seconds: type: integer nullable: true team_stats: type: array items: $ref: '#/components/schemas/CS2RoundTeamStat' CS2MatchMapStats: type: object properties: match_map_id: type: integer map_name: type: string rounds: type: array items: $ref: '#/components/schemas/CS2Round' CS2PlayerMatchStat: type: object properties: player: $ref: '#/components/schemas/CS2PlayerSlim' match_id: type: integer team_id: type: integer nullable: true kills: type: integer deaths: type: integer assists: type: integer adr: type: number description: Average Damage per Round kast: type: number description: Kill, Assist, Survived, Traded percentage rating: type: number headshot_percentage: type: number first_kills: type: integer first_deaths: type: integer clutches_won: type: integer nullable: true CS2PlayerMatchMapStat: type: object properties: player: $ref: '#/components/schemas/CS2PlayerSlim' match_map_id: type: integer kills: type: integer deaths: type: integer assists: type: integer adr: type: number description: Average Damage per Round kast: type: number description: Kill, Assist, Survived, Traded percentage rating: type: number headshot_percentage: type: number first_kills: type: integer first_deaths: type: integer clutches_won: type: integer nullable: true CS2PlayerAccuracyStat: type: object properties: player_id: type: integer hit_group: type: string description: Body part hit (Head, Chest, Stomach, LeftArm, RightArm, LeftLeg, RightLeg) hits_sum: type: integer damage_sum: type: integer kills_sum: type: integer # League of Legends (LOL) Components LOLRegion: type: object properties: id: type: integer name: type: string description: Region name (e.g., North America, Europe) LOLTeam: type: object properties: id: type: integer name: type: string slug: type: string nullable: true country: type: string nullable: true region: $ref: '#/components/schemas/LOLRegion' nullable: true LOLTeamSlim: type: object properties: id: type: integer name: type: string LOLPlayerSlim: type: object properties: id: type: integer nickname: type: string nullable: true LOLTournamentTeam: type: object properties: tournament_id: type: integer team: $ref: '#/components/schemas/LOLTeamSlim' LOLTournamentRoster: type: object properties: tournament_id: type: integer team_id: type: integer player: $ref: '#/components/schemas/LOLPlayerSlim' LOLMatchMap: type: object properties: id: type: integer match_id: type: integer game_number: type: integer nullable: true winner: $ref: '#/components/schemas/LOLTeamSlim' nullable: true loser: $ref: '#/components/schemas/LOLTeamSlim' nullable: true duration: type: integer nullable: true status: type: string nullable: true begin_at: type: string format: date-time nullable: true end_at: type: string format: date-time nullable: true LOLPlayer: type: object properties: id: type: integer nickname: type: string slug: type: string nullable: true first_name: type: string nullable: true last_name: type: string nullable: true birthday: type: string format: date nullable: true country: type: string nullable: true country_code: type: string nullable: true team: $ref: '#/components/schemas/LOLTeamSlim' nullable: true LOLChampion: type: object properties: id: type: integer name: type: string LOLItem: type: object properties: id: type: integer name: type: string is_trinket: type: boolean LOLSpell: type: object properties: id: type: integer name: type: string LOLRunePath: type: object properties: id: type: integer name: type: string LOLRune: type: object properties: id: type: integer name: type: string rune_path: $ref: '#/components/schemas/LOLRunePath' nullable: true rune_type: type: string description: Rune type (keystone, slot1, slot2, slot3, shard) LOLTournament: type: object properties: id: type: integer name: type: string slug: type: string nullable: true start_date: type: string format: date-time nullable: true end_date: type: string format: date-time nullable: true prize: type: integer nullable: true tier: type: string nullable: true description: Tournament tier (s, a, b, c) status: type: string nullable: true LOLMatch: type: object properties: id: type: integer slug: type: string nullable: true tournament: $ref: '#/components/schemas/LOLTournament' team1: $ref: '#/components/schemas/LOLTeamSlim' nullable: true team2: $ref: '#/components/schemas/LOLTeamSlim' nullable: true winner: $ref: '#/components/schemas/LOLTeamSlim' nullable: true team1_score: type: integer nullable: true team2_score: type: integer nullable: true bo_type: type: integer nullable: true description: Best of type (1, 3, 5) status: type: string nullable: true start_date: type: string format: date-time nullable: true end_date: type: string format: date-time nullable: true LOLChampionStats: type: object properties: id: type: integer champion: $ref: '#/components/schemas/LOLChampion' games_count: type: integer picks_count: type: integer picks_rate: type: number wins_count: type: integer loses_count: type: integer win_rate: type: number ban_rate: type: number avg_kills: type: number avg_deaths: type: number avg_assists: type: number kda: type: number kp: type: number description: Kill participation rate avg_damage_dealt_to_champions: type: number avg_gold_earned: type: number avg_gold_per_min: type: number avg_creep_score: type: number LOLPlayerMatchMapStat: type: object properties: id: type: integer match_map_id: type: integer player: $ref: '#/components/schemas/LOLPlayerSlim' team: $ref: '#/components/schemas/LOLTeamSlim' champion: $ref: '#/components/schemas/LOLChampion' role: type: string nullable: true level: type: integer kills: type: integer deaths: type: integer assists: type: integer kill_participation: type: number creep_score: type: integer gold_earned: type: integer gold_per_min: type: number total_damage_dealt_to_champions: type: integer wards_placed: type: integer kills_wards: type: integer items: type: array items: $ref: '#/components/schemas/LOLItem' spells: type: array items: $ref: '#/components/schemas/LOLSpell' runes: type: array items: type: object properties: rune_path: $ref: '#/components/schemas/LOLRunePath' nullable: true keystone: $ref: '#/components/schemas/LOLRune' nullable: true path_type: type: integer LOLTeamMatchMapStat: type: object properties: id: type: integer match_map_id: type: integer team: $ref: '#/components/schemas/LOLTeamSlim' enemy_team: $ref: '#/components/schemas/LOLTeamSlim' side: type: integer color: type: string nullable: true kills: type: integer deaths: type: integer assists: type: integer creep_score: type: integer gold_earned: type: integer total_damage_dealt_to_champions: type: integer baron_kills: type: integer dragon_kills: type: integer herald_kills: type: integer first_blood: type: integer first_tower: type: integer first_baron: type: integer first_dragon: type: integer LOLPlayerOverallStat: type: object properties: id: type: integer player: $ref: '#/components/schemas/LOLPlayerSlim' maps_played: type: integer total_kills: type: integer avg_kills: type: number total_deaths: type: integer avg_deaths: type: number total_assists: type: integer avg_assists: type: number kp: type: number description: Kill participation rate total_damage: type: integer avg_damage: type: number avg_gold_per_min: type: number avg_creep_score: type: number # Dota 2 Components DotaRegion: type: object properties: id: type: integer name: type: string description: Region name (e.g., Europe, North America) DotaTeam: type: object properties: id: type: integer name: type: string slug: type: string nullable: true country_name: type: string nullable: true region: $ref: '#/components/schemas/DotaRegion' nullable: true rank: type: integer nullable: true total_money: type: number nullable: true tour_wins: type: integer nullable: true DotaTeamSlim: type: object properties: id: type: integer name: type: string DotaPlayerSlim: type: object properties: id: type: integer nickname: type: string nullable: true DotaPlayer: type: object properties: id: type: integer nickname: type: string slug: type: string nullable: true first_name: type: string nullable: true last_name: type: string nullable: true birthday: type: string format: date nullable: true country_name: type: string nullable: true country_code: type: string nullable: true is_coach: type: boolean total_prize: type: number nullable: true team: $ref: '#/components/schemas/DotaTeamSlim' nullable: true DotaHero: type: object properties: id: type: integer name: type: string localized_name: type: string DotaItem: type: object properties: id: type: integer name: type: string DotaAbility: type: object properties: id: type: integer name: type: string DotaTournament: type: object properties: id: type: integer name: type: string slug: type: string nullable: true start_date: type: string format: date-time nullable: true end_date: type: string format: date-time nullable: true prize: type: number nullable: true players_prize: type: number nullable: true teams_prize: type: number nullable: true event_type: type: string nullable: true description: Event type (lan, online) tier: type: string nullable: true description: Tournament tier (s, a, b, c) status: type: string nullable: true DotaTournamentTeam: type: object properties: tournament_id: type: integer team: $ref: '#/components/schemas/DotaTeamSlim' DotaTournamentRoster: type: object properties: tournament_id: type: integer team_id: type: integer player: $ref: '#/components/schemas/DotaPlayerSlim' DotaHeroStats: type: object properties: id: type: integer hero: $ref: '#/components/schemas/DotaHero' games_count: type: integer picks_count: type: integer picks_rate: type: number wins_count: type: integer loses_count: type: integer win_rate: type: number ban_rate: type: number early_win_rate: type: number mid_win_rate: type: number late_win_rate: type: number avg_kills: type: number nullable: true avg_deaths: type: number nullable: true avg_assists: type: number nullable: true kda: type: number kp: type: number description: Kill participation rate game_impact: type: number avg_net_worth: type: number avg_gpm: type: number avg_xpm: type: number avg_damage: type: number avg_last_hits: type: number avg_denies: type: number avg_heal: type: number DotaMatch: type: object properties: id: type: integer slug: type: string nullable: true tournament: $ref: '#/components/schemas/DotaTournament' stage: type: string nullable: true team1: $ref: '#/components/schemas/DotaTeamSlim' nullable: true team2: $ref: '#/components/schemas/DotaTeamSlim' nullable: true winner: $ref: '#/components/schemas/DotaTeamSlim' nullable: true team1_score: type: integer nullable: true team2_score: type: integer nullable: true bo_type: type: integer nullable: true description: Best of type (1, 3, 5) status: type: string nullable: true start_date: type: string format: date-time nullable: true end_date: type: string format: date-time nullable: true DotaMatchMap: type: object properties: id: type: integer match_id: type: integer game_number: type: integer nullable: true winner: $ref: '#/components/schemas/DotaTeamSlim' nullable: true loser: $ref: '#/components/schemas/DotaTeamSlim' nullable: true duration: type: integer nullable: true status: type: string nullable: true begin_at: type: string format: date-time nullable: true end_at: type: string format: date-time nullable: true DotaPlayerMatchMapStat: type: object properties: id: type: integer match_map_id: type: integer player: $ref: '#/components/schemas/DotaPlayerSlim' team: $ref: '#/components/schemas/DotaTeamSlim' hero: $ref: '#/components/schemas/DotaHero' role: type: integer nullable: true side: type: integer kills: type: integer deaths: type: integer assists: type: integer hero_level: type: integer net_worth: type: integer gold_per_min: type: integer xp_per_min: type: integer hero_damage: type: integer tower_damage: type: integer last_hits: type: integer denies: type: integer heal: type: integer items: type: array items: $ref: '#/components/schemas/DotaItem' abilities: type: array items: type: object properties: ability: $ref: '#/components/schemas/DotaAbility' level: type: integer DotaTeamMatchMapStat: type: object properties: id: type: integer match_map_id: type: integer team: $ref: '#/components/schemas/DotaTeamSlim' enemy_team: $ref: '#/components/schemas/DotaTeamSlim' side: type: integer score: type: integer first_blood: type: boolean first_tower: type: boolean first_roshan: type: boolean roshan_kills: type: integer drafts: type: array items: type: object properties: hero: $ref: '#/components/schemas/DotaHero' choice_type: type: integer description: 0 for ban, 1 for pick order_number: type: integer DotaPlayerOverallStat: type: object properties: id: type: integer player: $ref: '#/components/schemas/DotaPlayerSlim' maps_played: type: integer total_kills: type: integer avg_kills: type: number total_deaths: type: integer avg_deaths: type: number total_assists: type: integer avg_assists: type: number kda: type: number kp: type: number description: Kill participation rate game_impact: type: number avg_net_worth: type: number avg_gpm: type: number description: Average gold per minute avg_xpm: type: number description: Average XP per minute avg_damage: type: number avg_last_hits: type: number avg_denies: type: number avg_heal: type: number # FIFA World Cup 2026 Components FIFATeam: type: object properties: id: type: integer name: type: string description: Full country name abbreviation: type: string nullable: true description: Three-letter country code (e.g., USA, BRA, GER) country_code: type: string nullable: true description: ISO country code confederation: type: string nullable: true description: FIFA confederation (UEFA, CONMEBOL, CONCACAF, CAF, AFC, OFC) FIFAStadium: type: object properties: id: type: integer name: type: string description: Stadium name city: type: string nullable: true description: Host city country: type: string nullable: true description: Country code FIFAGroup: type: object properties: id: type: integer name: type: string description: Group name (e.g., "A", "B") FIFAStage: type: object properties: id: type: integer name: type: string description: Stage name (e.g., "Group Stage", "Round of 16") order: type: integer description: Stage sequence order FIFAMatchTeamSource: type: object description: Source information for TBD teams in knockout matches properties: type: type: string description: Source type (group_1st, group_2nd, winner, loser, etc.) source_match_id: type: integer nullable: true source_match_number: type: integer nullable: true source_group_id: type: integer nullable: true source_group_name: type: string nullable: true placeholder: type: string nullable: true description: type: string description: Human-readable description (e.g., "Winner of Match 49") FIFAMatch: type: object properties: id: type: integer match_number: type: integer nullable: true datetime: type: string format: date-time description: Match date and time in UTC status: type: string description: Match status (scheduled, in_progress, completed, postponed, cancelled) stage: $ref: '#/components/schemas/FIFAStage' group: $ref: '#/components/schemas/FIFAGroup' nullable: true stadium: $ref: '#/components/schemas/FIFAStadium' nullable: true home_team: $ref: '#/components/schemas/FIFATeam' nullable: true description: Home team (null if TBD in knockout stage) away_team: $ref: '#/components/schemas/FIFATeam' nullable: true description: Away team (null if TBD in knockout stage) home_team_source: $ref: '#/components/schemas/FIFAMatchTeamSource' nullable: true description: Source info when home team is TBD away_team_source: $ref: '#/components/schemas/FIFAMatchTeamSource' nullable: true description: Source info when away team is TBD home_score: type: integer nullable: true away_score: type: integer nullable: true home_score_penalties: type: integer nullable: true away_score_penalties: type: integer nullable: true FIFAStanding: type: object properties: team: $ref: '#/components/schemas/FIFATeam' group: $ref: '#/components/schemas/FIFAGroup' position: type: integer description: Position within the group played: type: integer won: type: integer drawn: type: integer lost: type: integer goals_for: type: integer goals_against: type: integer goal_difference: type: integer points: type: integer FIFABettingOdd: type: object properties: id: type: integer match_id: type: integer vendor: type: string moneyline_home_odds: type: integer nullable: true moneyline_away_odds: type: integer nullable: true moneyline_draw_odds: type: number nullable: true updated_at: type: string format: date-time FIFAFuturesOdd: type: object properties: id: type: integer market_type: type: string description: Type of futures market market_name: type: string description: Name of the futures market subject: $ref: '#/components/schemas/FIFATeam' description: Team the odds are for vendor: type: string american_odds: type: integer nullable: true decimal_odds: type: number nullable: true updated_at: type: string format: date-time nullable: true # Formula 1 Components F1Driver: type: object properties: id: type: integer first_name: type: string nullable: true last_name: type: string nullable: true display_name: type: string short_name: type: string nullable: true description: Three-letter abbreviation (e.g., VER, HAM, LEC) country_code: type: string nullable: true description: ISO country code country_name: type: string nullable: true racing_number: type: string nullable: true description: Driver's racing number F1DriverWithTeam: type: object description: Driver with team information (used in session-related endpoints) properties: id: type: integer first_name: type: string nullable: true last_name: type: string nullable: true display_name: type: string short_name: type: string nullable: true description: Three-letter abbreviation (e.g., VER, HAM, LEC) country_code: type: string nullable: true description: ISO country code country_name: type: string nullable: true racing_number: type: string nullable: true description: Driver's racing number team: $ref: '#/components/schemas/F1Team' nullable: true description: Driver's team for the event season F1Team: type: object properties: id: type: integer name: type: string display_name: type: string nullable: true color: type: string nullable: true description: Team color hex code F1Circuit: type: object properties: id: type: integer name: type: string short_name: type: string nullable: true country_code: type: string nullable: true description: ISO country code country_name: type: string nullable: true F1Season: type: object properties: year: type: integer display_name: type: string nullable: true F1Event: type: object properties: id: type: integer name: type: string description: Event name (e.g., Monaco Grand Prix) short_name: type: string nullable: true season: type: integer start_date: type: string format: date-time nullable: true description: Event weekend start date end_date: type: string format: date-time nullable: true description: Event weekend end date status: type: string nullable: true circuit: $ref: '#/components/schemas/F1Circuit' nullable: true location: type: string nullable: true description: City or location name country_code: type: string nullable: true country_name: type: string nullable: true F1Session: type: object properties: id: type: integer event: $ref: '#/components/schemas/F1Event' type: type: string description: Session type (Practice, Qualifying, Sprint, Race) name: type: string nullable: true date: type: string format: date-time nullable: true status: type: string nullable: true F1SessionResult: type: object properties: id: type: integer session: $ref: '#/components/schemas/F1Session' driver: $ref: '#/components/schemas/F1DriverWithTeam' position: type: integer nullable: true is_winner: type: boolean description: True if position is 1 laps_completed: type: integer nullable: true pit_stops: type: integer nullable: true retired: type: boolean description: Whether driver retired from the session F1DriverStanding: type: object properties: id: type: integer season: type: integer driver: $ref: '#/components/schemas/F1DriverWithTeam' position: type: integer nullable: true points: type: number nullable: true F1TeamStanding: type: object properties: id: type: integer season: type: integer team: $ref: '#/components/schemas/F1Team' position: type: integer nullable: true points: type: number nullable: true F1LapTime: type: object properties: id: type: integer session: $ref: '#/components/schemas/F1Session' driver: $ref: '#/components/schemas/F1DriverWithTeam' lap_number: type: integer lap_time: type: string nullable: true description: Lap time in MM:SS.mmm format lap_time_ms: type: integer nullable: true description: Lap time in milliseconds is_pit_out_lap: type: boolean is_pit_in_lap: type: boolean F1QualifyingResult: type: object properties: id: type: integer session: $ref: '#/components/schemas/F1Session' driver: $ref: '#/components/schemas/F1DriverWithTeam' q1_time: type: string nullable: true description: Q1 lap time q1_time_ms: type: integer nullable: true q1_lap: type: integer nullable: true q2_time: type: string nullable: true description: Q2 lap time q2_time_ms: type: integer nullable: true q2_lap: type: integer nullable: true q3_time: type: string nullable: true description: Q3 lap time q3_time_ms: type: integer nullable: true q3_lap: type: integer nullable: true final_position: type: integer nullable: true description: Final qualifying position F1PitStop: type: object properties: id: type: integer session: $ref: '#/components/schemas/F1Session' driver: $ref: '#/components/schemas/F1DriverWithTeam' stop_number: type: integer lap: type: integer time_of_day: type: string nullable: true description: Time of day in HH:MM:SS format duration_seconds: type: number nullable: true description: Pit stop duration in seconds total_time_seconds: type: number nullable: true description: Total time lost including entry/exit F1TireStint: type: object properties: id: type: integer session: $ref: '#/components/schemas/F1Session' driver: $ref: '#/components/schemas/F1DriverWithTeam' stint_number: type: integer compound: type: string nullable: true description: Tire compound (SOFT, MEDIUM, HARD, INTERMEDIATE, WET) is_new: type: boolean nullable: true description: Whether tires were new start_lap: type: integer nullable: true total_laps: type: integer nullable: true F1SessionWeather: type: object properties: id: type: integer session: $ref: '#/components/schemas/F1Session' air_temp: type: number nullable: true description: Air temperature in Celsius track_temp: type: number nullable: true description: Track temperature in Celsius humidity: type: number nullable: true description: Humidity percentage pressure: type: number nullable: true description: Atmospheric pressure wind_speed: type: number nullable: true description: Wind speed wind_direction: type: integer nullable: true description: Wind direction in degrees rainfall: type: number nullable: true description: Rainfall amount F1RaceControlMessage: type: object properties: id: type: integer session: $ref: '#/components/schemas/F1Session' utc_time: type: string format: date-time nullable: true lap: type: integer nullable: true category: type: string nullable: true description: Message category (Flag, SafetyCar, DRS, etc.) flag: type: string nullable: true description: Flag type (GREEN, YELLOW, RED, etc.) scope: type: string nullable: true description: Scope (Track, Sector, Driver) sector: type: integer nullable: true driver_number: type: string nullable: true message: type: string nullable: true F1PositionHistory: type: object properties: id: type: integer session: $ref: '#/components/schemas/F1Session' driver: $ref: '#/components/schemas/F1DriverWithTeam' lap_number: type: integer position: type: integer F1SessionTimingStats: type: object properties: id: type: integer session: $ref: '#/components/schemas/F1Session' driver: $ref: '#/components/schemas/F1DriverWithTeam' best_lap_time: type: string nullable: true best_lap_time_ms: type: integer nullable: true best_lap_number: type: integer nullable: true best_sector_1: type: number nullable: true description: Best sector 1 time in milliseconds best_sector_2: type: number nullable: true description: Best sector 2 time in milliseconds best_sector_3: type: number nullable: true description: Best sector 3 time in milliseconds speed_i1: type: integer nullable: true description: Speed at intermediate 1 speed_i2: type: integer nullable: true description: Speed at intermediate 2 speed_fl: type: integer nullable: true description: Speed at finish line speed_trap: type: integer nullable: true description: Maximum speed trap measurement F1TrackStatus: type: object properties: id: type: integer session: $ref: '#/components/schemas/F1Session' utc_time: type: string format: date-time status: type: string description: Track status code F1FuturesOddSubjectDriver: type: object properties: type: type: string enum: [driver] driver: $ref: '#/components/schemas/F1Driver' F1FuturesOddSubjectConstructor: type: object properties: type: type: string enum: [constructor] team: $ref: '#/components/schemas/F1Team' F1FuturesOdd: type: object description: F1 futures betting odds (championship winner, constructor championship, etc.) properties: id: type: integer description: Unique futures odd ID market_type: type: string description: Type of futures market (e.g., driver_championship, constructor_championship) market_name: type: string description: Display name of the futures market subject: oneOf: - $ref: '#/components/schemas/F1FuturesOddSubjectDriver' - $ref: '#/components/schemas/F1FuturesOddSubjectConstructor' description: The driver or constructor this odd is for vendor: type: string description: Sportsbook vendor name american_odds: type: integer nullable: true description: American odds format decimal_odds: type: number nullable: true description: Decimal odds format updated_at: type: string format: date-time nullable: true description: Last update timestamp # PGA Tour Schemas PGAPlayer: type: object properties: id: type: integer description: Player ID first_name: type: string nullable: true description: Player first name last_name: type: string nullable: true description: Player last name display_name: type: string description: Player display name country: type: string nullable: true description: Player country country_code: type: string nullable: true description: Country code (e.g., "USA") height: type: string nullable: true description: Player height weight: type: string nullable: true description: Player weight birth_date: type: string nullable: true description: Player birth date birthplace_city: type: string nullable: true description: Birthplace city birthplace_state: type: string nullable: true description: Birthplace state birthplace_country: type: string nullable: true description: Birthplace country turned_pro: type: string nullable: true description: Year turned professional school: type: string nullable: true description: College/university attended residence_city: type: string nullable: true description: Current residence city residence_state: type: string nullable: true description: Current residence state residence_country: type: string nullable: true description: Current residence country owgr: type: integer nullable: true description: Official World Golf Ranking active: type: boolean description: Whether player is active PGATournament: type: object properties: id: type: integer description: Tournament ID season: type: integer description: Season year name: type: string description: Tournament name start_date: type: string format: date-time description: Tournament start date end_date: type: string nullable: true description: Tournament end date city: type: string nullable: true description: Tournament city state: type: string nullable: true description: Tournament state country: type: string nullable: true description: Tournament country course_name: type: string nullable: true description: Course name purse: type: string nullable: true description: Tournament purse status: type: string nullable: true description: Tournament status (COMPLETED, IN_PROGRESS, SCHEDULED) champion: $ref: "#/components/schemas/PGAPlayer" nullable: true PGACourse: type: object properties: id: type: integer description: Course ID name: type: string description: Course name city: type: string nullable: true description: Course city state: type: string nullable: true description: Course state country: type: string nullable: true description: Course country par: type: integer nullable: true description: Course par yardage: type: string nullable: true description: Course yardage established: type: string nullable: true description: Year established architect: type: string nullable: true description: Course architect fairway_grass: type: string nullable: true description: Fairway grass type rough_grass: type: string nullable: true description: Rough grass type green_grass: type: string nullable: true description: Green grass type PGATournamentResult: type: object properties: tournament: $ref: "#/components/schemas/PGATournament" player: $ref: "#/components/schemas/PGAPlayer" position: type: string nullable: true description: Final position (e.g., "1", "T5", "CUT", "WD") position_numeric: type: integer nullable: true description: Numeric position for sorting total_score: type: integer nullable: true description: Total strokes par_relative_score: type: integer nullable: true description: Score relative to par PGATournamentCourseStats: type: object properties: tournament: $ref: "#/components/schemas/PGATournament" course: $ref: "#/components/schemas/PGACourse" hole_number: type: integer description: Hole number (1-18) round_number: type: integer nullable: true description: Round number (null for tournament total) scoring_average: type: number nullable: true description: Scoring average for the hole scoring_diff: type: number nullable: true description: Scoring difference from par difficulty_rank: type: integer nullable: true description: Hole difficulty rank (1 = hardest) eagles: type: integer nullable: true birdies: type: integer nullable: true pars: type: integer nullable: true bogeys: type: integer nullable: true double_bogeys: type: integer nullable: true PGACourseHole: type: object properties: course: $ref: "#/components/schemas/PGACourse" hole_number: type: integer description: Hole number (1-18) par: type: integer description: Hole par yardage: type: integer nullable: true description: Hole yardage PGAPlayerRoundResult: type: object properties: tournament: $ref: "#/components/schemas/PGATournament" player: $ref: "#/components/schemas/PGAPlayer" round_number: type: integer description: Round number (1-4) score: type: integer nullable: true description: Round score (strokes) par_relative_score: type: integer nullable: true description: Score relative to par for the round PGAPlayerRoundStats: type: object properties: tournament: $ref: "#/components/schemas/PGATournament" player: $ref: "#/components/schemas/PGAPlayer" round_number: type: integer description: Round number (1-4, -1 for tournament total) sg_off_tee: type: number nullable: true description: Strokes Gained - Off the Tee sg_off_tee_rank: type: integer nullable: true sg_approach: type: number nullable: true description: Strokes Gained - Approach sg_approach_rank: type: integer nullable: true sg_around_green: type: number nullable: true description: Strokes Gained - Around the Green sg_around_green_rank: type: integer nullable: true sg_putting: type: number nullable: true description: Strokes Gained - Putting sg_putting_rank: type: integer nullable: true sg_total: type: number nullable: true description: Strokes Gained - Total sg_total_rank: type: integer nullable: true driving_accuracy: type: number nullable: true driving_accuracy_rank: type: integer nullable: true driving_distance: type: number nullable: true driving_distance_rank: type: integer nullable: true longest_drive: type: number nullable: true longest_drive_rank: type: integer nullable: true greens_in_regulation: type: number nullable: true greens_in_regulation_rank: type: integer nullable: true sand_saves: type: number nullable: true sand_saves_rank: type: integer nullable: true scrambling: type: number nullable: true scrambling_rank: type: integer nullable: true putts_per_gir: type: number nullable: true putts_per_gir_rank: type: integer nullable: true eagles: type: integer nullable: true birdies: type: integer nullable: true pars: type: integer nullable: true bogeys: type: integer nullable: true double_bogeys: type: integer nullable: true PGAPlayerSeasonStat: type: object properties: player: $ref: "#/components/schemas/PGAPlayer" stat_id: type: integer description: Stat category ID stat_name: type: string description: Stat category name stat_category: type: string nullable: true description: Stat category type season: type: integer description: Season year rank: type: integer nullable: true description: Player rank for this stat stat_value: type: array nullable: true description: Stat value data items: type: object properties: statName: type: string statValue: type: string PGAPlayerScorecard: type: object properties: tournament: $ref: "#/components/schemas/PGATournament" player: $ref: "#/components/schemas/PGAPlayer" round_number: type: integer description: Round number (1-4) hole_number: type: integer description: Hole number (1-18) par: type: integer description: Hole par score: type: integer nullable: true description: Player score on the hole # ATP Tennis Schemas (Men's Singles Only) ATPPlayer: type: object description: ATP tennis player (men's singles only) properties: id: type: integer description: Player ID first_name: type: string nullable: true description: Player first name last_name: type: string nullable: true description: Player last name full_name: type: string nullable: true description: Player full name country: type: string nullable: true description: Player country country_code: type: string nullable: true description: Player country code (e.g., ESP, ITA) birth_place: type: string nullable: true description: Player birth place age: type: integer nullable: true description: Player age height_cm: type: integer nullable: true description: Player height in centimeters weight_kg: type: integer nullable: true description: Player weight in kilograms plays: type: string nullable: true description: Playing hand (e.g., Right-Handed) turned_pro: type: integer nullable: true description: Year player turned professional ATPTournament: type: object properties: id: type: integer description: Tournament ID name: type: string nullable: true description: Tournament name location: type: string nullable: true description: Tournament location surface: type: string nullable: true description: Court surface (Hard, Clay, Grass, Carpet) category: type: string nullable: true description: Tournament category (Grand Slam, ATP 1000, ATP 500, ATP 250) season: type: integer nullable: true description: Tournament season year start_date: type: string format: date nullable: true description: Tournament start date end_date: type: string format: date nullable: true description: Tournament end date prize_money: type: integer nullable: true description: Total prize money prize_currency: type: string nullable: true description: Prize money currency draw_size: type: integer nullable: true description: Number of players in draw ATPRanking: type: object properties: id: type: integer description: Ranking ID player: $ref: "#/components/schemas/ATPPlayer" rank: type: integer description: Current ATP ranking points: type: integer description: ATP ranking points movement: type: integer nullable: true description: Ranking change from previous week ranking_date: type: string format: date description: Date of ranking ATPMatch: type: object properties: id: type: integer description: Match ID tournament: $ref: "#/components/schemas/ATPTournament" season: type: integer description: Match season year round: type: string nullable: true description: Match round (Finals, Semi-Finals, etc.) player1: $ref: "#/components/schemas/ATPPlayer" player2: $ref: "#/components/schemas/ATPPlayer" winner: $ref: "#/components/schemas/ATPPlayer" nullable: true score: type: string nullable: true description: Match score (e.g., 6-3 6-4 7-5) duration: type: string nullable: true description: Match duration (e.g., 02:35:00) number_of_sets: type: integer nullable: true description: Number of sets played match_status: type: string nullable: true description: Match status (F for finished) is_live: type: boolean description: Whether match is currently live ATPRace: type: object description: ATP Race to Turin standings properties: id: type: integer description: Race entry ID player: $ref: "#/components/schemas/ATPPlayer" ranking_date: type: string format: date description: Date of standings rank: type: integer description: Current race position points: type: integer description: Year-to-date points movement: type: integer description: Position change is_qualified: type: boolean description: Whether player has qualified for ATP Finals ATPMatchStats: type: object properties: id: type: integer description: Stats ID match: type: object properties: id: type: integer tournament_id: type: integer season: type: integer round: type: string nullable: true player1_id: type: integer player2_id: type: integer winner_id: type: integer nullable: true player: $ref: "#/components/schemas/ATPPlayer" set_number: type: integer nullable: true description: Set number (0 for full match stats) serve_rating: type: integer nullable: true description: Serve rating aces: type: integer nullable: true description: Number of aces double_faults: type: integer nullable: true description: Number of double faults first_serve_pct: type: number nullable: true description: First serve percentage first_serve_points_won_pct: type: number nullable: true description: First serve points won percentage second_serve_points_won_pct: type: number nullable: true description: Second serve points won percentage break_points_saved_pct: type: number nullable: true description: Break points saved percentage return_rating: type: integer nullable: true description: Return rating first_return_won_pct: type: number nullable: true description: First return points won percentage second_return_won_pct: type: number nullable: true description: Second return points won percentage break_points_converted_pct: type: number nullable: true description: Break points converted percentage total_service_points_won_pct: type: number nullable: true description: Total service points won percentage total_return_points_won_pct: type: number nullable: true description: Total return points won percentage total_points_won_pct: type: number nullable: true description: Total points won percentage ATPPlayerCareerStats: type: object properties: player: $ref: "#/components/schemas/ATPPlayer" career_titles: type: integer nullable: true description: Total career titles career_prize_money: type: number nullable: true description: Total career prize money singles_wins: type: integer nullable: true description: Career singles wins singles_losses: type: integer nullable: true description: Career singles losses ytd_wins: type: integer nullable: true description: Year-to-date wins ytd_losses: type: integer nullable: true description: Year-to-date losses ytd_titles: type: integer nullable: true description: Year-to-date titles ATPHeadToHead: type: object properties: id: type: integer description: Head-to-head record ID player1: $ref: "#/components/schemas/ATPPlayer" player2: $ref: "#/components/schemas/ATPPlayer" player1_wins: type: integer description: Player 1 wins in head-to-head player2_wins: type: integer description: Player 2 wins in head-to-head ATPBettingOdd: type: object properties: id: type: integer description: Odds ID match_id: type: integer description: Match ID vendor: type: string description: Sportsbook vendor (draftkings, fanduel, caesars) player1: $ref: "#/components/schemas/ATPPlayer" nullable: true player2: $ref: "#/components/schemas/ATPPlayer" nullable: true player1_odds: type: integer nullable: true description: Player 1 moneyline odds (American format) player2_odds: type: integer nullable: true description: Player 2 moneyline odds (American format) updated_at: type: string format: date-time description: Last update timestamp WTAPlayer: type: object description: WTA tennis player (women's singles only) properties: id: type: integer description: Player ID first_name: type: string nullable: true description: Player first name last_name: type: string nullable: true description: Player last name full_name: type: string nullable: true description: Player full name country: type: string nullable: true description: Player country country_code: type: string nullable: true description: Player country code (e.g., USA, POL) birth_place: type: string nullable: true description: Player birth place age: type: integer nullable: true description: Player age height_cm: type: integer nullable: true description: Player height in centimeters weight_kg: type: integer nullable: true description: Player weight in kilograms plays: type: string nullable: true description: Playing hand (e.g., Right-Handed) turned_pro: type: integer nullable: true description: Year player turned professional WTATournament: type: object properties: id: type: integer description: Tournament ID name: type: string nullable: true description: Tournament name location: type: string nullable: true description: Tournament location surface: type: string nullable: true description: Court surface (Hard, Clay, Grass, Carpet) category: type: string nullable: true description: Tournament category (Grand Slam, WTA 1000, WTA 500, WTA 250) season: type: integer nullable: true description: Tournament season year start_date: type: string format: date nullable: true description: Tournament start date end_date: type: string format: date nullable: true description: Tournament end date prize_money: type: integer nullable: true description: Total prize money prize_currency: type: string nullable: true description: Prize money currency draw_size: type: integer nullable: true description: Number of players in draw WTARanking: type: object properties: id: type: integer description: Ranking ID player: $ref: "#/components/schemas/WTAPlayer" rank: type: integer description: Current WTA ranking points: type: integer description: WTA ranking points movement: type: integer nullable: true description: Ranking change from previous week ranking_date: type: string format: date description: Date of ranking WTAMatch: type: object properties: id: type: integer description: Match ID tournament: $ref: "#/components/schemas/WTATournament" season: type: integer description: Match season year round: type: string nullable: true description: Match round (Finals, Semi-Finals, etc.) player1: $ref: "#/components/schemas/WTAPlayer" player2: $ref: "#/components/schemas/WTAPlayer" winner: $ref: "#/components/schemas/WTAPlayer" nullable: true score: type: string nullable: true description: Match score (e.g., 6-3 6-4 7-5) duration: type: string nullable: true description: Match duration (e.g., 02:35:00) number_of_sets: type: integer nullable: true description: Number of sets played match_status: type: string nullable: true description: Match status (completed, in_progress, etc.) is_live: type: boolean description: Whether match is currently live WTAHeadToHead: type: object properties: id: type: integer description: Head-to-head record ID player1: $ref: "#/components/schemas/WTAPlayer" player2: $ref: "#/components/schemas/WTAPlayer" player1_wins: type: integer description: Player 1 wins in head-to-head player2_wins: type: integer description: Player 2 wins in head-to-head WTABettingOdd: type: object properties: id: type: integer description: Odds ID match_id: type: integer description: Match ID vendor: type: string description: Sportsbook vendor (draftkings, fanduel, caesars) player1: $ref: "#/components/schemas/WTAPlayer" nullable: true player2: $ref: "#/components/schemas/WTAPlayer" nullable: true player1_odds: type: integer nullable: true description: Player 1 moneyline odds (American format) player2_odds: type: integer nullable: true description: Player 2 moneyline odds (American format) updated_at: type: string format: date-time description: Last update timestamp parameters: CursorParam: name: cursor in: query required: false schema: type: integer description: The cursor for pagination PerPageParam: name: per_page in: query required: false schema: type: integer maximum: 100 default: 25 description: Number of results per page SeasonParam: name: season in: query required: true schema: type: integer description: The season year SeasonOptionalParam: name: season in: query required: false schema: type: integer description: The season year TeamIdsParam: name: team_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs PlayerIdsParam: name: player_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by player IDs DatesParam: name: dates[] in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by dates (YYYY-MM-DD) GameIdsParam: name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs responses: UnauthorizedError: description: Unauthorized - Missing or invalid API key content: application/json: schema: $ref: "#/components/schemas/Error" BadRequestError: description: Bad Request - Invalid parameters content: application/json: schema: $ref: "#/components/schemas/Error" NotFoundError: description: Resource not found content: application/json: schema: $ref: "#/components/schemas/Error" RateLimitError: description: Too many requests content: application/json: schema: $ref: "#/components/schemas/Error" ServerError: description: Internal server error content: application/json: schema: $ref: "#/components/schemas/Error" paths: /nba/v1/teams: get: summary: Get NBA teams tags: [NBA] parameters: - name: division in: query required: false schema: type: string description: Filter by division - name: conference in: query required: false schema: type: string description: Filter by conference responses: "200": description: List of NBA teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBATeam" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/teams/{id}: get: summary: Get specific NBA team tags: [NBA] parameters: - name: id in: path required: true schema: type: integer description: Team ID responses: "200": description: Team details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NBATeam" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/players: get: summary: Get NBA players tags: [NBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name responses: "200": description: List of NBA players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/players/{id}: get: summary: Get specific NBA player tags: [NBA] parameters: - name: id in: path required: true schema: type: integer description: Player ID responses: "200": description: Player details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NBAPlayer" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/games: get: summary: Get NBA games tags: [NBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/DatesParam" - $ref: "#/components/parameters/TeamIdsParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: postseason in: query required: false schema: type: boolean description: Filter by postseason games - name: start_date in: query required: false schema: type: string format: date description: Filter games after this date - name: end_date in: query required: false schema: type: string format: date description: Filter games before this date responses: "200": description: List of NBA games content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAGame" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/games/{id}: get: summary: Get specific NBA game tags: [NBA] parameters: - name: id in: path required: true schema: type: integer description: Game ID responses: "200": description: Game details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NBAGame" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/stats: get: summary: Get NBA stats tags: [NBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs - $ref: "#/components/parameters/DatesParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: postseason in: query required: false schema: type: boolean description: Filter by postseason stats - name: start_date in: query required: false schema: type: string format: date description: Filter stats after this date - name: end_date in: query required: false schema: type: string format: date description: Filter stats before this date - name: period in: query required: false schema: type: integer default: 0 description: Filter by period (quarter). Defaults to 0, which returns full game totals only. responses: "200": description: List of NBA stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/season_averages: get: summary: Get NBA season averages tags: [NBA] parameters: - name: season in: query required: true schema: type: integer description: Season year - name: player_id in: query required: true schema: type: integer description: Player ID responses: "200": description: Season averages content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBASeasonAverages" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/season_averages/{type}: get: summary: Get NBA season averages by type tags: [NBA] parameters: - name: type in: path required: true schema: type: string enum: [general, clutch, defense, shooting] description: Season average type - name: player_ids in: query required: false schema: type: array items: type: integer description: Filter by player IDs - name: season in: query required: true schema: type: integer description: Season year - name: season_type in: query required: true schema: type: string enum: [regular, playoffs, ist, playin] description: Season type - name: type in: query required: true schema: type: string description: Statistics type - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: Season averages by type content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBASeasonAverageV2" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/team_season_averages/{category}: get: summary: Get NBA team season averages by category description: | Retrieve team season averages for various statistical categories. Each category requires a specific type parameter that determines the exact stats returned. The hustle category does not require a type parameter. **Available category/type combinations:** - general: base, advanced, scoring, misc, opponent, defense, violations - clutch: base, advanced, misc, scoring - shooting: by_zone_base, by_zone_opponent, 5ft_range_base, 5ft_range_opponent - playtype: cut, handoff, isolation, offrebound, offscreen, postup, prballhandler, prrollman, spotup, transition, misc - tracking: painttouch, efficiency, speeddistance, defense, elbowtouch, posttouch, passing, drives, rebounding, catchshoot, pullupshot, possessions - hustle: (no type parameter required) - shotdashboard: overall, pullups, catch_and_shoot, less_than_10_ft tags: [NBA] parameters: - name: category in: path required: true schema: type: string enum: [general, clutch, shooting, playtype, tracking, hustle, shotdashboard] description: Statistical category - name: team_ids in: query required: false schema: type: array items: type: integer description: Filter by team IDs - name: season in: query required: true schema: type: integer description: Season year - name: season_type in: query required: true schema: type: string enum: [regular, playoffs, ist] description: Season type - name: type in: query required: false schema: type: string description: Statistics type (required for all categories except hustle) - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: Team season averages by category content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBATeamSeasonStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/standings: get: summary: Get NBA team standings tags: [NBA] parameters: - $ref: "#/components/parameters/SeasonParam" responses: "200": description: Team standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAStandings" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/players/active: get: summary: Get active NBA players tags: [NBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string - name: last_name in: query required: false schema: type: string responses: "200": description: List of active NBA players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/player_injuries: get: summary: Get NBA player injuries tags: [NBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" responses: "200": description: List of NBA player injuries content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAPlayerInjury" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/box_scores/live: get: summary: Get live NBA box scores tags: [NBA] responses: "200": description: Live NBA box scores content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBABoxScore" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/box_scores: get: summary: Get NBA box scores for a specific date tags: [NBA] parameters: - name: date in: query required: true schema: type: string format: date description: Date in YYYY-MM-DD format responses: "200": description: NBA box scores for date content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBABoxScore" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/lineups: get: summary: Get NBA game lineups description: | Retrieve starting lineups and bench players for NBA games. **Important Notes:** - Lineup data is only available starting from the 2025 NBA season - Lineup data is only available once the game begins tags: [NBA] parameters: - name: game_ids in: query required: true schema: type: array items: type: integer style: form explode: true description: Array of game IDs to get lineups for - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: NBA lineups for specified games content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBALineup" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/leaders: get: summary: Get NBA stat leaders tags: [NBA] parameters: - name: stat_type in: query required: true schema: type: string enum: [ast, blk, dreb, eff, fg3a, fg3m, fg3_pct, fga, fgm, fg_pct, fta, ftm, ft_pct, min, oreb, pts, reb, stl, tov] description: Type of stat to get leaders for - $ref: "#/components/parameters/SeasonParam" - name: season_type in: query required: false schema: type: string enum: [regular, playoffs] default: regular description: Season type (regular or playoffs). Defaults to regular. responses: "200": description: NBA stat leaders content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBALeader" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/stats/advanced: get: summary: Get NBA advanced stats tags: [NBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true - $ref: "#/components/parameters/DatesParam" - name: start_date in: query required: false schema: type: string format: date description: Start date for filtering - name: end_date in: query required: false schema: type: string format: date description: End date for filtering - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true - name: postseason in: query required: false schema: type: boolean responses: "200": description: NBA advanced stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAAdvancedStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v2/odds: get: summary: Get NBA betting odds description: Retrieve betting odds for NBA games. Either dates or game_ids is required. tags: [NBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/DatesParam" - name: game_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs responses: "200": description: NBA betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBABettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v2/odds/player_props: get: summary: Get NBA player prop betting odds description: | Retrieve live player prop betting data for NBA games. Player prop data is LIVE and updated in real-time. We do not store historical data. As games near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified game in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: draftkings, betway, betrivers, ballybet, betparx, caesars, fanduel, rebet tags: [NBA] parameters: - name: game_id in: query required: true schema: type: integer description: The game ID to retrieve player props for (required) - name: player_id in: query required: false schema: type: integer description: Filter props for a specific player - name: prop_type in: query required: false schema: type: string enum: - assists - assists_1q - assists_first3min - blocks - double_double - points - points_1q - points_assists - points_first3min - points_rebounds - points_rebounds_assists - rebounds - rebounds_1q - rebounds_assists - rebounds_first3min - steals - threes - triple_double description: Filter by prop type. Supported values include individual stats (points, rebounds, assists, threes, steals, blocks), combo stats (points_assists, points_rebounds, points_rebounds_assists, rebounds_assists), achievements (double_double, triple_double), and various quarter/time-specific props. responses: "200": description: NBA player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAPlayerProp" meta: $ref: "#/components/schemas/PlayerPropMeta" example: data: - id: 123 game_id: 15907925 player_id: 246 vendor: draftkings prop_type: points line_value: "25.5" market: type: over_under over_odds: -110 under_odds: -110 updated_at: "2025-11-23T19:24:39.000Z" - id: 124 game_id: 15907925 player_id: 246 vendor: draftkings prop_type: points line_value: "30.0" market: type: milestone odds: 200 updated_at: "2025-11-23T19:24:39.000Z" - id: 125 game_id: 15907925 player_id: 19 vendor: betway prop_type: threes line_value: "4.5" market: type: over_under over_odds: 105 under_odds: -125 updated_at: "2025-11-23T19:24:39.000Z" meta: per_page: 25 "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v2/stats/advanced: get: summary: Get NBA advanced stats (V2) description: | Retrieve comprehensive advanced statistics for NBA player performances. This V2 endpoint includes additional metrics from tracking data, hustle stats, defensive matchups, and usage analytics. Includes data from: - Box score advanced (PIE, ratings, efficiency metrics) - Box score misc (fast break points, second chance points) - Box score scoring (shot distribution percentages) - Four factors (effective FG%, turnover rate) - Hustle stats (deflections, contested shots, loose balls) - Defensive matchups (matchup FG%, points allowed) - Player tracking (speed, distance, touches) - Usage stats (percentage of team stats) tags: [NBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs - $ref: "#/components/parameters/DatesParam" - name: start_date in: query required: false schema: type: string format: date description: Start date for filtering (YYYY-MM-DD) - name: end_date in: query required: false schema: type: string format: date description: End date for filtering (YYYY-MM-DD) - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: postseason in: query required: false schema: type: boolean description: Filter for postseason games only - name: period in: query required: false schema: type: integer description: Filter by game period (0 for full game stats) responses: "200": description: NBA advanced stats V2 content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAAdvancedStatsV2" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/contracts/teams: get: summary: Get NBA player contracts by team description: Returns all player contracts for a specific team and season. Season defaults to current season if not specified. tags: [NBA] parameters: - name: team_id in: query required: true schema: type: integer description: Team ID (required) - $ref: "#/components/parameters/SeasonOptionalParam" responses: "200": description: List of player contracts for the team content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAContract" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/contracts/players: get: summary: Get NBA player contracts description: Returns contracts for a specific player, optionally filtered by seasons. Supports pagination. tags: [NBA] parameters: - name: player_id in: query required: true schema: type: integer description: Player ID (required) - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by specific seasons - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: List of player contracts content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAContract" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/contracts/players/aggregate: get: summary: Get aggregated NBA player contract data description: Returns multi-year contract aggregates for a specific player, including total value, guarantees, and contract metadata. tags: [NBA] parameters: - name: player_id in: query required: true schema: type: integer description: Player ID (required) responses: "200": description: List of aggregated contract data for the player content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAContractAggregate" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nba/v1/plays: get: summary: Get NBA play-by-play data description: | Retrieve play-by-play data for an NBA game. Returns all plays for a game in chronological order, including shot attempts, turnovers, fouls, and other game events. Each play includes the game clock, score, and team information. tags: [NBA] parameters: - name: game_id in: query required: true schema: type: integer description: Game ID (required) responses: "200": description: Play-by-play data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NBAPlay" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/teams: get: summary: Get NFL teams tags: [NFL] parameters: - name: division in: query required: false schema: type: string description: Filter by division - name: conference in: query required: false schema: type: string description: Filter by conference responses: "200": description: List of NFL teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLTeam" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/teams/{id}: get: summary: Get specific NFL team tags: [NFL] parameters: - name: id in: path required: true schema: type: integer description: Team ID responses: "200": description: Team details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NFLTeam" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/teams/{id}/roster: get: summary: Get NFL team roster description: | Retrieve the current roster and depth chart for a specific NFL team. Note: Roster data is only available starting with the 2025 season. tags: [NFL] security: - ApiKeyAuth: [] parameters: - name: id in: path required: true schema: type: integer description: Team ID - name: season in: query required: false schema: type: integer description: Season year (defaults to most recent season in database). Data only available for 2025 season and later. responses: "200": description: Team roster with depth chart information content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLRosterEntry" example: data: - player: id: 2153 first_name: "Connor" last_name: "McGovern" position: "Center" position_abbreviation: "C" height: "6' 5\"" weight: "318 lbs" jersey_number: "66" college: "Penn State" experience: "7th Season" age: 28 position: "C" depth: 1 player_name: "Connor McGovern" injury_status: null - player: id: 279668 first_name: "Alec" last_name: "Anderson" position: "Offensive Tackle" position_abbreviation: "OT" height: "6' 5\"" weight: "305 lbs" jersey_number: "70" college: "UCLA" experience: "3rd Season" age: 26 position: "C" depth: 2 player_name: "Alec Anderson" injury_status: null - player: id: 279664 first_name: "Sedrick" last_name: "Van Pran-Granger" position: "Center" position_abbreviation: "C" height: "6' 4\"" weight: "310 lbs" jersey_number: "62" college: "Georgia" experience: "2nd Season" age: 24 position: "C" depth: 3 player_name: "Sedrick Van Pran-Granger" injury_status: null "401": $ref: "#/components/responses/UnauthorizedError" "403": description: Forbidden - GOAT tier subscription required content: application/json: schema: $ref: "#/components/schemas/Error" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/players: get: summary: Get NFL players tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name responses: "200": description: List of NFL players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/players/{id}: get: summary: Get specific NFL player tags: [NFL] parameters: - name: id in: path required: true schema: type: integer description: Player ID responses: "200": description: Player details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NFLPlayer" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/players/active: get: summary: Get active NFL players tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name responses: "200": description: List of active NFL players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/games: get: summary: Get NFL games tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/DatesParam" - $ref: "#/components/parameters/TeamIdsParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: postseason in: query required: false schema: type: boolean description: Filter by postseason games - name: weeks[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by weeks responses: "200": description: List of NFL games content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLGame" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/games/{id}: get: summary: Get specific NFL game tags: [NFL] parameters: - name: id in: path required: true schema: type: integer description: Game ID responses: "200": description: Game details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NFLGame" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/stats: get: summary: Get NFL stats tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons responses: "200": description: List of NFL stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/standings: get: summary: Get NFL team standings tags: [NFL] parameters: - $ref: "#/components/parameters/SeasonParam" responses: "200": description: Team standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLStandings" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/player_injuries: get: summary: Get NFL player injuries tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" responses: "200": description: List of NFL player injuries content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLPlayerInjury" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/season_stats: get: summary: Get NFL season stats tags: [NFL] parameters: - $ref: "#/components/parameters/SeasonParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: team_id in: query required: false schema: type: integer description: Filter by team ID - name: postseason in: query required: false schema: type: boolean description: Get postseason stats - name: sort_by in: query required: false schema: type: string description: Attribute to sort by - name: sort_order in: query required: false schema: type: string enum: [asc, desc] description: Sort order responses: "200": description: NFL season stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLSeasonStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/advanced_stats/rushing: get: summary: Get NFL advanced rushing stats tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/SeasonParam" - name: player_id in: query required: false schema: type: integer description: Filter by player ID - name: week in: query required: false schema: type: integer description: Filter by week (0 for full season) - name: postseason in: query required: false schema: type: boolean description: Filter for postseason stats responses: "200": description: NFL advanced rushing stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLAdvancedRushingStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/advanced_stats/passing: get: summary: Get NFL advanced passing stats tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/SeasonParam" - name: player_id in: query required: false schema: type: integer description: Filter by player ID - name: week in: query required: false schema: type: integer description: Filter by week (0 for full season) - name: postseason in: query required: false schema: type: boolean description: Filter for postseason stats responses: "200": description: NFL advanced passing stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLAdvancedPassingStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/advanced_stats/receiving: get: summary: Get NFL advanced receiving stats tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/SeasonParam" - name: player_id in: query required: false schema: type: integer description: Filter by player ID - name: week in: query required: false schema: type: integer description: Filter by week (0 for full season) - name: postseason in: query required: false schema: type: boolean description: Filter for postseason stats responses: "200": description: NFL advanced receiving stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLAdvancedReceivingStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/odds: get: summary: Get NFL betting odds description: Retrieve betting odds for NFL games. Either (season and week) or game_ids is required. Available starting from 2025 season, week 8 onwards. tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season (must be provided with week) - name: week in: query required: false schema: type: integer description: Filter by week (must be provided with season) - name: game_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs responses: "200": description: NFL betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/odds/player_props: get: summary: Get NFL player prop betting odds description: | Retrieve live player prop betting data for NFL games. Player prop data is LIVE and updated in real-time. We do not store historical data. As games near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified game in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: draftkings, betway, betrivers, ballybet, betparx (more coming soon!) tags: [NFL] parameters: - name: game_id in: query required: true schema: type: integer description: The game ID to retrieve player props for (required) - name: player_id in: query required: false schema: type: integer description: Filter props for a specific player - name: prop_type in: query required: false schema: type: string enum: - anytime_td - anytime_td_1h - anytime_td_1q - anytime_td_2h - fg_made - fg_made_1h - first_td - interceptions - kicking_points - longest_pass - longest_reception - longest_rush - passing_attempts - passing_completions - passing_tds - passing_tds_1h - passing_yards - passing_yards_1h - receiving_yards - receiving_yards_1h - receptions - rushing_attempts - rushing_receiving_yards - rushing_yards - rushing_yards_1h description: Filter by prop type. Supported values include passing, rushing, receiving, touchdown, and kicking statistics. - name: vendors in: query required: false schema: type: array items: type: string style: form explode: true description: Filter by specific sportsbook vendors (e.g., draftkings, betrivers). If not provided, returns props from all available vendors. responses: "200": description: NFL player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLPlayerProp" meta: $ref: "#/components/schemas/PlayerPropMeta" example: data: - id: 111967700 game_id: 424129 player_id: 490 vendor: betway prop_type: rushing_yards line_value: "85.5" market: type: over_under over_odds: -115 under_odds: -110 updated_at: "2025-11-29T16:28:13.503Z" - id: 112042232 game_id: 424129 player_id: 490 vendor: draftkings prop_type: anytime_td line_value: "0.5" market: type: milestone odds: -250 updated_at: "2025-11-29T16:31:25.627Z" meta: next_cursor: 112042641 per_page: 25 "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/team_season_stats: get: summary: Get NFL team season stats description: Retrieve comprehensive team season statistics including offense, defense, special teams, and opponent stats tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: team_ids in: query required: true schema: type: array items: type: integer style: form explode: true description: Filter by team IDs (required) - name: season in: query required: true schema: type: integer description: Filter by season (required) - name: postseason in: query required: false schema: type: boolean description: Filter for postseason stats (true) or regular season (false) responses: "200": description: NFL team season stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLTeamSeasonStat" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/team_stats: get: summary: Get NFL team game stats description: Retrieve team statistics for individual games tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs - name: seasons in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: game_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs responses: "200": description: NFL team game stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLTeamStat" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nfl/v1/plays: get: summary: Get NFL play-by-play data description: Retrieve play-by-play data for NFL games, ordered chronologically by wallclock time tags: [NFL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: game_id in: query required: true schema: type: integer description: Filter by game ID (required) responses: "200": description: NFL play-by-play data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NFLPlay" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/teams: get: summary: Get MLB teams tags: [MLB] parameters: - name: division in: query required: false schema: type: string description: Filter by division - name: league in: query required: false schema: type: string description: Filter by league responses: "200": description: List of MLB teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MLBTeam" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/teams/{id}: get: summary: Get specific MLB team tags: [MLB] parameters: - name: id in: path required: true schema: type: integer description: Team ID responses: "200": description: Team details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/MLBTeam" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/players: get: summary: Get MLB players tags: [MLB] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name responses: "200": description: List of MLB players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MLBPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/players/{id}: get: summary: Get specific MLB player tags: [MLB] parameters: - name: id in: path required: true schema: type: integer description: Player ID responses: "200": description: Player details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/MLBPlayer" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/player_injuries: get: summary: Get MLB player injuries tags: [MLB] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" responses: "200": description: List of MLB player injuries content: application/json: schema: type: object properties: data: type: array items: type: object properties: player: $ref: "#/components/schemas/MLBPlayer" date: type: string format: date-time return_date: type: string format: date-time type: type: string detail: type: string side: type: string status: type: string long_comment: type: string short_comment: type: string meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/players/active: get: summary: Get active MLB players tags: [MLB] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name responses: "200": description: List of active MLB players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MLBPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/games: get: summary: Get MLB games tags: [MLB] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/DatesParam" - $ref: "#/components/parameters/TeamIdsParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: postseason in: query required: false schema: type: boolean description: Filter by postseason games responses: "200": description: List of MLB games content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MLBGame" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/games/{id}: get: summary: Get specific MLB game tags: [MLB] parameters: - name: id in: path required: true schema: type: integer description: Game ID responses: "200": description: Game details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/MLBGame" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/stats: get: summary: Get MLB stats tags: [MLB] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons responses: "200": description: List of MLB stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MLBStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/standings: get: summary: Get MLB team standings tags: [MLB] parameters: - $ref: "#/components/parameters/SeasonParam" responses: "200": description: Team standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MLBStandings" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/season_stats: get: summary: Get MLB season stats tags: [MLB] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/SeasonParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: team_id in: query required: false schema: type: integer description: Filter by team ID - name: postseason in: query required: false schema: type: boolean description: Get postseason stats - name: sort_by in: query required: false schema: type: string description: Attribute to sort by - name: sort_order in: query required: false schema: type: string enum: [asc, desc] description: Sort order responses: "200": description: MLB season stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MLBSeasonStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/teams/season_stats: get: summary: Get MLB team season stats tags: [MLB] parameters: - $ref: "#/components/parameters/SeasonParam" - name: team_id in: query required: false schema: type: integer description: Filter by team ID - name: postseason in: query required: false schema: type: boolean description: Get postseason stats responses: "200": description: MLB team season stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MLBTeamSeasonStats" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/players/splits: get: summary: Get MLB player splits description: Get player splits grouped by split_category (e.g., vs RHP/LHP, by month, by opponent, etc.) tags: [MLB] parameters: - name: player_id in: query required: true schema: type: integer description: Player ID - name: season in: query required: true schema: type: integer description: Season year responses: "200": description: Player splits grouped by split_category content: application/json: schema: type: object properties: data: type: object description: Splits grouped by split_category (e.g., "split", "byDayMonth", "byOpponent") additionalProperties: type: array items: type: object properties: player: $ref: "#/components/schemas/MLBPlayer" season: type: integer category: type: string description: batting or pitching split_category: type: string description: Category of split (e.g., split, byDayMonth, byOpponent) split_name: type: string description: Name of the split (e.g., "vs RHP", "April") split_abbreviation: type: string nullable: true at_bats: type: integer nullable: true runs: type: integer nullable: true hits: type: integer nullable: true doubles: type: integer nullable: true triples: type: integer nullable: true home_runs: type: integer nullable: true rbis: type: integer nullable: true walks: type: integer nullable: true hit_by_pitch: type: integer nullable: true strikeouts: type: integer nullable: true stolen_bases: type: integer nullable: true caught_stealing: type: integer nullable: true avg: type: number format: float nullable: true obp: type: number format: float nullable: true slg: type: number format: float nullable: true ops: type: number format: float nullable: true era: type: number format: float nullable: true wins: type: integer nullable: true losses: type: integer nullable: true saves: type: integer nullable: true save_opportunities: type: integer nullable: true games_played: type: integer nullable: true games_started: type: integer nullable: true complete_games: type: integer nullable: true innings_pitched: type: number format: float nullable: true hits_allowed: type: integer nullable: true runs_allowed: type: integer nullable: true earned_runs: type: integer nullable: true home_runs_allowed: type: integer nullable: true walks_allowed: type: integer nullable: true strikeouts_pitched: type: integer nullable: true opponent_avg: type: number format: float nullable: true "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mlb/v1/players/versus: get: summary: Get MLB player vs player matchups description: Get head-to-head batting statistics for batter against pitchers for a specific team, or pitcher against batters from a specific team tags: [MLB] parameters: - name: player_id in: query required: true schema: type: integer description: Player ID (batter or pitcher) - name: opponent_team_id in: query required: true schema: type: integer description: Opponent team ID responses: "200": description: List of player vs player matchups content: application/json: schema: type: object properties: data: type: array items: type: object properties: player: $ref: "#/components/schemas/MLBPlayer" opponent_player: $ref: "#/components/schemas/MLBPlayer" opponent_team: $ref: "#/components/schemas/MLBTeam" at_bats: type: integer nullable: true hits: type: integer nullable: true doubles: type: integer nullable: true triples: type: integer nullable: true home_runs: type: integer nullable: true rbi: type: integer nullable: true walks: type: integer nullable: true strikeouts: type: integer nullable: true avg: type: number format: float nullable: true obp: type: number format: float nullable: true slg: type: number format: float nullable: true ops: type: number format: float nullable: true "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/teams: get: summary: Get NHL teams tags: [NHL] parameters: - name: conference in: query required: false schema: type: string description: Filter by conference - name: division in: query required: false schema: type: string description: Filter by division - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: List of NHL teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLTeam" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/teams/{id}: get: summary: Get specific NHL team tags: [NHL] parameters: - name: id in: path required: true schema: type: integer description: Team ID responses: "200": description: Team details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NHLTeam" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/teams/{id}/season_stats: get: summary: Get NHL team season statistics tags: [NHL] parameters: - name: id in: path required: true schema: type: integer description: Team ID - name: season in: query required: true schema: type: integer description: Season year - name: postseason in: query required: false schema: type: boolean description: Filter for postseason stats responses: "200": description: Team season statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLTeamSeasonStat" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/players: get: summary: Get NHL players tags: [NHL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - $ref: "#/components/parameters/TeamIdsParam" - name: name in: query required: false schema: type: string description: Filter by player name - name: seasons in: query required: false schema: type: array items: type: integer description: Filter by seasons responses: "200": description: List of NHL players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/players/{id}/season_stats: get: summary: Get NHL player season statistics tags: [NHL] parameters: - name: id in: path required: true schema: type: integer description: Player ID - name: season in: query required: true schema: type: integer description: Season year - name: postseason in: query required: false schema: type: boolean description: Filter for postseason stats responses: "200": description: Player season statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLPlayerSeasonStat" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/games: get: summary: Get NHL games tags: [NHL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - name: dates in: query required: false schema: type: array items: type: string format: date description: Filter by specific dates - name: seasons in: query required: false schema: type: array items: type: integer description: Filter by seasons - name: game_ids in: query required: false schema: type: array items: type: integer description: Filter by game IDs - name: postseason in: query required: false schema: type: boolean description: Filter for postseason games responses: "200": description: List of NHL games content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLGame" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/standings: get: summary: Get NHL standings tags: [NHL] parameters: - name: season in: query required: false schema: type: integer description: Season year - name: conference in: query required: false schema: type: string description: Filter by conference - name: division in: query required: false schema: type: string description: Filter by division responses: "200": description: NHL standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLStanding" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/box_scores: get: summary: Get NHL box scores tags: [NHL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - $ref: "#/components/parameters/TeamIdsParam" - name: dates in: query required: false schema: type: array items: type: string format: date description: Filter by specific dates - name: season in: query required: false schema: type: integer description: Filter by season - name: game_ids in: query required: false schema: type: array items: type: integer description: Filter by game IDs responses: "200": description: NHL box scores content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLBoxScore" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/plays: get: summary: Get NHL play-by-play data description: Returns play-by-play data for a specific game. Plays are returned in chronological order with a sequential order field starting from 1. tags: [NHL] parameters: - name: game_id in: query required: true schema: type: integer description: The game ID (required) responses: "200": description: NHL play-by-play data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLPlay" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/player_injuries: get: summary: Get all currently injured NHL players description: Returns all players currently on the injury report. The data is updated regularly to reflect the latest injury reports. tags: [NHL] responses: "200": description: List of all currently injured NHL players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLPlayerInjury" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/player_stats/leaders: get: summary: Get NHL player statistical leaders tags: [NHL] parameters: - name: season in: query required: true schema: type: integer description: Season year - name: type in: query required: true schema: type: string enum: [goals, power_play_points, game_winning_goals, plus_minus, even_strength_points, shots_against, goals_against_average, games_played, goals_against, shots, games_started, short_handed_goals, short_handed_points, faceoff_win_pct, assists, save_pct, power_play_goals, time_on_ice_per_game, wins, ot_losses, overtime_goals, penalty_minutes, saves, points, even_strength_goals, shutouts, shooting_pct, time_on_ice, points_per_game, losses] description: Type of statistic - name: postseason in: query required: false schema: type: boolean description: Filter for postseason stats responses: "200": description: NHL player statistical leaders content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLPlayerStatLeader" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/team_stats/leaders: get: summary: Get NHL team statistical leaders tags: [NHL] parameters: - name: season in: query required: true schema: type: integer description: Season year - name: type in: query required: true schema: type: string enum: [faceoff_win_percentage, shots_for_per_game, penalty_kill_percentage, goals_against_per_game, games_played, goals_for_per_game, goals_against, points_pct, points, power_play_percentage, shots_against_per_game, goals_for, wins, goal_differential, ot_losses, losses] description: Type of statistic - name: postseason in: query required: false schema: type: boolean description: Filter for postseason stats responses: "200": description: NHL team statistical leaders content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLTeamStatLeader" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/odds: get: summary: Get NHL betting odds description: Retrieve betting odds for NHL games. Either dates or game_ids is required. tags: [NHL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) - name: game_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs responses: "200": description: NHL betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /nhl/v1/odds/player_props: get: summary: Get NHL player prop betting odds description: | Retrieve live player prop betting data for NHL games. Player prop data is LIVE and updated in real-time. We do not store historical data. As games near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified game in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: fanduel, draftkings, betmgm, caesars, betrivers (more coming soon!) tags: [NHL] parameters: - name: game_id in: query required: true schema: type: integer description: The game ID to retrieve player props for (required) - name: player_id in: query required: false schema: type: integer description: Filter props for a specific player - name: prop_type in: query required: false schema: type: string description: Filter by prop type. Supported types include anytime_goal, anytime_goal_1p, anytime_goal_2p, anytime_goal_3p, assists, first_goal, first_goal_2p, first_goal_3p, goals, last_goal, overtime_goal, points, points_1p, points_2p, points_3p, power_play_points, saves, second_goal, shots_on_goal, shots_on_goal_1p, shots_on_goal_2p, shots_on_goal_3p, third_goal. - name: vendors in: query required: false schema: type: array items: type: string style: form explode: true description: Filter by specific sportsbook vendors (e.g., draftkings, fanduel). If not provided, returns props from all available vendors. responses: "200": description: NHL player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NHLPlayerProp" meta: $ref: "#/components/schemas/PlayerPropMeta" example: data: - id: 12345678 game_id: 67890 player_id: 123 vendor: draftkings prop_type: points line_value: "1.5" market: type: over_under over_odds: 120 under_odds: -145 updated_at: "2025-01-09T12:00:00.000Z" - id: 87654321 game_id: 67890 player_id: 123 vendor: fanduel prop_type: goals line_value: "1" market: type: milestone odds: 250 updated_at: "2025-01-09T12:00:00.000Z" meta: next_cursor: 87654322 per_page: 25 "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /epl/v1/games: get: summary: "[DEPRECATED] Get EPL games" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/matches` instead. Get EPL games with optional filtering. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - $ref: '#/components/parameters/CursorParam' - $ref: '#/components/parameters/PerPageParam' - $ref: '#/components/parameters/SeasonOptionalParam' - name: team_id in: query required: false schema: type: integer description: Filter by team ID - name: week in: query required: false schema: type: integer description: Filter by week responses: "200": description: List of EPL games content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLGame' meta: $ref: '#/components/schemas/Pagination' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/games/{id}/lineups: get: summary: "[DEPRECATED] Get lineups for an EPL game" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/match_lineups` instead. Get lineups for a specific EPL game. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - name: id in: path required: true schema: type: integer description: Game ID responses: "200": description: Game lineups content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLGameLineup' "401": $ref: '#/components/responses/UnauthorizedError' "404": $ref: '#/components/responses/NotFoundError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/games/{id}/goals: get: summary: "[DEPRECATED] Get goals for an EPL game" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/match_events` instead. Get goals for a specific EPL game. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - name: id in: path required: true schema: type: integer description: Game ID responses: "200": description: Game goals content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLGameGoal' "401": $ref: '#/components/responses/UnauthorizedError' "404": $ref: '#/components/responses/NotFoundError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/games/{id}/team_stats: get: summary: "[DEPRECATED] Get team statistics for an EPL game" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/team_match_stats` instead. Get team statistics for a specific EPL game. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - name: id in: path required: true schema: type: integer description: Game ID responses: "200": description: Game team statistics content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/EPLGameTeamStats' "401": $ref: '#/components/responses/UnauthorizedError' "404": $ref: '#/components/responses/NotFoundError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/games/{id}/player_stats: get: summary: "[DEPRECATED] Get player statistics for an EPL game" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/player_match_stats` instead. Get player statistics for a specific EPL game. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - name: id in: path required: true schema: type: integer description: Game ID responses: "200": description: Game player statistics content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/EPLGamePlayerStats' "401": $ref: '#/components/responses/UnauthorizedError' "404": $ref: '#/components/responses/NotFoundError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/players: get: summary: "[DEPRECATED] Get EPL players" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/players` instead. Get EPL players with optional filtering. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - $ref: "#/components/parameters/SeasonParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name responses: "200": description: List of EPL players content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLPlayer' meta: $ref: '#/components/schemas/Pagination' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/players/{id}/season_stats: get: summary: "[DEPRECATED] Get season statistics for an EPL player" description: | **DEPRECATED**: This endpoint is deprecated and has no v2 equivalent. Get season statistics for a specific EPL player. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - name: id in: path required: true schema: type: integer description: Player ID - $ref: '#/components/parameters/SeasonParam' responses: "200": description: Player season statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLPlayerSeasonStat' "401": $ref: '#/components/responses/UnauthorizedError' "404": $ref: '#/components/responses/NotFoundError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/player_stats/leaders: get: summary: "[DEPRECATED] Get EPL player statistics leaders" description: | **DEPRECATED**: This endpoint is deprecated and has no v2 equivalent. Get EPL player statistics leaders. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - $ref: '#/components/parameters/CursorParam' - $ref: '#/components/parameters/PerPageParam' - $ref: '#/components/parameters/SeasonParam' - name: type in: query required: true schema: $ref: '#/components/schemas/EPLPlayerStatEnum' description: Stat type responses: "200": description: Player statistics leaders content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLPlayerStatLeaders' meta: $ref: '#/components/schemas/Pagination' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/team_stats/leaders: get: summary: "[DEPRECATED] Get EPL team statistics leaders" description: | **DEPRECATED**: This endpoint is deprecated and has no v2 equivalent. Get EPL team statistics leaders. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - $ref: '#/components/parameters/CursorParam' - $ref: '#/components/parameters/PerPageParam' - $ref: '#/components/parameters/SeasonParam' - name: type in: query required: true schema: $ref: '#/components/schemas/EPLTeamStatEnum' description: Stat type responses: "200": description: Team statistics leaders content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLTeamStatLeaders' meta: $ref: '#/components/schemas/Pagination' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/standings: get: summary: "[DEPRECATED] Get EPL standings" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/standings` instead. Get EPL standings. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - $ref: '#/components/parameters/SeasonParam' responses: "200": description: League standings content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLStanding' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/teams: get: summary: "[DEPRECATED] Get EPL teams" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/teams` instead. Get EPL teams. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - $ref: '#/components/parameters/SeasonParam' responses: "200": description: List of EPL teams content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLTeam' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/teams/{id}/players: get: summary: "[DEPRECATED] Get players for an EPL team" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/rosters` instead. Get players for a specific EPL team. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - name: id in: path required: true schema: type: integer description: Team ID - $ref: '#/components/parameters/SeasonParam' responses: "200": description: Team players content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLPlayer' "401": $ref: '#/components/responses/UnauthorizedError' "404": $ref: '#/components/responses/NotFoundError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/teams/{id}/season_stats: get: summary: "[DEPRECATED] Get season statistics for an EPL team" description: | **DEPRECATED**: This endpoint is deprecated and has no v2 equivalent. Get season statistics for a specific EPL team. deprecated: true tags: [EPL v1 (Deprecated)] parameters: - name: id in: path required: true schema: type: integer description: Team ID - $ref: '#/components/parameters/SeasonParam' responses: "200": description: Team season statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/EPLTeamSeasonStat' "401": $ref: '#/components/responses/UnauthorizedError' "404": $ref: '#/components/responses/NotFoundError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v1/odds: get: summary: "[DEPRECATED] Get EPL betting odds" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/odds` instead. Retrieve betting odds for EPL games. Either (season and week) or game_ids is required. EPL odds include moneyline odds for home, away, and draw outcomes only (no spreads or totals). deprecated: true tags: [EPL v1 (Deprecated)] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season (must be provided with week) - name: week in: query required: false schema: type: integer description: Filter by week (must be provided with season) - name: game_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs responses: "200": description: EPL betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/EPLBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /epl/v1/odds/player_props: get: summary: "[DEPRECATED] Get EPL player prop betting odds" description: | **DEPRECATED**: This endpoint is deprecated. Please use `/epl/v2/odds/player_props` instead. Retrieve live player prop betting data for EPL games. Player prop data is LIVE and updated in real-time. We do not store historical data. As games near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified game in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: draftkings, fanduel, caesars (more coming soon!) deprecated: true tags: [EPL v1 (Deprecated)] parameters: - name: game_id in: query required: true schema: type: integer description: The game ID to retrieve player props for (required) - name: player_id in: query required: false schema: type: integer description: Filter props for a specific player - name: prop_type in: query required: false schema: type: string description: Filter by prop type. Supported types include anytime_goal, assists, first_goal, first_half_goal, goals_assists, header_goal, last_goal, outside_box_goal, saves, second_half_goal, shots, shots_on_target, tackles. - name: vendors in: query required: false schema: type: array items: type: string style: form explode: true description: Filter by specific sportsbook vendors (e.g., draftkings, fanduel). If not provided, returns props from all available vendors. responses: "200": description: EPL player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/EPLPlayerProp" meta: $ref: "#/components/schemas/PlayerPropMeta" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # EPL v2 Endpoints (Current) # Uses shared Soccer schema - same structure as La Liga, Serie A, etc. /epl/v2/teams: get: summary: Get EPL teams description: Get all teams participating in the English Premier League for a given season tags: [EPL] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year. Defaults to the current season if omitted. responses: "200": description: List of EPL teams content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeam' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v2/rosters: get: summary: Get EPL team rosters description: Get player roster information for a specific team and season tags: [EPL] parameters: - name: team_id in: query required: true schema: type: integer description: Team ID - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Team roster content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerRoster' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v2/players: get: summary: Get EPL players description: Get players with optional filtering by team or search term. Supports pagination. tags: [EPL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs - name: search in: query required: false schema: type: string description: Search players by name responses: "200": description: List of EPL players content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayer' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v2/standings: get: summary: Get EPL standings description: Get league standings for a specific season tags: [EPL] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: League standings content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerStanding' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v2/matches: get: summary: Get EPL matches description: Get matches with optional filtering by season, dates, or teams. Supports pagination. tags: [EPL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season year - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of matches content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatch' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v2/match_events: get: summary: Get EPL match events description: Get events (goals, cards, substitutions) for matches. Supports pagination. tags: [EPL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match events content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchEvent' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v2/match_lineups: get: summary: Get EPL match lineups description: Get player lineups for matches. Supports pagination. tags: [EPL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: Match lineups content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchLineup' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v2/player_match_stats: get: summary: Get EPL player match statistics description: Get individual player statistics for matches. Supports pagination. tags: [EPL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: player_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by player IDs responses: "200": description: Player match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayerMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v2/team_match_stats: get: summary: Get EPL team match statistics description: Get team-level statistics for matches. Supports pagination. tags: [EPL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: Team match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeamMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v2/odds: get: summary: Get EPL betting odds description: Get betting odds for EPL matches. Filter by match IDs or dates. Supports pagination. tags: [EPL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) responses: "200": description: Betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerBettingOdd' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /epl/v2/odds/player_props: get: summary: Get EPL player prop betting odds description: | Retrieve live player prop betting data for EPL matches. Player prop data is LIVE and updated in real-time. We do not store historical data. As matches near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified match in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: draftkings, fanduel, caesars (more coming soon!) tags: [EPL] parameters: - name: match_id in: query required: true schema: type: integer description: The match ID to retrieve player props for (required) responses: "200": description: Player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayerProp' "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/teams: get: summary: Get WNBA teams tags: [WNBA] parameters: - name: conference in: query required: false schema: type: string enum: [Eastern, Western] description: Filter by conference responses: "200": description: List of WNBA teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBATeam" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/teams/{id}: get: summary: Get specific WNBA team tags: [WNBA] parameters: - name: id in: path required: true schema: type: integer description: Team ID responses: "200": description: Team details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/WNBATeam" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/players: get: summary: Get WNBA players tags: [WNBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name responses: "200": description: List of WNBA players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBAPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/players/active: get: summary: Get active WNBA players tags: [WNBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name responses: "200": description: List of active WNBA players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBAPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/players/{id}: get: summary: Get specific WNBA player tags: [WNBA] parameters: - name: id in: path required: true schema: type: integer description: Player ID responses: "200": description: Player details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/WNBAPlayer" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/games: get: summary: Get WNBA games tags: [WNBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/DatesParam" - $ref: "#/components/parameters/TeamIdsParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: start_date in: query required: false schema: type: string format: date description: Filter games after this date - name: end_date in: query required: false schema: type: string format: date description: Filter games before this date - name: season_type in: query required: false schema: type: string description: Filter by season type responses: "200": description: List of WNBA games content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBAGame" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/games/{id}: get: summary: Get specific WNBA game tags: [WNBA] parameters: - name: id in: path required: true schema: type: integer description: Game ID responses: "200": description: Game details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/WNBAGame" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/player_stats: get: summary: Get WNBA player statistics tags: [WNBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - $ref: "#/components/parameters/TeamIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs - $ref: "#/components/parameters/DatesParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: start_date in: query required: false schema: type: string format: date description: Filter stats after this date - name: end_date in: query required: false schema: type: string format: date description: Filter stats before this date responses: "200": description: List of WNBA player stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBAPlayerStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/team_stats: get: summary: Get WNBA team statistics tags: [WNBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs - $ref: "#/components/parameters/DatesParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: start_date in: query required: false schema: type: string format: date description: Filter stats after this date - name: end_date in: query required: false schema: type: string format: date description: Filter stats before this date responses: "200": description: List of WNBA team stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBATeamStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/player_season_stats: get: summary: Get WNBA player season statistics tags: [WNBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - $ref: "#/components/parameters/TeamIdsParam" - name: season in: query required: false schema: type: integer description: Filter by season - name: season_type in: query required: false schema: type: integer description: Filter by season type responses: "200": description: WNBA player season stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBAPlayerSeasonStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/team_season_stats: get: summary: Get WNBA team season statistics tags: [WNBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - name: season in: query required: false schema: type: integer description: Filter by season - name: season_type in: query required: false schema: type: integer description: Filter by season type responses: "200": description: WNBA team season stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBATeamSeasonStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/standings: get: summary: Get WNBA standings tags: [WNBA] parameters: - name: season in: query required: false schema: type: integer description: Filter by season - name: conference in: query required: false schema: type: string enum: [Eastern, Western] description: Filter by conference responses: "200": description: WNBA standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBAStanding" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/player_injuries: get: summary: Get WNBA player injuries tags: [WNBA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" responses: "200": description: List of WNBA player injuries content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBAPlayerInjury" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wnba/v1/plays: get: summary: Get WNBA play-by-play data tags: [WNBA] parameters: - name: game_id in: query required: true schema: type: integer description: Game ID (required) responses: "200": description: Play-by-play data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WNBAPlay" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/conferences: get: summary: Get NCAAF conferences tags: [NCAAF] responses: "200": description: List of NCAAF conferences content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFConference" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/conferences/{id}: get: summary: Get specific NCAAF conference tags: [NCAAF] parameters: - name: id in: path required: true schema: type: integer description: Conference ID responses: "200": description: Conference details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NCAAFConference" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/teams: get: summary: Get NCAAF teams tags: [NCAAF] parameters: - name: conference_id in: query required: false schema: type: integer description: Filter by conference id responses: "200": description: List of NCAAF teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFTeam" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/teams/{id}: get: summary: Get specific NCAAF team tags: [NCAAF] parameters: - name: id in: path required: true schema: type: integer description: Team ID responses: "200": description: Team details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NCAAFTeam" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/players: get: summary: Get NCAAF players tags: [NCAAF] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name responses: "200": description: List of NCAAF players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/players/active: get: summary: Get active NCAAF players tags: [NCAAF] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name responses: "200": description: List of active NCAAF players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/players/{id}: get: summary: Get specific NCAAF player tags: [NCAAF] parameters: - name: id in: path required: true schema: type: integer description: Player ID responses: "200": description: Player details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NCAAFPlayer" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/standings: get: summary: Get NCAAF standings tags: [NCAAF] parameters: - name: conference_id in: query required: true schema: type: integer description: Conference ID (required) - name: season in: query required: true schema: type: integer description: Season year (required) responses: "200": description: NCAAF standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFStanding" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/games: get: summary: Get NCAAF games tags: [NCAAF] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/DatesParam" - $ref: "#/components/parameters/TeamIdsParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: start_date in: query required: false schema: type: string format: date description: Filter games after this date - name: end_date in: query required: false schema: type: string format: date description: Filter games before this date - name: weeks[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by weeks responses: "200": description: List of NCAAF games content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFGame" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/games/{id}: get: summary: Get specific NCAAF game tags: [NCAAF] parameters: - name: id in: path required: true schema: type: integer description: Game ID responses: "200": description: Game details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NCAAFGame" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/rankings: get: summary: Get NCAAF rankings tags: [NCAAF] parameters: - name: season in: query required: true schema: type: integer description: Season year (required) - name: week in: query required: false schema: type: integer description: Filter by week responses: "200": description: NCAAF rankings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFRanking" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/plays: get: summary: Get NCAAF play-by-play data tags: [NCAAF] parameters: - name: game_id in: query required: true schema: type: integer description: Game ID (required) responses: "200": description: Play-by-play data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFPlay" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/player_stats: get: summary: Get NCAAF player statistics tags: [NCAAF] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - $ref: "#/components/parameters/TeamIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs - $ref: "#/components/parameters/DatesParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: start_date in: query required: false schema: type: string format: date description: Filter stats after this date - name: end_date in: query required: false schema: type: string format: date description: Filter stats before this date - name: weeks[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by weeks responses: "200": description: List of NCAAF player stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFPlayerStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/team_stats: get: summary: Get NCAAF team statistics tags: [NCAAF] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs - $ref: "#/components/parameters/DatesParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons - name: start_date in: query required: false schema: type: string format: date description: Filter stats after this date - name: end_date in: query required: false schema: type: string format: date description: Filter stats before this date - name: weeks[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by weeks responses: "200": description: List of NCAAF team stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFTeamStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/player_season_stats: get: summary: Get NCAAF player season statistics tags: [NCAAF] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - $ref: "#/components/parameters/TeamIdsParam" - name: season in: query required: false schema: type: integer description: Filter by season responses: "200": description: NCAAF player season stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFPlayerSeasonStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/team_season_stats: get: summary: Get NCAAF team season statistics tags: [NCAAF] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - name: season in: query required: false schema: type: integer description: Filter by season responses: "200": description: NCAAF team season stats content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFTeamSeasonStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaaf/v1/odds: get: summary: Get NCAAF betting odds description: Retrieve betting odds for NCAAF games. Either (season and week) or game_ids is required. tags: [NCAAF] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season (must be provided with week) - name: week in: query required: false schema: type: integer description: Filter by week (must be provided with season) - name: game_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs responses: "200": description: NCAAF betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAAFBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # NCAAB Endpoints (College Basketball) /ncaab/v1/conferences: get: summary: Get NCAAB conferences tags: [NCAAB] security: - ApiKeyAuth: [] responses: "200": description: List of NCAAB conferences content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABConference" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/conferences/{id}: get: summary: Get specific NCAAB conference tags: [NCAAB] security: - ApiKeyAuth: [] parameters: - name: id in: path required: true schema: type: integer description: Conference ID responses: "200": description: Conference details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NCAABConference" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/teams: get: summary: Get NCAAB teams tags: [NCAAB] security: - ApiKeyAuth: [] parameters: - name: conference_id in: query required: false schema: type: integer description: Filter by conference ID responses: "200": description: List of NCAAB teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABTeam" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/teams/{id}: get: summary: Get specific NCAAB team tags: [NCAAB] security: - ApiKeyAuth: [] parameters: - name: id in: path required: true schema: type: integer description: Team ID responses: "200": description: Team details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NCAABTeam" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/players: get: summary: Get NCAAB players tags: [NCAAB] security: - ApiKeyAuth: [] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name - name: position in: query required: false schema: type: string description: Filter by position responses: "200": description: List of NCAAB players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/players/{id}: get: summary: Get specific NCAAB player tags: [NCAAB] security: - ApiKeyAuth: [] parameters: - name: id in: path required: true schema: type: integer description: Player ID responses: "200": description: Player details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NCAABPlayer" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/players/active: get: summary: Get active NCAAB players tags: [NCAAB] security: - ApiKeyAuth: [] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name - name: position in: query required: false schema: type: string description: Filter by position responses: "200": description: List of active NCAAB players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/standings: get: summary: Get NCAAB team standings tags: [NCAAB] description: Get team standings. Note - season values are transformed (user sends 2025, API queries DB for 2026, returns 2025) security: - ApiKeyAuth: [] parameters: - name: season in: query required: false schema: type: integer description: Season year (e.g. 2025 for 2025-26 season) - name: conference_id in: query required: false schema: type: integer description: Filter by conference ID (REQUIRED if season is provided) responses: "200": description: NCAAB team standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABStanding" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/games: get: summary: Get NCAAB games tags: [NCAAB] description: Get games. Note - season values are transformed (user sends 2025, API queries DB for 2026, returns 2025) security: - ApiKeyAuth: [] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/DatesParam" - $ref: "#/components/parameters/TeamIdsParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons (e.g. 2025 for 2025-26 season) - name: start_date in: query required: false schema: type: string format: date description: Filter games after this date (YYYY-MM-DD) - name: end_date in: query required: false schema: type: string format: date description: Filter games before this date (YYYY-MM-DD) - name: weeks[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by week numbers responses: "200": description: List of NCAAB games content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABGame" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/games/{id}: get: summary: Get specific NCAAB game tags: [NCAAB] security: - ApiKeyAuth: [] parameters: - name: id in: path required: true schema: type: integer description: Game ID responses: "200": description: Game details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/NCAABGame" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/rankings: get: summary: Get NCAAB rankings tags: [NCAAB] description: Get team rankings. Note - season values are transformed (user sends 2025, API queries DB for 2026, returns 2025) security: - ApiKeyAuth: [] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season (e.g. 2025 for 2025-26 season) - name: week in: query required: false schema: type: integer description: Filter by week number responses: "200": description: NCAAB rankings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABRanking" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/plays: get: summary: Get NCAAB play-by-play data tags: [NCAAB] security: - ApiKeyAuth: [] parameters: - name: game_id in: query required: true schema: type: integer description: Game ID (REQUIRED) responses: "200": description: Play-by-play data for the game content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABPlay" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/player_stats: get: summary: Get NCAAB player game statistics tags: [NCAAB] description: Get player statistics. Note - season values are transformed (user sends 2025, API queries DB for 2026, returns 2025) security: - ApiKeyAuth: [] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs - $ref: "#/components/parameters/DatesParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons (e.g. 2025 for 2025-26 season) - name: start_date in: query required: false schema: type: string format: date description: Filter stats after this date - name: end_date in: query required: false schema: type: string format: date description: Filter stats before this date - $ref: "#/components/parameters/TeamIdsParam" - name: weeks[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by week numbers responses: "200": description: NCAAB player game statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABPlayerStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/team_stats: get: summary: Get NCAAB team game statistics tags: [NCAAB] description: Get team statistics. Note - season values are transformed (user sends 2025, API queries DB for 2026, returns 2025) security: - ApiKeyAuth: [] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/TeamIdsParam" - name: game_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs - $ref: "#/components/parameters/DatesParam" - name: seasons[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by seasons (e.g. 2025 for 2025-26 season) - name: start_date in: query required: false schema: type: string format: date description: Filter stats after this date - name: end_date in: query required: false schema: type: string format: date description: Filter stats before this date - name: weeks[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by week numbers responses: "200": description: NCAAB team game statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABTeamStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/player_season_stats: get: summary: Get NCAAB player season statistics tags: [NCAAB] description: Get player season averages. Note - season values are transformed (user sends 2025, API queries DB for 2026, returns 2025) security: - ApiKeyAuth: [] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season (e.g. 2025 for 2025-26 season) - $ref: "#/components/parameters/PlayerIdsParam" - $ref: "#/components/parameters/TeamIdsParam" responses: "200": description: NCAAB player season statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABPlayerSeasonStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/team_season_stats: get: summary: Get NCAAB team season statistics tags: [NCAAB] description: Get team season averages. Note - season values are transformed (user sends 2025, API queries DB for 2026, returns 2025) security: - ApiKeyAuth: [] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season (e.g. 2025 for 2025-26 season) - $ref: "#/components/parameters/TeamIdsParam" responses: "200": description: NCAAB team season statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABTeamSeasonStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/bracket: get: summary: Get NCAAB tournament bracket data tags: [NCAAB] description: | Retrieve NCAA Men's Basketball tournament bracket data with optional filters (GOAT tier). Season values are offset by -1 from database values. Round IDs: - 1: First Four/Play-in games - 2: Round of 64 (First Round) - 3: Round of 32 (Second Round) - 4: Sweet 16 (Regional Semifinals) - 5: Elite 8 (Regional Finals) - 6: Final Four (National Semifinals) - 7: Championship (National Championship) security: - ApiKeyAuth: [] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season (e.g. 2025 queries database for 2026) - name: round_id in: query required: false schema: type: integer minimum: 1 maximum: 7 description: Filter by tournament round (1-7) - name: region_id in: query required: false schema: type: integer description: Filter by region ID responses: "200": description: NCAAB tournament bracket data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABBracket" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ncaab/v1/odds: get: summary: Get NCAAB betting odds description: Retrieve betting odds for NCAAB games. Either dates or game_ids is required. tags: [NCAAB] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by game dates (YYYY-MM-DD format) - name: game_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by game IDs responses: "200": description: NCAAB betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/NCAABBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/leagues: get: summary: Get all MMA leagues description: Retrieve a list of all MMA leagues (UFC, Bellator, etc.) tags: [MMA] responses: "200": description: List of MMA leagues content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MMALeague" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/leagues/{id}: get: summary: Get specific MMA league description: Retrieve details for a specific MMA league tags: [MMA] parameters: - name: id in: path required: true schema: type: integer description: League ID responses: "200": description: League details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/MMALeague" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/events: get: summary: Get MMA events description: Retrieve a list of MMA events with optional filtering tags: [MMA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: date in: query required: false schema: type: string format: date description: Filter by event date (YYYY-MM-DD) - name: year in: query required: false schema: type: integer description: Filter by event year responses: "200": description: List of MMA events content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MMAEvent" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/events/{id}: get: summary: Get specific MMA event description: Retrieve details for a specific MMA event tags: [MMA] parameters: - name: id in: path required: true schema: type: integer description: Event ID responses: "200": description: Event details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/MMAEvent" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/fighters: get: summary: Get MMA fighters description: Retrieve a list of MMA fighters with optional search and filtering tags: [MMA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search fighters by name - name: fighter_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by specific fighter IDs responses: "200": description: List of MMA fighters content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MMAFighter" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/fighters/{id}: get: summary: Get specific MMA fighter description: Retrieve details for a specific MMA fighter tags: [MMA] parameters: - name: id in: path required: true schema: type: integer description: Fighter ID responses: "200": description: Fighter details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/MMAFighter" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/fights: get: summary: Get MMA fights description: Retrieve a list of MMA fights with optional filtering tags: [MMA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: fight_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by specific fight IDs - name: fighter_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter fights involving specific fighters - name: event_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter fights by event IDs responses: "200": description: List of MMA fights content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MMAFight" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/fights/{id}: get: summary: Get specific MMA fight description: Retrieve details for a specific MMA fight tags: [MMA] parameters: - name: id in: path required: true schema: type: integer description: Fight ID responses: "200": description: Fight details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/MMAFight" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/rankings: get: summary: Get MMA rankings description: Retrieve current fighter rankings by weight class and league tags: [MMA] responses: "200": description: Fighter rankings by weight class content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MMAWeightClassRanking" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/fight_stats: get: summary: Get MMA fight statistics description: Retrieve detailed fight statistics for fighters tags: [MMA] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: fight_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by specific fight IDs - name: fighter_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter statistics for specific fighters - name: event_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter statistics by event IDs responses: "200": description: List of fight statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MMAFightStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/fight_stats/{id}: get: summary: Get specific fight statistics description: Retrieve statistics for a specific fight performance tags: [MMA] parameters: - name: id in: path required: true schema: type: integer description: Fight stat ID responses: "200": description: Fight statistics content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/MMAFightStat" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mma/v1/odds: get: summary: Get MMA betting odds description: Retrieve betting odds for MMA fights. Either event_id or fight_id is required. tags: [MMA] parameters: - name: event_id in: query required: false schema: type: integer description: Filter odds by event ID - name: fight_id in: query required: false schema: type: integer description: Filter odds by fight ID responses: "200": description: MMA betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/MMABettingOdd" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # CS2 (Counter-Strike 2) Endpoints /cs/v1/teams: get: summary: Get all CS2 teams description: Retrieve a list of all professional Counter-Strike 2 teams tags: [CS2] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search teams by name responses: "200": description: List of CS2 teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2Team" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/teams/{id}: get: summary: Get specific CS2 team description: Retrieve details for a specific CS2 team tags: [CS2] parameters: - name: id in: path required: true schema: type: integer description: Team ID responses: "200": description: Team details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/CS2Team" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/players: get: summary: Get all CS2 players description: Retrieve a list of all professional Counter-Strike 2 players tags: [CS2] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search players by nickname or name - name: team_id in: query required: false schema: type: integer description: Filter by team ID - name: active in: query required: false schema: type: boolean description: Filter by active status responses: "200": description: List of CS2 players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2Player" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/players/{id}: get: summary: Get specific CS2 player description: Retrieve details for a specific CS2 player tags: [CS2] parameters: - name: id in: path required: true schema: type: integer description: Player ID responses: "200": description: Player details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/CS2Player" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/tournaments: get: summary: Get all CS2 tournaments description: Retrieve a list of all Counter-Strike 2 tournaments tags: [CS2] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search tournaments by name responses: "200": description: List of CS2 tournaments content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2Tournament" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/tournaments/{id}: get: summary: Get specific CS2 tournament description: Retrieve details for a specific CS2 tournament tags: [CS2] parameters: - name: id in: path required: true schema: type: integer description: Tournament ID responses: "200": description: Tournament details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/CS2Tournament" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/tournament_teams: get: summary: Get tournament teams description: Retrieve all teams participating in a specific CS2 tournament tags: [CS2] parameters: - name: tournament_id in: query required: true schema: type: integer description: Tournament ID (required) responses: "200": description: List of teams in the tournament content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2TeamSlim" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/team_map_pool: get: summary: Get team map pool stats description: Retrieve map pool statistics for a specific CS2 team. Requires ALL-STAR tier or higher. tags: [CS2] parameters: - name: team_id in: query required: true schema: type: integer description: Team ID (required) responses: "200": description: Team map pool statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2TeamMapPoolStat" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/rankings: get: summary: Get CS2 team rankings description: Retrieve current official CS2 team rankings based on the Valve World Rankings system. Requires ALL-STAR tier or higher. tags: [CS2] responses: "200": description: Current CS2 team rankings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2TeamRanking" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/matches: get: summary: Get all CS2 matches description: Retrieve a list of all CS2 matches with optional filtering. Requires GOAT tier. tags: [CS2] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: team_ids[] in: query required: false schema: type: array items: type: integer description: Filter by team IDs (array) - name: tournament_ids[] in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs (array) - name: dates[] in: query required: false schema: type: array items: type: string format: date description: Filter by dates (YYYY-MM-DD format, array) responses: "200": description: List of CS2 matches content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2Match" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/matches/{id}: get: summary: Get specific CS2 match description: Retrieve details for a specific CS2 match. Requires GOAT tier. tags: [CS2] parameters: - name: id in: path required: true schema: type: integer description: Match ID responses: "200": description: Match details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/CS2Match" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/match_maps: get: summary: Get match maps description: Retrieve all maps (games) for specified CS2 matches. Requires GOAT tier. tags: [CS2] parameters: - name: match_ids[] in: query required: true schema: type: array items: type: integer description: Match IDs (array, required) responses: "200": description: Match maps content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2MatchMap" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/match_map_stats: get: summary: Get match map statistics description: Retrieve detailed round-by-round statistics for a specific map in a CS2 match. Requires GOAT tier. tags: [CS2] parameters: - name: match_map_id in: query required: true schema: type: integer description: Match map ID (required) responses: "200": description: Match map statistics content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/CS2MatchMapStats" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/player_match_stats: get: summary: Get player match statistics description: Retrieve player statistics aggregated across all maps in a CS2 match. Requires GOAT tier. tags: [CS2] parameters: - name: match_id in: query required: true schema: type: integer description: Match ID (required) responses: "200": description: Player match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2PlayerMatchStat" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/player_match_map_stats: get: summary: Get player match map statistics description: Retrieve player statistics for a specific map within a CS2 match. Requires GOAT tier. tags: [CS2] parameters: - name: match_map_id in: query required: true schema: type: integer description: Match map ID (required) responses: "200": description: Player match map statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2PlayerMatchMapStat" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /cs/v1/player_accuracy_stats: get: summary: Get player accuracy statistics description: Retrieve accuracy statistics for a specific CS2 player, broken down by hit groups (body parts). Requires GOAT tier. tags: [CS2] parameters: - name: player_id in: query required: true schema: type: integer description: Player ID (required) responses: "200": description: Player accuracy statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/CS2PlayerAccuracyStat" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # League of Legends (LOL) Endpoints /lol/v1/teams: get: summary: Get all LOL teams description: Retrieve a list of all professional League of Legends teams tags: [LOL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search teams by name responses: "200": description: List of LOL teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLTeam" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/players: get: summary: Get all LOL players description: Retrieve a list of all professional League of Legends players tags: [LOL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search players by nickname or name - name: team_id in: query required: false schema: type: integer description: Filter by team ID responses: "200": description: List of LOL players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/champions: get: summary: Get all LOL champions description: Retrieve a list of all League of Legends champions tags: [LOL] responses: "200": description: List of LOL champions content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLChampion" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/items: get: summary: Get all LOL items description: Retrieve a list of all League of Legends in-game items tags: [LOL] responses: "200": description: List of LOL items content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLItem" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/spells: get: summary: Get all LOL summoner spells description: Retrieve a list of all League of Legends summoner spells tags: [LOL] responses: "200": description: List of LOL summoner spells content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLSpell" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/rune_paths: get: summary: Get all LOL rune paths description: Retrieve a list of all League of Legends rune paths (Domination, Inspiration, Precision, Resolve, Sorcery) tags: [LOL] responses: "200": description: List of LOL rune paths content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLRunePath" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/runes: get: summary: Get all LOL runes description: Retrieve a list of all League of Legends runes with their paths and types tags: [LOL] responses: "200": description: List of LOL runes content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLRune" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/tournaments: get: summary: Get LOL tournaments description: Retrieve a list of professional League of Legends tournaments. Requires ALL-STAR tier or higher. tags: [LOL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: List of LOL tournaments content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLTournament" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/tournament_teams: get: summary: Get teams in a tournament description: Retrieve teams participating in a specific tournament. Requires ALL-STAR tier or higher. tags: [LOL] parameters: - name: tournament_id in: query required: true schema: type: integer description: Tournament ID responses: "200": description: List of teams in tournament content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLTournamentTeam" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/tournament_roster: get: summary: Get tournament roster description: Retrieve player rosters for a tournament and team. Requires ALL-STAR tier or higher. tags: [LOL] parameters: - name: tournament_id in: query required: true schema: type: integer description: Tournament ID - name: team_id in: query required: true schema: type: integer description: Team ID responses: "200": description: Tournament roster content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLTournamentRoster" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/champion_stats: get: summary: Get champion statistics description: Retrieve aggregate statistics for LOL champions across professional matches. Requires ALL-STAR tier or higher. tags: [LOL] responses: "200": description: Champion statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLChampionStats" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/matches: get: summary: Get LOL matches description: Retrieve professional League of Legends matches. Requires GOAT tier. tags: [LOL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_id in: query required: false schema: type: integer description: Filter by tournament ID - name: team_id in: query required: false schema: type: integer description: Filter by team ID responses: "200": description: List of LOL matches content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLMatch" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/match_maps: get: summary: Get match maps (games) description: Retrieve individual games within a match. Requires GOAT tier. tags: [LOL] parameters: - name: match_id in: query required: true schema: type: integer description: Match ID to get games for responses: "200": description: List of match maps content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLMatchMap" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/player_match_map_stats: get: summary: Get player match map statistics description: Retrieve detailed player statistics for individual games. Requires GOAT tier. tags: [LOL] parameters: - name: match_map_id in: query required: false schema: type: integer description: Filter by match map ID - name: player_id in: query required: false schema: type: integer description: Filter by player ID - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: Player match map statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLPlayerMatchMapStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/team_match_map_stats: get: summary: Get team match map statistics description: Retrieve detailed team statistics for individual games. Requires GOAT tier. tags: [LOL] parameters: - name: match_map_id in: query required: false schema: type: integer description: Filter by match map ID - name: team_id in: query required: false schema: type: integer description: Filter by team ID - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: Team match map statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLTeamMatchMapStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /lol/v1/player_overall_stats: get: summary: Get player overall statistics description: Retrieve career statistics for LOL players. Requires GOAT tier. tags: [LOL] parameters: - name: player_id in: query required: false schema: type: integer description: Filter by player ID - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: Player overall statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/LOLPlayerOverallStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # Dota 2 Endpoints /dota/v1/teams: get: summary: Get all Dota 2 teams description: Retrieve a list of all professional Dota 2 teams tags: [Dota] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search teams by name responses: "200": description: List of Dota 2 teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaTeam" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/players: get: summary: Get all Dota 2 players description: Retrieve a list of all professional Dota 2 players tags: [Dota] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search players by nickname or name - name: team_id in: query required: false schema: type: integer description: Filter by team ID responses: "200": description: List of Dota 2 players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/heroes: get: summary: Get all Dota 2 heroes description: Retrieve a list of all Dota 2 heroes tags: [Dota] responses: "200": description: List of Dota 2 heroes content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaHero" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/items: get: summary: Get all Dota 2 items description: Retrieve a list of all Dota 2 in-game items tags: [Dota] responses: "200": description: List of Dota 2 items content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaItem" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/abilities: get: summary: Get all Dota 2 abilities description: Retrieve a list of all Dota 2 hero abilities tags: [Dota] responses: "200": description: List of Dota 2 abilities content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaAbility" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/tournaments: get: summary: Get Dota 2 tournaments description: Retrieve a list of professional Dota 2 tournaments. Requires ALL-STAR tier or higher. tags: [Dota] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: List of Dota 2 tournaments content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaTournament" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/tournament_teams: get: summary: Get teams in a tournament description: Retrieve teams participating in a specific Dota 2 tournament. Requires ALL-STAR tier or higher. tags: [Dota] parameters: - name: tournament_id in: query required: true schema: type: integer description: Tournament ID responses: "200": description: List of teams in tournament content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaTournamentTeam" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/tournament_roster: get: summary: Get tournament roster description: Retrieve player rosters for a Dota 2 tournament and team. Requires ALL-STAR tier or higher. tags: [Dota] parameters: - name: tournament_id in: query required: true schema: type: integer description: Tournament ID - name: team_id in: query required: true schema: type: integer description: Team ID responses: "200": description: Tournament roster content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaTournamentRoster" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/hero_stats: get: summary: Get hero statistics description: Retrieve aggregate statistics for Dota 2 heroes across professional matches. Requires ALL-STAR tier or higher. tags: [Dota] responses: "200": description: Hero statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaHeroStats" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/matches: get: summary: Get Dota 2 matches description: Retrieve professional Dota 2 matches. Requires GOAT tier. tags: [Dota] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_id in: query required: false schema: type: integer description: Filter by tournament ID - name: team_id in: query required: false schema: type: integer description: Filter by team ID responses: "200": description: List of Dota 2 matches content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaMatch" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/match_maps: get: summary: Get match maps (games) description: Retrieve individual games within a Dota 2 match. Requires GOAT tier. tags: [Dota] parameters: - name: match_id in: query required: true schema: type: integer description: Match ID to get games for responses: "200": description: List of match maps content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaMatchMap" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/player_match_map_stats: get: summary: Get player match map statistics description: Retrieve detailed player statistics for individual Dota 2 games. Requires GOAT tier. tags: [Dota] parameters: - name: match_map_id in: query required: false schema: type: integer description: Filter by match map ID - name: player_id in: query required: false schema: type: integer description: Filter by player ID - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: Player match map statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaPlayerMatchMapStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/team_match_map_stats: get: summary: Get team match map statistics description: Retrieve detailed team statistics for individual Dota 2 games. Requires GOAT tier. tags: [Dota] parameters: - name: match_map_id in: query required: false schema: type: integer description: Filter by match map ID - name: team_id in: query required: false schema: type: integer description: Filter by team ID - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: Team match map statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaTeamMatchMapStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /dota/v1/player_overall_stats: get: summary: Get player overall statistics description: Retrieve career statistics for Dota 2 players. Requires GOAT tier. tags: [Dota] parameters: - name: player_id in: query required: false schema: type: integer description: Filter by player ID - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: Player overall statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/DotaPlayerOverallStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # FIFA World Cup 2026 Endpoints /fifa/worldcup/v1/teams: get: summary: Get World Cup 2026 teams description: Retrieve all FIFA World Cup 2026 participating nations tags: [FIFA] responses: "200": description: List of World Cup 2026 teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/FIFATeam" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /fifa/worldcup/v1/stadiums: get: summary: Get World Cup 2026 stadiums description: Retrieve all FIFA World Cup 2026 host stadiums tags: [FIFA] responses: "200": description: List of World Cup 2026 stadiums content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/FIFAStadium" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /fifa/worldcup/v1/group_standings: get: summary: Get World Cup 2026 group standings description: Retrieve group stage standings for FIFA World Cup 2026. Requires ALL-STAR tier or higher. tags: [FIFA] responses: "200": description: World Cup 2026 group standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/FIFAStanding" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /fifa/worldcup/v1/matches: get: summary: Get World Cup 2026 matches description: Retrieve all FIFA World Cup 2026 matches including group stage and knockout rounds. Requires GOAT tier. tags: [FIFA] responses: "200": description: List of World Cup 2026 matches content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/FIFAMatch" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /fifa/worldcup/v1/odds: get: summary: Get World Cup 2026 betting odds description: Retrieve betting odds for FIFA World Cup 2026 matches. Requires GOAT tier. tags: [FIFA] responses: "200": description: World Cup 2026 match betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/FIFABettingOdd" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /fifa/worldcup/v1/odds/futures: get: summary: Get World Cup 2026 futures odds description: Retrieve futures betting odds for FIFA World Cup 2026 (e.g., tournament winner). Requires GOAT tier. tags: [FIFA] responses: "200": description: World Cup 2026 futures betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/FIFAFuturesOdd" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # Formula 1 Endpoints /f1/v1/drivers: get: summary: Get F1 drivers description: Retrieve a list of Formula 1 drivers with optional filtering. FREE tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search drivers by name - name: country_code in: query required: false schema: type: string description: Filter by ISO country code - name: driver_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by specific driver IDs responses: "200": description: List of F1 drivers content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1Driver" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/teams: get: summary: Get F1 teams description: Retrieve a list of Formula 1 teams with optional filtering. FREE tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search teams by name - name: team_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by specific team IDs responses: "200": description: List of F1 teams content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1Team" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/circuits: get: summary: Get F1 circuits description: Retrieve a list of Formula 1 circuits with optional filtering. FREE tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: search in: query required: false schema: type: string description: Search circuits by name - name: country_code in: query required: false schema: type: string description: Filter by ISO country code - name: circuit_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by specific circuit IDs responses: "200": description: List of F1 circuits content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1Circuit" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/seasons: get: summary: Get F1 seasons description: Retrieve a list of Formula 1 seasons. FREE tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" responses: "200": description: List of F1 seasons content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1Season" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/events: get: summary: Get F1 events description: Retrieve a list of Formula 1 race events (Grand Prix weekends) with optional filtering. FREE tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season year - name: status in: query required: false schema: type: string description: Filter by event status - name: circuit_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by circuit IDs - name: event_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by specific event IDs responses: "200": description: List of F1 events content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1Event" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/sessions: get: summary: Get F1 sessions description: Retrieve a list of Formula 1 sessions (Practice, Qualifying, Sprint, Race) with optional filtering. Requires PAID tier or higher. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: event_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by event IDs - name: type in: query required: false schema: type: string description: Filter by session type (Practice, Qualifying, Sprint, Race) - name: status in: query required: false schema: type: string description: Filter by session status responses: "200": description: List of F1 sessions content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1Session" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/session_results: get: summary: Get F1 session results description: Retrieve Formula 1 session results (finishing positions, laps completed, etc.) with optional filtering. Requires PAID tier or higher. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: session_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by session IDs - name: driver_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by driver IDs responses: "200": description: List of F1 session results content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1SessionResult" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/driver_standings: get: summary: Get F1 driver standings description: Retrieve Formula 1 Driver Championship standings for a specific season. Requires PAID tier or higher. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: true schema: type: integer description: Season year (required) - name: driver_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by driver IDs responses: "200": description: Driver championship standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1DriverStanding" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/team_standings: get: summary: Get F1 team standings description: Retrieve Formula 1 Constructors Championship standings for a specific season. Requires PAID tier or higher. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: true schema: type: integer description: Season year (required) - name: team_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: Constructors championship standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1TeamStanding" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/lap_times: get: summary: Get F1 lap times description: Retrieve detailed lap-by-lap timing data for Formula 1 sessions. Requires PAID+ tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: session_ids[] in: query required: true schema: type: array items: type: integer style: form explode: true description: Filter by session IDs (required) - name: driver_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by driver IDs - name: lap_number in: query required: false schema: type: integer description: Filter by specific lap number responses: "200": description: Lap timing data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1LapTime" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/qualifying_results: get: summary: Get F1 qualifying results description: Retrieve detailed qualifying session results including Q1, Q2, and Q3 times. Requires PAID+ tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: session_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by session IDs - name: driver_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by driver IDs responses: "200": description: Qualifying results content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1QualifyingResult" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/pit_stops: get: summary: Get F1 pit stops description: Retrieve pit stop data including duration and timing. Requires PAID+ tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: session_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by session IDs - name: driver_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by driver IDs responses: "200": description: Pit stop data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1PitStop" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/tire_stints: get: summary: Get F1 tire stints description: Retrieve tire compound and stint data for each driver. Requires PAID+ tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: session_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by session IDs - name: driver_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by driver IDs responses: "200": description: Tire stint data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1TireStint" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/session_weather: get: summary: Get F1 session weather description: Retrieve weather conditions during Formula 1 sessions. Requires PAID+ tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: session_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by session IDs responses: "200": description: Session weather data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1SessionWeather" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/race_control_messages: get: summary: Get F1 race control messages description: Retrieve race control messages including flags, safety car, and DRS notifications. Requires PAID+ tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: session_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by session IDs - name: category in: query required: false schema: type: string description: Filter by message category - name: flag in: query required: false schema: type: string description: Filter by flag type responses: "200": description: Race control messages content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1RaceControlMessage" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/position_history: get: summary: Get F1 position history description: Retrieve lap-by-lap position changes for drivers during sessions. Requires PAID+ tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: session_ids[] in: query required: true schema: type: array items: type: integer style: form explode: true description: Filter by session IDs (required) - name: driver_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by driver IDs - name: lap_number in: query required: false schema: type: integer description: Filter by specific lap number responses: "200": description: Position history data content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1PositionHistory" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/session_timing_stats: get: summary: Get F1 session timing stats description: Retrieve detailed timing statistics including best laps, sector times, and speed trap data. Requires PAID+ tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: session_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by session IDs - name: driver_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by driver IDs responses: "200": description: Session timing statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1SessionTimingStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/track_status: get: summary: Get F1 track status description: Retrieve track status changes during sessions (green flag, yellow flag, safety car, etc.). Requires PAID+ tier. tags: [F1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: session_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by session IDs - name: status in: query required: false schema: type: string description: Filter by track status code responses: "200": description: Track status history content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1TrackStatus" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /f1/v1/odds/futures: get: summary: Get F1 futures odds description: | Retrieve futures betting odds for Formula 1 championships (e.g., driver championship winner, constructor championship winner). Requires PAID+ tier. tags: [F1] parameters: - name: event_ids[] in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by event IDs - name: market_type in: query required: false schema: type: string description: Filter by market type (e.g., driver_championship, constructor_championship) responses: "200": description: F1 futures betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/F1FuturesOdd" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # Template for each soccer league # Replace La Liga with: La Liga, Serie A, UCL, Bundesliga, Ligue 1 # Replace laliga with: laliga, seriea, ucl, bundesliga, ligue1 # UCL has additional futures endpoint /laliga/v1/teams: get: summary: Get La Liga teams description: Get all teams participating in La Liga for a given season tags: [La Liga] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year. Defaults to the current season if omitted. responses: "200": description: List of La Liga teams content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeam' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /laliga/v1/rosters: get: summary: Get La Liga team rosters description: Get player roster information for a specific team and season tags: [La Liga] parameters: - name: team_id in: query required: true schema: type: integer description: Team ID - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Team roster content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerRoster' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /laliga/v1/players: get: summary: Get La Liga players description: Get players with optional filtering by team or search term. Supports pagination. tags: [La Liga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs - name: search in: query required: false schema: type: string description: Search players by name responses: "200": description: List of La Liga players content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayer' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /laliga/v1/standings: get: summary: Get La Liga standings description: Get league standings for a specific season tags: [La Liga] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: League standings content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerStanding' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /laliga/v1/matches: get: summary: Get La Liga matches description: Get matches with optional filtering by season, dates, or teams. Supports pagination. tags: [La Liga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season year - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of matches content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatch' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /laliga/v1/match_events: get: summary: Get La Liga match events description: Get match events (goals, cards, substitutions, etc.) with optional filtering by matches. Supports pagination. tags: [La Liga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match events content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchEvent' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /laliga/v1/match_lineups: get: summary: Get La Liga match lineups description: Get match lineups (starting and substitute players) with optional filtering by matches. Supports pagination. tags: [La Liga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match lineups content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchLineup' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /laliga/v1/player_match_stats: get: summary: Get La Liga player match statistics description: Get player match statistics with optional filtering by matches or players. Supports pagination. tags: [La Liga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: player_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by player IDs responses: "200": description: List of player match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayerMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /laliga/v1/team_match_stats: get: summary: Get La Liga team match statistics description: Get team match statistics with optional filtering by matches or teams. Supports pagination. tags: [La Liga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of team match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeamMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /laliga/v1/odds: get: summary: Get La Liga betting odds description: Retrieve betting odds for La Liga matches. Supports filtering by match IDs or dates. La Liga odds include moneyline odds for home, away, and draw outcomes only (no spreads or totals). Supports pagination. tags: [La Liga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) responses: "200": description: La Liga betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /laliga/v1/odds/player_props: get: summary: Get La Liga player prop betting odds description: | Retrieve live player prop betting data for La Liga matches. Player prop data is LIVE and updated in real-time. We do not store historical data. As matches near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified match in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: draftkings, fanduel, caesars (more coming soon!) tags: [La Liga] parameters: - name: match_id in: query required: true schema: type: integer description: The match ID to retrieve player props for (required) responses: "200": description: La Liga player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerPlayerProp" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # Template for each soccer league # Replace Serie A with: La Liga, Serie A, UCL, Bundesliga, Ligue 1 # Replace seriea with: laliga, seriea, ucl, bundesliga, ligue1 # UCL has additional futures endpoint /seriea/v1/teams: get: summary: Get Serie A teams description: Get all teams participating in Serie A for a given season tags: [Serie A] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year. Defaults to the current season if omitted. responses: "200": description: List of Serie A teams content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeam' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /seriea/v1/rosters: get: summary: Get Serie A team rosters description: Get player roster information for a specific team and season tags: [Serie A] parameters: - name: team_id in: query required: true schema: type: integer description: Team ID - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Team roster content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerRoster' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /seriea/v1/players: get: summary: Get Serie A players description: Get players with optional filtering by team or search term. Supports pagination. tags: [Serie A] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs - name: search in: query required: false schema: type: string description: Search players by name responses: "200": description: List of Serie A players content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayer' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /seriea/v1/standings: get: summary: Get Serie A standings description: Get league standings for a specific season tags: [Serie A] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: League standings content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerStanding' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /seriea/v1/matches: get: summary: Get Serie A matches description: Get matches with optional filtering by season, dates, or teams. Supports pagination. tags: [Serie A] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season year - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of matches content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatch' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /seriea/v1/match_events: get: summary: Get Serie A match events description: Get match events (goals, cards, substitutions, etc.) with optional filtering by matches. Supports pagination. tags: [Serie A] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match events content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchEvent' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /seriea/v1/match_lineups: get: summary: Get Serie A match lineups description: Get match lineups (starting and substitute players) with optional filtering by matches. Supports pagination. tags: [Serie A] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match lineups content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchLineup' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /seriea/v1/player_match_stats: get: summary: Get Serie A player match statistics description: Get player match statistics with optional filtering by matches or players. Supports pagination. tags: [Serie A] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: player_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by player IDs responses: "200": description: List of player match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayerMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /seriea/v1/team_match_stats: get: summary: Get Serie A team match statistics description: Get team match statistics with optional filtering by matches or teams. Supports pagination. tags: [Serie A] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of team match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeamMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /seriea/v1/odds: get: summary: Get Serie A betting odds description: Retrieve betting odds for Serie A matches. Supports filtering by match IDs or dates. Serie A odds include moneyline odds for home, away, and draw outcomes only (no spreads or totals). Supports pagination. tags: [Serie A] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) responses: "200": description: Serie A betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /seriea/v1/odds/player_props: get: summary: Get Serie A player prop betting odds description: | Retrieve live player prop betting data for Serie A matches. Player prop data is LIVE and updated in real-time. We do not store historical data. As matches near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified match in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: draftkings, fanduel, caesars (more coming soon!) tags: [Serie A] parameters: - name: match_id in: query required: true schema: type: integer description: The match ID to retrieve player props for (required) responses: "200": description: Serie A player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerPlayerProp" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # Template for each soccer league # Replace UCL with: La Liga, Serie A, UCL, Bundesliga, Ligue 1 # Replace ucl with: laliga, seriea, ucl, bundesliga, ligue1 # UCL has additional futures endpoint /ucl/v1/teams: get: summary: Get UCL teams description: Get all teams participating in the Champions League for a given season tags: [UCL] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year. Defaults to the current season if omitted. responses: "200": description: List of UCL teams content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeam' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ucl/v1/rosters: get: summary: Get UCL team rosters description: Get player roster information for a specific team and season tags: [UCL] parameters: - name: team_id in: query required: true schema: type: integer description: Team ID - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Team roster content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerRoster' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ucl/v1/players: get: summary: Get UCL players description: Get players with optional filtering by team or search term. Supports pagination. tags: [UCL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs - name: search in: query required: false schema: type: string description: Search players by name responses: "200": description: List of UCL players content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayer' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ucl/v1/standings: get: summary: Get UCL standings description: Get league standings for a specific season tags: [UCL] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: League standings content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerStanding' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ucl/v1/matches: get: summary: Get UCL matches description: Get matches with optional filtering by season, dates, or teams. Supports pagination. tags: [UCL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season year - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of matches content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatch' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ucl/v1/match_events: get: summary: Get UCL match events description: Get match events (goals, cards, substitutions, etc.) with optional filtering by matches. Supports pagination. tags: [UCL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match events content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchEvent' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ucl/v1/match_lineups: get: summary: Get UCL match lineups description: Get match lineups (starting and substitute players) with optional filtering by matches. Supports pagination. tags: [UCL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match lineups content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchLineup' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ucl/v1/player_match_stats: get: summary: Get UCL player match statistics description: Get player match statistics with optional filtering by matches or players. Supports pagination. tags: [UCL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: player_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by player IDs responses: "200": description: List of player match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayerMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ucl/v1/team_match_stats: get: summary: Get UCL team match statistics description: Get team match statistics with optional filtering by matches or teams. Supports pagination. tags: [UCL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of team match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeamMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ucl/v1/odds: get: summary: Get UCL betting odds description: Retrieve betting odds for UCL matches. Supports filtering by match IDs or dates. UCL odds include moneyline odds for home, away, and draw outcomes only (no spreads or totals). Supports pagination. tags: [UCL] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) responses: "200": description: UCL betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ucl/v1/odds/player_props: get: summary: Get UCL player prop betting odds description: | Retrieve live player prop betting data for UCL matches. Player prop data is LIVE and updated in real-time. We do not store historical data. As matches near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified match in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: draftkings, fanduel, caesars (more coming soon!) tags: [UCL] parameters: - name: match_id in: query required: true schema: type: integer description: The match ID to retrieve player props for (required) responses: "200": description: UCL player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerPlayerProp" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ucl/v1/odds/futures: get: summary: Get UCL futures odds description: Retrieve futures betting odds for UEFA Champions League (e.g., tournament winner). Only available for UCL. tags: [UCL] responses: "200": description: UCL futures betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerFuturesOdd" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # Template for each soccer league # Replace Bundesliga with: La Liga, Serie A, UCL, Bundesliga, Ligue 1 # Replace bundesliga with: laliga, seriea, ucl, bundesliga, ligue1 # UCL has additional futures endpoint /bundesliga/v1/teams: get: summary: Get Bundesliga teams description: Get all teams participating in the Bundesliga for a given season tags: [Bundesliga] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year. Defaults to the current season if omitted. responses: "200": description: List of Bundesliga teams content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeam' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /bundesliga/v1/rosters: get: summary: Get Bundesliga team rosters description: Get player roster information for a specific team and season tags: [Bundesliga] parameters: - name: team_id in: query required: true schema: type: integer description: Team ID - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Team roster content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerRoster' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /bundesliga/v1/players: get: summary: Get Bundesliga players description: Get players with optional filtering by team or search term. Supports pagination. tags: [Bundesliga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs - name: search in: query required: false schema: type: string description: Search players by name responses: "200": description: List of Bundesliga players content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayer' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /bundesliga/v1/standings: get: summary: Get Bundesliga standings description: Get league standings for a specific season tags: [Bundesliga] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: League standings content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerStanding' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /bundesliga/v1/matches: get: summary: Get Bundesliga matches description: Get matches with optional filtering by season, dates, or teams. Supports pagination. tags: [Bundesliga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season year - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of matches content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatch' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /bundesliga/v1/match_events: get: summary: Get Bundesliga match events description: Get match events (goals, cards, substitutions, etc.) with optional filtering by matches. Supports pagination. tags: [Bundesliga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match events content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchEvent' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /bundesliga/v1/match_lineups: get: summary: Get Bundesliga match lineups description: Get match lineups (starting and substitute players) with optional filtering by matches. Supports pagination. tags: [Bundesliga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match lineups content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchLineup' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /bundesliga/v1/player_match_stats: get: summary: Get Bundesliga player match statistics description: Get player match statistics with optional filtering by matches or players. Supports pagination. tags: [Bundesliga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: player_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by player IDs responses: "200": description: List of player match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayerMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /bundesliga/v1/team_match_stats: get: summary: Get Bundesliga team match statistics description: Get team match statistics with optional filtering by matches or teams. Supports pagination. tags: [Bundesliga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of team match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeamMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /bundesliga/v1/odds: get: summary: Get Bundesliga betting odds description: Retrieve betting odds for Bundesliga matches. Supports filtering by match IDs or dates. Bundesliga odds include moneyline odds for home, away, and draw outcomes only (no spreads or totals). Supports pagination. tags: [Bundesliga] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) responses: "200": description: Bundesliga betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /bundesliga/v1/odds/player_props: get: summary: Get Bundesliga player prop betting odds description: | Retrieve live player prop betting data for Bundesliga matches. Player prop data is LIVE and updated in real-time. We do not store historical data. As matches near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified match in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: draftkings, fanduel, caesars (more coming soon!) tags: [Bundesliga] parameters: - name: match_id in: query required: true schema: type: integer description: The match ID to retrieve player props for (required) responses: "200": description: Bundesliga player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerPlayerProp" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # Template for each soccer league # Replace Ligue 1 with: La Liga, Serie A, UCL, Bundesliga, Ligue 1 # Replace ligue1 with: laliga, seriea, ucl, bundesliga, ligue1 # UCL has additional futures endpoint /ligue1/v1/teams: get: summary: Get Ligue 1 teams description: Get all teams participating in Ligue 1 for a given season tags: [Ligue 1] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year. Defaults to the current season if omitted. responses: "200": description: List of Ligue 1 teams content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeam' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ligue1/v1/rosters: get: summary: Get Ligue 1 team rosters description: Get player roster information for a specific team and season tags: [Ligue 1] parameters: - name: team_id in: query required: true schema: type: integer description: Team ID - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Team roster content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerRoster' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ligue1/v1/players: get: summary: Get Ligue 1 players description: Get players with optional filtering by team or search term. Supports pagination. tags: [Ligue 1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs - name: search in: query required: false schema: type: string description: Search players by name responses: "200": description: List of Ligue 1 players content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayer' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ligue1/v1/standings: get: summary: Get Ligue 1 standings description: Get league standings for a specific season tags: [Ligue 1] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: League standings content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerStanding' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ligue1/v1/matches: get: summary: Get Ligue 1 matches description: Get matches with optional filtering by season, dates, or teams. Supports pagination. tags: [Ligue 1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season year - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of matches content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatch' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ligue1/v1/match_events: get: summary: Get Ligue 1 match events description: Get match events (goals, cards, substitutions, etc.) with optional filtering by matches. Supports pagination. tags: [Ligue 1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match events content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchEvent' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ligue1/v1/match_lineups: get: summary: Get Ligue 1 match lineups description: Get match lineups (starting and substitute players) with optional filtering by matches. Supports pagination. tags: [Ligue 1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match lineups content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchLineup' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ligue1/v1/player_match_stats: get: summary: Get Ligue 1 player match statistics description: Get player match statistics with optional filtering by matches or players. Supports pagination. tags: [Ligue 1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: player_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by player IDs responses: "200": description: List of player match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayerMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ligue1/v1/team_match_stats: get: summary: Get Ligue 1 team match statistics description: Get team match statistics with optional filtering by matches or teams. Supports pagination. tags: [Ligue 1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of team match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeamMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /ligue1/v1/odds: get: summary: Get Ligue 1 betting odds description: Retrieve betting odds for Ligue 1 matches. Supports filtering by match IDs or dates. Ligue 1 odds include moneyline odds for home, away, and draw outcomes only (no spreads or totals). Supports pagination. tags: [Ligue 1] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) responses: "200": description: Ligue 1 betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /ligue1/v1/odds/player_props: get: summary: Get Ligue 1 player prop betting odds description: | Retrieve live player prop betting data for Ligue 1 matches. Player prop data is LIVE and updated in real-time. We do not store historical data. As matches near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified match in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: draftkings, fanduel, caesars (more coming soon!) tags: [Ligue 1] parameters: - name: match_id in: query required: true schema: type: integer description: The match ID to retrieve player props for (required) responses: "200": description: Ligue 1 player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerPlayerProp" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # MLS Endpoints /mls/v1/teams: get: summary: Get MLS teams description: Get all teams participating in MLS for a given season tags: [MLS] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year. Defaults to the current season if omitted. responses: "200": description: List of MLS teams content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeam' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /mls/v1/rosters: get: summary: Get MLS team rosters description: Get player roster information for a specific team and season tags: [MLS] parameters: - name: team_id in: query required: true schema: type: integer description: Team ID - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Team roster content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerRoster' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /mls/v1/players: get: summary: Get MLS players description: Get players with optional filtering by team or search term. Supports pagination. tags: [MLS] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs - name: search in: query required: false schema: type: string description: Search players by name responses: "200": description: List of MLS players content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayer' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /mls/v1/standings: get: summary: Get MLS standings description: Get league standings for a specific season. MLS uses conference-based standings (Eastern and Western Conference). tags: [MLS] parameters: - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: League standings content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerStanding' "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /mls/v1/matches: get: summary: Get MLS matches description: Get matches with optional filtering by season, dates, or teams. Supports pagination. tags: [MLS] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: false schema: type: integer description: Filter by season year - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of matches content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatch' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /mls/v1/match_events: get: summary: Get MLS match events description: Get match events (goals, cards, substitutions, etc.) with optional filtering by matches. Supports pagination. tags: [MLS] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match events content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchEvent' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /mls/v1/match_lineups: get: summary: Get MLS match lineups description: Get match lineups (starting and substitute players) with optional filtering by matches. Supports pagination. tags: [MLS] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs responses: "200": description: List of match lineups content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerMatchLineup' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /mls/v1/player_match_stats: get: summary: Get MLS player match statistics description: Get player match statistics with optional filtering by matches or players. Supports pagination. tags: [MLS] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: player_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by player IDs responses: "200": description: List of player match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerPlayerMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /mls/v1/team_match_stats: get: summary: Get MLS team match statistics description: Get team match statistics with optional filtering by matches or teams. Supports pagination. tags: [MLS] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: team_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by team IDs responses: "200": description: List of team match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SoccerTeamMatchStats' meta: $ref: "#/components/schemas/Pagination" "401": $ref: '#/components/responses/UnauthorizedError' "400": $ref: '#/components/responses/BadRequestError' "429": $ref: '#/components/responses/RateLimitError' "500": $ref: '#/components/responses/ServerError' /mls/v1/odds: get: summary: Get MLS betting odds description: Retrieve betting odds for MLS matches. Supports filtering by match IDs or dates. MLS odds include moneyline odds for home, away, and draw outcomes only (no spreads or totals). Supports pagination. tags: [MLS] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer style: form explode: true description: Filter by match IDs - name: dates in: query required: false schema: type: array items: type: string format: date style: form explode: true description: Filter by specific dates (YYYY-MM-DD format) responses: "200": description: MLS betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerBettingOdd" meta: $ref: "#/components/schemas/Pagination" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /mls/v1/odds/player_props: get: summary: Get MLS player prop betting odds description: | Retrieve live player prop betting data for MLS matches. Player prop data is LIVE and updated in real-time. We do not store historical data. As matches near completion, many (or all) player props may be removed from sportsbooks. **Note:** This endpoint returns all player props for the specified match in a single response. Pagination is not supported. The API supports two market types: - **over_under**: Traditional over/under markets where users can bet on whether a player will go over or under a specific line value - **milestone**: Milestone markets where users bet on whether a player will reach a specific achievement Available vendors: draftkings, fanduel, caesars (more coming soon!) tags: [MLS] parameters: - name: match_id in: query required: true schema: type: integer description: The match ID to retrieve player props for (required) responses: "200": description: MLS player prop betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/SoccerPlayerProp" "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # PGA Tour Endpoints /pga/v1/players: get: summary: Get PGA Tour players description: Retrieve PGA Tour players with optional filters. Free tier. tags: [PGA Tour] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name - name: country in: query required: false schema: type: string description: Filter by country - name: active in: query required: false schema: type: boolean description: Filter by active status responses: "200": description: List of PGA Tour players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/PGAPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /pga/v1/tournaments: get: summary: Get PGA Tour tournaments description: Retrieve PGA Tour tournaments with optional filters. Free tier. tags: [PGA Tour] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - name: season in: query required: false schema: type: integer description: Filter by season year - name: status in: query required: false schema: type: string description: Filter by status (COMPLETED, IN_PROGRESS, SCHEDULED) responses: "200": description: List of PGA Tour tournaments content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/PGATournament" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /pga/v1/courses: get: summary: Get PGA Tour courses description: Retrieve golf courses with optional filters. Free tier. tags: [PGA Tour] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: course_ids in: query required: false schema: type: array items: type: integer description: Filter by course IDs - name: search in: query required: false schema: type: string description: Search by course name responses: "200": description: List of golf courses content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/PGACourse" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /pga/v1/tournament_results: get: summary: Get PGA tournament results description: Retrieve tournament leaderboard/results. Requires ALL-STAR tier. tags: [PGA Tour] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - $ref: "#/components/parameters/PlayerIdsParam" - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Tournament results content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/PGATournamentResult" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /pga/v1/tournament_course_stats: get: summary: Get tournament course statistics description: Retrieve hole-by-hole tournament statistics. Requires ALL-STAR tier. tags: [PGA Tour] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - name: course_ids in: query required: false schema: type: array items: type: integer description: Filter by course IDs - name: hole_number in: query required: false schema: type: integer description: Filter by hole number (1-18) - name: round_number in: query required: false schema: type: integer description: Filter by round number (1-4) responses: "200": description: Tournament course statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/PGATournamentCourseStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /pga/v1/course_holes: get: summary: Get course holes description: Retrieve hole-by-hole course information. Requires ALL-STAR tier. tags: [PGA Tour] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: course_ids in: query required: false schema: type: array items: type: integer description: Filter by course IDs - name: hole_number in: query required: false schema: type: integer description: Filter by hole number (1-18) responses: "200": description: Course holes content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/PGACourseHole" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /pga/v1/player_round_results: get: summary: Get player round results description: Retrieve round-by-round player scores. Requires GOAT tier. tags: [PGA Tour] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - $ref: "#/components/parameters/PlayerIdsParam" - name: round_number in: query required: false schema: type: integer description: Filter by round number (1-4) - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Player round results content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/PGAPlayerRoundResult" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /pga/v1/player_round_stats: get: summary: Get player round statistics description: Retrieve detailed player round statistics including strokes gained. Use round_number=-1 for tournament totals. Requires GOAT tier. tags: [PGA Tour] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - $ref: "#/components/parameters/PlayerIdsParam" - name: round_number in: query required: false schema: type: integer description: Filter by round number (1-4, -1 for tournament total) - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Player round statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/PGAPlayerRoundStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /pga/v1/player_season_stats: get: summary: Get player season statistics description: Retrieve player season-level statistics. Requires GOAT tier. tags: [PGA Tour] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: season in: query required: true schema: type: integer description: Season year (required) - $ref: "#/components/parameters/PlayerIdsParam" - name: stat_ids in: query required: false schema: type: array items: type: integer description: Filter by stat category IDs responses: "200": description: Player season statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/PGAPlayerSeasonStat" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /pga/v1/player_scorecards: get: summary: Get player scorecards description: Retrieve hole-by-hole player scores. Requires GOAT tier. tags: [PGA Tour] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - $ref: "#/components/parameters/PlayerIdsParam" - name: round_number in: query required: false schema: type: integer description: Filter by round number (1-4) - name: hole_number in: query required: false schema: type: integer description: Filter by hole number (1-18) responses: "200": description: Player scorecards content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/PGAPlayerScorecard" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # ATP Tennis Endpoints (Men's Singles Only) /atp/v1/players: get: summary: Get ATP players description: Retrieve ATP tennis players with optional filters. Men's singles only. Free tier. tags: [ATP Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name - name: country in: query required: false schema: type: string description: Filter by country - name: country_code in: query required: false schema: type: string description: Filter by country code (e.g., ESP, ITA) responses: "200": description: List of ATP players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/ATPPlayer" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/players/{id}: get: summary: Get specific ATP player description: Retrieve a single ATP player by ID. Free tier. tags: [ATP Tennis] parameters: - name: id in: path required: true schema: type: integer description: Player ID responses: "200": description: ATP player details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/ATPPlayer" "404": $ref: "#/components/responses/NotFoundError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/tournaments: get: summary: Get ATP tournaments description: Retrieve ATP tournaments with optional filters. Free tier. tags: [ATP Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - name: season in: query required: false schema: type: integer description: Filter by season year - name: surface in: query required: false schema: type: string description: Filter by surface (Hard, Clay, Grass, Carpet) - name: category in: query required: false schema: type: string description: Filter by category (Grand Slam, ATP 1000, etc.) responses: "200": description: List of ATP tournaments content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/ATPTournament" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/tournaments/{id}: get: summary: Get specific ATP tournament description: Retrieve a single ATP tournament by ID. Free tier. tags: [ATP Tennis] parameters: - name: id in: path required: true schema: type: integer description: Tournament ID - name: season in: query required: false schema: type: integer description: Get tournament info for specific season year responses: "200": description: ATP tournament details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/ATPTournament" "404": $ref: "#/components/responses/NotFoundError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/rankings: get: summary: Get ATP rankings description: Retrieve current ATP rankings. Free tier. tags: [ATP Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: date in: query required: false schema: type: string format: date description: Get rankings for specific date (YYYY-MM-DD) responses: "200": description: ATP rankings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/ATPRanking" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/matches: get: summary: Get ATP matches description: Retrieve ATP matches with optional filters. Requires ALL-STAR tier. tags: [ATP Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - $ref: "#/components/parameters/PlayerIdsParam" - name: season in: query required: false schema: type: integer description: Filter by season year - name: round in: query required: false schema: type: string description: Filter by round (Finals, Semi-Finals, etc.) - name: is_live in: query required: false schema: type: boolean description: Filter for live matches only responses: "200": description: List of ATP matches content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/ATPMatch" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/matches/{id}: get: summary: Get specific ATP match description: Retrieve a single ATP match by ID. Requires ALL-STAR tier. tags: [ATP Tennis] parameters: - name: id in: path required: true schema: type: integer description: Match ID responses: "200": description: ATP match details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/ATPMatch" "404": $ref: "#/components/responses/NotFoundError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/atp_race: get: summary: Get ATP Race to Turin description: Retrieve ATP Race standings for season-ending ATP Finals qualification. Requires ALL-STAR tier. tags: [ATP Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: date in: query required: false schema: type: string format: date description: Get standings for specific date (YYYY-MM-DD) responses: "200": description: ATP Race standings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/ATPRace" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/match_stats: get: summary: Get ATP match statistics description: Retrieve detailed match statistics. Requires GOAT tier. tags: [ATP Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: match_ids in: query required: false schema: type: array items: type: integer description: Filter by match IDs - $ref: "#/components/parameters/PlayerIdsParam" - name: set_number in: query required: false schema: type: integer description: Filter by set number (0 for full match stats) responses: "200": description: Match statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/ATPMatchStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/player_career_stats: get: summary: Get ATP player career statistics description: Retrieve career statistics for players. Requires GOAT tier. tags: [ATP Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" responses: "200": description: Player career statistics content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/ATPPlayerCareerStats" meta: $ref: "#/components/schemas/Pagination" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/head_to_head: get: summary: Get ATP head-to-head record description: Retrieve head-to-head record between two players. Requires GOAT tier. tags: [ATP Tennis] parameters: - name: player1_id in: query required: true schema: type: integer description: First player ID - name: player2_id in: query required: true schema: type: integer description: Second player ID responses: "200": description: Head-to-head record content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/ATPHeadToHead" "404": $ref: "#/components/responses/NotFoundError" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /atp/v1/odds: get: summary: Get ATP betting odds description: Retrieve betting odds for ATP matches. Requires at least one filter. Requires GOAT tier. tags: [ATP Tennis] parameters: - name: match_ids in: query required: false schema: type: array items: type: integer description: Filter by match IDs - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - $ref: "#/components/parameters/PlayerIdsParam" - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/ATPBettingOdd" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" # WTA Tennis Endpoints (Women's Singles Only) /wta/v1/players: get: summary: Get WTA players description: Retrieve WTA tennis players with optional filters. Women's singles only. Free tier. tags: [WTA Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: search in: query required: false schema: type: string description: Search by player name - name: first_name in: query required: false schema: type: string description: Filter by first name - name: last_name in: query required: false schema: type: string description: Filter by last name - name: country in: query required: false schema: type: string description: Filter by country - name: country_code in: query required: false schema: type: string description: Filter by country code (e.g., USA, POL) responses: "200": description: List of WTA players content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WTAPlayer" meta: $ref: "#/components/schemas/Pagination" example: data: - id: 1 first_name: "Aryna" last_name: "Sabalenka" full_name: "Aryna Sabalenka" country: null country_code: "BLR" birth_place: null age: null height_cm: null weight_kg: null plays: null turned_pro: null - id: 2 first_name: "Iga" last_name: "Swiatek" full_name: "Iga Swiatek" country: null country_code: "POL" birth_place: null age: null height_cm: null weight_kg: null plays: null turned_pro: null meta: next_cursor: 2 per_page: 2 "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wta/v1/players/{id}: get: summary: Get specific WTA player description: Retrieve a single WTA player by ID. Free tier. tags: [WTA Tennis] parameters: - name: id in: path required: true schema: type: integer description: Player ID responses: "200": description: WTA player details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/WTAPlayer" example: data: id: 1 first_name: "Aryna" last_name: "Sabalenka" full_name: "Aryna Sabalenka" country: null country_code: "BLR" birth_place: null age: null height_cm: null weight_kg: null plays: null turned_pro: null "404": $ref: "#/components/responses/NotFoundError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wta/v1/tournaments: get: summary: Get WTA tournaments description: Retrieve WTA tournaments with optional filters. Free tier. tags: [WTA Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - name: season in: query required: false schema: type: integer description: Filter by season year - name: surface in: query required: false schema: type: string description: Filter by surface (Hard, Clay, Grass, Carpet) - name: category in: query required: false schema: type: string description: Filter by category (Grand Slam, WTA 1000, WTA 500, WTA 250) responses: "200": description: List of WTA tournaments content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WTATournament" meta: $ref: "#/components/schemas/Pagination" example: data: - id: 1 name: "UNITED CUP" location: "PERTH + SYDNEY, AUSTRALIA" surface: "Hard" category: "WTA 500" season: 2026 start_date: "2026-01-02" end_date: "2026-01-11" prize_money: null prize_currency: "USD" draw_size: null - id: 2 name: "BRISBANE" location: "BRISBANE, AUSTRALIA" surface: "Hard" category: "WTA 500" season: 2026 start_date: "2026-01-04" end_date: "2026-01-11" prize_money: 1206446 prize_currency: "USD" draw_size: 48 meta: next_cursor: 2 per_page: 2 "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wta/v1/tournaments/{id}: get: summary: Get specific WTA tournament description: Retrieve a single WTA tournament by ID. Free tier. tags: [WTA Tennis] parameters: - name: id in: path required: true schema: type: integer description: Tournament ID - name: season in: query required: false schema: type: integer description: Get tournament info for specific season year responses: "200": description: WTA tournament details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/WTATournament" example: data: id: 1 name: "UNITED CUP" location: "PERTH + SYDNEY, AUSTRALIA" surface: "Hard" category: "WTA 500" season: 2026 start_date: "2026-01-02" end_date: "2026-01-11" prize_money: null prize_currency: "USD" draw_size: null "404": $ref: "#/components/responses/NotFoundError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wta/v1/rankings: get: summary: Get WTA rankings description: Retrieve current WTA rankings. Free tier. tags: [WTA Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - $ref: "#/components/parameters/PlayerIdsParam" - name: date in: query required: false schema: type: string format: date description: Get rankings for specific date (YYYY-MM-DD) responses: "200": description: WTA rankings content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WTARanking" meta: $ref: "#/components/schemas/Pagination" example: data: - id: 1131 player: id: 1 first_name: "Aryna" last_name: "Sabalenka" full_name: "Aryna Sabalenka" country: null country_code: "BLR" birth_place: null age: null height_cm: null weight_kg: null plays: null turned_pro: null rank: 1 points: 10990 movement: 0 ranking_date: "2026-01-19" - id: 1132 player: id: 2 first_name: "Iga" last_name: "Swiatek" full_name: "Iga Swiatek" country: null country_code: "POL" birth_place: null age: null height_cm: null weight_kg: null plays: null turned_pro: null rank: 2 points: 8328 movement: 0 ranking_date: "2026-01-19" meta: next_cursor: 1132 per_page: 2 "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wta/v1/matches: get: summary: Get WTA matches description: Retrieve WTA matches with optional filters. Requires ALL-STAR tier. tags: [WTA Tennis] parameters: - $ref: "#/components/parameters/CursorParam" - $ref: "#/components/parameters/PerPageParam" - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - $ref: "#/components/parameters/PlayerIdsParam" - name: season in: query required: false schema: type: integer description: Filter by season year - name: round in: query required: false schema: type: string description: Filter by round (Finals, Semi-Finals, etc.) - name: is_live in: query required: false schema: type: boolean description: Filter for live matches only responses: "200": description: List of WTA matches content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WTAMatch" meta: $ref: "#/components/schemas/Pagination" example: data: - id: 1 tournament: id: 7 name: "AUSTRALIAN OPEN" location: "MELBOURNE, AUSTRALIA" surface: "Hard" category: "Grand Slam" season: 2026 start_date: "2026-01-18" end_date: "2026-02-01" prize_money: null prize_currency: "USD" draw_size: 128 season: 2026 round: "Quarterfinals" player1: id: 91 first_name: "Zeynep" last_name: "Sonmez" full_name: "Zeynep Sonmez" country: null country_code: "TUR" player2: id: 92 first_name: "Anastasia" last_name: "Gasanova" full_name: "Anastasia Gasanova" country: null country_code: null winner: id: 91 first_name: "Zeynep" last_name: "Sonmez" full_name: "Zeynep Sonmez" country: null country_code: "TUR" score: "6-3 6-2" duration: null number_of_sets: 2 match_status: "completed" is_live: false meta: next_cursor: 2 per_page: 2 "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wta/v1/matches/{id}: get: summary: Get specific WTA match description: Retrieve a single WTA match by ID. Requires ALL-STAR tier. tags: [WTA Tennis] parameters: - name: id in: path required: true schema: type: integer description: Match ID responses: "200": description: WTA match details content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/WTAMatch" "404": $ref: "#/components/responses/NotFoundError" "401": $ref: "#/components/responses/UnauthorizedError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wta/v1/head_to_head: get: summary: Get WTA head-to-head record description: Retrieve head-to-head record between two players. Requires GOAT tier. tags: [WTA Tennis] parameters: - name: player1_id in: query required: true schema: type: integer description: First player ID - name: player2_id in: query required: true schema: type: integer description: Second player ID responses: "200": description: Head-to-head record content: application/json: schema: type: object properties: data: $ref: "#/components/schemas/WTAHeadToHead" example: data: id: 39 player1: id: 1 first_name: "Aryna" last_name: "Sabalenka" full_name: "Aryna Sabalenka" country: null country_code: "BLR" player2: id: 2 first_name: "Iga" last_name: "Swiatek" full_name: "Iga Swiatek" country: null country_code: "POL" player1_wins: 5 player2_wins: 8 "404": $ref: "#/components/responses/NotFoundError" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError" /wta/v1/odds: get: summary: Get WTA betting odds description: Retrieve betting odds for WTA matches. Requires at least one filter. Requires GOAT tier. tags: [WTA Tennis] parameters: - name: match_ids in: query required: false schema: type: array items: type: integer description: Filter by match IDs - name: tournament_ids in: query required: false schema: type: array items: type: integer description: Filter by tournament IDs - $ref: "#/components/parameters/PlayerIdsParam" - name: season in: query required: false schema: type: integer description: Filter by season year responses: "200": description: Betting odds content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/WTABettingOdd" example: data: - id: 90174363 match_id: 31 vendor: "caesars" player1: id: 151 first_name: "Yulia" last_name: "Putintseva" full_name: "Yulia Putintseva" country: null country_code: "KAZ" player2: id: 152 first_name: "Beatriz" last_name: "Haddad Maia" full_name: "Beatriz Haddad Maia" country: null country_code: "BRA" player1_odds: -2500 player2_odds: 1100 updated_at: "2026-01-18T03:00:22.637Z" "401": $ref: "#/components/responses/UnauthorizedError" "400": $ref: "#/components/responses/BadRequestError" "429": $ref: "#/components/responses/RateLimitError" "500": $ref: "#/components/responses/ServerError"