{"openapi":"3.0.3","info":{"title":"Cito API","version":"1.0.0","description":"Utilities API — QR code generation and sports/esports data (Fortnite, CoD, LoL, Apex, Dota 2, CS2, UFC, Tennis).","contact":{"name":"Cito API Support","url":"https://citoapi.com"},"x-logo":{"url":"https://citoapi.com/logo.png"}},"servers":[{"url":"https://api.citoapi.com/api/v1","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your Cito API key. Get one at https://citoapi.com"}},"schemas":{"Error":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"string","example":"Validation error message"}}},"QrGenerateBody":{"type":"object","required":["data"],"properties":{"data":{"type":"string","description":"Text or URL to encode into the QR code.","example":"https://citoapi.com","maxLength":2048},"size":{"type":"integer","description":"Output image size in pixels (width = height).","default":300,"minimum":100,"maximum":2000,"example":400},"format":{"type":"string","description":"Output format.","enum":["png","svg","base64"],"default":"png"},"foreground":{"type":"string","description":"Foreground (dark module) hex color.","default":"#000000","example":"#000000"},"background":{"type":"string","description":"Background hex color.","default":"#ffffff","example":"#ffffff"},"margin":{"type":"integer","description":"Quiet zone width in modules.","default":4,"minimum":0,"maximum":10},"errorCorrection":{"type":"string","description":"Error correction level. Automatically forced to H when a logo is provided.","enum":["L","M","Q","H"],"default":"M"},"logo":{"type":"object","description":"Optional logo to overlay in the center of the QR code. Requires error correction H (set automatically).","required":["image"],"properties":{"image":{"type":"string","description":"Base64-encoded image with data URL prefix (e.g. data:image/png;base64,...).","example":"data:image/png;base64,iVBORw0KGgo..."},"sizeRatio":{"type":"number","description":"Logo size as a fraction of the QR code size. Capped at 0.35 to preserve scannability.","default":0.25,"minimum":0.1,"maximum":0.35},"padding":{"type":"integer","description":"White padding around the logo in pixels.","default":8,"minimum":0,"maximum":50}}}}},"TennisAllTimeTitleLeader":{"properties":{"player_id":{"type":"string","title":"Player Id","description":"Player ID"},"player_name":{"type":"string","title":"Player Name","description":"Player full name"},"titles":{"type":"integer","title":"Titles","description":"Titles count"}},"type":"object","required":["player_id","player_name","titles"],"title":"AllTimeTitleLeader","description":"Player with most titles at a tournament."},"TennisCalendarTournamentItem":{"properties":{"id":{"type":"string","title":"Id","description":"Tournament edition ID"},"name":{"type":"string","title":"Name","description":"Tournament name"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"Edition year; this route requires year as a query parameter and did not return it"},"tour":{"type":"string","title":"Tour","description":"ATP or WTA"},"level":{"type":"string","title":"Level","description":"Tier code"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Canonical event category: grand_slam, masters_1000, wta_1000, tour_finals, atp_tour, wta_tour, challenger, itf, davis_cup, billie_jean_king_cup, other. ATP 250 and ATP 500 both report atp_tour because the source does not separate them"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier","description":"Human level name derived from the tier code, e.g. Grand Slam, Masters 1000, ATP Tour, WTA 1000, WTA 500, WTA 250, WTA 125, Challenger, ITF World Tennis Tour, Davis Cup, Billie Jean King Cup, Tour Finals, Olympics. ATP 500 and ATP 250 both read ATP Tour because the source does not separate them"},"tier_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier Code","description":"Raw source tier code the level was derived from: G, M, A, C, S, D, O, F, PM, P, I, W, or an ITF prize-money number such as 15/25/100"},"surface":{"type":"string","title":"Surface","description":"Surface"},"start_date":{"type":"string","title":"Start Date","description":"Start date (YYYY-MM-DD)"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date","description":"End date (YYYY-MM-DD)"},"draw_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Draw Size","description":"Draw size","default":32},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"Host city"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"Country code"},"is_live_shell":{"type":"boolean","title":"Is Live Shell","description":"True for a live-feed container (s365_*) or a tour_year_code alias resolving to one; the archive has not caught up to this edition yet","default":false}},"type":"object","required":["id","name","tour","level","surface","start_date"],"title":"CalendarTournamentItem","description":"Tournament calendar event item."},"TennisCareerSummary":{"properties":{"matches_played":{"type":"integer","title":"Matches Played","description":"Total official matches played"},"matches_won":{"type":"integer","title":"Matches Won","description":"Total matches won"},"matches_lost":{"type":"integer","title":"Matches Lost","description":"Total matches lost"},"win_percentage":{"type":"number","title":"Win Percentage","description":"Career win percentage (0.0 to 100.0)"},"titles_count":{"type":"integer","title":"Titles Count","description":"Singles titles won"},"grand_slam_titles":{"type":"integer","title":"Grand Slam Titles","description":"Grand Slam singles titles won","default":0},"masters_titles":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Masters Titles","description":"Masters 1000 singles titles where computed; null when not"},"finals_reached":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Finals Reached","description":"Singles finals reached where computed; null when not"},"prize_money_usd":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prize Money Usd","description":"Not held by this dataset; always null"}},"type":"object","required":["matches_played","matches_won","matches_lost","win_percentage","titles_count"],"title":"CareerSummary","description":"Aggregated career singles win-loss and title statistics."},"TennisClutchStats":{"properties":{"tiebreaks_played":{"type":"integer","title":"Tiebreaks Played","description":"Total tiebreaks played","default":0},"tiebreaks_won":{"type":"integer","title":"Tiebreaks Won","description":"Total tiebreaks won","default":0},"tiebreak_win_pct":{"type":"number","title":"Tiebreak Win Pct","description":"Tiebreak win percentage","default":0},"deciding_set_matches":{"type":"integer","title":"Deciding Set Matches","description":"Matches that went to a deciding set","default":0},"deciding_set_wins":{"type":"integer","title":"Deciding Set Wins","description":"Deciding set matches won","default":0},"deciding_set_win_pct":{"type":"number","title":"Deciding Set Win Pct","description":"Deciding set win percentage","default":0},"after_winning_first_set_win_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"After Winning First Set Win Pct","description":"Win % after winning 1st set"},"after_losing_first_set_win_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"After Losing First Set Win Pct","description":"Win % after losing 1st set"},"vs_top_10_matches":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vs Top 10 Matches","description":"Matches played against Top 10 ranked players","default":0},"vs_top_10_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vs Top 10 Wins","description":"Matches won against Top 10 ranked players","default":0},"vs_top_10_win_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vs Top 10 Win Pct","description":"Win % against Top 10 ranked players","default":0}},"type":"object","title":"ClutchStats","description":"Clutch situational and tiebreak metrics."},"TennisDrawMatch":{"properties":{"match_id":{"type":"string","title":"Match Id","description":"Match ID"},"match_num":{"type":"integer","title":"Match Num","description":"Match order number"},"player1":{"$ref":"#/components/schemas/TennisDrawPlayer","description":"Top / First player in bracket slot"},"player2":{"$ref":"#/components/schemas/TennisDrawPlayer","description":"Bottom / Second player in bracket slot"},"score":{"type":"string","title":"Score","description":"Scoreline"},"next_match_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Match Id","description":"Target match ID in subsequent round"}},"type":"object","required":["match_id","match_num","player1","player2","score"],"title":"DrawMatch","description":"Match node in tournament draw bracket."},"TennisDrawPlayer":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Player ID"},"name":{"type":"string","title":"Name","description":"Player display name"},"ioc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ioc","description":"Country IOC code, the same key the match and h2h participant objects use"},"seed":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Seeding number"},"entry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry","description":"Entry type (WC, Q, LL)"},"is_winner":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Winner","description":"Whether player advanced from this match"}},"type":"object","required":["name"],"title":"DrawPlayer","description":"Player participant node in bracket draw."},"TennisDrawRound":{"properties":{"round_code":{"type":"string","title":"Round Code","description":"Round code (e.g. F, SF, QF, R16, R32, R64, R128)"},"round_name":{"type":"string","title":"Round Name","description":"Human-readable round name"},"matches":{"items":{"$ref":"#/components/schemas/TennisDrawMatch"},"type":"array","title":"Matches","description":"Matches in this round"}},"type":"object","required":["round_code","round_name"],"title":"DrawRound","description":"Round grouping in bracket tree."},"TennisGrandSlamBreakdown":{"properties":{"australian_open":{"$ref":"#/components/schemas/TennisGrandSlamTournamentRecord"},"roland_garros":{"$ref":"#/components/schemas/TennisGrandSlamTournamentRecord"},"wimbledon":{"$ref":"#/components/schemas/TennisGrandSlamTournamentRecord"},"us_open":{"$ref":"#/components/schemas/TennisGrandSlamTournamentRecord"}},"type":"object","required":["australian_open","roland_garros","wimbledon","us_open"],"title":"GrandSlamBreakdown","description":"Career performance across the four Grand Slam majors."},"TennisGrandSlamTournamentRecord":{"properties":{"titles":{"type":"integer","title":"Titles","description":"Titles won","default":0},"finals":{"type":"integer","title":"Finals","description":"Finals reached","default":0},"win_loss":{"type":"string","title":"Win Loss","description":"Career win-loss record string","default":"0-0"},"win_pct":{"type":"number","title":"Win Pct","description":"Match win percentage","default":0}},"type":"object","title":"GrandSlamTournamentRecord","description":"Performance metrics for an individual Grand Slam tournament."},"TennisH2HDecidingSetsRecord":{"properties":{"player1_deciding_set_wins":{"type":"integer","title":"Player1 Deciding Set Wins","description":"Deciding set matches won by Player 1","default":0},"player2_deciding_set_wins":{"type":"integer","title":"Player2 Deciding Set Wins","description":"Deciding set matches won by Player 2","default":0},"total_deciding_sets":{"type":"integer","title":"Total Deciding Sets","description":"Total deciding set matches played","default":0}},"type":"object","title":"H2HDecidingSetsRecord","description":"Head-to-head deciding sets tally."},"TennisH2HFormatBreakdown":{"properties":{"best_of_3":{"$ref":"#/components/schemas/TennisH2HLevelItem"},"best_of_5":{"$ref":"#/components/schemas/TennisH2HLevelItem"}},"type":"object","title":"H2HFormatBreakdown","description":"Head-to-head breakdown by match length (best of 3 vs best of 5)."},"TennisH2HLevelBreakdown":{"properties":{"grand_slam":{"$ref":"#/components/schemas/TennisH2HLevelItem"},"masters_1000":{"$ref":"#/components/schemas/TennisH2HLevelItem"},"tour_finals":{"$ref":"#/components/schemas/TennisH2HLevelItem"},"atp_500_250":{"$ref":"#/components/schemas/TennisH2HLevelItem"},"olympics_davis_cup":{"$ref":"#/components/schemas/TennisH2HLevelItem"}},"type":"object","title":"H2HLevelBreakdown","description":"Head-to-head breakdown by tournament tier."},"TennisH2HLevelItem":{"properties":{"player1_wins":{"type":"integer","title":"Player1 Wins","description":"Wins by Player 1 at this level","default":0},"player2_wins":{"type":"integer","title":"Player2 Wins","description":"Wins by Player 2 at this level","default":0},"total":{"type":"integer","title":"Total","description":"Total matches at this level","default":0}},"type":"object","title":"H2HLevelItem","description":"Level-specific head-to-head record."},"TennisH2HMatchSummary":{"properties":{"id":{"type":"string","title":"Id","description":"Match ID"},"date":{"type":"string","title":"Date","description":"Match date"},"tournament_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Name","description":"Tournament name"},"surface":{"type":"string","title":"Surface","description":"Surface"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level","description":"Tournament tier"},"round":{"type":"string","title":"Round","description":"Round code"},"winner_id":{"type":"string","title":"Winner Id","description":"Winning player ID"},"winner_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Name","description":"Winning player name"},"score":{"type":"string","title":"Score","description":"Scoreline"}},"type":"object","required":["id","date","surface","round","winner_id","score"],"title":"H2HMatchSummary","description":"Match summary in H2H chronology."},"TennisH2HPlayerSummary":{"properties":{"id":{"type":"string","title":"Id","description":"Player ID"},"name":{"type":"string","title":"Name","description":"Player full name"},"ioc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ioc","description":"Country IOC code"},"current_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Rank","description":"Current rank"},"career_high_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Career High Rank","description":"Peak career rank"},"wins":{"type":"integer","title":"Wins","description":"Total wins against opponent"}},"type":"object","required":["id","name","wins"],"title":"H2HPlayerSummary","description":"Player summary for H2H rivalry comparison."},"TennisH2HSummary":{"properties":{"total_matches":{"type":"integer","title":"Total Matches","description":"Total encounters between the two players"},"player1_wins":{"type":"integer","title":"Player1 Wins","description":"Encounters won by Player 1"},"player2_wins":{"type":"integer","title":"Player2 Wins","description":"Encounters won by Player 2"},"player1_lead":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Lead","description":"Net lead in wins by Player 1 (can be negative)"},"finals_matches":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Finals Matches","description":"Encounters in finals","default":0},"player1_finals_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Finals Wins","description":"Finals won by Player 1","default":0},"player2_finals_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player2 Finals Wins","description":"Finals won by Player 2","default":0},"grand_slam_matches":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grand Slam Matches","description":"Encounters at Grand Slams","default":0},"player1_grand_slam_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Grand Slam Wins","description":"Grand Slam matches won by Player 1","default":0},"player2_grand_slam_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player2 Grand Slam Wins","description":"Grand Slam matches won by Player 2","default":0}},"type":"object","required":["total_matches","player1_wins","player2_wins"],"title":"H2HSummary","description":"Head-to-head overall tallies."},"TennisH2HSurfaceBreakdown":{"properties":{"hard":{"$ref":"#/components/schemas/TennisH2HSurfaceItem"},"clay":{"$ref":"#/components/schemas/TennisH2HSurfaceItem"},"grass":{"$ref":"#/components/schemas/TennisH2HSurfaceItem"},"carpet":{"$ref":"#/components/schemas/TennisH2HSurfaceItem"}},"type":"object","title":"H2HSurfaceBreakdown","description":"Head-to-head surface breakdown across Hard, Clay, Grass, Carpet."},"TennisH2HSurfaceItem":{"properties":{"player1_wins":{"type":"integer","title":"Player1 Wins","description":"Wins by Player 1 on this surface","default":0},"player2_wins":{"type":"integer","title":"Player2 Wins","description":"Wins by Player 2 on this surface","default":0},"total":{"type":"integer","title":"Total","description":"Total matches on this surface","default":0}},"type":"object","title":"H2HSurfaceItem","description":"Surface-specific head-to-head record."},"TennisH2HTiebreakRecord":{"properties":{"player1_tiebreaks_won":{"type":"integer","title":"Player1 Tiebreaks Won","description":"Tiebreaks won by Player 1","default":0},"player2_tiebreaks_won":{"type":"integer","title":"Player2 Tiebreaks Won","description":"Tiebreaks won by Player 2","default":0},"total_tiebreaks":{"type":"integer","title":"Total Tiebreaks","description":"Total tiebreaks played between the two","default":0}},"type":"object","title":"H2HTiebreakRecord","description":"Head-to-head tiebreak tally."},"TennisHTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/TennisValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"TennisHeadToHeadMatrixResponse":{"properties":{"players":{"items":{"$ref":"#/components/schemas/TennisH2HPlayerSummary"},"type":"array","title":"Players","description":"List of compared players"},"matrix":{"additionalProperties":{"additionalProperties":{"type":"string"},"type":"object"},"type":"object","title":"Matrix","description":"H2H win-loss grid indexed by player ID pairs"}},"type":"object","required":["players","matrix"],"title":"HeadToHeadMatrixResponse","description":"Multi-player Head-to-Head comparison grid."},"TennisHeadToHeadResponse":{"properties":{"player1":{"$ref":"#/components/schemas/TennisH2HPlayerSummary","description":"Player 1 summary"},"player2":{"$ref":"#/components/schemas/TennisH2HPlayerSummary","description":"Player 2 summary"},"summary":{"$ref":"#/components/schemas/TennisH2HSummary","description":"Overall tally and key milestones"},"surface_breakdown":{"$ref":"#/components/schemas/TennisH2HSurfaceBreakdown","description":"Surface breakdown"},"level_breakdown":{"anyOf":[{"$ref":"#/components/schemas/TennisH2HLevelBreakdown"},{"type":"null"}],"description":"Tournament tier breakdown"},"format_breakdown":{"anyOf":[{"$ref":"#/components/schemas/TennisH2HFormatBreakdown"},{"type":"null"}],"description":"Best-of-3 / Best-of-5 breakdown"},"tiebreak_record":{"anyOf":[{"$ref":"#/components/schemas/TennisH2HTiebreakRecord"},{"type":"null"}],"description":"Tiebreak record"},"deciding_sets":{"anyOf":[{"$ref":"#/components/schemas/TennisH2HDecidingSetsRecord"},{"type":"null"}],"description":"Deciding sets record"},"matches":{"items":{"$ref":"#/components/schemas/TennisH2HMatchSummary"},"type":"array","title":"Matches","description":"Chronological match list"}},"type":"object","required":["player1","player2","summary","surface_breakdown"],"title":"HeadToHeadResponse","description":"Complete Head-to-Head rivalry dossier."},"TennisListResponse_CalendarTournamentItem_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TennisCalendarTournamentItem"},"type":"array","title":"Items","description":"The rows"},"total":{"type":"integer","title":"Total","description":"Rows matching the filter, not rows in this response"},"page":{"type":"integer","title":"Page","description":"Current page; these routes return a single page","default":1},"page_size":{"type":"integer","title":"Page Size","description":"Rows requested for this page","default":0},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages available","default":1},"has_next":{"type":"boolean","title":"Has Next","description":"Whether a subsequent page exists","default":false},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether a preceding page exists","default":false}},"type":"object","required":["items","total"],"title":"ListResponse[CalendarTournamentItem]"},"TennisListResponse_Dict_str__Any__":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items","description":"The rows"},"total":{"type":"integer","title":"Total","description":"Rows matching the filter, not rows in this response"},"page":{"type":"integer","title":"Page","description":"Current page; these routes return a single page","default":1},"page_size":{"type":"integer","title":"Page Size","description":"Rows requested for this page","default":0},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages available","default":1},"has_next":{"type":"boolean","title":"Has Next","description":"Whether a subsequent page exists","default":false},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether a preceding page exists","default":false}},"type":"object","required":["items","total"],"title":"ListResponse[Dict[str, Any]]"},"TennisListResponse_LiveMatchSummary_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TennisLiveMatchSummary"},"type":"array","title":"Items","description":"The rows"},"total":{"type":"integer","title":"Total","description":"Rows matching the filter, not rows in this response"},"page":{"type":"integer","title":"Page","description":"Current page; these routes return a single page","default":1},"page_size":{"type":"integer","title":"Page Size","description":"Rows requested for this page","default":0},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages available","default":1},"has_next":{"type":"boolean","title":"Has Next","description":"Whether a subsequent page exists","default":false},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether a preceding page exists","default":false}},"type":"object","required":["items","total"],"title":"ListResponse[LiveMatchSummary]"},"TennisListResponse_PlayerListItem_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TennisPlayerListItem"},"type":"array","title":"Items","description":"The rows"},"total":{"type":"integer","title":"Total","description":"Rows matching the filter, not rows in this response"},"page":{"type":"integer","title":"Page","description":"Current page; these routes return a single page","default":1},"page_size":{"type":"integer","title":"Page Size","description":"Rows requested for this page","default":0},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages available","default":1},"has_next":{"type":"boolean","title":"Has Next","description":"Whether a subsequent page exists","default":false},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether a preceding page exists","default":false}},"type":"object","required":["items","total"],"title":"ListResponse[PlayerListItem]"},"TennisListResponse_str_":{"properties":{"items":{"items":{"type":"string"},"type":"array","title":"Items","description":"The rows"},"total":{"type":"integer","title":"Total","description":"Rows matching the filter, not rows in this response"},"page":{"type":"integer","title":"Page","description":"Current page; these routes return a single page","default":1},"page_size":{"type":"integer","title":"Page Size","description":"Rows requested for this page","default":0},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages available","default":1},"has_next":{"type":"boolean","title":"Has Next","description":"Whether a subsequent page exists","default":false},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether a preceding page exists","default":false}},"type":"object","required":["items","total"],"title":"ListResponse[str]"},"TennisLiveMatchDetail":{"properties":{"id":{"type":"string","title":"Id","description":"Canonical match identifier (same value as match_id)"},"match_id":{"type":"string","title":"Match Id","description":"Unique live match ID"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At","description":"When the match went in-play (ISO 8601)"},"round_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Round Name","description":"Human label for the round code"},"tour":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour","description":"ATP or WTA"},"tournament_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id","description":"Tournament id once this match is reconciled to a tournament; null while it is still on the live feed"},"tournament_name":{"type":"string","title":"Tournament Name","description":"Tournament name"},"court":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Court","description":"Court name"},"best_of":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Of","description":"Best of 3 or 5","default":3},"round":{"type":"string","title":"Round","description":"Round"},"surface":{"type":"string","title":"Surface","description":"Surface","default":"Hard"},"status":{"type":"string","title":"Status","description":"Status","default":"IN_PROGRESS"},"player1":{"$ref":"#/components/schemas/TennisLivePlayerState","description":"Player 1 state"},"player2":{"$ref":"#/components/schemas/TennisLivePlayerState","description":"Player 2 state"},"winner_side":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Winner Side","description":"1 or 2 once decided; null while in progress"},"current_set":{"type":"integer","title":"Current Set","description":"Current set number","default":1},"game_score":{"type":"string","title":"Game Score","description":"Current game point score","default":"0-0"},"server":{"type":"integer","title":"Server","description":"Current server index (1 or 2)","default":1},"tiebreak_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tiebreak Score","description":"Active tiebreak score"},"sets":{"items":{"$ref":"#/components/schemas/TennisLiveSetScore"},"type":"array","title":"Sets","description":"Set scores"},"point_history":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Point History","description":"Recent point timeline"},"stats":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Stats","description":"Per-side match statistics (365scores)"}},"type":"object","required":["id","match_id","tournament_name","round","player1","player2"],"title":"LiveMatchDetail","description":"Detailed live match state snapshot."},"TennisLiveMatchSummary":{"properties":{"id":{"type":"string","title":"Id","description":"Canonical match identifier (same value as match_id)"},"match_id":{"type":"string","title":"Match Id","description":"Unique live match ID"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At","description":"When the match went in-play (ISO 8601)"},"round_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Round Name","description":"Human label for the round code"},"tour":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour","description":"ATP or WTA"},"tournament_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id","description":"Tournament id once this match is reconciled to a tournament; null while it is still on the live feed"},"tournament_name":{"type":"string","title":"Tournament Name","description":"Tournament name"},"court":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Court","description":"Court name"},"surface":{"type":"string","title":"Surface","description":"Court surface","default":"Hard"},"round":{"type":"string","title":"Round","description":"Round code"},"best_of":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Of","description":"Best of 3 or 5","default":3},"status":{"type":"string","title":"Status","description":"State: NOT_STARTED, IN_PROGRESS, FINISHED","default":"IN_PROGRESS"},"outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome","description":"Decided-match outcome (COMPLETED, RETIREMENT, ...); null while in progress (TENNIS-25 canonical-shape parity)"},"player1":{"$ref":"#/components/schemas/TennisLivePlayerState","description":"Player 1 live state"},"player2":{"$ref":"#/components/schemas/TennisLivePlayerState","description":"Player 2 live state"},"winner":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Winner","description":"Winning side once decided; null while in progress (TENNIS-25 canonical-shape parity)"},"loser":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Loser","description":"Losing side once decided; null while in progress (TENNIS-25 canonical-shape parity)"},"winner_side":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Winner Side","description":"1 or 2 once decided; null while in progress"},"current_set":{"type":"integer","title":"Current Set","description":"Current active set number","default":1},"game_score":{"type":"string","title":"Game Score","description":"Current game point score","default":"0-0"},"server":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Server","description":"Current server: 1 for Player 1, 2 for Player 2","default":1},"sets":{"items":{"$ref":"#/components/schemas/TennisLiveSetScore"},"type":"array","title":"Sets","description":"Set-by-set scores"},"stats":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Stats","description":"Per-side match statistics (365scores)"},"source":{"type":"string","title":"Source","description":"Origin of this live record: simulator, 365scores, ...","default":"simulator"}},"type":"object","required":["id","match_id","tournament_name","round","player1","player2"],"title":"LiveMatchSummary","description":"Live match summary in active feed list."},"TennisLivePlayerState":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Player ID"},"name":{"type":"string","title":"Name","description":"Player display name"},"ioc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ioc","description":"Country IOC code, the same key the match and h2h participant objects use"},"seed":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Tournament seed"},"sets_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sets Won","description":"Completed sets won in this match","default":0},"current_game_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Game Score","description":"Current point score (0, 15, 30, 40, AD)","default":"0"},"is_serving":{"type":"boolean","title":"Is Serving","description":"Whether this player is currently serving","default":false}},"type":"object","required":["name"],"title":"LivePlayerState","description":"Player status in an active live match."},"TennisLiveSetScore":{"properties":{"set_num":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Set Num","description":"Set number"},"set_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Set Number","description":"Canonical set number (same value as set_num)"},"score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Score","description":"Set score string"},"player1_games":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Games","description":"Games won by Player 1"},"player2_games":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player2 Games","description":"Games won by Player 2"},"tiebreak":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tiebreak","description":"Tiebreak score if applicable"},"is_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Completed","description":"Whether this set is concluded"}},"type":"object","title":"LiveSetScore","description":"Set score item in live match.\n\n``set_number`` is the canonical field name (shared with the match\narchive, which otherwise calls this ``winner_games``/``loser_games``'s\ncounterpart ``set_number``); ``set_num`` stays for back-compat."},"TennisMatchDetailResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique match identifier"},"tournament_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id","description":"Tournament ID"},"tournament":{"anyOf":[{"$ref":"#/components/schemas/TennisTournamentSummaryInfo"},{"type":"null"}],"description":"Tournament metadata"},"match_date":{"type":"string","title":"Match Date","description":"Match date (YYYY-MM-DD)"},"tour":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour","description":"Tour: ATP or WTA","default":"ATP"},"surface":{"type":"string","title":"Surface","description":"Surface"},"round":{"type":"string","title":"Round","description":"Round code"},"best_of":{"type":"integer","title":"Best Of","description":"Best of 3 or 5 sets","default":3},"score":{"type":"string","title":"Score","description":"Official score string (or the live scoreline while in progress)"},"outcome":{"type":"string","title":"Outcome","description":"Match outcome","default":"COMPLETED"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Canonical status: SCHEDULED, IN_PROGRESS, COMPLETED, RETIREMENT, ..."},"duration_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Minutes","description":"Duration in minutes"},"winner_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Id","description":"Winner ID (null while the match is in progress)"},"loser_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Loser Id","description":"Loser ID (null while the match is in progress)"},"winner_sets_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Winner Sets Won","description":"Sets won by the winner; null while the match is in progress, when there is no winner yet -- read sets[] for the running count"},"loser_sets_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loser Sets Won","description":"Sets won by the loser; null while the match is in progress, when there is no loser yet -- read sets[] for the running count"},"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scheduled At","description":"Full scheduled/kickoff timestamp (ISO 8601), when the source provides one"},"tournament_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Name","description":"Tournament name as free text; populated even when `tournament`/`tournament_id` are not yet linked (e.g. a live match not yet reconciled to a tournament id)"},"round_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Round Name","description":"Human-readable round name, the same label the list routes return"},"winner":{"anyOf":[{"$ref":"#/components/schemas/TennisMatchParticipant"},{"type":"null"}],"description":"Winner details (null while in progress)"},"loser":{"anyOf":[{"$ref":"#/components/schemas/TennisMatchParticipant"},{"type":"null"}],"description":"Loser details (null while in progress)"},"player1":{"anyOf":[{"$ref":"#/components/schemas/TennisMatchParticipant"},{"type":"null"}],"description":"Canonical player1 (the winner once decided; always populated for a resolved match)"},"player2":{"anyOf":[{"$ref":"#/components/schemas/TennisMatchParticipant"},{"type":"null"}],"description":"Canonical player2 (the loser once decided; always populated for a resolved match)"},"winner_side":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Winner Side","description":"Which side won: 1 (player1), 2 (player2), or null while in progress / unknown"},"sets":{"items":{"$ref":"#/components/schemas/TennisMatchSetItem"},"type":"array","title":"Sets","description":"Set-by-set box score"},"stats":{"anyOf":[{"$ref":"#/components/schemas/TennisMatchStatsSummary"},{"type":"null"}],"description":"Match serving and return statistics"}},"type":"object","required":["id","match_date","surface","round","score"],"title":"MatchDetailResponse","description":"Comprehensive match detail response including set scores and stats.\n\nServes both archived (completed) matches and matches still on the live\nboard: the canonical ``id``/``player1``/``player2``/``status``/``sets``\nvocabulary is shared by both, so a customer can write one Match type\nagainst ``/matches/{id}`` whatever state the match is in. ``winner_id``/\n``loser_id``/``winner``/``loser`` are null while a match is still in\nprogress (there is no winner yet); ``player1``/``player2`` are always\npopulated."},"TennisMatchListItem":{"properties":{"id":{"type":"string","title":"Id","description":"Unique match identifier"},"tournament_id":{"type":"string","title":"Tournament Id","description":"Tournament identifier"},"tournament_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Name","description":"Tournament name"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"Tournament year"},"match_date":{"type":"string","title":"Match Date","description":"Date of match (YYYY-MM-DD)"},"tour":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour","description":"Tour: ATP or WTA","default":"ATP"},"surface":{"type":"string","title":"Surface","description":"Court surface: Hard, Clay, Grass, Carpet"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level","description":"Tournament level tier code"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Canonical event category: grand_slam, masters_1000, wta_1000, tour_finals, atp_tour, wta_tour, challenger, itf, davis_cup, billie_jean_king_cup, other. ATP 250 and ATP 500 both report atp_tour because the source does not separate them"},"round":{"type":"string","title":"Round","description":"Round code: F, SF, QF, R16, R32, R64, R128, RR"},"round_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Round Name","description":"Human-readable round name"},"best_of":{"type":"integer","title":"Best Of","description":"Best of 3 or 5 sets","default":3},"score":{"type":"string","title":"Score","description":"Official scoreline string"},"outcome":{"type":"string","title":"Outcome","description":"Outcome: COMPLETED, RETIREMENT, WALKOVER, DEFAULT","default":"COMPLETED"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Canonical status (same vocabulary as the live feed: COMPLETED, RETIREMENT, ...)"},"duration_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Minutes","description":"Match duration in minutes"},"winner_id":{"type":"string","title":"Winner Id","description":"Winning player identifier"},"loser_id":{"type":"string","title":"Loser Id","description":"Losing player identifier"},"winner":{"anyOf":[{"$ref":"#/components/schemas/TennisMatchParticipant"},{"type":"null"}],"description":"Winning player summary"},"loser":{"anyOf":[{"$ref":"#/components/schemas/TennisMatchParticipant"},{"type":"null"}],"description":"Losing player summary"},"player1":{"anyOf":[{"$ref":"#/components/schemas/TennisMatchParticipant"},{"type":"null"}],"description":"Canonical player1 (mapped from winner)"},"player2":{"anyOf":[{"$ref":"#/components/schemas/TennisMatchParticipant"},{"type":"null"}],"description":"Canonical player2 (mapped from loser)"},"sets":{"items":{"$ref":"#/components/schemas/TennisMatchSetItem"},"type":"array","title":"Sets","description":"Set-by-set box score (TENNIS-25: always present on list routes; empty until sets are played)"}},"type":"object","required":["id","tournament_id","match_date","surface","round","score","winner_id","loser_id"],"title":"MatchListItem","description":"Summary item for match directory listing."},"TennisMatchParticipant":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Player ID (null when unresolved, e.g. an unlinked doubles pair)"},"name":{"type":"string","title":"Name","description":"Player full name"},"ioc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ioc","description":"Country IOC code"},"seed":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Tournament seed"},"entry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry","description":"Entry code (e.g. Q, WC, LL, PR)"},"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank","description":"Official rank at time of match"},"is_winner":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Winner","description":"Winner indicator"}},"type":"object","required":["name"],"title":"MatchParticipant","description":"Player participant summary in a match.\n\n``id`` is optional so this model also covers doubles pairs and live rows,\nwhere the feed has not resolved an individual player id (e.g. a combined\npair name like \"Bolelli S./Vavassori A.\" with no per-partner id)."},"TennisMatchSetItem":{"properties":{"set_number":{"type":"integer","title":"Set Number","description":"Set number (1, 2, 3, 4, 5)"},"winner_games":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Winner Games","description":"Games won by match winner, once decided"},"loser_games":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loser Games","description":"Games won by match loser, once decided"},"player1_games":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Games","description":"Games won by player1 (canonical, always populated)"},"player2_games":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player2 Games","description":"Games won by player2 (canonical, always populated)"},"tiebreak":{"anyOf":[{"$ref":"#/components/schemas/TennisTiebreakDetail"},{"type":"null"}],"description":"Tiebreak points if set reached tiebreak"}},"type":"object","required":["set_number"],"title":"MatchSetItem","description":"Set-by-set box score item.\n\n``set_number`` is the canonical field name shared with the live feed\n(which otherwise calls this ``set_num``). ``player1_games``/``player2_games``\nare the canonical per-side fields, always populated; ``winner_games``/\n``loser_games`` stay for back-compat and are populated once a winner is\nknown (null while the match this set belongs to is still in progress)."},"TennisMatchStatsSummary":{"properties":{"winner":{"$ref":"#/components/schemas/TennisPlayerMatchStats"},"loser":{"$ref":"#/components/schemas/TennisPlayerMatchStats"}},"type":"object","required":["winner","loser"],"title":"MatchStatsSummary","description":"Combined match statistics for winner and loser."},"TennisPaginatedResponse_MatchListItem_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TennisMatchListItem"},"type":"array","title":"Items","description":"List of items for current page"},"total":{"type":"integer","title":"Total","description":"Total count of items matching filter criteria"},"page":{"type":"integer","title":"Page","description":"Current page number (1-indexed)"},"page_size":{"type":"integer","title":"Page Size","description":"Number of items per page"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of available pages"},"has_next":{"type":"boolean","title":"Has Next","description":"Whether there is a subsequent page"},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether there is a preceding page"}},"type":"object","required":["items","total","page","page_size","total_pages","has_next","has_prev"],"title":"PaginatedResponse[MatchListItem]"},"TennisPaginatedResponse_PlayerListItem_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TennisPlayerListItem"},"type":"array","title":"Items","description":"List of items for current page"},"total":{"type":"integer","title":"Total","description":"Total count of items matching filter criteria"},"page":{"type":"integer","title":"Page","description":"Current page number (1-indexed)"},"page_size":{"type":"integer","title":"Page Size","description":"Number of items per page"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of available pages"},"has_next":{"type":"boolean","title":"Has Next","description":"Whether there is a subsequent page"},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether there is a preceding page"}},"type":"object","required":["items","total","page","page_size","total_pages","has_next","has_prev"],"title":"PaginatedResponse[PlayerListItem]"},"TennisPaginatedResponse_TournamentListItem_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TennisTournamentListItem"},"type":"array","title":"Items","description":"List of items for current page"},"total":{"type":"integer","title":"Total","description":"Total count of items matching filter criteria"},"page":{"type":"integer","title":"Page","description":"Current page number (1-indexed)"},"page_size":{"type":"integer","title":"Page Size","description":"Number of items per page"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total number of available pages"},"has_next":{"type":"boolean","title":"Has Next","description":"Whether there is a subsequent page"},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether there is a preceding page"}},"type":"object","required":["items","total","page","page_size","total_pages","has_next","has_prev"],"title":"PaginatedResponse[TournamentListItem]"},"TennisPlayerBatchResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TennisPlayerListItem"},"type":"array","title":"Items","description":"Players, in the order the ids were given"},"total":{"type":"integer","title":"Total","description":"Number of players returned"},"missing":{"items":{"type":"string"},"type":"array","title":"Missing","description":"Requested ids that do not exist"}},"type":"object","required":["items","total"],"title":"PlayerBatchResponse","description":"Many players in one call. `missing` names the ids that did not resolve."},"TennisPlayerListItem":{"properties":{"id":{"type":"string","title":"Id","description":"Unique player identifier"},"tour":{"type":"string","title":"Tour","description":"Tour federation: ATP or WTA"},"first_name":{"type":"string","title":"First Name","description":"Player given name"},"last_name":{"type":"string","title":"Last Name","description":"Player surname"},"full_name":{"type":"string","title":"Full Name","description":"Full canonical display name"},"ioc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ioc","description":"3-letter IOC country code"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"Same 3-letter code as ioc, under the key most client integrations read"},"portrait_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portrait Url","description":"Verified player portrait image URL (Wikimedia Commons); null when unverified"},"country_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Name","description":"Country name derived from the IOC/ISO code; null when the code is unmapped"},"nationality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nationality","description":"Same value as country_name, under the key most client integrations read"},"hand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hand","description":"Playing hand: R, L, A, U","default":"U"},"backhand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backhand","description":"Backhand style (1H/2H) where known; not held for most players"},"dob":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dob","description":"Date of birth in YYYY-MM-DD format"},"height_cm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height Cm","description":"Height in centimeters"},"weight_kg":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Weight Kg","description":"Weight in kilograms"},"turned_pro":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Turned Pro","description":"Year turned professional"},"career_high_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Career High Rank","description":"Peak career ranking"},"career_high_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Career High Date","description":"Date peak ranking was attained"},"current_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Rank","description":"Current rolling ranking"},"titles_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Titles Count","description":"Total singles titles; computed on the profile route, null on the list"},"grand_slam_titles":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grand Slam Titles","description":"Grand Slam singles titles; computed on the profile route, null on the list"},"is_active":{"type":"boolean","title":"Is Active","description":"Whether player is currently active","default":true}},"type":"object","required":["id","tour","first_name","last_name","full_name"],"title":"PlayerListItem","description":"Summary item for player listing and filtering."},"TennisPlayerMatchStats":{"properties":{"aces":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Aces","description":"Aces served"},"double_faults":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Double Faults","description":"Double faults committed"},"serve_points":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Serve Points","description":"Total service points played"},"first_serves_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"First Serves In","description":"First serves in"},"first_serves_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"First Serves Won","description":"First serve points won"},"second_serves_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Second Serves Won","description":"Second serve points won"},"first_serve_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"First Serve Pct","description":"1st serve in %"},"first_serve_win_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"First Serve Win Pct","description":"1st serve points won %"},"second_serve_win_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Second Serve Win Pct","description":"2nd serve points won %"},"service_games_played":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Service Games Played","description":"Service games played"},"break_points_saved":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Break Points Saved","description":"Break points saved"},"break_points_faced":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Break Points Faced","description":"Break points faced"},"break_points_converted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Break Points Converted","description":"Break points converted"},"break_point_opportunities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Break Point Opportunities","description":"Break point chances"},"total_points_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Points Won","description":"Total points won"}},"type":"object","title":"PlayerMatchStats","description":"Granular match statistics for a single player."},"TennisPlayerProfile":{"properties":{"id":{"type":"string","title":"Id","description":"Unique player identifier"},"merged_into":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merged Into","description":"Set only when the requested id was a retired duplicate: this is the player_id that now owns the record. The requested id stays a valid handle and the response describes the canonical player."},"tour":{"type":"string","title":"Tour","description":"Tour federation: ATP or WTA"},"first_name":{"type":"string","title":"First Name","description":"Given name"},"last_name":{"type":"string","title":"Last Name","description":"Surname"},"full_name":{"type":"string","title":"Full Name","description":"Canonical display name"},"ioc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ioc","description":"3-letter country code"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"Same 3-letter code as ioc, under the key most client integrations read"},"portrait_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portrait Url","description":"Verified player portrait image URL (Wikimedia Commons); null when unverified"},"country_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Name","description":"Country name derived from the IOC/ISO code; null when the code is unmapped"},"nationality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nationality","description":"Same value as country_name, under the key most client integrations read"},"hand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hand","description":"Playing hand","default":"U"},"backhand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backhand","description":"Backhand style (1H/2H) where known; not held for most players"},"dob":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dob","description":"Date of birth"},"age":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age","description":"Current age in years"},"height_cm":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height Cm","description":"Height in cm"},"weight_kg":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Weight Kg","description":"Weight in kg"},"turned_pro":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Turned Pro","description":"Year turned pro"},"career_high_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Career High Rank","description":"Career peak ranking"},"career_high_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Career High Date","description":"Date peak ranking was attained"},"weeks_at_no_1":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Weeks At No 1","description":"Total weeks ranked at world No. 1","default":0},"current_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Rank","description":"Current ranking"},"current_rank_points":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Rank Points","description":"Current ranking points"},"career_summary":{"$ref":"#/components/schemas/TennisCareerSummary","description":"Overall career summary record"},"surface_breakdown":{"anyOf":[{"$ref":"#/components/schemas/TennisSurfaceBreakdown"},{"type":"null"}],"description":"Surface win-loss splits"},"is_active":{"type":"boolean","title":"Is Active","description":"Active status","default":true}},"type":"object","required":["id","tour","first_name","last_name","full_name","career_summary"],"title":"PlayerProfile","description":"Comprehensive player profile and biographical record."},"TennisPlayerRankingHistoryResponse":{"properties":{"player_id":{"type":"string","title":"Player Id","description":"Player ID"},"player_name":{"type":"string","title":"Player Name","description":"Player full name"},"tour":{"type":"string","title":"Tour","description":"ATP or WTA"},"career_high_rank":{"type":"integer","title":"Career High Rank","description":"Peak career ranking position"},"career_high_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Career High Date","description":"Date peak ranking was attained"},"total_weeks_at_no_1":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Weeks At No 1","description":"Weeks ranked at world No. 1","default":0},"history":{"items":{"$ref":"#/components/schemas/TennisRankingHistoryPoint"},"type":"array","title":"History","description":"Chronological ranking list"}},"type":"object","required":["player_id","player_name","tour","career_high_rank"],"title":"PlayerRankingHistoryResponse","description":"Career historical ranking time-series and peak records."},"TennisPlayerStatsResponse":{"properties":{"player_id":{"type":"string","title":"Player Id","description":"Player identifier"},"player_name":{"type":"string","title":"Player Name","description":"Full canonical display name"},"filters":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"type":"object","title":"Filters","description":"Active query filters"},"career_summary":{"$ref":"#/components/schemas/TennisCareerSummary","description":"Career summary record"},"surface_breakdown":{"$ref":"#/components/schemas/TennisSurfaceBreakdown","description":"Surface breakdown"},"serving_stats":{"$ref":"#/components/schemas/TennisServingStats","description":"Serving metrics"},"return_stats":{"anyOf":[{"$ref":"#/components/schemas/TennisReturnStats"},{"type":"null"}],"description":"Return metrics"},"clutch_and_situational":{"anyOf":[{"$ref":"#/components/schemas/TennisClutchStats"},{"type":"null"}],"description":"Clutch metrics"},"grand_slam_breakdown":{"anyOf":[{"$ref":"#/components/schemas/TennisGrandSlamBreakdown"},{"type":"null"}],"description":"Grand Slam breakdown"}},"type":"object","required":["player_id","player_name","career_summary","surface_breakdown","serving_stats"],"title":"PlayerStatsResponse","description":"Detailed career statistics response with optional filtering."},"TennisRankingHistoryPoint":{"properties":{"date":{"type":"string","title":"Date","description":"Ranking publication date (YYYY-MM-DD)"},"rank":{"type":"integer","title":"Rank","description":"Rank on this date"},"points":{"type":"number","title":"Points","description":"Points on this date"}},"type":"object","required":["date","rank","points"],"title":"RankingHistoryPoint","description":"Single time-series ranking data point for a player."},"TennisRankingItem":{"properties":{"rank":{"type":"integer","title":"Rank","description":"Official ranking position"},"player_id":{"type":"string","title":"Player Id","description":"Player unique identifier"},"player_name":{"type":"string","title":"Player Name","description":"Player canonical full name"},"ioc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ioc","description":"Country IOC code"},"country_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Name","description":"Full country name, the same value the player routes return under this key"},"nationality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nationality","description":"Same value as country_name, under the key most client integrations read"},"points":{"type":"number","title":"Points","description":"Official ranking points"},"rank_movement":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank Movement","description":"previous_rank - rank against the previous published list; positive is a climb; null when the player was not on it"},"previous_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Previous Rank","description":"Rank on the previous published list; null when the player was not on it"},"tournaments_played":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tournaments Played","description":"52-week counting tournament count"}},"type":"object","required":["rank","player_id","player_name","points"],"title":"RankingItem","description":"Single ranking entry in weekly leaderboard."},"TennisRankingsListResponse":{"properties":{"ranking_date":{"type":"string","title":"Ranking Date","description":"Publication date of rankings (YYYY-MM-DD)"},"tour":{"type":"string","title":"Tour","description":"ATP or WTA"},"items":{"items":{"$ref":"#/components/schemas/TennisRankingItem"},"type":"array","title":"Items","description":"List of ranked players"},"total":{"type":"integer","title":"Total","description":"Total players in this ranking week"},"page":{"type":"integer","title":"Page","description":"Current page"},"page_size":{"type":"integer","title":"Page Size","description":"Page size"},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages"},"has_next":{"type":"boolean","title":"Has Next","description":"Next page available"},"has_prev":{"type":"boolean","title":"Has Prev","description":"Previous page available"}},"type":"object","required":["ranking_date","tour","items","total","page","page_size","total_pages","has_next","has_prev"],"title":"RankingsListResponse","description":"Paginated ranking leaderboard for a given tour and week."},"TennisReturnStats":{"properties":{"first_return_points_won_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"First Return Points Won Pct","description":"1st return points won %"},"second_return_points_won_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Second Return Points Won Pct","description":"2nd return points won %"},"return_games_won_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Return Games Won Pct","description":"Return games won (break %) %"},"break_point_opportunities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Break Point Opportunities","description":"Total break point opportunities"},"break_points_converted_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Break Points Converted Pct","description":"Break points converted %"}},"type":"object","title":"ReturnStats","description":"Detailed return metrics and percentages."},"TennisServingStats":{"properties":{"total_aces":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Aces","description":"Career total aces"},"total_double_faults":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Double Faults","description":"Career total double faults"},"aces_per_match":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Aces Per Match","description":"Average aces per match"},"first_serve_in_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"First Serve In Pct","description":"First serve in percentage"},"first_serve_points_won_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"First Serve Points Won Pct","description":"First serve points won %"},"second_serve_points_won_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Second Serve Points Won Pct","description":"Second serve points won %"},"service_games_played":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Service Games Played","description":"Total service games played"},"service_games_won_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Service Games Won Pct","description":"Percentage of service games held"},"break_points_faced":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Break Points Faced","description":"Total break points faced"},"break_points_saved_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Break Points Saved Pct","description":"Percentage of break points saved"}},"type":"object","title":"ServingStats","description":"Detailed serving metrics and percentages."},"TennisSimulationRequest":{"properties":{"action":{"type":"string","title":"Action","description":"Simulation action: step, start, pause, reset, inject"},"match_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Id","description":"Target match ID","default":"live-usopen-2024-f"},"player1_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player1 Id","description":"Optional custom Player 1 ID"},"player2_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player2 Id","description":"Optional custom Player 2 ID"}},"type":"object","required":["action"],"title":"SimulationRequest","description":"Control request to simulate live match state transitions."},"TennisSimulationResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Status","default":"ok"},"action":{"type":"string","title":"Action","description":"Action performed"},"match_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Id","description":"Match ID"},"new_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Score","description":"Updated game/match score"},"event":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event","description":"Scoring event triggered"}},"type":"object","required":["action"],"title":"SimulationResponse","description":"Result of live simulation action."},"TennisSurfaceBreakdown":{"properties":{"hard":{"$ref":"#/components/schemas/TennisSurfaceStatItem"},"clay":{"$ref":"#/components/schemas/TennisSurfaceStatItem"},"grass":{"$ref":"#/components/schemas/TennisSurfaceStatItem"},"carpet":{"$ref":"#/components/schemas/TennisSurfaceStatItem"}},"type":"object","required":["hard","clay","grass","carpet"],"title":"SurfaceBreakdown","description":"Breakdown of matches and records across surface types."},"TennisSurfaceStatItem":{"properties":{"matches":{"type":"integer","title":"Matches","description":"Matches played on this surface"},"won":{"type":"integer","title":"Won","description":"Matches won on this surface"},"lost":{"type":"integer","title":"Lost","description":"Matches lost on this surface"},"win_pct":{"type":"number","title":"Win Pct","description":"Win percentage on this surface"},"titles":{"type":"integer","title":"Titles","description":"Titles won on this surface","default":0}},"type":"object","required":["matches","won","lost","win_pct"],"title":"SurfaceStatItem","description":"Statistics for a specific court surface."},"TennisTiebreakDetail":{"properties":{"winner_points":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Winner Points","description":"Points scored by tiebreak winner"},"loser_points":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loser Points","description":"Points scored by tiebreak loser"}},"type":"object","title":"TiebreakDetail","description":"Tiebreak point breakdown."},"TennisTournamentDetailResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Tournament ID"},"name":{"type":"string","title":"Name","description":"Tournament name"},"tour":{"type":"string","title":"Tour","description":"Tour"},"level":{"type":"string","title":"Level","description":"Level tier"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Canonical event category: grand_slam, masters_1000, wta_1000, tour_finals, atp_tour, wta_tour, challenger, itf, davis_cup, billie_jean_king_cup, other. ATP 250 and ATP 500 both report atp_tour because the source does not separate them"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier","description":"Human level name derived from the tier code, e.g. Grand Slam, Masters 1000, ATP Tour, WTA 1000, WTA 500, WTA 250, WTA 125, Challenger, ITF World Tennis Tour, Davis Cup, Billie Jean King Cup, Tour Finals, Olympics. ATP 500 and ATP 250 both read ATP Tour because the source does not separate them"},"tier_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier Code","description":"Raw source tier code the level was derived from: G, M, A, C, S, D, O, F, PM, P, I, W, or an ITF prize-money number such as 15/25/100"},"surface":{"type":"string","title":"Surface","description":"Surface"},"draw_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Draw Size","description":"Draw size","default":32},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"Country code"},"first_edition_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"First Edition Year","description":"First recorded edition of this event"},"most_recent_edition_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Most Recent Edition Year","description":"Most recent recorded edition"},"all_time_title_leader":{"anyOf":[{"$ref":"#/components/schemas/TennisAllTimeTitleLeader"},{"type":"null"}],"description":"Most finals won across every edition; ties broken by most recent"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"Edition year, the same field the list, draw and embedded forms of this tournament carry"},"is_live_shell":{"type":"boolean","title":"Is Live Shell","description":"True for a live-feed container (s365_*) holding archived live results, with default tier/surface and no geography","default":false}},"type":"object","required":["id","name","tour","level","surface"],"title":"TournamentDetailResponse","description":"Comprehensive tournament dossier and historical editions."},"TennisTournamentDrawResponse":{"properties":{"tournament_id":{"type":"string","title":"Tournament Id","description":"Tournament ID"},"tournament_name":{"type":"string","title":"Tournament Name","description":"Tournament name"},"year":{"type":"integer","title":"Year","description":"Tournament edition year"},"draw_size":{"type":"integer","title":"Draw Size","description":"Draw size (e.g. 128, 64, 32)"},"surface":{"type":"string","title":"Surface","description":"Court surface"},"rounds":{"items":{"$ref":"#/components/schemas/TennisDrawRound"},"type":"array","title":"Rounds","description":"Bracket rounds sorted from Final backward or R1 forward"},"surface_badge":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Surface Badge","description":"UI badge convention for the surface: label plus hex color (presentation constant, not official tournament artwork; logo assets remain unavailable)"}},"type":"object","required":["tournament_id","tournament_name","year","draw_size","surface"],"title":"TournamentDrawResponse","description":"Full interactive draw bracket tree."},"TennisTournamentListItem":{"properties":{"id":{"type":"string","title":"Id","description":"Tournament unique identifier"},"name":{"type":"string","title":"Name","description":"Canonical tournament name"},"tour":{"type":"string","title":"Tour","description":"ATP or WTA"},"level":{"type":"string","title":"Level","description":"Tournament tier (e.g. Grand Slam, Masters 1000)"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Canonical event category: grand_slam, masters_1000, wta_1000, tour_finals, atp_tour, wta_tour, challenger, itf, davis_cup, billie_jean_king_cup, other. ATP 250 and ATP 500 both report atp_tour because the source does not separate them"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier","description":"Human level name derived from the tier code, e.g. Grand Slam, Masters 1000, ATP Tour, WTA 1000, WTA 500, WTA 250, WTA 125, Challenger, ITF World Tennis Tour, Davis Cup, Billie Jean King Cup, Tour Finals, Olympics. ATP 500 and ATP 250 both read ATP Tour because the source does not separate them"},"tier_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier Code","description":"Raw source tier code the level was derived from: G, M, A, C, S, D, O, F, PM, P, I, W, or an ITF prize-money number such as 15/25/100"},"surface":{"type":"string","title":"Surface","description":"Court surface: Hard, Clay, Grass, Carpet"},"draw_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Draw Size","description":"Draw size"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"Edition year (every id is a per-year edition, e.g. atp_2026_540)"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"Host city"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"Host country 3-letter IOC code"},"first_edition_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"First Edition Year","description":"First recorded year"},"most_recent_edition_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Most Recent Edition Year","description":"Most recent year"},"all_time_title_leader":{"anyOf":[{"$ref":"#/components/schemas/TennisAllTimeTitleLeader"},{"type":"null"}],"description":"Most successful champion"}},"type":"object","required":["id","name","tour","level","surface"],"title":"TournamentListItem","description":"Summary item for tournament catalog."},"TennisTournamentSummaryInfo":{"properties":{"id":{"type":"string","title":"Id","description":"Tournament ID"},"name":{"type":"string","title":"Name","description":"Tournament name"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"Tournament year"},"surface":{"type":"string","title":"Surface","description":"Surface"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level","description":"Tier code"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Canonical event category: grand_slam, masters_1000, wta_1000, tour_finals, atp_tour, wta_tour, challenger, itf, davis_cup, billie_jean_king_cup, other. ATP 250 and ATP 500 both report atp_tour because the source does not separate them"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"Host city"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"Host country code"}},"type":"object","required":["id","name","surface"],"title":"TournamentSummaryInfo","description":"Tournament context metadata embedded in match detail."},"TennisValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/health":{"get":{"summary":"Health check","description":"Returns server status and uptime.","operationId":"getHealth","security":[],"tags":["Utility"],"responses":{"200":{"description":"Server is healthy","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"healthy"},"timestamp":{"type":"string","example":"2026-03-29T00:00:00.000Z"},"uptime":{"type":"number","example":3600.5}}}}}}}}},"/dota2":{"get":{"summary":"Dota 2 API overview","description":"Returns Dota 2 coverage counts, source status, and sync metadata.","operationId":"getDota2Overview","tags":["Dota 2"],"responses":{"200":{"description":"Dota 2 overview."}}}},"/dota2/search":{"get":{"summary":"Search Dota 2 data","description":"Search Dota 2 teams, players, tournaments, and matches.","operationId":"searchDota2","tags":["Dota 2"],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Search results."}}}},"/dota2/matches/live":{"get":{"summary":"Live Dota 2 matches","description":"Cito Dota live board. When a series safely links to Valve/OpenDota live, each match may include a `live` snapshot (clock, kills, gold lead, roster). Series map wins stay on schedule fields.","operationId":"getDota2LiveMatches","tags":["Dota 2"],"responses":{"200":{"description":"Live matches (optional per-match Cito live snapshot)."}}}},"/dota2/matches/{matchId}/live":{"get":{"summary":"Cito Dota match live snapshot","description":"Cito live snapshot for a series via safe team-pair link to Valve/OpenDota. Does not invent positions or map winners from gold. Sticky Valve match ids support postgame draft/stats. Optional Steam scoreboard when STEAM_WEB_API_KEY is set.","operationId":"getDota2MatchLive","tags":["Dota 2"],"parameters":[{"name":"matchId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Cito live snapshot (clock, kills, lead, roster; seriesWinner always null)."},"404":{"description":"Match not found or no safe Valve live link."},"503":{"description":"Live enrichment temporarily disabled."}}}},"/dota2/matches/upcoming":{"get":{"summary":"Upcoming Dota 2 matches","description":"Returns upcoming Dota 2 matches from the synced schedule.","operationId":"getDota2UpcomingMatches","tags":["Dota 2"],"responses":{"200":{"description":"Upcoming matches."}}}},"/dota2/matches/recent":{"get":{"summary":"Recent Dota 2 matches","description":"Returns recent Dota 2 results.","operationId":"getDota2RecentMatches","tags":["Dota 2"],"responses":{"200":{"description":"Recent matches."}}}},"/dota2/matches/{matchId}":{"get":{"summary":"Dota 2 match details","description":"Returns match metadata, teams, tournament context, games, draft rows, and player stats where available.","operationId":"getDota2Match","tags":["Dota 2"],"parameters":[{"name":"matchId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Match detail."},"404":{"description":"Match not found."}}}},"/dota2/matches/{matchId}/player-stats":{"get":{"summary":"Dota 2 match player stats","description":"Returns per-game player stat rows for a Dota 2 match where enrichment has populated them.","operationId":"getDota2MatchPlayerStats","tags":["Dota 2"],"parameters":[{"name":"matchId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player stats or availability metadata."}}}},"/dota2/players/{playerIdOrSlug}/radar":{"get":{"summary":"Dota 2 player radar","description":"Returns precomputed percentile radar/spider graph scores for carry, mid, offlane, or support where enough source data exists.","operationId":"getDota2PlayerRadar","tags":["Dota 2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"role","in":"query","required":false,"schema":{"type":"string","enum":["carry","mid","offlane","support","unknown"]}},{"name":"window","in":"query","required":false,"schema":{"type":"string","example":"90d"}}],"responses":{"200":{"description":"Radar scores or availability metadata."}}}},"/dota2/teams/{teamIdOrSlug}/radar":{"get":{"summary":"Dota 2 team radar","description":"Returns precomputed percentile radar scores for team style metrics where enough source data exists.","operationId":"getDota2TeamRadar","tags":["Dota 2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Team radar scores or availability metadata."}}}},"/dota2/teams":{"get":{"summary":"List Dota 2 teams","operationId":"listDota2Teams","tags":["Dota 2"],"responses":{"200":{"description":"Dota 2 teams."}}}},"/dota2/players":{"get":{"summary":"List Dota 2 players","operationId":"listDota2Players","tags":["Dota 2"],"responses":{"200":{"description":"Dota 2 players."}}}},"/dota2/tournaments":{"get":{"summary":"List Dota 2 tournaments","operationId":"listDota2Tournaments","tags":["Dota 2"],"responses":{"200":{"description":"Dota 2 tournaments."}}}},"/qr/generate":{"get":{"summary":"Generate QR code (simple)","description":"Generate a QR code via query parameters. Returns a raw PNG, SVG, or base64 JSON. Use the POST endpoint for logo overlay.","operationId":"generateQrGet","tags":["QR Code"],"parameters":[{"name":"data","in":"query","required":true,"description":"Text or URL to encode.","schema":{"type":"string","maxLength":2048,"example":"https://citoapi.com"}},{"name":"size","in":"query","description":"Output size in pixels.","schema":{"type":"integer","default":300,"minimum":100,"maximum":2000}},{"name":"format","in":"query","description":"Output format.","schema":{"type":"string","enum":["png","svg","base64"],"default":"png"}},{"name":"fg","in":"query","description":"Foreground hex color.","schema":{"type":"string","default":"#000000","example":"#000000"}},{"name":"bg","in":"query","description":"Background hex color.","schema":{"type":"string","default":"#ffffff","example":"#ffffff"}},{"name":"margin","in":"query","description":"Quiet zone width (0–10).","schema":{"type":"integer","default":4,"minimum":0,"maximum":10}},{"name":"ec","in":"query","description":"Error correction level.","schema":{"type":"string","enum":["L","M","Q","H"],"default":"M"}}],"responses":{"200":{"description":"QR code image (PNG binary or SVG string) or JSON with base64 image.","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/svg+xml":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"image":{"type":"string","example":"data:image/png;base64,..."},"format":{"type":"string","example":"png"},"size":{"type":"integer","example":300}}}}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"summary":"Generate QR code (with logo)","description":"Generate a QR code with full options including an optional centered logo overlay. Logo is provided as a base64 data URL.","operationId":"generateQrPost","tags":["QR Code"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrGenerateBody"},"example":{"data":"https://citoapi.com","size":400,"format":"png","foreground":"#000000","background":"#ffffff","logo":{"image":"data:image/png;base64,iVBORw0KGgo...","sizeRatio":0.25,"padding":8}}}}},"responses":{"200":{"description":"QR code image or base64 JSON.","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/svg+xml":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"image":{"type":"string","example":"data:image/png;base64,..."},"format":{"type":"string","example":"png"},"size":{"type":"integer","example":400}}}}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc":{"get":{"summary":"UFC API overview","description":"Returns UFC coverage counts and key endpoint paths.","operationId":"getUfcOverview","tags":["UFC"],"responses":{"200":{"description":"UFC overview payload"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/rankings":{"get":{"summary":"UFC rankings (compatibility)","description":"Compatibility rankings feed. Prefer GET /ufc/rankings/media for the canonical UFC.com Media Panel rankings feed with freshness metadata.","operationId":"getUfcRankings","tags":["UFC"],"parameters":[{"name":"division","in":"query","required":false,"schema":{"type":"string"},"example":"lightweight"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200}}],"responses":{"200":{"description":"Ranking rows"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/rankings/media":{"get":{"summary":"UFC Media Panel rankings","description":"Canonical UFC.com Media Panel rankings feed. Includes champions, official ranks (including ties), rank changes, fighter slugs, and freshness metadata (syncedAt / dataAgeHours).","operationId":"getUfcMediaRankings","tags":["UFC"],"parameters":[{"name":"division","in":"query","required":false,"schema":{"type":"string"},"example":"lightweight"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200}}],"responses":{"200":{"description":"Media Panel ranking rows with freshness meta"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/rankings/media/{division}":{"get":{"summary":"UFC Media Panel rankings by division","description":"Canonical Media Panel rankings for one division (for example lightweight or middleweight).","operationId":"getUfcMediaRankingsByDivision","tags":["UFC"],"parameters":[{"name":"division","in":"path","required":true,"schema":{"type":"string"},"example":"lightweight"}],"responses":{"200":{"description":"Media Panel ranking rows for one division"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/fighters":{"get":{"summary":"List UFC fighters","description":"Returns UFC fighters with profile metadata. Use includeStats=true to include striking, grappling, defense, and bio stat fields when populated.","operationId":"listUfcFighters","tags":["UFC"],"parameters":[{"name":"division","in":"query","required":false,"schema":{"type":"string"},"example":"welterweight"},{"name":"active","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeStats","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50}}],"responses":{"200":{"description":"Fighter rows"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/fighters/{slug}":{"get":{"summary":"Get UFC fighter profile","description":"Returns one fighter profile with bio, record, ranking links, image URLs, and fighter stats when available.","operationId":"getUfcFighter","tags":["UFC"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"example":"islam-makhachev"}],"responses":{"200":{"description":"Fighter profile"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Fighter not found"}}}},"/ufc/fighters/{slug}/stats":{"get":{"summary":"Get UFC fighter stats","description":"Returns fighter stats such as striking accuracy, significant strikes landed/attempted, takedown accuracy, SLpM, SApM, takedown defense, and average fight time.","operationId":"getUfcFighterStats","tags":["UFC"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"example":"islam-makhachev"}],"responses":{"200":{"description":"Fighter stat row"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Stats not found"}}}},"/ufc/events":{"get":{"summary":"List UFC events","description":"Returns UFC events with pagination. Use hasStats=true to list events with fight-level and round-level statistics.","operationId":"listUfcEvents","tags":["UFC"],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["scheduled","completed","live"]}},{"name":"hasStats","in":"query","required":false,"schema":{"type":"boolean"},"description":"Only return events with fight-level or round-level stats."},{"name":"includeBouts","in":"query","required":false,"schema":{"type":"boolean"},"description":"Include bouts and stat rows in each event."},{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Search by title, slug, or location."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50}}],"responses":{"200":{"description":"Event rows"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/events/recent":{"get":{"summary":"List recent UFC events","description":"Returns recent completed UFC events with pagination. Use hasStats=true for events with fight and round stats.","operationId":"listRecentUfcEvents","tags":["UFC"],"parameters":[{"name":"hasStats","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeBouts","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25}}],"responses":{"200":{"description":"Recent event rows"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/events/upcoming":{"get":{"summary":"List upcoming UFC events","description":"Returns upcoming UFC events with pagination.","operationId":"listUpcomingUfcEvents","tags":["UFC"],"parameters":[{"name":"includeBouts","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25}}],"responses":{"200":{"description":"Upcoming event rows"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/events/{eventIdOrSlug}":{"get":{"summary":"Get UFC event detail","description":"Returns one UFC event by event id, slug, or dataId, including bouts and stats when available.","operationId":"getUfcEvent","tags":["UFC"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"schema":{"type":"string"},"example":"ufc-328-chimaev-vs-strickland"}],"responses":{"200":{"description":"Event detail"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Event not found"}}}},"/ufc/events/{slug}/bouts":{"get":{"summary":"Get UFC event bouts","description":"Returns fight-card bouts for an event, including fighters, result, winner, method, round, time, bout stats, and round stats when available. Each bout includes nested `referee: { id, name, firstName, lastName } | null` (FightMetric; null when unknown).","operationId":"getUfcEventBouts","tags":["UFC"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"example":"ufc-328-chimaev-vs-strickland"},{"name":"round","in":"query","required":false,"schema":{"type":"integer"},"example":1,"description":"Return only round-level stat rows for a specific round."}],"responses":{"200":{"description":"Event bouts"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Event not found"}}}},"/ufc/events/{slug}/stats":{"get":{"summary":"Get UFC event stats","description":"Returns all bout-level and round-level stat rows for one UFC event.","operationId":"getUfcEventStats","tags":["UFC"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"example":"ufc-328-chimaev-vs-strickland"}],"responses":{"200":{"description":"Event stats"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Event not found"}}}},"/ufc/bouts":{"get":{"summary":"List UFC bouts","description":"Returns UFC bouts with pagination. Filter by event, fighter, weight class, status, and stat availability. Each bout includes nested `referee: { id, name, firstName, lastName } | null`.","operationId":"listUfcBouts","tags":["UFC"],"parameters":[{"name":"event","in":"query","required":false,"schema":{"type":"string"},"description":"Event id, slug, or dataId."},{"name":"fighter","in":"query","required":false,"schema":{"type":"string"},"description":"Fighter name or slug."},{"name":"weightClass","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"hasStats","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"includeStats","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50}}],"responses":{"200":{"description":"Bout rows"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/bouts/{boutId}":{"get":{"summary":"Get UFC bout detail","description":"Returns one UFC bout with fighters, event context, bout stats, and round stats when available. Includes nested `referee: { id, name, firstName, lastName } | null` (FightMetric; null when unknown).","operationId":"getUfcBout","tags":["UFC"],"parameters":[{"name":"boutId","in":"path","required":true,"schema":{"type":"string"},"example":"770c5302e32916ea"},{"name":"round","in":"query","required":false,"schema":{"type":"integer"},"example":1,"description":"Return only round-level stat rows for a specific round."}],"responses":{"200":{"description":"Bout detail"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bout not found"}}}},"/ufc/bouts/{boutId}/stats":{"get":{"summary":"Get UFC bout stats","description":"Returns bout-level fighter totals and round-by-round fighter stats for one bout.","operationId":"getUfcBoutStats","tags":["UFC"],"parameters":[{"name":"boutId","in":"path","required":true,"schema":{"type":"string"},"example":"770c5302e32916ea"},{"name":"round","in":"query","required":false,"schema":{"type":"integer"},"example":1,"description":"Return only rows for a specific round."}],"responses":{"200":{"description":"Bout stats"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bout not found"}}}},"/ufc/bouts/{boutId}/rounds":{"get":{"summary":"Get UFC bout round stats","description":"Returns round-by-round fighter stat rows for one bout.","operationId":"getUfcBoutRounds","tags":["UFC"],"parameters":[{"name":"boutId","in":"path","required":true,"schema":{"type":"string"},"example":"770c5302e32916ea"}],"responses":{"200":{"description":"Round stat rows"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bout not found"}}}},"/tennis/live/ws":{"get":{"summary":"Tennis Live WebSocket (point-by-point)","operationId":"tennisLiveWebsocket","tags":["Tennis"],"description":"WebSocket endpoint, not a plain GET: open it with an HTTP Upgrade to wss://api.citoapi.com/api/v1/tennis/live/ws. Push feed for live tennis, fanned out from the 365Scores poller. Requires an API key with tennis access AND the live-WebSocket add-on; without the add-on the upgrade is refused. Auth on the upgrade, any one of: x-api-key header, Authorization: Bearer, ?apiKey= or ?x-api-key= in the query string. On connect the server sends a self-describing {\"type\":\"ready\"} frame carrying the protocol and event list, so a client can discover the contract at runtime. Client frames: {\"action\":\"subscribe\",\"rooms\":[\"match:{matchId}\",\"all\"]}, {\"action\":\"unsubscribe\",\"rooms\":[...]}, {\"action\":\"ping\"}. Max 32 rooms per connection. Server frames: {\"type\":\"subscribed\"}, {\"type\":\"pong\"}, {\"type\":\"error\",\"code\":\"INVALID_JSON\"|\"BAD_ROOMS\"}, and the events {\"type\":\"POINT_UPDATE\"} and {\"type\":\"MATCH_FINISHED\"}, each carrying a data object keyed by match_id. matchId values come from /tennis/matches/live. There is no SSE variant for tennis; the WebSocket is the only push transport.","responses":{"101":{"description":"Switching Protocols: the WebSocket is open."},"401":{"description":"Missing or invalid API key on the upgrade request."},"403":{"description":"API key lacks tennis access or the live-WebSocket add-on."}}}},"/ufc/bouts/{boutId}/odds":{"get":{"summary":"Get UFC bout odds","description":"Every bookmaker line for one bout: moneyline per fighter plus prop markets (method of victory, round totals, fight goes the distance). Each outcome carries fighter.slug for a stable join and isAvailable, which is false for a finished fight's closing line. Pass ?available=true to receive only markets a book is offering right now.","operationId":"getUfcBoutOdds","tags":["UFC"],"parameters":[{"name":"boutId","in":"path","required":true,"schema":{"type":"string"},"example":"770c5302e32916ea"},{"name":"available","in":"query","required":false,"schema":{"type":"boolean"},"description":"true = only lines currently offered"},{"name":"bookmaker","in":"query","required":false,"schema":{"type":"string"},"description":"Filter to one bookmaker slug or group"}],"responses":{"200":{"description":"Markets with outcomes per bookmaker"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bout not found"}}}},"/ufc/events/{slug}/odds":{"get":{"summary":"Get UFC event odds","description":"Odds for every bout on a card in one call, grouped by fight. Same outcome shape and ?available / ?bookmaker filters as the bout route.","operationId":"getUfcEventOdds","tags":["UFC"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"example":"ufc-330"},{"name":"available","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"bookmaker","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Odds grouped by fight"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Event not found"}}}},"/ufc/live":{"get":{"summary":"UFC live overview","description":"Read-only live card overview from DB/Redis (API host does not scrape UFC). `liveBouts` = status live|watching only; `nextBouts` / `nextArmedBout` = armed up-next (not live). Supervisor shells in `events` are not matchups. Meta includes emptyReason, boardCriteria, health (DB-inferred workerAlive/workerStarted, freshestHeartbeatLagSeconds), redis_ready, lagSeconds. Prefer SSE `/ufc/live/stream` or WebSocket `/ufc/live/ws` for push updates.","operationId":"getUfcLiveOverview","tags":["UFC"],"responses":{"200":{"description":"liveBouts + nextBouts + events; meta.health / emptyReason / redis_ready","content":{"application/json":{"example":{"success":true,"data":{"liveBouts":[{"boutId":"ufc-1234567","status":"live","currentRound":2,"currentTime":"3:12","lagSeconds":8,"recommendedPollSeconds":12}],"events":[{"eventSlug":"ufc-fight-night-example","status":"live","currentLiveFmid":"1234567","recommendedPollSeconds":12}]},"meta":{"stream":"/api/v1/ufc/live/stream","websocket":"/api/v1/ufc/live/ws"}}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/live/events":{"get":{"summary":"List UFC live events","description":"Supervisor state for fight-night events tracked by the ufc-live worker (VPS 169). Read-only on API.","operationId":"listUfcLiveEvents","tags":["UFC"],"responses":{"200":{"description":"Live event rows with lagSeconds + recommendedPollSeconds"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/live/events/{slug}":{"get":{"summary":"Get UFC live event","description":"Live supervisor row plus tracking rows for one event slug. Alias: GET /ufc/events/{slug}/live.","operationId":"getUfcLiveEvent","tags":["UFC"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"example":"ufc-fight-night-example"}],"responses":{"200":{"description":"Live event + tracking"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Live event not found"}}}},"/ufc/live/{boutId}":{"get":{"summary":"Get UFC live bout","description":"Live tracking + optional Redis state + catalog bout for one boutId (ufc-{fightMetricId} or bare fmid). Includes lagSeconds and recommendedPollSeconds.","operationId":"getUfcLiveBout","tags":["UFC"],"parameters":[{"name":"boutId","in":"path","required":true,"schema":{"type":"string"},"example":"ufc-1234567"}],"responses":{"200":{"description":"Live bout payload"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bout not found"}}}},"/ufc/live/{boutId}/state":{"get":{"summary":"Get UFC live bout state","description":"Compact live state (Redis preferred, DB fallback) with lagSeconds and recommendedPollSeconds for polling clients.","operationId":"getUfcLiveBoutState","tags":["UFC"],"parameters":[{"name":"boutId","in":"path","required":true,"schema":{"type":"string"},"example":"ufc-1234567"}],"responses":{"200":{"description":"Live state"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"State not found"}}}},"/ufc/live/{boutId}/snapshots":{"get":{"summary":"List UFC live bout snapshots","description":"Hash-diffed HTML live snapshots for one bout (round/time/method only; no ESPN-style livestats in v1).","operationId":"listUfcLiveBoutSnapshots","tags":["UFC"],"parameters":[{"name":"boutId","in":"path","required":true,"schema":{"type":"string"},"example":"ufc-1234567"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50}}],"responses":{"200":{"description":"Snapshot rows"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/live/stream":{"get":{"summary":"UFC live SSE stream","description":"Server-Sent Events push feed of live bout updates, on every plan. Filter with `boutId` and/or `eventSlug`. Events: `ready` (sent first; carries `delay_seconds` and `billing`), `ufc.live.snapshot` (the bout's current state, when `boutId` is set), `ufc.live.update`, `ping` every 15 seconds, and `error` just before the server closes the stream.\n\n**Billing.** An open stream counts toward your monthly quota like polling: one request when it connects, then one request for every 15 seconds it stays open (the same as polling `/ufc/live` every 15 seconds). When the quota runs out the stream sends an `error` event with code `RATE_LIMIT_EXCEEDED` and closes; connecting with no quota left returns 429.\n\n**Delay.** Free and Starter plans receive every event 60 seconds late, the same delay as the polled live endpoints. Other plans are real-time.\n\nRoom-based WebSockets: `/ufc/live/ws`.","operationId":"streamUfcLive","tags":["UFC"],"parameters":[{"name":"boutId","in":"query","required":false,"schema":{"type":"string"},"example":"ufc-1234567"},{"name":"eventSlug","in":"query","required":false,"schema":{"type":"string"},"example":"ufc-fight-night-example"}],"responses":{"200":{"description":"text/event-stream (events: ready, ufc.live.snapshot, ufc.live.update, ping, error)","content":{"text/event-stream":{"schema":{"type":"string"},"example":"event: ready\ndata: {\"success\":true,\"stream\":\"ufc.live\",\"boutId\":\"ufc-1234567\",\"eventSlug\":null,\"redis_configured\":true,\"redis_subscriber_ready\":true,\"websocket\":\"/api/v1/ufc/live/ws\",\"recommendedPollSeconds\":12,\"delay_seconds\":0,\"billing\":{\"requests_per_interval\":1,\"interval_seconds\":15}}\n\nevent: ping\ndata: {\"ok\":true,\"ts\":\"2026-09-25T20:15:00.000Z\"}\n\nevent: error\ndata: {\"success\":false,\"error\":{\"code\":\"RATE_LIMIT_EXCEEDED\",\"message\":\"You have used 500 of 500 requests in your current period. It resets on 2026-10-01 (about 6 days).\"}}\n\n"}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Monthly request quota already used up when connecting. Mid-stream, the same limit arrives as an `error` event and the stream closes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/live/{boutId}/socket":{"get":{"summary":"UFC live transport contract (SSE + WebSocket)","description":"Documents UFC live SSE and WebSocket auth, rooms (bout:{id}|event:{slug}), envelope shape, and Redis channel. UFC WebSocket is available at /api/v1/ufc/live/ws. Does not claim LoL/CS2 WebSocket availability.","operationId":"getUfcLiveSocketDocs","tags":["UFC"],"parameters":[{"name":"boutId","in":"path","required":true,"schema":{"type":"string"},"example":"ufc-1234567"}],"responses":{"200":{"description":"Transport contract"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/live/health":{"get":{"summary":"UFC live worker health","description":"Cross-host health for ufc-live. Worker runs on VPS 169 only; API 209 is read-only. `workerAlive` / `workerStarted` are DB-inferred from ufc_live_event heartbeat lag (≤120s), not process-local memory — so 209 does not always report false. `workerProcessStarted` is true only on the process that called startUfcLiveJobs (CLI/pm2 on 169). Process-local fields (cardPollInFlight, lastPollCompletedAt, adaptiveBackoffMs, homepageWeAreLive) are null on the API host. Includes emptyReason, freshestHeartbeatLagSeconds, slim activeTracking, nextArmedBout, redis_ready, degradedReason. Never invents fighter names.","operationId":"getUfcLiveHealth","tags":["UFC"],"responses":{"200":{"description":"Health payload (workerAlive, emptyReason, lag, nextArmedBout, redis_ready)"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ufc/events/{slug}/live":{"get":{"summary":"Event live alias","description":"Alias of GET /ufc/live/events/{slug}.","operationId":"getUfcEventLive","tags":["UFC"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"example":"ufc-fight-night-example"}],"responses":{"200":{"description":"Live event + tracking"},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Live event not found"}}}},"/cod/search":{"get":{"summary":"Search Call of Duty data","description":"Search COD players, organizations, and tournaments. Returns a `{ success, data }` envelope.","operationId":"searchCod","tags":["Call of Duty"],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Search text."},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["players","orgs","tournaments"]},"description":"Restrict to one entity type."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"},"description":"Max results per type."}],"responses":{"200":{"description":"Search results."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cod/matches":{"get":{"summary":"Recent Call of Duty matches","description":"Convenience alias for recently completed COD matches. Same filters and shape as /cod/matches/recent.","operationId":"listCodMatches","tags":["Call of Duty"],"parameters":[{"name":"team","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by team/org slug."},{"name":"tournamentId","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by tournament id."},{"name":"season","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by season (e.g. 2026)."},{"name":"days","in":"query","required":false,"schema":{"type":"integer"},"description":"Only matches from the last N days."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Recently completed matches."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cod/matches/live":{"get":{"summary":"Live Call of Duty matches","description":"Returns currently live CDL matches (alias of /cod/cdl/live).","operationId":"getCodLiveMatches","tags":["Call of Duty"],"responses":{"200":{"description":"Live matches."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cod/matches/upcoming":{"get":{"summary":"Upcoming Call of Duty matches","description":"Returns upcoming scheduled/live COD matches from the database.","operationId":"listCodUpcomingMatches","tags":["Call of Duty"],"parameters":[{"name":"team","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by team/org slug."},{"name":"tournamentId","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by tournament id."},{"name":"season","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by season (e.g. 2026)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Upcoming matches."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cod/matches/recent":{"get":{"summary":"Recently completed Call of Duty matches","description":"Returns recently completed COD matches with scores and map counts.","operationId":"listCodRecentMatches","tags":["Call of Duty"],"parameters":[{"name":"team","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by team/org slug."},{"name":"tournamentId","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by tournament id."},{"name":"season","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by season (e.g. 2026)."},{"name":"days","in":"query","required":false,"schema":{"type":"integer"},"description":"Only matches from the last N days."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Recently completed matches."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cod/matches/{id}":{"get":{"summary":"Call of Duty match details","description":"Returns one COD match with teams, score, tournament context, and status.","operationId":"getCodMatch","tags":["Call of Duty"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Match id."}],"responses":{"200":{"description":"Match details."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Match not found."}}}},"/cod/matches/{id}/maps":{"get":{"summary":"Call of Duty match map breakdown","description":"Returns the map-by-map breakdown for a match (mode, map name, scores, per-map stats).","operationId":"getCodMatchMaps","tags":["Call of Duty"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Match id."}],"responses":{"200":{"description":"Map-by-map breakdown."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Match not found."}}}},"/cod/matches/{id}/player-stats":{"get":{"summary":"Call of Duty match player stats","description":"Returns match-level player stats aggregated from per-map stats.","operationId":"getCodMatchPlayerStats","tags":["Call of Duty"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Match id."},{"name":"includeMaps","in":"query","required":false,"schema":{"type":"boolean","default":true},"description":"Include per-map stat rows."}],"responses":{"200":{"description":"Player stats for the match."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Match not found."}}}},"/cod/players":{"get":{"summary":"List Call of Duty players","description":"Lists COD players with optional filters. Returns players with pagination counts.","operationId":"listCodPlayers","tags":["Call of Duty"],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string"},"description":"Case-insensitive IGN search (alias: q)."},{"name":"team","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by current team/org slug."},{"name":"nationality","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by nationality."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"Player list."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cod/players/{id}":{"get":{"summary":"Call of Duty player details","description":"Returns one COD player. Accepts a codPlayerId, current IGN, or activisionId as the id.","operationId":"getCodPlayer","tags":["Call of Duty"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"codPlayerId, IGN, or activisionId."}],"responses":{"200":{"description":"Player details."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Player not found."}}}},"/cod/players/{id}/stats":{"get":{"summary":"Call of Duty player season stats","description":"Returns player season stats (K/D, damage, hill time, and related aggregates).","operationId":"getCodPlayerStats","tags":["Call of Duty"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"codPlayerId, IGN, or activisionId."},{"name":"season","in":"query","required":false,"schema":{"type":"string"},"description":"Season filter (e.g. 2026)."}],"responses":{"200":{"description":"Player season stats."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Player not found."}}}},"/cod/players/{id}/matches":{"get":{"summary":"Call of Duty player match history","description":"Returns a player's recent match history with their per-match stats.","operationId":"getCodPlayerMatches","tags":["Call of Duty"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"codPlayerId, IGN, or activisionId."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}},{"name":"includeMapStats","in":"query","required":false,"schema":{"type":"boolean"},"description":"Include per-map stats per match."}],"responses":{"200":{"description":"Player match history."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Player not found."}}}},"/cod/orgs":{"get":{"summary":"List Call of Duty organizations","description":"Lists COD organizations (also mounted as /cod/teams).","operationId":"listCodOrgs","tags":["Call of Duty"],"parameters":[{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by region."},{"name":"franchiseOnly","in":"query","required":false,"schema":{"type":"boolean"},"description":"Only CDL franchise teams."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Organization list."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cod/orgs/{slug}":{"get":{"summary":"Call of Duty organization details","description":"Returns one COD organization (also mounted as /cod/teams/{slug}).","operationId":"getCodOrg","tags":["Call of Duty"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Organization slug."}],"responses":{"200":{"description":"Organization details."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Organization not found."}}}},"/cod/orgs/{slug}/roster":{"get":{"summary":"Call of Duty organization roster","description":"Returns the current roster of a COD organization.","operationId":"getCodOrgRoster","tags":["Call of Duty"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Organization slug."},{"name":"includeFormer","in":"query","required":false,"schema":{"type":"boolean"},"description":"Include former roster members."}],"responses":{"200":{"description":"Organization roster."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Organization not found."}}}},"/cod/tournaments":{"get":{"summary":"List Call of Duty tournaments","description":"Lists COD tournaments with optional filters.","operationId":"listCodTournaments","tags":["Call of Duty"],"parameters":[{"name":"game","in":"query","required":false,"schema":{"type":"string","enum":["bo6","mw3","mw2"]},"description":"Filter by game title."},{"name":"tier","in":"query","required":false,"schema":{"type":"string","enum":["S","A","B"]},"description":"Filter by tournament tier."},{"name":"completed","in":"query","required":false,"schema":{"type":"boolean"},"description":"Only completed (or only open) tournaments."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Tournament list."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cod/tournaments/{id}":{"get":{"summary":"Call of Duty tournament details","description":"Returns one COD tournament with results and matches.","operationId":"getCodTournament","tags":["Call of Duty"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Tournament id."}],"responses":{"200":{"description":"Tournament details."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Tournament not found."}}}},"/cod/tournaments/{id}/results":{"get":{"summary":"Call of Duty tournament results","description":"Returns final placements (team results) for one COD tournament.","operationId":"getCodTournamentResults","tags":["Call of Duty"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Tournament id."}],"responses":{"200":{"description":"Tournament placements."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Tournament not found."}}}},"/cod/standings":{"get":{"summary":"CDL standings","description":"Returns current Call of Duty League standings (alias of /cod/cdl/standings).","operationId":"getCodStandings","tags":["Call of Duty"],"parameters":[{"name":"season","in":"query","required":false,"schema":{"type":"string"},"description":"Season filter (e.g. 2026)."},{"name":"stage","in":"query","required":false,"schema":{"type":"string"},"description":"Stage/major filter."}],"responses":{"200":{"description":"CDL standings."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cod/transfers":{"get":{"summary":"List Call of Duty transfers","description":"Lists recent COD roster transfers.","operationId":"listCodTransfers","tags":["Call of Duty"],"parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["join","leave","transfer","retire"]},"description":"Filter by transfer type."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Transfer list."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/cod/leaderboards/earnings":{"get":{"summary":"Call of Duty earnings leaderboard","description":"Returns the COD player earnings leaderboard.","operationId":"getCodEarningsLeaderboard","tags":["Call of Duty"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"game","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by game title."},{"name":"year","in":"query","required":false,"schema":{"type":"integer"},"description":"Filter by year."}],"responses":{"200":{"description":"Earnings leaderboard."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/fortnite/search":{"get":{"summary":"Search Fortnite data","description":"Global Fortnite search across players, orgs, and tournaments.","operationId":"searchFortnite","tags":["Fortnite"],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Search text."}],"responses":{"200":{"description":"Search results."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/fortnite/matches":{"get":{"summary":"List Fortnite competitive matches","description":"Lists Fortnite competitive matches (individual games within tournament windows).","operationId":"listFortniteMatches","tags":["Fortnite"],"parameters":[{"name":"eventId","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by Epic event id."},{"name":"eventWindowId","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by Epic event window id."},{"name":"tournamentId","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by internal tournament id."},{"name":"hasTimeline","in":"query","required":false,"schema":{"type":"boolean"},"description":"Only matches with replay timeline data."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Match list."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/fortnite/matches/{matchId}":{"get":{"summary":"Fortnite match details","description":"Returns one Fortnite competitive match with session metadata.","operationId":"getFortniteMatch","tags":["Fortnite"],"parameters":[{"name":"matchId","in":"path","required":true,"schema":{"type":"string"},"description":"Match id (Epic session id)."}],"responses":{"200":{"description":"Match details."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Match not found."}}}},"/fortnite/matches/{matchId}/stats":{"get":{"summary":"Fortnite match player stats","description":"Returns per-player stats (placement, kills, damage) for one Fortnite match.","operationId":"getFortniteMatchStats","tags":["Fortnite"],"parameters":[{"name":"matchId","in":"path","required":true,"schema":{"type":"string"},"description":"Match id."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Match player stats."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Match not found."}}}},"/fortnite/matches/{matchId}/kill-feed":{"get":{"summary":"Fortnite match kill feed","description":"Returns the elimination feed for one Fortnite match (from replay data when available).","operationId":"getFortniteMatchKillFeed","tags":["Fortnite"],"parameters":[{"name":"matchId","in":"path","required":true,"schema":{"type":"string"},"description":"Match id."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by elimination type."}],"responses":{"200":{"description":"Kill feed."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Match not found."}}}},"/fortnite/tournaments":{"get":{"summary":"List Fortnite tournaments","description":"Lists Fortnite tournaments (events) with filters. Also mounted as /fortnite/events.","operationId":"listFortniteTournaments","tags":["Fortnite"],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["upcoming","ongoing","completed"]}},{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by region (e.g. NA, EU)."},{"name":"year","in":"query","required":false,"schema":{"type":"integer"}},{"name":"tier","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by tournament tier."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"Tournament list with pagination counts."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/fortnite/tournaments/live":{"get":{"summary":"Live Fortnite tournaments","description":"Returns currently live Fortnite tournaments/events (also /fortnite/matches/live).","operationId":"getFortniteLiveTournaments","tags":["Fortnite"],"responses":{"200":{"description":"Live tournaments."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/fortnite/tournaments/upcoming":{"get":{"summary":"Upcoming Fortnite tournaments","description":"Returns upcoming Fortnite tournaments/events (also /fortnite/matches/upcoming).","operationId":"getFortniteUpcomingTournaments","tags":["Fortnite"],"responses":{"200":{"description":"Upcoming tournaments."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/fortnite/tournaments/live/{eventId}/{windowId}":{"get":{"summary":"Live Fortnite event leaderboard","description":"Returns the live leaderboard for one tournament window (eventId + windowId from Epic). Epic serves 100 teams per page. Use pages (or leaderboardPages) to aggregate multiple pages (default 40 → up to 4000 teams; hard max 50 / FORTNITE_LIVE_LEADERBOARD_MAX_PAGES). Use page (0-based) to start at a given page; alone with pages unset it returns that single page.","operationId":"getFortniteLiveEventLeaderboard","tags":["Fortnite"],"parameters":[{"name":"eventId","in":"path","required":true,"schema":{"type":"string"},"description":"Epic event id."},{"name":"windowId","in":"path","required":true,"schema":{"type":"string"},"description":"Epic event window id."},{"name":"pages","in":"query","required":false,"schema":{"type":"integer","default":40,"minimum":1,"maximum":50},"description":"Number of Epic pages to aggregate (100 teams each). Alias: leaderboardPages. Default 40 (up to 4000 teams)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":0,"minimum":0},"description":"0-based starting Epic page. Alone (without pages) returns a single page of 100 teams."},{"name":"leaderboardPages","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50},"description":"Alias of pages."}],"responses":{"200":{"description":"Live leaderboard."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Event or window not found."}}}},"/fortnite/tournaments/{id}":{"get":{"summary":"Fortnite tournament details","description":"Returns one Fortnite tournament/event.","operationId":"getFortniteTournament","tags":["Fortnite"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Tournament id."}],"responses":{"200":{"description":"Tournament details."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Tournament not found."}}}},"/fortnite/tournaments/{id}/results":{"get":{"summary":"Fortnite tournament results","description":"Returns the final leaderboard/results for one Fortnite tournament (alias of /leaderboard).","operationId":"getFortniteTournamentResults","tags":["Fortnite"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Tournament id."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Tournament results."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Tournament not found."}}}},"/fortnite/players":{"get":{"summary":"List Fortnite players","description":"Lists Fortnite pro players (search with q). Defaults to pro-earnings-filtered results unless includeAll=true.","operationId":"listFortnitePlayers","tags":["Fortnite"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Search text."},{"name":"org","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by org slug."},{"name":"minEarnings","in":"query","required":false,"schema":{"type":"number"},"description":"Minimum career earnings (USD)."},{"name":"includeAll","in":"query","required":false,"schema":{"type":"boolean"},"description":"Include non-pro players (alias: all)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"Player list with pagination counts."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/fortnite/players/{identifier}":{"get":{"summary":"Fortnite player details","description":"Returns one Fortnite player by account id or username.","operationId":"getFortnitePlayer","tags":["Fortnite"],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"Epic account id or username."}],"responses":{"200":{"description":"Player details."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Player not found."}}}},"/fortnite/players/{identifier}/profile":{"get":{"summary":"Fortnite player lifetime profile stats","description":"Returns lifetime profile stats for one Fortnite player (aliases: /lifetime, /lifetime-stats).","operationId":"getFortnitePlayerProfileStats","tags":["Fortnite"],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"Epic account id or username."}],"responses":{"200":{"description":"Lifetime profile stats."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Player not found."}}}},"/fortnite/players/{identifier}/earnings":{"get":{"summary":"Fortnite player earnings","description":"Returns the earnings history/summary for one Fortnite player.","operationId":"getFortnitePlayerEarnings","tags":["Fortnite"],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"Epic account id or username."}],"responses":{"200":{"description":"Player earnings."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Player not found."}}}},"/fortnite/orgs":{"get":{"summary":"List Fortnite organizations","description":"Lists Fortnite organizations (also mounted as /fortnite/teams).","operationId":"listFortniteOrgs","tags":["Fortnite"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Organization list."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/fortnite/orgs/{slug}":{"get":{"summary":"Fortnite organization details","description":"Returns one Fortnite organization.","operationId":"getFortniteOrg","tags":["Fortnite"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Organization slug."}],"responses":{"200":{"description":"Organization details."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Organization not found."}}}},"/fortnite/orgs/{slug}/roster":{"get":{"summary":"Fortnite organization roster","description":"Returns the current roster of a Fortnite organization.","operationId":"getFortniteOrgRoster","tags":["Fortnite"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Organization slug."}],"responses":{"200":{"description":"Organization roster."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Organization not found."}}}},"/fortnite/pros/rankings":{"get":{"summary":"Fortnite pro rankings (Cito PR)","description":"Transparent Cito PR-style Fortnite pro rankings calculated from Cito-ingested tournament history (not FortniteTracker PR). Returns `{ success, ... }` with the formula version.","operationId":"listFortniteProRankings","tags":["Fortnite"],"parameters":[{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by region."},{"name":"country","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by country."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Pro rankings with formula version."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/fortnite/leaderboards/earnings":{"get":{"summary":"Fortnite earnings leaderboard","description":"Returns the Fortnite player earnings leaderboard (top earners).","operationId":"getFortniteEarningsLeaderboard","tags":["Fortnite"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Earnings leaderboard."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/fortnite/transfers":{"get":{"summary":"List Fortnite transfers","description":"Lists recent Fortnite roster transfers.","operationId":"listFortniteTransfers","tags":["Fortnite"],"parameters":[{"name":"org","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by org slug."},{"name":"player","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by player."},{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by transfer type."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"Transfer list."},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tennis/health":{"get":{"tags":["Tennis"],"summary":"Service Health Check","description":"Returns application health and database connection status.","operationId":"tennis_health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Check Health Get"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/health/sync":{"get":{"tags":["Tennis"],"summary":"Background Sync Status","description":"Returns status and execution timestamps of background sync jobs.","operationId":"tennis_health_sync_health_sync_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Sync Health Sync Get"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches/live":{"get":{"tags":["Tennis"],"summary":"List Active Live Matches","description":"Retrieves all currently active in-progress tennis matches with live scores.","operationId":"tennis_list_live_matches_matches_live_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Max live matches to return","title":"Limit"},"description":"Max live matches to return"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for limit","title":"Page Size"},"description":"Alias for limit"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisListResponse_LiveMatchSummary_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches/upcoming":{"get":{"tags":["Tennis"],"summary":"Upcoming Scheduled Matches","description":"Scheduled fixtures for the next ~3 days, soonest first.\n\nFed by the same source as the live board; a fixture keeps its match_id\nwhen it goes live, so ids are stable across upcoming -> live -> finished.","operationId":"tennis_list_upcoming_matches_matches_upcoming_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Max fixtures to return","default":100,"title":"Limit"},"description":"Max fixtures to return"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for limit","title":"Page Size"},"description":"Alias for limit"},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisListResponse_Dict_str__Any__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches/live/{match_id}":{"get":{"tags":["Tennis"],"summary":"Get Detailed Live Match State","description":"Retrieves real-time score, point history, and server for an active match.","operationId":"tennis_get_live_match_matches_live__match_id__get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisLiveMatchDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/players":{"get":{"tags":["Tennis"],"summary":"List & Filter Players","description":"Retrieves a paginated list of tennis players matching search and filter criteria.","operationId":"tennis_list_players_players_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Player name search query","title":"Q"},"description":"Player name search query"},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tour: ATP or WTA","title":"Tour"},"description":"Tour: ATP or WTA"},{"name":"ioc","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"3-letter country IOC code","title":"Ioc"},"description":"3-letter country IOC code"},{"name":"hand","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hand: R, L, A, U","title":"Hand"},"description":"Hand: R, L, A, U"},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Active status","title":"Is Active"},"description":"Active status"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort field: rank (default, ranked players first) | full_name | last_name | dob","default":"rank","title":"Sort By"},"description":"Sort field: rank (default, ranked players first) | full_name | last_name | dob"},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort order: asc or desc","default":"asc","title":"Order"},"description":"Sort order: asc or desc"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-indexed)","default":1,"title":"Page"},"description":"Page number (1-indexed)"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page (max 100)","default":20,"title":"Page Size"},"description":"Items per page (max 100)"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for page_size","title":"Limit"},"description":"Alias for page_size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisPaginatedResponse_PlayerListItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/players/search":{"get":{"tags":["Tennis"],"summary":"Player Autocomplete Search","description":"Fast prefix search for player autocomplete dropdowns.","operationId":"tennis_search_players_players_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Prefix search term (min 2 characters)","title":"Q"},"description":"Prefix search term (min 2 characters)"},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional tour filter (ATP/WTA)","title":"Tour"},"description":"Optional tour filter (ATP/WTA)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Max results limit","default":10,"title":"Limit"},"description":"Max results limit"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for limit, matching the paginated routes","title":"Page Size"},"description":"Alias for limit, matching the paginated routes"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisListResponse_PlayerListItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/players/batch":{"get":{"tags":["Tennis"],"summary":"Fetch Many Players by ID","description":"One call for a roster. Rows use the same shape as /players; ids that\ndo not resolve are listed in `missing` rather than silently dropped.","operationId":"tennis_get_players_batch_players_batch_get","parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated player ids, at most 50 (e.g. atp_207989,wta_211768)","title":"Ids"},"description":"Comma-separated player ids, at most 50 (e.g. atp_207989,wta_211768)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisPlayerBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/players/{player_id}":{"get":{"tags":["Tennis"],"summary":"Get Player Biographical Profile","description":"Retrieves full biographical profile and career summary for a specific player.","operationId":"tennis_get_player_players__player_id__get","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"string","title":"Player Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisPlayerProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/players/{player_id}/stats":{"get":{"tags":["Tennis"],"summary":"Get Player Detailed Career Statistics","description":"Retrieves deep career metrics: surface breakdown, serving metrics, and return records.","operationId":"tennis_get_player_stats_players__player_id__stats_get","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"string","title":"Player Id"}},{"name":"surface","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Court surface: Hard, Clay, Grass, Carpet","title":"Surface"},"description":"Court surface: Hard, Clay, Grass, Carpet"},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tournament level tier: G, M, A, F, D, C","title":"Level"},"description":"Tournament level tier: G, M, A, F, D, C"},{"name":"year_from","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter matches from year","title":"Year From"},"description":"Filter matches from year"},{"name":"year_to","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter matches up to year","title":"Year To"},"description":"Filter matches up to year"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisPlayerStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches":{"get":{"tags":["Tennis"],"summary":"Query Match Archive","description":"Retrieves paginated match history with flexible filters.","operationId":"tennis_list_matches_matches_get","parameters":[{"name":"player_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Matches involving this player","title":"Player Id"},"description":"Matches involving this player"},{"name":"opponent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Matches against this opponent","title":"Opponent Id"},"description":"Matches against this opponent"},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tour: ATP or WTA","title":"Tour"},"description":"Tour: ATP or WTA"},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Calendar year","title":"Year"},"description":"Calendar year"},{"name":"date_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Start date (YYYY-MM-DD)","title":"Date Start"},"description":"Start date (YYYY-MM-DD)"},{"name":"date_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"End date (YYYY-MM-DD)","title":"Date End"},"description":"End date (YYYY-MM-DD)"},{"name":"surface","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Surface: Hard, Clay, Grass, Carpet","title":"Surface"},"description":"Surface: Hard, Clay, Grass, Carpet"},{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific tournament ID","title":"Tournament Id"},"description":"Specific tournament ID"},{"name":"round","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Round code: F, SF, QF, R16, R32, R64, R128, RR, Q, Q1, Q2, Q3, BR, ER. Prose forms ('Final', 'Round of 32') are accepted too","title":"Round"},"description":"Round code: F, SF, QF, R16, R32, R64, R128, RR, Q, Q1, Q2, Q3, BR, ER. Prose forms ('Final', 'Round of 32') are accepted too"},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Level: G, M, A, F, D, C","title":"Level"},"description":"Level: G, M, A, F, D, C"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-indexed)","default":1,"title":"Page"},"description":"Page number (1-indexed)"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page","default":20,"title":"Page Size"},"description":"Items per page"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for page_size","title":"Limit"},"description":"Alias for page_size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisPaginatedResponse_MatchListItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches/recent":{"get":{"tags":["Tennis"],"summary":"Get Recent Tour Matches","description":"Retrieves recent completed matches.","operationId":"tennis_get_recent_matches_matches_recent_get","parameters":[{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ATP or WTA","title":"Tour"},"description":"ATP or WTA"},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Level","title":"Level"},"description":"Level"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Limit count","default":20,"title":"Limit"},"description":"Limit count"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for limit, matching the paginated routes","title":"Page Size"},"description":"Alias for limit, matching the paginated routes"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisListResponse_Dict_str__Any__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches/completed":{"get":{"tags":["Tennis"],"summary":"Completed Matches for a Day","description":"Returns finalised ATP/WTA match records for one calendar day.\n\nThis is the convenient daily-results endpoint; use ``/matches`` for broader\narchive filters. Dates use the source match date rather than request-local time.","operationId":"tennis_get_completed_matches_for_day_matches_completed_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Match date in YYYY-MM-DD (UTC match date)","title":"Date"},"description":"Match date in YYYY-MM-DD (UTC match date)"},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional tour filter: ATP or WTA","title":"Tour"},"description":"Optional tour filter: ATP or WTA"},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional tournament level filter","title":"Level"},"description":"Optional tournament level filter"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-indexed)","default":1,"title":"Page"},"description":"Page number (1-indexed)"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page","default":50,"title":"Page Size"},"description":"Items per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisPaginatedResponse_MatchListItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches/{match_id}":{"get":{"tags":["Tennis"],"summary":"Get Match Details & Box Score","description":"Retrieves full match score, set breakdown, and match serving/return stats.","operationId":"tennis_get_match_matches__match_id__get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisMatchDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches/{match_id}/tournament-link":{"get":{"tags":["Tennis"],"summary":"Resolve a Match Id to Its Tournament (Any Id Dialect)","description":"Accepts any match id dialect (bare live s365_<gid>, archived\ns365_<year>_<gid>, or atp_<year>_<code>_<num>) and reports what\ntournament it belongs to. `tournament_id` is only ever a verified FK from\nthe match archive; a live/upcoming match that has not been reconciled to\na tournament row yet reports `tournament_id: null` with `tournament_name`\n(free text) and a `reason`, rather than a guessed id.","operationId":"tennis_get_match_tournament_link_matches__match_id__tournament_link_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Match Tournament Link Matches  Match Id  Tournament Link Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/h2h":{"get":{"tags":["Tennis"],"summary":"Head-to-Head Rivalry Record","description":"Calculates symmetric Head-to-Head match records, win-loss tallies, and surface splits.","operationId":"tennis_get_head_to_head_h2h_get","parameters":[{"name":"player1_id","in":"query","required":true,"schema":{"type":"string","description":"First player ID","title":"Player1 Id"},"description":"First player ID"},{"name":"player2_id","in":"query","required":true,"schema":{"type":"string","description":"Second player ID","title":"Player2 Id"},"description":"Second player ID"},{"name":"surface","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by surface (Hard, Clay, Grass, Carpet)","title":"Surface"},"description":"Filter by surface (Hard, Clay, Grass, Carpet)"},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tournament tier (G, M, A, F, D, C)","title":"Level"},"description":"Filter by tournament tier (G, M, A, F, D, C)"},{"name":"year_from","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Start year","title":"Year From"},"description":"Start year"},{"name":"year_to","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"End year","title":"Year To"},"description":"End year"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHeadToHeadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/h2h/matrix":{"get":{"tags":["Tennis"],"summary":"Multi-Player H2H Grid","description":"Generates comparison grid matrix for a group of players.","operationId":"tennis_get_head_to_head_matrix_h2h_matrix_get","parameters":[{"name":"player_ids","in":"query","required":true,"schema":{"type":"array","items":{"type":"string"},"description":"Player IDs, either repeated (player_ids=a&player_ids=b) or comma-separated (player_ids=a,b), matching /players/batch","title":"Player Ids"},"description":"Player IDs, either repeated (player_ids=a&player_ids=b) or comma-separated (player_ids=a,b), matching /players/batch"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHeadToHeadMatrixResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/rankings":{"get":{"tags":["Tennis"],"summary":"Weekly ATP/WTA Rankings Table","description":"Retrieves weekly ATP/WTA rankings. If mid-week date is provided, resolves to preceding Monday.","operationId":"tennis_list_rankings_rankings_get","parameters":[{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tour federation: ATP or WTA","title":"Tour"},"description":"Tour federation: ATP or WTA"},{"name":"circuit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Synonym for tour, matching the /rankings/{circuit} path form: ATP or WTA","title":"Circuit"},"description":"Synonym for tour, matching the /rankings/{circuit} path form: ATP or WTA"},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Ranking publication date (YYYY-MM-DD)","title":"Date"},"description":"Ranking publication date (YYYY-MM-DD)"},{"name":"rank_min","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Minimum rank number","default":1,"title":"Rank Min"},"description":"Minimum rank number"},{"name":"rank_max","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"description":"Maximum rank number","default":100,"title":"Rank Max"},"description":"Maximum rank number"},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by 3-letter IOC code","title":"Country Code"},"description":"Filter by 3-letter IOC code"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-indexed)","default":1,"title":"Page"},"description":"Page number (1-indexed)"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page","default":50,"title":"Page Size"},"description":"Items per page"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for page_size","title":"Limit"},"description":"Alias for page_size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisRankingsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/rankings/top":{"get":{"tags":["Tennis"],"summary":"Top N Rankings Snapshot","description":"Instant snapshot of top ranked players.","operationId":"tennis_get_top_rankings_rankings_top_get","parameters":[{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ATP or WTA","title":"Tour"},"description":"ATP or WTA"},{"name":"circuit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Synonym for tour, matching the /rankings/{circuit} path form: ATP or WTA","title":"Circuit"},"description":"Synonym for tour, matching the /rankings/{circuit} path form: ATP or WTA"},{"name":"top_n","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Number of top players (e.g. 10, 20, 50, 100)","default":10,"title":"Top N"},"description":"Number of top players (e.g. 10, 20, 50, 100)"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for top_n","title":"Limit"},"description":"Alias for top_n"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for top_n","title":"Page Size"},"description":"Alias for top_n"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Top Rankings Rankings Top Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/rankings/movers":{"get":{"tags":["Tennis"],"summary":"Ranking Movers Between Published Lists","description":"Climbers, fallers, new entries and drop-outs between a published list and the one before it.\nThe two lists can be weeks apart when the archive has gaps, which is why both dates are in the response.\nmovement = previous_rank - rank; both dates are named so the number can be checked.","operationId":"tennis_get_ranking_movers_rankings_movers_get","parameters":[{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ATP or WTA","title":"Tour"},"description":"ATP or WTA"},{"name":"circuit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Synonym for tour, matching the /rankings/{circuit} path form: ATP or WTA","title":"Circuit"},"description":"Synonym for tour, matching the /rankings/{circuit} path form: ATP or WTA"},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Ranking date to compare against its predecessor (default: latest)","title":"Date"},"description":"Ranking date to compare against its predecessor (default: latest)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Rows per list","default":20,"title":"Limit"},"description":"Rows per list"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for limit, matching the paginated routes","title":"Page Size"},"description":"Alias for limit, matching the paginated routes"},{"name":"within","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"description":"Only players inside the top N on either list","default":100,"title":"Within"},"description":"Only players inside the top N on either list"},{"name":"direction","in":"query","required":false,"schema":{"type":"string","description":"up (climbers), down (fallers), or both (largest absolute change)","default":"up","title":"Direction"},"description":"up (climbers), down (fallers), or both (largest absolute change)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Ranking Movers Rankings Movers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/rankings/dates":{"get":{"tags":["Tennis"],"summary":"List Available Ranking Dates","description":"Retrieves all distinct official ranking publication dates.","operationId":"tennis_get_ranking_dates_rankings_dates_get","parameters":[{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ATP or WTA","title":"Tour"},"description":"ATP or WTA"},{"name":"circuit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Synonym for tour, matching the /rankings/{circuit} path form: ATP or WTA","title":"Circuit"},"description":"Synonym for tour, matching the /rankings/{circuit} path form: ATP or WTA"},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Optional year","title":"Year"},"description":"Optional year"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Max dates to return (most recent first)","title":"Limit"},"description":"Max dates to return (most recent first)"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for limit","title":"Page Size"},"description":"Alias for limit"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisListResponse_str_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/standings":{"get":{"tags":["Tennis"],"summary":"Tour Standings (latest singles rankings)","description":"Current tour standings: the latest published singles list, top first.\n\n`tour`/`circuit` pick the federation exactly as on /rankings. `category`\nis accepted for competitor parity; this dataset holds singles rankings\nonly, so doubles answers the same structured 404 the circuit guard uses\nrather than an empty table that looks like nobody plays doubles.","operationId":"tennis_get_standings_standings_get","parameters":[{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ATP or WTA","title":"Tour"},"description":"ATP or WTA"},{"name":"circuit","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Synonym for tour: ATP or WTA","title":"Circuit"},"description":"Synonym for tour: ATP or WTA"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"singles or doubles","default":"singles","title":"Category"},"description":"singles or doubles"},{"name":"top_n","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Standings rows (e.g. 10, 20, 50, 100)","default":10,"title":"Top N"},"description":"Standings rows (e.g. 10, 20, 50, 100)"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for top_n","title":"Limit"},"description":"Alias for top_n"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for top_n","title":"Page Size"},"description":"Alias for top_n"},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Ranking publication date (YYYY-MM-DD, default: latest)","title":"Date"},"description":"Ranking publication date (YYYY-MM-DD, default: latest)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page over the full published list (1-indexed)","default":1,"title":"Page"},"description":"Page over the full published list (1-indexed)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Standings Standings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/rankings/history/{player_id}":{"get":{"tags":["Tennis"],"summary":"Player Career Ranking Trajectory","description":"Retrieves career historical ranking progression and peak ranking for a player.","operationId":"tennis_get_ranking_history_rankings_history__player_id__get","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"string","title":"Player Id"}},{"name":"date_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Start date","title":"Date Start"},"description":"Start date"},{"name":"date_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"End date","title":"Date End"},"description":"End date"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisPlayerRankingHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/tournaments":{"get":{"tags":["Tennis"],"summary":"List & Filter Tournaments","description":"Retrieves catalog of tennis tournaments across history.","operationId":"tennis_list_tournaments_tournaments_get","parameters":[{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ATP or WTA","title":"Tour"},"description":"ATP or WTA"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive name search, same as /players?q=","title":"Q"},"description":"Case-insensitive name search, same as /players?q="},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Edition year, e.g. 2026","title":"Year"},"description":"Edition year, e.g. 2026"},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Level: a tier code (G, M, A, F, D, C, O) or a name (Grand Slam, Masters 1000, ATP Tour, ATP 500, ATP 250, WTA 1000, WTA 500, WTA 250, WTA 125, Challenger, ITF World Tennis Tour, Davis Cup, Billie Jean King Cup, Tour Finals, Olympics). ATP 500 and ATP 250 both resolve to ATP tour-level events because the source does not separate them","title":"Level"},"description":"Level: a tier code (G, M, A, F, D, C, O) or a name (Grand Slam, Masters 1000, ATP Tour, ATP 500, ATP 250, WTA 1000, WTA 500, WTA 250, WTA 125, Challenger, ITF World Tennis Tour, Davis Cup, Billie Jean King Cup, Tour Finals, Olympics). ATP 500 and ATP 250 both resolve to ATP tour-level events because the source does not separate them"},{"name":"surface","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Surface: Hard, Clay, Grass, Carpet","title":"Surface"},"description":"Surface: Hard, Clay, Grass, Carpet"},{"name":"include_live_shells","in":"query","required":false,"schema":{"type":"boolean","description":"Include live-feed containers (s365_*) that hold archived live results; excluded by default because they are not real events","default":false,"title":"Include Live Shells"},"description":"Include live-feed containers (s365_*) that hold archived live results; excluded by default because they are not real events"},{"name":"country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country IOC code","title":"Country Code"},"description":"Country IOC code"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-indexed)","default":1,"title":"Page"},"description":"Page number (1-indexed)"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page","default":20,"title":"Page Size"},"description":"Items per page"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for page_size","title":"Limit"},"description":"Alias for page_size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisPaginatedResponse_TournamentListItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/tournaments/calendar":{"get":{"tags":["Tennis"],"summary":"Annual Season Calendar","description":"Retrieves annual schedule of tournaments for a given season.\n\n?month= used to be accepted and IGNORED: FastAPI drops unknown query\nparameters, so ?month=9 and ?month=3 both returned the identical 621-event\nseason list, and a caller asking \"what is on in September\" silently got the\nwhole year with nothing in the response saying the filter had not applied.","operationId":"tennis_get_tournament_calendar_tournaments_calendar_get","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","description":"Calendar year (e.g. 2023, 2024)","title":"Year"},"description":"Calendar year (e.g. 2023, 2024)"},{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":12,"minimum":1},{"type":"null"}],"description":"Calendar month (1-12); omit for the whole season","title":"Month"},"description":"Calendar month (1-12); omit for the whole season"},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ATP or WTA","title":"Tour"},"description":"ATP or WTA"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Max tournaments to return","title":"Limit"},"description":"Max tournaments to return"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for limit","title":"Page Size"},"description":"Alias for limit"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisListResponse_CalendarTournamentItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/tournaments/{tournament_id}":{"get":{"tags":["Tennis"],"summary":"Get Tournament Profile","description":"Retrieves full profile, surface, and title records for a tournament.","operationId":"tennis_get_tournament_tournaments__tournament_id__get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisTournamentDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/tournaments/{tournament_id}/draw":{"get":{"tags":["Tennis"],"summary":"Get Tournament Draw Bracket","description":"Builds interactive bracket draw tree for a tournament edition.","operationId":"tennis_get_tournament_draw_tournaments__tournament_id__draw_get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Optional year edition","title":"Year"},"description":"Optional year edition"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisTournamentDrawResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/tournaments/{tournament_id}/editions/{year}/draw":{"get":{"tags":["Tennis"],"summary":"Get Specific Tournament Edition Draw","description":"Builds interactive bracket draw tree for a specific tournament year edition.","operationId":"tennis_get_tournament_edition_draw_tournaments__tournament_id__editions__year__draw_get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"year","in":"path","required":true,"schema":{"type":"integer","title":"Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisTournamentDrawResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/tournaments/{tournament_id}/bracket":{"get":{"tags":["Tennis"],"summary":"Get Tournament Bracket (draw-tree alias)","description":"Bracket-tree alias of the draw endpoint: the same verified R128-to-Final\ntree with seeds and entry designations (WC/Q/LL/PR), under the requested\n/bracket path. Additive alias; the /draw routes are untouched.","operationId":"tennis_get_tournament_bracket_tournaments__tournament_id__bracket_get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Optional year edition","title":"Year"},"description":"Optional year edition"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisTournamentDrawResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/odds/upcoming":{"get":{"tags":["Tennis"],"summary":"Upcoming Matches With Odds","description":"Fixtures with odds on the board (pre-match fixtures may not exist in the\nresults archive yet — use odds_event_id with /odds/{id}).","operationId":"tennis_get_upcoming_odds_odds_upcoming_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for limit","title":"Page Size"},"description":"Alias for limit"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Upcoming Odds Odds Upcoming Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/odds/{match_id}":{"get":{"tags":["Tennis"],"summary":"Pre-Match Odds","description":"Latest stored odds for a match. spreads/totals are GAMES lines, decimal prices.","operationId":"tennis_get_prematch_odds_odds__match_id__get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated book slugs (pinnacle,bet365,draftkings,fanduel,betfair_ex). Default: all available.","title":"Bookmakers"},"description":"Comma-separated book slugs (pinnacle,bet365,draftkings,fanduel,betfair_ex). Default: all available."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Prematch Odds Odds  Match Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/odds/{match_id}/live":{"get":{"tags":["Tennis"],"summary":"Live (In-Play) Odds","description":"Odds captured while the match is in play. Same shape and rules as pre-match.","operationId":"tennis_get_live_odds_odds__match_id__live_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated book slugs. Default: all available.","title":"Bookmakers"},"description":"Comma-separated book slugs. Default: all available."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Live Odds Odds  Match Id  Live Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches/{match_id}/timeline":{"get":{"tags":["Tennis"],"summary":"Completed Match Timeline","description":"Returns persisted set events; point-level history is retained for live-feed matches only.","operationId":"tennis_match_timeline_matches__match_id__timeline_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Match Timeline Matches  Match Id  Timeline Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches/{match_id}/status":{"get":{"tags":["Tennis"],"summary":"Unified Match Status","description":"Normalizes scheduled/live/final and exceptional match states into one small payload.","operationId":"tennis_match_status_matches__match_id__status_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Match Status Matches  Match Id  Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/schedule":{"get":{"tags":["Tennis"],"summary":"Daily Tennis Schedule","operationId":"tennis_daily_schedule_schedule_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Calendar date in the requested timezone","title":"Date"},"description":"Calendar date in the requested timezone"},{"name":"timezone","in":"query","required":false,"schema":{"type":"string","description":"IANA timezone, e.g. America/New_York","default":"UTC","title":"Timezone"},"description":"IANA timezone, e.g. America/New_York"},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Max scheduled matches to return","title":"Limit"},"description":"Max scheduled matches to return"},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"description":"Alias for limit","title":"Page Size"},"description":"Alias for limit"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Daily Schedule Schedule Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/players/{player_id}/form":{"get":{"tags":["Tennis"],"summary":"Player Recent Form","operationId":"tennis_player_form_players__player_id__form_get","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"string","title":"Player Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"surface","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Surface"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Player Form Players  Player Id  Form Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/leaderboards/aces":{"get":{"tags":["Tennis"],"summary":"Season Aces Leaderboard","description":"Season ace totals per player, summed over winner and loser sides of real\nmatch_stats rows joined to matches in the season. No defaults, no estimates:\na player with no stat rows simply does not appear.","operationId":"tennis_leaderboard_aces_leaderboards_aces_get","parameters":[{"name":"season","in":"query","required":false,"schema":{"type":"integer","maximum":2030,"minimum":1968,"default":2026,"title":"Season"}},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Leaderboard Aces Leaderboards Aces Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/leaderboards/break-points-saved":{"get":{"tags":["Tennis"],"summary":"Season Break-Points-Saved Leaderboard","description":"Share of break points saved per player, summed over winner and loser\nsides of real match_stats rows joined to matches in the season. Only\nplayers facing at least 50 break points qualify.","operationId":"tennis_leaderboard_bp_saved_leaderboards_break_points_saved_get","parameters":[{"name":"season","in":"query","required":false,"schema":{"type":"integer","maximum":2030,"minimum":1968,"default":2026,"title":"Season"}},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Leaderboard Bp Saved Leaderboards Break Points Saved Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/leaderboards/1st-serve-won":{"get":{"tags":["Tennis"],"summary":"Season First-Serve-Won Leaderboard","description":"Share of first-serve points won per player, summed over winner and\nloser sides of real match_stats rows joined to matches in the season.\nOnly players with at least 300 first serves in qualify.","operationId":"tennis_leaderboard_first_serve_won_leaderboards_1st_serve_won_get","parameters":[{"name":"season","in":"query","required":false,"schema":{"type":"integer","maximum":2030,"minimum":1968,"default":2026,"title":"Season"}},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Leaderboard First Serve Won Leaderboards 1St Serve Won Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/leaderboards/break-conversion":{"get":{"tags":["Tennis"],"summary":"Season Break-Conversion Leaderboard","description":"Share of break opportunities converted per player, from real\nmatch_stats rows joined to matches in the season. Breaks are the exact\nreturn-side mirror of the stored serve-side columns: a winner converts\n(loser faced minus loser saved), a loser converts (winner faced minus\nwinner saved), over the corresponding faced total. Only players with at\nleast 50 break opportunities qualify (ATP 2026: 1089 eligible, tops\n54.9-60.4). No defaults, no estimates: a player with no stat rows\nsimply does not appear.","operationId":"tennis_leaderboard_break_conversion_leaderboards_break_conversion_get","parameters":[{"name":"season","in":"query","required":false,"schema":{"type":"integer","maximum":2030,"minimum":1968,"default":2026,"title":"Season"}},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Leaderboard Break Conversion Leaderboards Break Conversion Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/leaderboards/return-games-won":{"get":{"tags":["Tennis"],"summary":"Season Return-Games-Won Leaderboard","description":"Share of return games won per player, from real match_stats rows\njoined to matches in the season. Return games won are breaks achieved --\nthe exact return-side mirror of the stored serve-side columns: a winner\nbreaks (loser faced minus loser saved), a loser breaks (winner faced\nminus winner saved) -- over the opponent's service games played\n(loser/winner sv_gms). sv_gms semantics are verified, not assumed: over\n234,635 tiebreak-free matches, winner+loser sv_gms equals total set games\nin 98.05%; over 96,174 tiebreak matches it equals total minus tiebreak\nsets in 97.0% (tiebreaks are not service games, the correct tour\nconvention); derived breaks fit within sv_gms in 99.5% of 330,922\nfully-populated rows; Alcaraz ATP 2026 comes out 31.3%, the realistic\ntour-level band. Only players with at least 100 return games played\nqualify (ATP 2026: 987 eligible, top 51.5; WTA 2026: 567 eligible, top\n64.0). Rows missing any of the three opponent-side inputs are excluded,\nnever defaulted. No estimates: a player with no stat rows simply does\nnot appear.","operationId":"tennis_leaderboard_return_games_won_leaderboards_return_games_won_get","parameters":[{"name":"season","in":"query","required":false,"schema":{"type":"integer","maximum":2030,"minimum":1968,"default":2026,"title":"Season"}},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Leaderboard Return Games Won Leaderboards Return Games Won Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/leaderboards/tiebreak-win-pct":{"get":{"tags":["Tennis"],"summary":"Season Tiebreak-Win-Pct Leaderboard","description":"Share of tiebreaks won per player, from real match_sets rows joined to\nmatches in the season. Set rows are stored from the match winner side,\nso a tiebreak goes to the winner side when winner_games > loser_games and\nto the loser side otherwise; a 7-6 set without tiebreak point columns\ncounts the same way (the /h2h tiebreak_record predicate). Super tiebreaks\n(10-point match tiebreaks) are excluded: this board rates classic 7-point\ntiebreak play. Only players contesting at least 10 tiebreaks qualify\n(ATP 2026: 361 eligible; WTA 2026: 13 eligible). No defaults, no\nestimates: a player with no tiebreak sets simply does not appear.","operationId":"tennis_leaderboard_tiebreak_pct_leaderboards_tiebreak_win_pct_get","parameters":[{"name":"season","in":"query","required":false,"schema":{"type":"integer","maximum":2030,"minimum":1968,"default":2026,"title":"Season"}},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Leaderboard Tiebreak Pct Leaderboards Tiebreak Win Pct Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/leaderboards/deciding-set-record":{"get":{"tags":["Tennis"],"summary":"Season Deciding-Set-Record Leaderboard","description":"Share of deciding sets won per player, from real matches rows in the\nseason. A match reaches a decider exactly when winner_sets_won plus\nloser_sets_won equals best_of (a Bo3 going the full 3 sets, a Bo5 going\nthe full 5); the match winner won that decider by definition, so winner\nsides count won and loser sides count lost -- no set-level inference, no\nestimates. best_of=1 exhibition rows are excluded: this board rates\nfull-format pressure play. Only players contesting at least 10 deciders\nqualify (ATP 2026: 291 eligible; WTA 2026: 64 eligible; both tours\ntop 90.0 at ship time). A player with no deciders simply does not\nappear.","operationId":"tennis_leaderboard_deciding_set_record_leaderboards_deciding_set_record_get","parameters":[{"name":"season","in":"query","required":false,"schema":{"type":"integer","maximum":2030,"minimum":1968,"default":2026,"title":"Season"}},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Leaderboard Deciding Set Record Leaderboards Deciding Set Record Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/leaderboards/comeback-wins":{"get":{"tags":["Tennis"],"summary":"Season Comeback-Wins Leaderboard","description":"Share of matches won after losing the first set, from real match_sets\nrows (set_num=1) joined to matches in the season. Set rows are stored from\nthe match winner side, so the winner lost the opener exactly when\nwinner_games < loser_games on the set-1 row (verified 5/5 against\nscore_raw first sets); the match winner took that comeback by definition,\nso winner sides count won when the opener went against them and loser\nsides always count lost -- no inference, no estimates. Only COMPLETED\nmatches count: a retirement or walkover after set 1 is not a comeback.\nOnly players with first-set data on at least 20 matches qualify (ATP\n2026: 594 eligible; WTA 2026: 210 eligible; tops ~27.6 at ship time). A\nplayer with no set-1 rows simply does not appear.","operationId":"tennis_leaderboard_comeback_wins_leaderboards_comeback_wins_get","parameters":[{"name":"season","in":"query","required":false,"schema":{"type":"integer","maximum":2030,"minimum":1968,"default":2026,"title":"Season"}},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Leaderboard Comeback Wins Leaderboards Comeback Wins Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/leaderboards/finals-record":{"get":{"tags":["Tennis"],"summary":"Season Finals-Record Leaderboard","description":"Share of finals won per player, from real matches rows in the\nseason. A final is exactly round='F' (the only final code in the\nstore -- a FINAL-like round probe returns zero other variants); the\nmatch winner lifted the title by definition, so winner sides count\nwon and loser sides count lost -- no inference, no estimates. Only\nCOMPLETED finals count: a retirement or walkover is not a title.\nOnly players contesting at least 3 finals qualify (ATP 2026: 66\neligible; WTA 2026: 31 eligible at ship time). A player with no\nfinals simply does not appear.","operationId":"tennis_leaderboard_finals_record_leaderboards_finals_record_get","parameters":[{"name":"season","in":"query","required":false,"schema":{"type":"integer","maximum":2030,"minimum":1968,"default":2026,"title":"Season"}},{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Leaderboard Finals Record Leaderboards Finals Record Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/tournaments/{tournament_id}/edition":{"get":{"tags":["Tennis"],"summary":"Tournament Edition Metadata","operationId":"tennis_tournament_edition_tournaments__tournament_id__edition_get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Tournament Edition Tournaments  Tournament Id  Edition Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/coverage":{"get":{"tags":["Tennis"],"summary":"Dataset Coverage","operationId":"tennis_dataset_coverage_coverage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Dataset Coverage Coverage Get"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/h2h/{player1_id}/{player2_id}":{"get":{"tags":["Tennis"],"summary":"Head-to-Head (path form)","description":"Path-parameter variant of /h2h for clients expecting /h2h/{a}/{b}.","operationId":"tennis_h2h_path_form_h2h__player1_id___player2_id__get","parameters":[{"name":"player1_id","in":"path","required":true,"schema":{"type":"string","title":"Player1 Id"}},{"name":"player2_id","in":"path","required":true,"schema":{"type":"string","title":"Player2 Id"}},{"name":"surface","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Hard, Clay, Grass, Carpet","title":"Surface"},"description":"Hard, Clay, Grass, Carpet"},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tier code: G, M, A, F, D, C","title":"Level"},"description":"Tier code: G, M, A, F, D, C"},{"name":"year_from","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year From"}},{"name":"year_to","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response H2H Path Form H2H  Player1 Id   Player2 Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/players/{player_id}/matches":{"get":{"tags":["Tennis"],"summary":"Player Match Log","description":"All matches for one player, newest first — profile match logs in one call.","operationId":"tennis_player_matches_players__player_id__matches_get","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"string","title":"Player Id"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"surface","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Surface"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"}},{"name":"opponent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opponent Id"}},{"name":"date_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date Start"}},{"name":"date_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date End"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":20,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Player Matches Players  Player Id  Matches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/tournaments/{tournament_id}/schedule":{"get":{"tags":["Tennis"],"summary":"Tournament Edition Schedule","description":"Matches of one tournament edition in date/round order — order of play, results view.","operationId":"tennis_tournament_schedule_tournaments__tournament_id__schedule_get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"round","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Round code filter: F, SF, QF, R16…","title":"Round"},"description":"Round code filter: F, SF, QF, R16…"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Tournament Schedule Tournaments  Tournament Id  Schedule Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/matches/{match_id}/stats":{"get":{"tags":["Tennis"],"summary":"Match Statistics Slice","description":"Serving/return statistics for one match (subset of the full match detail).","operationId":"tennis_match_stats_matches__match_id__stats_get","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"string","title":"Match Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Match Stats Matches  Match Id  Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/competitions":{"get":{"tags":["Tennis"],"summary":"Competitions Index","description":"Distinct competitions across editions (name + tour), with edition counts and year span.\n\nA 'competition' here is the recurring event (e.g. Wimbledon), whereas\n/tournaments lists individual yearly editions.\n\nEach item carries an `id`: the most recent real tournament_id sharing\nthat exact name+tour, so a caller (or the MCP's resolve_entity, which\nreads this route for tennis tournament search) always gets a usable,\nchainable id -- never a bare name with nothing to look up next.","operationId":"tennis_list_competitions_competitions_get","parameters":[{"name":"tour","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ATP or WTA","title":"Tour"},"description":"ATP or WTA"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name search","title":"Q"},"description":"Name search"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Competitions Competitions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/tennis/rankings/{circuit}":{"get":{"tags":["Tennis"],"summary":"Rankings by Circuit (path form)","description":"Circuit-style rankings path: /rankings/atp, /rankings/wta (singles).\n\nDoubles and race standings are not in this dataset; those circuits return\na structured 404 saying so rather than an empty table.","operationId":"tennis_rankings_by_circuit_rankings__circuit__get","parameters":[{"name":"circuit","in":"path","required":true,"schema":{"type":"string","title":"Circuit"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date"}},{"name":"rank_min","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Rank Min"}},{"name":"rank_max","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":100,"title":"Rank Max"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rankings By Circuit Rankings  Circuit  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TennisHTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]}]}},"/cs2":{"get":{"summary":"CS2 API overview","description":"Coverage counts (matches, teams, players, events, demos) and links to the main endpoints.","operationId":"getCs2","tags":["CS2"],"responses":{"200":{"description":"CS2 API overview","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_api_overview","name":"Counter-Strike 2 API","status":"available","coverage":{"matches":14398,"live":1,"upcoming":120,"teams":4470,"players":8545,"events":1502,"rosterChanges":149615,"demos":26893,"playerPeriodStats":47466,"teamPeriodStats":1677},"endpoints":{"live":"/api/v1/cs2/live","liveState":"/api/v1/cs2/live/{matchId}/state","liveScoreboard":"/api/v1/cs2/live/{matchId}/scoreboard","liveEvents":"/api/v1/cs2/live/{matchId}/events","matches":"/api/v1/cs2/matches","matchPlayerStats":"/api/v1/cs2/matches/{matchId}/player-stats","matchMaps":"/api/v1/cs2/matches/{matchId}/maps","matchDemos":"/api/v1/cs2/matches/{matchId}/demos","gameStats":"/api/v1/cs2/games/{gameId}/stats","gameRounds":"/api/v1/cs2/games/{gameId}/rounds","gameEvents":"/api/v1/cs2/games/{gameId}/events","teams":"/api/v1/cs2/teams","teamRosterHistory":"/api/v1/cs2/teams/{teamId}/roster-history","teamTrends":"/api/v1/cs2/teams/{teamId}/trends","players":"/api/v1/cs2/players","playerCareer":"/api/v1/cs2/players/{playerId}/career","playerSeasons":"/api/v1/cs2/players/{playerId}/seasons","playerTransfers":"/api/v1/cs2/players/{playerId}/transfers","events":"/api/v1/cs2/events","activeEvents":"/api/v1/cs2/events/active","eventCalendar":"/api/v1/cs2/events/calendar","eventParticipants":"/api/v1/cs2/events/{eventId}/participants","rosterChanges":"/api/v1/cs2/roster-changes/recent","rankings":"/api/v1/cs2/rankings/teams","aggregateStats":{"players":"/api/v1/cs2/stats/players","teams":"/api/v1/cs2/stats/teams","maps":"/api/v1/cs2/stats/maps","weapons":"/api/v1/cs2/stats/weapons","pistolRounds":"/api/v1/cs2/stats/pistol-rounds","openingDuels":"/api/v1/cs2/stats/opening-duels","clutches":"/api/v1/cs2/stats/clutches","flashAssists":"/api/v1/cs2/stats/flash-assists","utility":"/api/v1/cs2/stats/utility","economy":"/api/v1/cs2/stats/economy","mapPool":"/api/v1/cs2/map-pool"}}},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/status/sync":{"get":{"summary":"CS2 data freshness","description":"Whether CS2 data is current: `current_status`, `freshness` (`fresh` or `stale`) and the time of the last successful update.","operationId":"getCs2StatusSync","tags":["CS2"],"responses":{"200":{"description":"CS2 data freshness","content":{"application/json":{"example":{"success":true,"data":{"entity_type":"cs2_sync_health","current_status":"healthy","freshness":"fresh","last_successful_sync_at":"2026-09-23T01:21:07.356Z","checked_at":"2026-09-23T01:21:30.000Z"},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/changelog":{"get":{"summary":"CS2 data changelog","description":"Recent changes to stored CS2 records (field, old value, new value, time). Values longer than 500 characters are truncated; pass `entity_id` with `full=true` for complete values.","operationId":"getCs2Changelog","tags":["CS2"],"parameters":[{"name":"action","in":"query","required":false,"description":"Filter by `action`.","schema":{"type":"string"}},{"name":"entity_id","in":"query","required":false,"description":"Only changes to this record.","schema":{"type":"string"}},{"name":"entity_type","in":"query","required":false,"description":"Only changes to this kind of record.","schema":{"type":"string"}},{"name":"full","in":"query","required":false,"description":"`true` returns complete values instead of truncated ones.","schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"CS2 data changelog","content":{"application/json":{"example":{"success":true,"data":[{"id":"cmudj3yqa00pi10aqe361juo3","entityType":"cs2_match","entityId":"cs2-match-2398521","fieldPath":"liveState","oldValue":"{\"teams\":{\"team1Name\":\"Club 333\",\"team2Name\":\"DETONATE\",\"ctTeamName\":\"CT\",\"terroristTeamName\":\"Terrorist\"},\"sourceId\":\"2398521\",\"source\":\"live feed_polling\",\"status\":\"live\",\"matchId\":\"source-match-2398521\",\"roundEnds\":[{\"winner\":\"CT\",\"ev...","newValue":{"status":"upcoming","team1Score":null,"team2Score":null,"winnerTeamId":null},"action":"merge_rejected","createdAt":"2026-09-23T03:13:58.161Z"},{"id":"cmudj23cl00ph10aq427s8v0b","entityType":"cs2_map_player_stat","entityId":"cs2-match-2398520-map-2:twigs","fieldPath":"rating,headshotPercent","oldValue":"{\"id\":\"live-source-match-2398520-map-2-twigs\",\"adr\":52.5,\"raw\":{\"hp\":55,\"adr\":52.5,\"raw\":{\"hp\":55,\"dbId\":23376,\"name\":\"twigs\",\"nick\":\"twigs\",\"alive\":true,\"facts\":[],\"money\":1050,\"score\":13,\"deaths\":16,\"helmet\":true,\"kevlar\":true,\"assists...","newValue":"{\"id\":\"live-source-match-2398520-map-2-twigs\",\"adr\":52.5,\"raw\":{\"hp\":55,\"adr\":52.5,\"raw\":{\"hp\":55,\"dbId\":23376,\"name\":\"twigs\",\"nick\":\"twigs\",\"alive\":true,\"facts\":[],\"money\":1050,\"score\":13,\"deaths\":16,\"helmet\":true,\"kevlar\":true,\"assists...","action":"merge_accepted","createdAt":"2026-09-23T03:12:30.837Z"}],"meta":{"total":1242453,"limit":2,"valuesTruncatedAt":500,"count":2,"page":1,"totalPages":621227,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/webhooks/events":{"get":{"summary":"CS2 webhook event types","description":"The event types a CS2 webhook can subscribe to, with example payloads.","operationId":"getCs2WebhooksEvents","tags":["CS2"],"responses":{"200":{"description":"CS2 webhook event types","content":{"application/json":{"example":{"success":true,"available_on_plans":["PRO","BUSINESS"],"management_endpoint":"/api/v1/webhooks","create_endpoint":"POST /api/v1/webhooks","events":["cs2.match.started","cs2.match.live_started"],"example_payload":{"event":"cs2.score.updated","id":"7f4c2d0d8f2f4b2ca6c6f35c4d53c2aa","timestamp":"2026-09-23T03:15:09.506Z","data":{"matchId":"cs2_match_2395230","team1Score":1,"team2Score":0,"currentMap":"mirage"}},"signature_headers":["X-Cito-Signature","X-Cito-Event"],"signing":{"algorithm":"HMAC-SHA256","signedContent":"UTF-8 bytes of the exact JSON request body sent by Cito","bodySerialization":"JSON.stringify(payload)","signatureHeader":"X-Cito-Signature","signatureEncoding":"hex","signaturePrefix":"none","secretFormat":"Use the exact webhook secret value shown when the webhook is created or regenerated. No whsec_ prefix is used.","verificationRule":"Verify against the raw request body bytes before reparsing or reserializing JSON.","sampleSecret":"cito_test_secret_123","samplePayload":{"event":"lol.live.state","id":"sample-event-id-123","timestamp":"2026-06-07T16:00:00.000Z","data":{"gameId":"lol-game-123","matchId":"lol-match-123","league":"LEC","gameTime":1337,"blueTeam":{"tag":"G2","kills":7,"gold":24800,"towers":3,"dragons":2,"barons":0},"redTeam":{"tag":"FNC","kills":5,"gold":23700,"towers":2,"dragons":1,"barons":0}}},"samplePayloadString":"{\"event\":\"lol.live.state\",\"id\":\"sample-event-id-123\",\"timestamp\":\"2026-06-07T16:00:00.000Z\",\"data\":{\"gameId\":\"lol-game-123\",\"matchId\":\"lol-match-123\",\"league\":\"LEC\",\"gameTime\":1337,\"blueTeam\":{\"tag\":\"G2\",\"kills\":7,\"gold\":24800,\"towers\":3...","sampleSignature":"97db77f5cd96e09a70dcf6cc75fc5d92d780c41ce82c853b51e4070954c54171","sampleHeaders":{"Content-Type":"application/json","X-Cito-Signature":"97db77f5cd96e09a70dcf6cc75fc5d92d780c41ce82c853b51e4070954c54171","X-Cito-Event":"lol.live.state","X-Cito-Event-Id":"sample-event-id-123","X-Cito-Timestamp":"2026-06-07T16:00:00.000Z","X-Cito-Delivery-Attempt":"1"}},"live_sse_stream":"/api/v1/cs2/live/stream?matchId={matchId}","docs":"https://citoapi.com/docs/api/cs2"}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/webhooks":{"get":{"summary":"CS2 webhook event types","description":"The event types a CS2 webhook can subscribe to, with example payloads.\n\nSame response as `GET /api/v1/cs2/webhooks/events`.","operationId":"getCs2Webhooks","tags":["CS2"],"responses":{"200":{"description":"CS2 webhook event types"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/webhooks/events"},"post":{"summary":"How to register a CS2 webhook","description":"Returns the steps and payload for registering a CS2 webhook in the dashboard. It does not create a subscription.\n\nSame response as `GET /api/v1/cs2/webhooks/events`.","operationId":"postCs2Webhooks","tags":["CS2"],"responses":{"200":{"description":"How to register a CS2 webhook"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/webhooks/events"}},"/cs2/search":{"get":{"summary":"Search CS2","description":"Search teams, players, events and matches by name. Requires `q`.","operationId":"getCs2Search","tags":["CS2"],"parameters":[{"name":"q","in":"query","required":true,"description":"Search text.","schema":{"type":"string"}}],"responses":{"200":{"description":"Search CS2","content":{"application/json":{"example":{"success":true,"data":{"teams":[{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},{"id":"cs2-team-13815","name":"Vitality Academy","slug":"vitality-academy","teamTag":"VA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/ad13083b7d0f2fdc6fc7032fe719467f.webp","countryName":"Estonia","countryCode":"EE","region":"Europe","worldRanking":null,"lastSyncedAt":"2026-09-16T18:43:52.802Z","lastVerified":"2026-09-16T18:43:52.802Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/88a33f664082f564bcdea7a4c2983cfa.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/88a33f664082f564bcdea7a4c2983cfa.webp"}],"players":[],"events":[],"matches":[{"id":"cs2-match-2398108","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T18:49:47.000Z","endsAt":null,"bestOf":5,"status":"completed","team1Id":"cs2-team-11861","team2Id":"cs2-team-9565","team1Name":"Aurora","team2Name":"Vitality","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565","liveState":{"status":"completed","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565"},"vetoOrder":[{"map":null,"order":1,"action":"ban","teamId":"cs2-team-11861","teamName":"Aurora"},{"map":"ancient","order":2,"action":"ban","teamId":"cs2-team-9565","teamName":"Vitality"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:07:06.893Z","lastVerified":"2026-09-23T03:07:06.893Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","prizePool":5000008,"currency":"USD","location":null,"format":null,"teamCount":8,"standings":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","status":"completed","tier":"A","prestigeScore":75,"region":null,"isLan":true,"confirmedStatus":"detail_unavailable","streamLinks":null,"vodLinks":null,"lastSyncedAt":"2026-09-18T21:20:27.349Z","lastVerified":"2026-09-18T21:00:01.788Z","confidence":"high"},"team1":{"id":"cs2-team-11861","name":"Aurora","slug":"aurora","teamTag":"AURORA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cf72686d65237eb4fe4365d8070d068.webp","countryName":"Türkiye","countryCode":"TR","region":"Europe","worldRanking":9,"lastSyncedAt":"2026-09-23T03:11:10.359Z","lastVerified":"2026-09-23T03:11:10.359Z","confidence":"high"},"team2":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"maps":[{"id":"cs2-match-2398108-map-1","matchId":"cs2-match-2398108","mapNumber":1,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[3,1],"team2Halves":[9,4],"winnerTeamId":"cs2-team-9565","durationRounds":17,"lastSyncedAt":"2026-09-22T19:46:26.632Z","playerStats":[],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/fe1f1d8335462dc6a8f3efc197aaec0a.webp","pickTeamId":"cs2-team-11861","objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{},"scorePending":true},{"id":"cs2-match-2398108-map-2","matchId":"cs2-match-2398108","mapNumber":2,"mapName":"Inferno","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[7,6],"team2Halves":[5,6],"winnerTeamId":"cs2-team-11861","durationRounds":24,"lastSyncedAt":"2026-09-22T19:46:37.002Z","playerStats":[],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/4004b70cfe62cef3b711c587bd0d342c.webp","pickTeamId":"cs2-team-9565","objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{},"scorePending":true}],"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}},{"id":"cs2-match-2398107","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T12:00:00.000Z","endsAt":null,"bestOf":3,"status":"completed","team1Id":"cs2-team-9565","team2Id":"cs2-team-8297","team1Name":"Vitality","team2Name":"FURIA","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-9565","liveState":{"status":"completed","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-9565"},"vetoOrder":[{"map":null,"order":1,"action":"ban","teamId":"cs2-team-8297","teamName":"FURIA"},{"map":"ancient","order":2,"action":"ban","teamId":"cs2-team-9565","teamName":"Vitality"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:03:45.610Z","lastVerified":"2026-09-23T03:03:45.610Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","prizePool":5000008,"currency":"USD","location":null,"format":null,"teamCount":8,"standings":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","status":"completed","tier":"A","prestigeScore":75,"region":null,"isLan":true,"confirmedStatus":"detail_unavailable","streamLinks":null,"vodLinks":null,"lastSyncedAt":"2026-09-18T21:20:27.349Z","lastVerified":"2026-09-18T21:00:01.788Z","confidence":"high"},"team1":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"team2":{"id":"cs2-team-8297","name":"FURIA","slug":"furia","teamTag":"FURIA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/ae2903ad6662885facbfedf1183a1b22.svg","countryName":"Brazil","countryCode":"BR","region":"South America","worldRanking":4,"lastSyncedAt":"2026-09-23T03:09:12.077Z","lastVerified":"2026-09-23T03:09:12.077Z","confidence":"high"},"maps":[{"id":"cs2-match-2398107-map-1","matchId":"cs2-match-2398107","mapNumber":1,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,1],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:43.662Z","playerStats":[],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp","pickTeamId":"cs2-team-8297","objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{}},{"id":"cs2-match-2398107-map-2","matchId":"cs2-match-2398107","mapNumber":2,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,4],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:52.776Z","playerStats":[],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/fe1f1d8335462dc6a8f3efc197aaec0a.webp","pickTeamId":"cs2-team-9565","objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{}}],"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}]},"meta":{"query":"vitality"}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/autocomplete":{"get":{"summary":"CS2 autocomplete","description":"Fast name completion across teams, players and events for search boxes. Requires `q`.","operationId":"getCs2Autocomplete","tags":["CS2"],"responses":{"200":{"description":"CS2 autocomplete","content":{"application/json":{"example":{"success":true,"data":{"teams":[{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},{"id":"cs2-team-13815","name":"Vitality Academy","slug":"vitality-academy","teamTag":"VA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/ad13083b7d0f2fdc6fc7032fe719467f.webp","countryName":"Estonia","countryCode":"EE","region":"Europe","worldRanking":null,"lastSyncedAt":"2026-09-16T18:43:52.802Z","lastVerified":"2026-09-16T18:43:52.802Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/88a33f664082f564bcdea7a4c2983cfa.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/88a33f664082f564bcdea7a4c2983cfa.webp"}],"players":[],"events":[],"matches":[{"id":"cs2-match-2398108","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T18:49:47.000Z","endsAt":null,"bestOf":5,"status":"completed","team1Id":"cs2-team-11861","team2Id":"cs2-team-9565","team1Name":"Aurora","team2Name":"Vitality","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565","liveState":{"status":"completed","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565"},"vetoOrder":[{"map":null,"order":1,"action":"ban","teamId":"cs2-team-11861","teamName":"Aurora"},{"map":"ancient","order":2,"action":"ban","teamId":"cs2-team-9565","teamName":"Vitality"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:07:06.893Z","lastVerified":"2026-09-23T03:07:06.893Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","prizePool":5000008,"currency":"USD","location":null,"format":null,"teamCount":8,"standings":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","status":"completed","tier":"A","prestigeScore":75,"region":null,"isLan":true,"confirmedStatus":"detail_unavailable","streamLinks":null,"vodLinks":null,"lastSyncedAt":"2026-09-18T21:20:27.349Z","lastVerified":"2026-09-18T21:00:01.788Z","confidence":"high"},"team1":{"id":"cs2-team-11861","name":"Aurora","slug":"aurora","teamTag":"AURORA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cf72686d65237eb4fe4365d8070d068.webp","countryName":"Türkiye","countryCode":"TR","region":"Europe","worldRanking":9,"lastSyncedAt":"2026-09-23T03:11:10.359Z","lastVerified":"2026-09-23T03:11:10.359Z","confidence":"high"},"team2":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"maps":[{"id":"cs2-match-2398108-map-1","matchId":"cs2-match-2398108","mapNumber":1,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[3,1],"team2Halves":[9,4],"winnerTeamId":"cs2-team-9565","durationRounds":17,"lastSyncedAt":"2026-09-22T19:46:26.632Z","playerStats":[],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/fe1f1d8335462dc6a8f3efc197aaec0a.webp","pickTeamId":"cs2-team-11861","objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{},"scorePending":true},{"id":"cs2-match-2398108-map-2","matchId":"cs2-match-2398108","mapNumber":2,"mapName":"Inferno","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[7,6],"team2Halves":[5,6],"winnerTeamId":"cs2-team-11861","durationRounds":24,"lastSyncedAt":"2026-09-22T19:46:37.002Z","playerStats":[],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/4004b70cfe62cef3b711c587bd0d342c.webp","pickTeamId":"cs2-team-9565","objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{},"scorePending":true}],"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}},{"id":"cs2-match-2398107","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T12:00:00.000Z","endsAt":null,"bestOf":3,"status":"completed","team1Id":"cs2-team-9565","team2Id":"cs2-team-8297","team1Name":"Vitality","team2Name":"FURIA","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-9565","liveState":{"status":"completed","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-9565"},"vetoOrder":[{"map":null,"order":1,"action":"ban","teamId":"cs2-team-8297","teamName":"FURIA"},{"map":"ancient","order":2,"action":"ban","teamId":"cs2-team-9565","teamName":"Vitality"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:03:45.610Z","lastVerified":"2026-09-23T03:03:45.610Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","prizePool":5000008,"currency":"USD","location":null,"format":null,"teamCount":8,"standings":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","status":"completed","tier":"A","prestigeScore":75,"region":null,"isLan":true,"confirmedStatus":"detail_unavailable","streamLinks":null,"vodLinks":null,"lastSyncedAt":"2026-09-18T21:20:27.349Z","lastVerified":"2026-09-18T21:00:01.788Z","confidence":"high"},"team1":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"team2":{"id":"cs2-team-8297","name":"FURIA","slug":"furia","teamTag":"FURIA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/ae2903ad6662885facbfedf1183a1b22.svg","countryName":"Brazil","countryCode":"BR","region":"South America","worldRanking":4,"lastSyncedAt":"2026-09-23T03:09:12.077Z","lastVerified":"2026-09-23T03:09:12.077Z","confidence":"high"},"maps":[{"id":"cs2-match-2398107-map-1","matchId":"cs2-match-2398107","mapNumber":1,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,1],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:43.662Z","playerStats":[],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp","pickTeamId":"cs2-team-8297","objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{}},{"id":"cs2-match-2398107-map-2","matchId":"cs2-match-2398107","mapNumber":2,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,4],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:52.776Z","playerStats":[],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/fe1f1d8335462dc6a8f3efc197aaec0a.webp","pickTeamId":"cs2-team-9565","objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{}}],"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}]},"meta":{"query":"vitality"}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/roster-changes/recent":{"get":{"summary":"Recent roster changes","description":"Players joining and leaving teams, newest first. Filter with `teamId` or `playerId`.","operationId":"getCs2RosterChangesRecent","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"playerId","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"teamId","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Recent roster changes","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_roster_changes","dataAvailable":true,"changes":[{"changeId":"f4a51ba2-9a2a-4e0c-9fe7-9da6ef3b663c","changeType":"leave","teamId":"cs2-team-11838","fromTeamId":"cs2-team-11838","toTeamId":null,"teamName":"Partizan","playerId":"cs2-player-25471","playerName":"rajkeza","roleBefore":null,"roleAfter":null,"effectiveAt":"2026-09-15T22:00:00.000Z","detectedAt":"2026-09-22T20:00:10.568Z","confidence":"medium"},{"changeId":"fe45f322-e64c-4b1e-9f35-ef517f4a827f","changeType":"leave","teamId":"cs2-team-11838","fromTeamId":"cs2-team-11838","toTeamId":null,"teamName":"Partizan","playerId":"cs2-player-4476","playerName":"BAXACHA","roleBefore":"coach","roleAfter":null,"effectiveAt":"2026-09-21T22:00:00.000Z","detectedAt":"2026-09-22T20:00:07.032Z","confidence":"medium"}]},"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/transfers/recent":{"get":{"summary":"Recent transfers","description":"Player moves between teams, newest first.","operationId":"getCs2TransfersRecent","tags":["CS2"],"parameters":[{"name":"after","in":"query","required":false,"description":"Only rows after this time (ISO 8601).","schema":{"type":"string"}},{"name":"before","in":"query","required":false,"description":"Only rows before this time (ISO 8601).","schema":{"type":"string"}},{"name":"from_team","in":"query","required":false,"description":"Filter by `from_team`.","schema":{"type":"string"}},{"name":"include_computed","in":"query","required":false,"description":"Filter by `include_computed`.","schema":{"type":"string"}},{"name":"include_undated","in":"query","required":false,"description":"Filter by `include_undated`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"player","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"player_id","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"Sort order.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter by status.","schema":{"type":"string"}},{"name":"team","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"team_id","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"to_team","in":"query","required":false,"description":"Filter by `to_team`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Recent transfers","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_transfers","dataAvailable":true,"transfers":[{"transferKey":"source-transfer:2026-09-21:4476:11838:none:left:6d47eb95dc","playerId":"cs2-player-4476","playerName":"BAXACHA","playerImageUrl":null,"fromTeamId":"cs2-team-11838","fromTeamName":"Partizan","fromTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/448e59bfe484b2c37a485c66408b9079.webp","fromTeamAlternateLogoUrl":null,"fromTeamDarkUiLogoUrl":null,"fromTeamIsNoTeam":false,"toTeamId":"no-team","toTeamName":"No team","toTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/noteam.png","toTeamAlternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/noteam.png","toTeamDarkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/noteam.png","toTeamIsNoTeam":true,"status":"left","role":"coach","transferDate":"2026-09-21T22:00:00.000Z","joinDate":null,"leaveDate":"2026-09-21T22:00:00.000Z","detectedAt":"2026-09-22T20:00:06.346Z"},{"transferKey":"source-transfer:2026-09-21:18545:13486:12878:unknown:eb757cb310","playerId":"cs2-player-18545","playerName":"asap","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/de0f55ab3f608f1b241f21c0db647a08.webp","fromTeamId":"cs2-team-13486","fromTeamName":"THUNDER dOWNUNDER","fromTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b4c915e53b28f03de6595dd0195a7745.webp","fromTeamAlternateLogoUrl":null,"fromTeamDarkUiLogoUrl":null,"fromTeamIsNoTeam":false,"toTeamId":"cs2-team-12878","toTeamName":"BC.Game","toTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/281b61f68eb0586d9f0b0e2635426924.webp","toTeamAlternateLogoUrl":null,"toTeamDarkUiLogoUrl":null,"toTeamIsNoTeam":false,"status":"unknown","role":null,"transferDate":"2026-09-21T22:00:00.000Z","joinDate":"2026-09-21T22:00:00.000Z","leaveDate":null,"detectedAt":"2026-09-22T19:30:03.976Z"}]},"meta":{"count":2,"total":47086,"page":1,"limit":2,"dataAvailable":true,"totalPages":23543,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/transfers":{"get":{"summary":"Transfers","description":"Player transfers with filters for team, player and date range.","operationId":"getCs2Transfers","tags":["CS2"],"parameters":[{"name":"after","in":"query","required":false,"description":"Only rows after this time (ISO 8601).","schema":{"type":"string"}},{"name":"before","in":"query","required":false,"description":"Only rows before this time (ISO 8601).","schema":{"type":"string"}},{"name":"from_team","in":"query","required":false,"description":"Filter by `from_team`.","schema":{"type":"string"}},{"name":"include_computed","in":"query","required":false,"description":"Filter by `include_computed`.","schema":{"type":"string"}},{"name":"include_undated","in":"query","required":false,"description":"Filter by `include_undated`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"player","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"player_id","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter by status.","schema":{"type":"string"}},{"name":"team","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"team_id","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"to_team","in":"query","required":false,"description":"Filter by `to_team`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Transfers","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_transfers","dataAvailable":true,"transfers":[{"transferKey":"source-transfer:2026-09-21:4476:11838:none:left:6d47eb95dc","playerId":"cs2-player-4476","playerName":"BAXACHA","playerImageUrl":null,"fromTeamId":"cs2-team-11838","fromTeamName":"Partizan","fromTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/448e59bfe484b2c37a485c66408b9079.webp","fromTeamAlternateLogoUrl":null,"fromTeamDarkUiLogoUrl":null,"fromTeamIsNoTeam":false,"toTeamId":"no-team","toTeamName":"No team","toTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/noteam.png","toTeamAlternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/noteam.png","toTeamDarkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/noteam.png","toTeamIsNoTeam":true,"status":"left","role":"coach","transferDate":"2026-09-21T22:00:00.000Z","joinDate":null,"leaveDate":"2026-09-21T22:00:00.000Z","detectedAt":"2026-09-22T20:00:06.346Z"},{"transferKey":"source-transfer:2026-09-21:18545:13486:12878:unknown:eb757cb310","playerId":"cs2-player-18545","playerName":"asap","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/de0f55ab3f608f1b241f21c0db647a08.webp","fromTeamId":"cs2-team-13486","fromTeamName":"THUNDER dOWNUNDER","fromTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b4c915e53b28f03de6595dd0195a7745.webp","fromTeamAlternateLogoUrl":null,"fromTeamDarkUiLogoUrl":null,"fromTeamIsNoTeam":false,"toTeamId":"cs2-team-12878","toTeamName":"BC.Game","toTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/281b61f68eb0586d9f0b0e2635426924.webp","toTeamAlternateLogoUrl":null,"toTeamDarkUiLogoUrl":null,"toTeamIsNoTeam":false,"status":"unknown","role":null,"transferDate":"2026-09-21T22:00:00.000Z","joinDate":"2026-09-21T22:00:00.000Z","leaveDate":null,"detectedAt":"2026-09-22T19:30:03.976Z"}]},"meta":{"count":2,"total":47086,"page":1,"limit":2,"dataAvailable":true,"totalPages":23543,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/live/stream":{"get":{"summary":"Live update stream (SSE)","description":"Server-Sent Events stream of live match updates, on every plan. Keep the connection open; each `cs2.live.update` event carries the changed match. Pass `matchId` to follow one match.\n\nEvents: `ready` (sent first; carries `delay_seconds` and `billing`), `cs2.live.update`, `ping` every 15 seconds, and `error` just before the server closes the stream.\n\n**Billing.** An open stream counts toward your monthly quota like polling: one request when it connects, then one request for every 15 seconds it stays open (the same as polling `/cs2/live` every 15 seconds; 5,760 requests a day if held open around the clock). When the quota runs out the stream sends an `error` event with code `RATE_LIMIT_EXCEEDED` and closes; connecting with no quota left returns 429.\n\n**Delay.** Free and Starter plans receive every update 60 seconds late, the same delay as the polled live endpoints. Other plans are real-time.\n\nRoom-based WebSockets (Scale and Enterprise, or the Live WebSockets add-on): `wss://api.citoapi.com/api/v1/cs2/live/ws`.","operationId":"getCs2LiveStream","tags":["CS2"],"parameters":[{"name":"matchId","in":"query","required":false,"description":"Match id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Live update stream (SSE)","content":{"text/event-stream":{"schema":{"type":"string"},"example":"event: ready\ndata: {\"success\":true,\"stream\":\"cs2.live\",\"matchId\":null,\"live\":true,\"delay_seconds\":0,\"billing\":{\"requests_per_interval\":1,\"interval_seconds\":15}}\n\nevent: cs2.live.update\ndata: {\"type\":\"cs2.live.update\",\"matchId\":\"cs2-match-2398654\",\"status\":\"live\",\"team1Score\":0,\"team2Score\":0,\"currentMap\":\"de_inferno\",\"currentRound\":1,\"roundTimeSeconds\":null,\"bombPlanted\":false,\"playerStatsChanged\":true,\"fullState\":true,\"capturedAt\":\"2026-09-25T16:29:17.470Z\"}\n\nevent: ping\ndata: {\"ok\":true,\"ts\":\"2026-09-25T16:29:30.000Z\"}\n\nevent: error\ndata: {\"success\":false,\"error\":{\"code\":\"RATE_LIMIT_EXCEEDED\",\"message\":\"You have used 500 of 500 requests in your current period. It resets on 2026-10-01 (about 6 days).\"}}\n"}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"429":{"description":"Monthly request quota already used up when connecting. Mid-stream, the same limit arrives as an `error` event and the stream closes."}}}},"/cs2/live/{matchId}/socket":{"get":{"summary":"Live socket details","description":"Connection details for subscribing to one live match over the live stream.","operationId":"getCs2LiveMatchIdSocket","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Live socket details","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_live_transport","matchId":"cs2-match-2398068","transports":{"websocket":{"url":"wss://api.citoapi.com/api/v1/cs2/live/ws?matchId=cs2-match-2398068","auth":"x-api-key header, Authorization: Bearer, or ?apiKey=","subscribe":{"action":"subscribe","rooms":["match:cs2-match-2398068"]},"allLiveMatches":{"action":"subscribe","rooms":["all"]},"messages":["ready","cs2.live.snapshot (on subscribe)"],"plans":"Scale / Enterprise, or the Live WebSockets add-on"},"sse":{"url":"/api/v1/cs2/live/stream?matchId=cs2-match-2398068","note":"Same events as the WebSocket. Connect with Accept: text/event-stream. Available on every plan.","billing":"Counts like polling: one request at connect, then one for every 15 seconds the stream stays open. When the monthly quota runs out the stream sends an error event (RATE_LIMIT_EXCEEDED) and closes.","delay":"Free and Starter plans receive every update 60 seconds late, like the polled live endpoints. Other plans are real-time."}},"v2Shape":"Append ?shape=v2 on REST live endpoints or send Accept: application/vnd.cito.cs2.v2+json"},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/live/{matchId}/scoreboard":{"get":{"summary":"Live scoreboard","description":"Series score, current map and round, the round score (`game.score`, per team `mapScore`), and per-player kills, deaths, money and equipment for a live match.","operationId":"getCs2LiveMatchIdScoreboard","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}},{"name":"shape","in":"query","required":false,"description":"Filter by `shape`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Live scoreboard","content":{"application/json":{"example":{"success":true,"data":{"matchId":"cs2-match-2398520","status":"live","bestOf":null,"currentGame":3,"seriesScore":{"teamA":1,"teamB":1},"game":{"id":"cs2-match-2398520_de_dust2","map":"de_dust2","round":1,"phase":"live","clockSeconds":null,"bomb":null,"score":{"ct":0,"t":0},"sides":{"ctTeamId":"cs2-team-11955","tTeamId":"cs2-team-12164"}},"teams":[{"id":"cs2-team-11955","name":"LAG","side":"CT","score":1,"mapScore":0,"playersAlive":4,"equipmentValue":null,"money":13100,"timeoutsRemaining":null},{"id":"cs2-team-12164","name":"Zomblers","side":"T","score":1,"mapScore":0,"playersAlive":1,"equipmentValue":null,"money":14350,"timeoutsRemaining":null}],"players":[{"id":"cs2-player-20273","nickname":"CAJUN","teamId":"cs2-team-12164","side":"T","alive":false,"hp":0,"armor":null,"helmet":false,"money":3250,"weapon":null,"kills":1,"assists":0,"deaths":4,"adr":100,"kast":null,"rating":null},{"id":"cs2-player-23410","nickname":"CoolComs","teamId":"cs2-team-12164","side":"T","alive":true,"hp":100,"armor":null,"helmet":false,"money":3550,"weapon":null,"kills":0,"assists":0,"deaths":0,"adr":0,"kast":null,"rating":null}],"lastEvent":{"id":null,"type":"BombPlanted","round":1,"clockSeconds":null,"killerPlayerId":null,"victimPlayerId":null,"weapon":null,"headshot":null,"throughSmoke":null},"meta":{"updatedAt":"2026-09-23T03:14:58.810Z","latencyMs":null,"coverage":"realtime","source":"live","unavailableFields":["game.clockSeconds"]}},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/live/{matchId}/rounds":{"get":{"summary":"Live rounds","description":"Round-by-round results so far in a live match: winner, side and how the round ended.","operationId":"getCs2LiveMatchIdRounds","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Live rounds","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_live_rounds","matchId":"cs2-match-2398520","rounds":[{"eventId":"b9b7ddfa1ac438bc372af0aecee74d9e","eventType":"RoundEnd","winner":"CT","winType":"CTs_Win","terroristScore":9,"counterTerroristScore":9,"payload":{"counterTerroristScore":9,"terroristScore":9,"winner":"CT","winType":"CTs_Win"},"webhookEligible":true,"observedAt":"2026-09-23T02:49:58.502Z"},{"eventId":"402ca7aa8bca01623a10d2377fa2748d","eventType":"RoundEnd","winner":"CT","winType":"CTs_Win","terroristScore":9,"counterTerroristScore":8,"payload":{"counterTerroristScore":8,"terroristScore":9,"winner":"CT","winType":"CTs_Win"},"webhookEligible":true,"observedAt":"2026-09-23T02:49:58.502Z"}],"currentRound":1},"meta":{"count":44,"limit":44,"total":44,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/live/{matchId}/events":{"get":{"summary":"Live events","description":"Kills, bomb plants and defuses, and round ends recorded during a live match.","operationId":"getCs2LiveMatchIdEvents","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Live events","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_live_events","matchId":"cs2-match-2398520","events":[{"eventId":"8aedca15ed03f6cbf683ce5d92ae430e","eventType":"BombPlanted","playerName":"Zoker","playerNick":"Zoker","ctPlayers":4,"tPlayers":4,"bombSite":"A","payload":{"playerName":"Zoker","playerNick":"Zoker","ctPlayers":4,"tPlayers":4,"bombSite":"A"},"source":"live","webhookEligible":true,"observedAt":"2026-09-23T02:49:58.502Z"},{"eventId":"ed4ddb86ad56fd364e84cd32ab4c0cbf","eventType":"BombPlanted","playerName":"CoolComs","playerNick":"CoolComs","ctPlayers":4,"tPlayers":5,"bombSite":"B","payload":{"playerName":"CoolComs","playerNick":"CoolComs","ctPlayers":4,"tPlayers":5,"bombSite":"B"},"source":"live","webhookEligible":true,"observedAt":"2026-09-23T02:49:58.502Z"}]},"meta":{"count":70,"limit":70,"total":70,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/live/{matchId}/player-stats":{"get":{"summary":"Live player stats","description":"Running per-player stats for a live match.","operationId":"getCs2LiveMatchIdPlayerStats","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Live player stats","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_live_player_stats","matchId":"cs2-match-2398520","status":"live","isCurrent":true,"dataAvailable":true,"unavailableReason":null,"source":"live","capturedAt":"2026-09-23T03:15:13.832Z","players":[{"playerId":"cs2-player-20273","name":"CAJUN","nick":"CAJUN","side":"T","steamId":"1:1:40089995","alive":false,"hp":57,"money":3250,"kills":1,"assists":0,"deaths":4,"adr":100,"weapon":null,"weaponIconUrl":null,"hasDefuseKit":false,"kevlar":false,"helmet":false},{"playerId":"cs2-player-23410","name":"CoolComs","nick":"CoolComs","side":"T","steamId":"1:1:188019378","alive":true,"hp":100,"money":3550,"kills":0,"assists":0,"deaths":0,"adr":0,"weapon":null,"weaponIconUrl":null,"hasDefuseKit":false,"kevlar":false,"helmet":false}],"lastVerified":"2026-09-23T03:15:14.115Z"},"meta":{"count":9,"dataAvailable":true,"confirmationMaxAgeMs":45000,"limit":9,"total":9,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/live/{matchId}/maps":{"get":{"summary":"Live maps","description":"Map list for a live match with per-map score and status.","operationId":"getCs2LiveMatchIdMaps","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Live maps","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_map","id":"cs2-match-2398520-map-1","matchId":"cs2-match-2398520","mapNumber":1,"mapName":"Mirage","status":"completed","team1Score":13,"team2Score":8,"team1Halves":[7,6],"team2Halves":[5,3],"winnerTeamId":"cs2-team-11955","durationRounds":21,"lastSyncedAt":"2026-09-23T03:14:03.598Z","playerStats":[{"id":"live-source-match-2398520-map-1-Bwills","mapId":"cs2-match-2398520-map-1","matchId":"cs2-match-2398520","playerId":"cs2-player-16647","playerName":"Bwills","teamId":"cs2-team-11955","teamName":"LAG","kills":9,"deaths":17,"assists":3,"plusMinus":-8,"adr":null,"kast":null,"rating":0.5,"ratingVersion":"source_rating_3_0","headshots":4,"headshotPercent":null,"firstKills":0,"firstDeaths":3,"source":"live","lastSyncedAt":"2026-09-23T03:04:10.092Z","mapNameCanonical":null,"imageUrl":null,"mapImageUrl":null,"coverImageUrl":null,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},{"id":"live-source-match-2398520-map-1-CAJUN","mapId":"cs2-match-2398520-map-1","matchId":"cs2-match-2398520","playerId":"cs2-player-20273","playerName":"CAJUN","teamId":"cs2-team-12164","teamName":"Zomblers","kills":11,"deaths":19,"assists":8,"plusMinus":-8,"adr":null,"kast":null,"rating":0.73,"ratingVersion":"source_rating_3_0","headshots":7,"headshotPercent":null,"firstKills":2,"firstDeaths":2,"source":"live","lastSyncedAt":"2026-09-23T03:04:10.832Z","mapNameCanonical":null,"imageUrl":null,"mapImageUrl":null,"coverImageUrl":null,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{}}}],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png","pickTeamId":"cs2-team-12164","objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"availableSubresources":["player_stats"],"unavailableSubresources":["objective_stats"],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-23T03:14:03.598Z","mapNameCanonical":"Mirage","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}},{"entityType":"cs2_map","id":"cs2-match-2398520-map-2","matchId":"cs2-match-2398520","mapNumber":2,"mapName":"Inferno","status":"completed","team1Score":11,"team2Score":13,"team1Halves":[6],"team2Halves":[6],"winnerTeamId":"cs2-team-12164","durationRounds":24,"lastSyncedAt":"2026-09-23T03:14:03.631Z","playerStats":[{"id":"live-source-match-2398520-map-2-Bwills","mapId":"cs2-match-2398520-map-2","matchId":"cs2-match-2398520","playerId":"cs2-player-16647","playerName":"Bwills","teamId":"cs2-team-11955","teamName":"LAG","kills":15,"deaths":12,"assists":8,"plusMinus":3,"adr":null,"kast":null,"rating":0.98,"ratingVersion":"source_rating_3_0","headshots":12,"headshotPercent":null,"firstKills":3,"firstDeaths":3,"source":"live","lastSyncedAt":"2026-09-23T03:12:29.936Z","mapNameCanonical":null,"imageUrl":null,"mapImageUrl":null,"coverImageUrl":null,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},{"id":"live-source-match-2398520-map-2-CAJUN","mapId":"cs2-match-2398520-map-2","matchId":"cs2-match-2398520","playerId":"cs2-player-20273","playerName":"CAJUN","teamId":"cs2-team-12164","teamName":"Zomblers","kills":12,"deaths":16,"assists":12,"plusMinus":-4,"adr":null,"kast":null,"rating":1.15,"ratingVersion":"source_rating_3_0","headshots":7,"headshotPercent":null,"firstKills":3,"firstDeaths":3,"source":"live","lastSyncedAt":"2026-09-23T03:12:30.472Z","mapNameCanonical":null,"imageUrl":null,"mapImageUrl":null,"coverImageUrl":null,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{}}}],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/inferno.png","pickTeamId":"cs2-team-11955","objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"availableSubresources":["player_stats"],"unavailableSubresources":["objective_stats"],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-23T03:14:03.631Z","mapNameCanonical":"Inferno","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/inferno.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/inferno.png","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}}],"meta":{"count":3,"dataAvailable":true,"limit":3,"total":3,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/live/{matchId}/snapshots":{"get":{"summary":"Live snapshots","description":"Timestamped snapshots of a live match (score, round, players) so the match can be replayed over time. Filter with `from` / `to`.","operationId":"getCs2LiveMatchIdSnapshots","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Start of the date range (ISO 8601, UTC).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"source","in":"query","required":false,"description":"Ranking to use: omit for Valve Regional Standings, or `world` for the world ranking filtered to this region.","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"End of the date range (ISO 8601, UTC).","schema":{"type":"string"}}],"responses":{"200":{"description":"Live snapshots","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_live_snapshot","snapshotId":"56a8f338-abb9-41ff-b77f-5479dec17966","matchId":"cs2-match-2398520","status":"live","source":"live","capturedAt":"2026-09-23T03:15:13.928Z","teams":{"team1Name":"LAG","team2Name":"Zomblers","terroristTeamName":"Zomblers","counterTerroristTeamName":"LAG"},"score":{"team1":0,"team2":0},"currentMap":"de_dust2","currentRound":1,"roundTimeSeconds":null,"currentScoreCt":11,"currentScoreT":13,"roundTimeLeft":null,"bombPlanted":false,"players":[{"playerId":"cs2-player-20273","name":"CAJUN","nick":"CAJUN","side":"T","steamId":"1:1:40089995","alive":false,"hp":57,"money":3250,"kills":1,"assists":0,"deaths":4,"adr":100,"weapon":null,"weaponIconUrl":null,"hasDefuseKit":false,"kevlar":false,"helmet":false},{"playerId":"cs2-player-23410","name":"CoolComs","nick":"CoolComs","side":"T","steamId":"1:1:188019378","alive":true,"hp":100,"money":3550,"kills":0,"assists":0,"deaths":0,"adr":0,"weapon":null,"weaponIconUrl":null,"hasDefuseKit":false,"kevlar":false,"helmet":false}],"liveBombEvents":[{"eventId":"8aedca15ed03f6cbf683ce5d92ae430e","eventType":"BombPlanted","playerName":"Zoker","playerNick":"Zoker","ctPlayers":4,"tPlayers":4,"bombSite":"A","observedAt":"2026-09-23T02:49:58.502Z"},{"eventId":"ed4ddb86ad56fd364e84cd32ab4c0cbf","eventType":"BombPlanted","playerName":"CoolComs","playerNick":"CoolComs","ctPlayers":4,"tPlayers":5,"bombSite":"B","observedAt":"2026-09-23T02:49:58.502Z"}],"roundEndEvents":[{"eventId":"b9b7ddfa1ac438bc372af0aecee74d9e","winnerSide":"CT","winnerSideIcon":"ct","winnerSideIconUrl":"/icons/cs2/ct_win.svg","winType":"CTs_Win","winKind":"elim","winKindIconUrl":"/icons/cs2/ct_win.svg","terroristScore":9,"counterTerroristScore":9,"observedAt":"2026-09-23T02:49:58.502Z"},{"eventId":"402ca7aa8bca01623a10d2377fa2748d","winnerSide":"CT","winnerSideIcon":"ct","winnerSideIconUrl":"/icons/cs2/ct_win.svg","winType":"CTs_Win","winKind":"elim","winKindIconUrl":"/icons/cs2/ct_win.svg","terroristScore":9,"counterTerroristScore":8,"observedAt":"2026-09-23T02:49:58.502Z"}]},{"entityType":"cs2_live_snapshot","snapshotId":"4ff63372-5eff-40e2-97ad-eb8ab913adbc","matchId":"cs2-match-2398520","status":"live","source":"live","capturedAt":"2026-09-23T03:15:12.550Z","teams":{"team1Name":"LAG","team2Name":"Zomblers","terroristTeamName":null,"counterTerroristTeamName":null},"score":{"team1":1,"team2":1},"currentMap":null,"currentRound":null,"roundTimeSeconds":null,"currentScoreCt":0,"currentScoreT":0,"roundTimeLeft":null,"bombPlanted":null,"players":[],"liveBombEvents":[],"roundEndEvents":[]}],"meta":{"count":2,"dataAvailable":true,"source":"live","limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/live/{matchId}/state":{"get":{"summary":"Live state","description":"The latest state of one live match: score, round, round timer, bomb status and players.","operationId":"getCs2LiveMatchIdState","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Live state","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_live_state","matchId":"cs2-match-2398520","status":"live","source":"live","teams":{"team1Id":"cs2-team-11955","team1Name":"LAG","team1LogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/297f07ea26dbfe4dc4342ad164a661e2.webp","team1AlternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp","team1DarkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp","team2Id":"cs2-team-12164","team2Name":"Zomblers","team2LogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f04294231ef12b6d1f708e5ec505209e.webp","team2AlternateLogoUrl":null,"team2DarkUiLogoUrl":null},"score":{"team1":0,"team2":0},"currentMap":"de_dust2","currentRound":1,"roundTimeSeconds":null,"roundTimeLeft":null,"currentScoreCt":11,"currentScoreT":13,"bombPlanted":false,"players":[{"playerId":"cs2-player-20273","name":"CAJUN","nick":"CAJUN","side":"T","steamId":"1:1:40089995","alive":false,"hp":57,"money":3250,"kills":1,"assists":0,"deaths":4,"adr":100,"weapon":null,"weaponIconUrl":null,"hasDefuseKit":false,"kevlar":false,"helmet":false},{"playerId":"cs2-player-23410","name":"CoolComs","nick":"CoolComs","side":"T","steamId":"1:1:188019378","alive":true,"hp":100,"money":3550,"kills":0,"assists":0,"deaths":0,"adr":0,"weapon":null,"weaponIconUrl":null,"hasDefuseKit":false,"kevlar":false,"helmet":false}],"liveBombEvents":[{"eventId":"8aedca15ed03f6cbf683ce5d92ae430e","eventType":"BombPlanted","playerName":"Zoker","playerNick":"Zoker","ctPlayers":4,"tPlayers":4,"bombSite":"A","observedAt":"2026-09-23T02:49:58.502Z"},{"eventId":"ed4ddb86ad56fd364e84cd32ab4c0cbf","eventType":"BombPlanted","playerName":"CoolComs","playerNick":"CoolComs","ctPlayers":4,"tPlayers":5,"bombSite":"B","observedAt":"2026-09-23T02:49:58.502Z"}],"roundEndEvents":[{"eventId":"b9b7ddfa1ac438bc372af0aecee74d9e","winnerSide":"CT","winnerSideIcon":"ct","winnerSideIconUrl":"/icons/cs2/ct_win.svg","winType":"CTs_Win","winKind":"elim","winKindIconUrl":"/icons/cs2/ct_win.svg","terroristScore":9,"counterTerroristScore":9,"observedAt":"2026-09-23T02:49:58.502Z"},{"eventId":"402ca7aa8bca01623a10d2377fa2748d","winnerSide":"CT","winnerSideIcon":"ct","winnerSideIconUrl":"/icons/cs2/ct_win.svg","winType":"CTs_Win","winKind":"elim","winKindIconUrl":"/icons/cs2/ct_win.svg","terroristScore":9,"counterTerroristScore":8,"observedAt":"2026-09-23T02:49:58.502Z"}],"latestSnapshot":{"entityType":"cs2_live_snapshot","snapshotId":null,"matchId":"cs2-match-2398520","status":"live","source":"live","capturedAt":"2026-09-23T03:15:13.832Z","teams":{"team1Name":"LAG","team2Name":"Zomblers","terroristTeamName":"Zomblers","counterTerroristTeamName":"LAG"},"score":{"team1":0,"team2":0},"currentMap":"de_dust2","currentRound":1,"roundTimeSeconds":null,"currentScoreCt":11,"currentScoreT":13,"roundTimeLeft":null,"bombPlanted":false,"players":[{"playerId":"cs2-player-20273","name":"CAJUN","nick":"CAJUN","side":"T","steamId":"1:1:40089995","alive":false,"hp":57,"money":3250,"kills":1,"assists":0,"deaths":4,"adr":100,"weapon":null,"weaponIconUrl":null,"hasDefuseKit":false,"kevlar":false,"helmet":false},{"playerId":"cs2-player-23410","name":"CoolComs","nick":"CoolComs","side":"T","steamId":"1:1:188019378","alive":true,"hp":100,"money":3550,"kills":0,"assists":0,"deaths":0,"adr":0,"weapon":null,"weaponIconUrl":null,"hasDefuseKit":false,"kevlar":false,"helmet":false}],"liveBombEvents":[{"eventId":"8aedca15ed03f6cbf683ce5d92ae430e","eventType":"BombPlanted","playerName":"Zoker","playerNick":"Zoker","ctPlayers":4,"tPlayers":4,"bombSite":"A","observedAt":"2026-09-23T02:49:58.502Z"},{"eventId":"ed4ddb86ad56fd364e84cd32ab4c0cbf","eventType":"BombPlanted","playerName":"CoolComs","playerNick":"CoolComs","ctPlayers":4,"tPlayers":5,"bombSite":"B","observedAt":"2026-09-23T02:49:58.502Z"}],"roundEndEvents":[{"eventId":"b9b7ddfa1ac438bc372af0aecee74d9e","winnerSide":"CT","winnerSideIcon":"ct","winnerSideIconUrl":"/icons/cs2/ct_win.svg","winType":"CTs_Win","winKind":"elim","winKindIconUrl":"/icons/cs2/ct_win.svg","terroristScore":9,"counterTerroristScore":9,"observedAt":"2026-09-23T02:49:58.502Z"},{"eventId":"402ca7aa8bca01623a10d2377fa2748d","winnerSide":"CT","winnerSideIcon":"ct","winnerSideIconUrl":"/icons/cs2/ct_win.svg","winType":"CTs_Win","winKind":"elim","winKindIconUrl":"/icons/cs2/ct_win.svg","terroristScore":9,"counterTerroristScore":8,"observedAt":"2026-09-23T02:49:58.502Z"}]},"tracking":{"status":"active","detectedAt":"2026-09-23T01:02:58.192Z","lastPolledAt":"2026-09-23T03:15:14.830Z","lastSnapshotAt":"2026-09-23T03:15:14.552Z","pollCount":2655},"dataAvailable":true,"unavailableReason":null,"lastVerified":"2026-09-23T03:15:14.115Z"},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/live/{matchId}":{"get":{"summary":"Live match","description":"One live match with teams, series score and live-coverage details.","operationId":"getCs2LiveMatchId","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Live match","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_live_match","id":"cs2-match-2398520","matchId":"cs2-match-2398520","status":"live","eventId":"cs2-event-9356","eventName":"ESL Challenger League Season 52 North America Cup 2","eventSlug":"esl-challenger-league-season-52-north-america-cup-2","eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/cd79123cf4afe29db63f20edda3125dc.webp","eventImageUrl":null,"eventBannerImageUrl":null,"event":{"eventId":"cs2-event-9356","name":"ESL Challenger League Season 52 North America Cup 2","slug":"esl-challenger-league-season-52-north-america-cup-2","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/cd79123cf4afe29db63f20edda3125dc.webp","imageUrl":null,"bannerImageUrl":null},"bestOf":null,"teams":{"team1Id":"cs2-team-11955","team1Name":"LAG","team1LogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/297f07ea26dbfe4dc4342ad164a661e2.webp","team1AlternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp","team1DarkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp","team2Id":"cs2-team-12164","team2Name":"Zomblers","team2LogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f04294231ef12b6d1f708e5ec505209e.webp","team2AlternateLogoUrl":null,"team2DarkUiLogoUrl":null},"score":{"team1":1,"team2":1},"currentMapScore":{"team1":0,"team2":0},"team1Id":"cs2-team-11955","team2Id":"cs2-team-12164","team1Name":"LAG","team2Name":"Zomblers","team1Score":1,"team2Score":1,"currentMap":"de_dust2","currentRound":1,"roundTimeSeconds":null,"roundTimeLeft":null,"currentScoreCt":11,"currentScoreT":13,"latestSnapshotAt":"2026-09-23T03:15:13.832Z","liveDataAvailable":true,"streamLinks":[{"url":"https://www.twitch.tv/endiezcasts","label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"twitch"}],"startsAt":"2026-09-23T01:00:00.000Z","endsAt":null,"lastVerified":"2026-09-23T03:15:14.115Z","availableSubresources":["live_state","snapshots"]},"meta":{"source":"live","dataAvailable":true}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/live":{"get":{"summary":"Live matches","description":"Matches in progress now. `score` / `team1Score` / `team2Score` are the series (maps won); the map being played is `currentMapScore`. Use a `matchId` with the `/cs2/live/{matchId}/…` endpoints for round-level detail.","operationId":"getCs2Live","tags":["CS2"],"responses":{"200":{"description":"Live matches","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_live_match","id":"cs2-match-2398520","matchId":"cs2-match-2398520","status":"live","eventId":"cs2-event-9356","eventName":"ESL Challenger League Season 52 North America Cup 2","eventSlug":"esl-challenger-league-season-52-north-america-cup-2","eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","eventImageUrl":null,"eventBannerImageUrl":null,"event":{"eventId":"cs2-event-9356","name":"ESL Challenger League Season 52 North America Cup 2","slug":"esl-challenger-league-season-52-north-america-cup-2","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","imageUrl":null,"bannerImageUrl":null},"bestOf":null,"teams":{"team1Id":"cs2-team-11955","team1Name":"LAG","team1LogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/297f07ea26dbfe4dc4342ad164a661e2.webp","team1AlternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp","team1DarkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp","team2Id":"cs2-team-12164","team2Name":"Zomblers","team2LogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f04294231ef12b6d1f708e5ec505209e.webp","team2AlternateLogoUrl":null,"team2DarkUiLogoUrl":null},"score":{"team1":1,"team2":1},"currentMapScore":{"team1":0,"team2":0},"team1Id":"cs2-team-11955","team2Id":"cs2-team-12164","team1Name":"LAG","team2Name":"Zomblers","team1Score":1,"team2Score":1,"currentMap":"de_dust2","currentRound":1,"roundTimeSeconds":null,"roundTimeLeft":null,"currentScoreCt":11,"currentScoreT":13,"latestSnapshotAt":"2026-09-23T03:15:13.832Z","liveDataAvailable":true,"streamLinks":[{"url":"https://www.twitch.tv/endiezcasts","label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"twitch"}],"startsAt":"2026-09-23T01:00:00.000Z","endsAt":null,"lastVerified":"2026-09-23T03:15:14.115Z","availableSubresources":["live_state","snapshots"]}],"meta":{"count":1,"source":"live","filteredUnconfirmedLive":0,"confirmationMaxAgeMs":45000,"limit":1,"total":1,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/matches/live":{"get":{"summary":"Live matches","description":"Matches in progress now. `score` / `team1Score` / `team2Score` are the series (maps won); the map being played is `currentMapScore`. Use a `matchId` with the `/cs2/live/{matchId}/…` endpoints for round-level detail.\n\nSame response as `GET /api/v1/cs2/live`.","operationId":"getCs2MatchesLive","tags":["CS2"],"responses":{"200":{"description":"Live matches"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/live"}},"/cs2/matches/today":{"get":{"summary":"Today's matches","description":"Matches scheduled, live or finished today (UTC).","operationId":"getCs2MatchesToday","tags":["CS2"],"parameters":[{"name":"eventId","in":"query","required":false,"description":"Filter by `eventId`.","schema":{"type":"string"}},{"name":"event_id","in":"query","required":false,"description":"Filter by `event_id`.","schema":{"type":"string"}},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return.","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Start of the date range (ISO 8601, UTC).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":25}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"order","in":"query","required":false,"description":"Filter by `order`.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"playerId","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"player_id","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"Sort order.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter by status.","schema":{"type":"string"}},{"name":"summary","in":"query","required":false,"description":"`true` returns a summary instead of full rows.","schema":{"type":"boolean"}},{"name":"team","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"teamId","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"team_id","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"End of the date range (ISO 8601, UTC).","schema":{"type":"string"}}],"responses":{"200":{"description":"Today's matches","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_match","id":"cs2-match-2398319","eventId":"cs2-event-9410","eventName":"CROSSFIRE Season 6","eventSlug":"crossfire-season-6","stageName":null,"startsAt":"2026-09-23T23:30:00.000Z","endsAt":null,"bestOf":null,"status":"upcoming","team1Id":"cs2-team-14047","team2Id":"cs2-team-13201","team1Name":"Fathom","team2Name":"F5","team1Score":null,"team2Score":null,"winnerTeamId":null,"lastSyncedAt":"2026-09-23T03:05:37.960Z","lastVerified":"2026-09-23T03:05:37.960Z","confidence":"high","event":{"id":"cs2-event-9410","name":"CROSSFIRE Season 6","slug":"crossfire-season-6","imageUrl":null,"prizePool":10000,"currency":"USD","tier":null,"prestigeScore":null,"status":"live","region":null,"startsAt":"2026-09-16T00:30:00.000Z","endsAt":"2026-10-11T23:59:59.000Z","eventId":"cs2-event-9410","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8cdf74d32db95514d3dc287ea44a5fa4.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-14047","name":"Fathom","slug":"fathom","teamTag":"FATHOM","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7b669c0c2e7d42990dffdd61ee1e97f7.webp","countryName":null,"countryCode":null,"worldRanking":null},"team2":{"id":"cs2-team-13201","name":"F5","slug":"f5","teamTag":"F5","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/d20b8f3544cd148e95f33111fe6b47be.webp","countryName":"United States","countryCode":"US","worldRanking":213,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/63afa5f59017a2af260f1b23a3b31ed4.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/63afa5f59017a2af260f1b23a3b31ed4.webp"},"maps":[],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8cdf74d32db95514d3dc287ea44a5fa4.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":[],"unavailableSubresources":["maps","player_stats"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_played"}}},{"entityType":"cs2_match","id":"cs2-match-2398557","eventId":"cs2-event-9425","eventName":"CCT 2026 South America Series 6","eventSlug":"cct-2026-south-america-series-6","stageName":null,"startsAt":"2026-09-23T22:00:00.000Z","endsAt":null,"bestOf":null,"status":"upcoming","team1Id":"cs2-team-11905","team2Id":"cs2-team-13978","team1Name":"paiN Academy","team2Name":"Sementes do Mal","team1Score":null,"team2Score":null,"winnerTeamId":null,"lastSyncedAt":"2026-09-23T03:05:37.546Z","lastVerified":"2026-09-23T03:05:37.546Z","confidence":"high","event":{"id":"cs2-event-9425","name":"CCT 2026 South America Series 6","slug":"cct-2026-south-america-series-6","imageUrl":null,"prizePool":null,"currency":null,"tier":"B","prestigeScore":55,"status":"live","region":null,"startsAt":"2026-09-22T15:59:32.000Z","endsAt":"2026-10-04T23:59:59.000Z","eventId":"cs2-event-9425","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/6576d7901af03eaa076d5fb65af3cc14.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-11905","name":"paiN Academy","slug":"pain-academy","teamTag":"PA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/4a3870c1d26f1c9ca4cbe2831f4ac8d1.webp","countryName":"Brazil","countryCode":"BR","worldRanking":null,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/68ab1a3c2ad5410bbe716e1b5a85028a.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/68ab1a3c2ad5410bbe716e1b5a85028a.webp"},"team2":{"id":"cs2-team-13978","name":"Sementes do Mal","slug":"sementes-do-mal","teamTag":"SDM","logoUrl":null,"countryName":null,"countryCode":null,"worldRanking":246},"maps":[],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/6576d7901af03eaa076d5fb65af3cc14.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":[],"unavailableSubresources":["maps","player_stats"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_played"}}}],"meta":{"page":1,"limit":2,"total":63,"filteredUnconfirmedLive":0,"count":2,"totalPages":32,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/matches/past":{"get":{"summary":"Past matches","description":"Finished matches, newest first, with date-range filters.","operationId":"getCs2MatchesPast","tags":["CS2"],"parameters":[{"name":"eventId","in":"query","required":false,"description":"Filter by `eventId`.","schema":{"type":"string"}},{"name":"event_id","in":"query","required":false,"description":"Filter by `event_id`.","schema":{"type":"string"}},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return.","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Start of the date range (ISO 8601, UTC).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":25}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"order","in":"query","required":false,"description":"Filter by `order`.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"playerId","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"player_id","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"Sort order.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter by status.","schema":{"type":"string"}},{"name":"summary","in":"query","required":false,"description":"`true` returns a summary instead of full rows.","schema":{"type":"boolean"}},{"name":"team","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"teamId","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"team_id","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"End of the date range (ISO 8601, UTC).","schema":{"type":"string"}}],"responses":{"200":{"description":"Past matches","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_match","id":"cs2-match-2398526","eventId":"cs2-event-9356","eventName":"ESL Challenger League Season 52 North America Cup 2","eventSlug":"esl-challenger-league-season-52-north-america-cup-2","stageName":null,"startsAt":"2026-09-23T02:58:01.000Z","endsAt":"2026-09-23T03:00:58.213Z","bestOf":3,"status":"completed","team1Id":"cs2-team-13857","team2Id":"cs2-team-12971","team1Name":"Iowa Stormboar","team2Name":"Wanted Goons","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-13857","lastSyncedAt":"2026-09-23T03:06:07.518Z","lastVerified":"2026-09-23T03:06:07.518Z","confidence":"high","event":{"id":"cs2-event-9356","name":"ESL Challenger League Season 52 North America Cup 2","slug":"esl-challenger-league-season-52-north-america-cup-2","imageUrl":null,"prizePool":17500,"currency":"USD","tier":"A","prestigeScore":80,"status":"live","region":"North America","startsAt":"2026-09-23T01:00:00.000Z","endsAt":"2026-09-29T23:59:59.000Z","eventId":"cs2-event-9356","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-13857","name":"Iowa Stormboar","slug":"iowa-stormboar","teamTag":"IS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp","countryName":"United States","countryCode":"US","worldRanking":177},"team2":{"id":"cs2-team-12971","name":"Wanted Goons","slug":"wanted-goons","teamTag":"WG","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/2fd6ff3bc5a226dfa92640ab178d60cb.webp","countryName":null,"countryCode":null,"worldRanking":230,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7ff257ba3339dbf5bd82c1457bcd0e4c.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7ff257ba3339dbf5bd82c1457bcd0e4c.webp"},"maps":[{"id":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","mapNumber":1,"mapName":"Dust2","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[10,3],"team2Halves":[2,0],"winnerTeamId":"cs2-team-13857","durationRounds":15,"lastSyncedAt":"2026-09-23T03:04:18.990Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398526-map-2","matchId":"cs2-match-2398526","mapNumber":2,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[5,7],"team2Halves":[7,5],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-23T03:04:28.968Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}},{"entityType":"cs2_match","id":"cs2-match-2398527","eventId":"cs2-event-9356","eventName":"ESL Challenger League Season 52 North America Cup 2","eventSlug":"esl-challenger-league-season-52-north-america-cup-2","stageName":null,"startsAt":"2026-09-23T02:43:06.000Z","endsAt":"2026-09-23T02:44:02.768Z","bestOf":3,"status":"completed","team1Id":"cs2-team-12301","team2Id":"cs2-team-13124","team1Name":"FlyQuest RED","team2Name":"Marsborne","team1Score":0,"team2Score":2,"winnerTeamId":"cs2-team-13124","lastSyncedAt":"2026-09-23T03:06:08.339Z","lastVerified":"2026-09-23T03:06:08.339Z","confidence":"high","event":{"id":"cs2-event-9356","name":"ESL Challenger League Season 52 North America Cup 2","slug":"esl-challenger-league-season-52-north-america-cup-2","imageUrl":null,"prizePool":17500,"currency":"USD","tier":"A","prestigeScore":80,"status":"live","region":"North America","startsAt":"2026-09-23T01:00:00.000Z","endsAt":"2026-09-29T23:59:59.000Z","eventId":"cs2-event-9356","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-12301","name":"FlyQuest RED","slug":"flyquest-red","teamTag":"FR","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/55414f2cbe99ee64615c4f961b981446.webp","countryName":"United States","countryCode":"US","worldRanking":null},"team2":{"id":"cs2-team-13124","name":"Marsborne","slug":"marsborne","teamTag":"MARSBORN","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7d1b9c59f37fb864efc779a704207c23.webp","countryName":"Canada","countryCode":"CA","worldRanking":94},"maps":[{"id":"cs2-match-2398527-map-1","matchId":"cs2-match-2398527","mapNumber":1,"mapName":"Mirage","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[2],"team2Halves":[10],"winnerTeamId":"cs2-team-13124","durationRounds":23,"lastSyncedAt":"2026-09-23T02:53:38.850Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398527-map-2","matchId":"cs2-match-2398527","mapNumber":2,"mapName":"Ancient","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[2,0],"team2Halves":[10,3],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-23T02:54:00.863Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}],"meta":{"page":1,"limit":2,"total":296,"filteredUnconfirmedLive":0,"count":2,"totalPages":148,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/matches/search":{"get":{"summary":"Search matches","description":"Find matches by team or event name.","operationId":"getCs2MatchesSearch","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"q","in":"query","required":true,"description":"Search text.","schema":{"type":"string"}},{"name":"query","in":"query","required":false,"description":"Filter by `query`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Search matches","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_match","id":"cs2-match-2398108","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":"Grand final","startsAt":"2026-09-20T18:49:47.000Z","endsAt":null,"bestOf":5,"status":"completed","team1Id":"cs2-team-11861","team2Id":"cs2-team-9565","team1Name":"Aurora","team2Name":"Vitality","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565","lastSyncedAt":"2026-09-23T03:07:06.893Z","lastVerified":"2026-09-23T03:07:06.893Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":null,"prizePool":5000008,"currency":"USD","tier":"A","prestigeScore":75,"status":"completed","region":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","eventId":"cs2-event-8057","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-11861","name":"Aurora","slug":"aurora","teamTag":"AURORA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cf72686d65237eb4fe4365d8070d068.webp","countryName":"Türkiye","countryCode":"TR","worldRanking":9},"team2":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","worldRanking":2,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"maps":[{"id":"cs2-match-2398108-map-1","matchId":"cs2-match-2398108","mapNumber":1,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[3,1],"team2Halves":[9,4],"winnerTeamId":"cs2-team-9565","durationRounds":17,"lastSyncedAt":"2026-09-22T19:46:26.632Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398108-map-2","matchId":"cs2-match-2398108","mapNumber":2,"mapName":"Inferno","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[7,6],"team2Halves":[5,6],"winnerTeamId":"cs2-team-11861","durationRounds":24,"lastSyncedAt":"2026-09-22T19:46:37.002Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vetoOrder":[{"map":null,"order":1,"action":"ban","teamId":"cs2-team-11861","teamName":"Aurora"},{"map":"ancient","order":2,"action":"ban","teamId":"cs2-team-9565","teamName":"Vitality"}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}},{"entityType":"cs2_match","id":"cs2-match-2398107","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T12:00:00.000Z","endsAt":null,"bestOf":3,"status":"completed","team1Id":"cs2-team-9565","team2Id":"cs2-team-8297","team1Name":"Vitality","team2Name":"FURIA","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-9565","lastSyncedAt":"2026-09-23T03:03:45.610Z","lastVerified":"2026-09-23T03:03:45.610Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":null,"prizePool":5000008,"currency":"USD","tier":"A","prestigeScore":75,"status":"completed","region":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","eventId":"cs2-event-8057","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","worldRanking":2,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"team2":{"id":"cs2-team-8297","name":"FURIA","slug":"furia","teamTag":"FURIA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/ae2903ad6662885facbfedf1183a1b22.svg","countryName":"Brazil","countryCode":"BR","worldRanking":4},"maps":[{"id":"cs2-match-2398107-map-1","matchId":"cs2-match-2398107","mapNumber":1,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,1],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:43.662Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},{"id":"cs2-match-2398107-map-2","matchId":"cs2-match-2398107","mapNumber":2,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,4],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:52.776Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}}}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vetoOrder":[{"map":null,"order":1,"action":"ban","teamId":"cs2-team-8297","teamName":"FURIA"},{"map":"ancient","order":2,"action":"ban","teamId":"cs2-team-9565","teamName":"Vitality"}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}],"meta":{"query":"vitality","count":2,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/matches/upcoming":{"get":{"summary":"Upcoming matches","description":"Scheduled matches, soonest first.","operationId":"getCs2MatchesUpcoming","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Upcoming matches","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_match","id":"cs2-match-2398521","eventId":"cs2-event-9356","eventName":"ESL Challenger League Season 52 North America Cup 2","eventSlug":"esl-challenger-league-season-52-north-america-cup-2","stageName":"Upper bracket","startsAt":"2026-09-23T01:00:00.000Z","endsAt":null,"bestOf":3,"status":"completed","team1Id":"cs2-team-13574","team2Id":"cs2-team-11336","team1Name":"Club 333","team2Name":"DETONATE","team1Score":null,"team2Score":null,"winnerTeamId":null,"liveState":{"teams":{"team1Name":"Club 333","team2Name":"DETONATE","ctTeamName":"CT","terroristTeamName":"Terrorist"},"source":"live","status":"live","matchId":"cs2-match-2398521","roundEnds":[{"winner":"CT","eventId":"6a19b74f123044bfcbf42b460d5f21ec","payload":{},"winType":"Target_Saved","eventType":"RoundEnd","observedAt":"2026-09-23T01:46:56.985Z","terroristScore":6,"webhookEligible":true,"counterTerroristScore":9},{"winner":"TERRORIST","eventId":"c7f8fba3d7d5b7bbb7f1668449061212","payload":{},"winType":"Terrorists_Win","eventType":"RoundEnd","observedAt":"2026-09-23T01:46:56.985Z","terroristScore":6,"webhookEligible":true,"counterTerroristScore":8}],"bombEvents":[{"source":"live","eventId":"40d059e2be763195ef839829a670ee76","payload":{},"bombSite":"A","tPlayers":5,"ctPlayers":2,"eventType":"BombPlanted","observedAt":"2026-09-23T01:46:56.985Z","playerName":"THOR","playerNick":"THOR","webhookEligible":true},{"source":"live","eventId":"be03766dd75eeac21efad1573b3ad734","payload":{},"bombSite":"A","tPlayers":2,"ctPlayers":0,"eventType":"BombPlanted","observedAt":"2026-09-23T01:46:56.985Z","playerName":"carn","playerNick":"carN","webhookEligible":true}],"capturedAt":"2026-09-23T03:13:21.736Z","currentMap":"de_nuke","team1Score":1,"team2Score":1,"bombPlanted":false,"playerStats":[],"currentRound":1,"scoreSummary":null,"winnerTeamId":null,"responseCount":2590,"eventNamesSeen":["Assist","BombPlanted"],"roundTimeSeconds":null,"mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":true,"unavailableReason":null,"confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[{},{}]}},"vetoOrder":[{"map":"anubis","order":1,"action":"ban","teamId":"cs2-team-13574","teamName":"Club 333"},{"map":null,"order":2,"action":"ban","teamId":"cs2-team-11336","teamName":"DETONATE"}],"streamLinks":[{"url":"https://www.twitch.tv/blakert_cs","label":null,"language":null,"platform":"twitch"},{"url":"https://www.twitch.tv/sv_theunknown","label":null,"language":null,"platform":"twitch"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:13:58.144Z","lastVerified":"2026-09-23T03:13:58.144Z","confidence":"high","event":{"id":"cs2-event-9356","name":"ESL Challenger League Season 52 North America Cup 2","slug":"esl-challenger-league-season-52-north-america-cup-2","imageUrl":null,"prizePool":17500,"currency":"USD","location":null,"format":null,"teamCount":null,"standings":null,"startsAt":"2026-09-23T01:00:00.000Z","endsAt":"2026-09-29T23:59:59.000Z","status":"live","tier":"A","prestigeScore":80,"region":"North America","isLan":null,"confirmedStatus":"source_listed","streamLinks":null,"vodLinks":null,"lastSyncedAt":"2026-09-23T03:15:01.834Z","lastVerified":"2026-09-23T03:15:01.834Z","confidence":"high","eventId":"cs2-event-9356","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-13574","name":"Club 333","slug":"club-333","teamTag":"CLUB333","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/3044c1d39c711d18de8e4c02609cc7f0.webp","countryName":null,"countryCode":null,"region":"Americas","worldRanking":232,"lastSyncedAt":"2026-09-23T03:13:57.870Z","lastVerified":"2026-09-23T03:13:57.870Z","confidence":"high"},"team2":{"id":"cs2-team-11336","name":"DETONATE","slug":"detonate","teamTag":"DETONATE","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/49233722c0c25a3066de35dc0915eb9a.webp","countryName":"United States","countryCode":"US","region":"Americas","worldRanking":205,"lastSyncedAt":"2026-09-23T03:13:57.959Z","lastVerified":"2026-09-23T03:13:57.959Z","confidence":"high"},"maps":[{"id":"cs2-match-2398521-map-1","matchId":"cs2-match-2398521","mapNumber":1,"mapName":"Inferno","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8],"team2Halves":[4],"winnerTeamId":"cs2-team-13574","durationRounds":24,"lastSyncedAt":"2026-09-23T03:13:58.482Z","playerStats":[{},{}],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/4004b70cfe62cef3b711c587bd0d342c.webp","pickTeamId":"cs2-team-13574","objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398521-map-2","matchId":"cs2-match-2398521","mapNumber":2,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,2],"team2Halves":[4,9],"winnerTeamId":"cs2-team-11336","durationRounds":23,"lastSyncedAt":"2026-09-23T03:13:58.518Z","playerStats":[{},{}],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp","pickTeamId":"cs2-team-11336","objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps","player_stats"],"unavailableSubresources":["objective_stats"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}},{"entityType":"cs2_match","id":"cs2-match-2398318","eventId":"cs2-event-9410","eventName":"CROSSFIRE Season 6","eventSlug":"crossfire-season-6","stageName":null,"startsAt":"2026-09-23T03:30:00.000Z","endsAt":null,"bestOf":3,"status":"upcoming","team1Id":"cs2-team-13994","team2Id":"cs2-team-11955","team1Name":"KODEX","team2Name":"LAG","team1Score":null,"team2Score":null,"winnerTeamId":null,"liveState":{"status":"upcoming","team1Score":null,"team2Score":null,"winnerTeamId":null},"vetoOrder":null,"streamLinks":null,"vodLinks":[],"lastSyncedAt":"2026-09-23T03:05:48.672Z","lastVerified":"2026-09-23T03:05:48.672Z","confidence":"high","event":{"id":"cs2-event-9410","name":"CROSSFIRE Season 6","slug":"crossfire-season-6","imageUrl":null,"prizePool":10000,"currency":"USD","location":null,"format":"Playoffs: Double elimination Bo3 - Grand final Bo5","teamCount":null,"standings":null,"startsAt":"2026-09-16T00:30:00.000Z","endsAt":"2026-10-11T23:59:59.000Z","status":"live","tier":null,"prestigeScore":null,"region":null,"isLan":true,"confirmedStatus":"source_listed","streamLinks":null,"vodLinks":null,"lastSyncedAt":"2026-09-23T03:15:04.607Z","lastVerified":"2026-09-23T03:15:04.607Z","confidence":"high","eventId":"cs2-event-9410","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8cdf74d32db95514d3dc287ea44a5fa4.webp","bannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/ac2ccf9a9eda59f4657a37018b13de0d.webp"},"team1":{"id":"cs2-team-13994","name":"KODEX","slug":"kodex","teamTag":"KODEX","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8ad88a29fc8c6dc13223f71dc2164d12.webp","countryName":null,"countryCode":null,"region":"North America","worldRanking":241,"lastSyncedAt":"2026-09-23T03:09:58.509Z","lastVerified":"2026-09-23T03:09:58.509Z","confidence":"high"},"team2":{"id":"cs2-team-11955","name":"LAG","slug":"lag","teamTag":"LAG","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/297f07ea26dbfe4dc4342ad164a661e2.webp","countryName":"Canada","countryCode":"CA","region":"Americas","worldRanking":98,"lastSyncedAt":"2026-09-23T03:14:03.000Z","lastVerified":"2026-09-23T03:14:03.000Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8bb92ff4ccd53fb7cc88c565b3ddbd92.webp"},"maps":[{"id":"cs2-match-2398318-map-1","matchId":"cs2-match-2398318","mapNumber":1,"mapName":"TBA","status":"upcoming","team1Score":null,"team2Score":null,"team1Halves":null,"team2Halves":null,"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-23T03:05:48.717Z","playerStats":[],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{}}},{"id":"cs2-match-2398318-map-2","matchId":"cs2-match-2398318","mapNumber":2,"mapName":"TBA","status":"upcoming","team1Score":null,"team2Score":null,"team1Halves":null,"team2Halves":null,"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-23T03:05:48.747Z","playerStats":[],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{}}}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/8cdf74d32db95514d3dc287ea44a5fa4.webp","eventImageUrl":null,"eventBannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/ac2ccf9a9eda59f4657a37018b13de0d.webp","availableSubresources":["maps","live_state"],"unavailableSubresources":["player_stats","objective_stats"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_played"}}}],"meta":{"count":2,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/matches/recent":{"get":{"summary":"Recent results","description":"Finished matches with final series score and winner, newest first.","operationId":"getCs2MatchesRecent","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Recent results","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_match","id":"cs2-match-2398526","eventId":"cs2-event-9356","eventName":"ESL Challenger League Season 52 North America Cup 2","eventSlug":"esl-challenger-league-season-52-north-america-cup-2","stageName":null,"startsAt":"2026-09-23T02:58:01.000Z","endsAt":"2026-09-23T03:00:58.213Z","bestOf":3,"status":"completed","team1Id":"cs2-team-13857","team2Id":"cs2-team-12971","team1Name":"Iowa Stormboar","team2Name":"Wanted Goons","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-13857","lastSyncedAt":"2026-09-23T03:06:07.518Z","lastVerified":"2026-09-23T03:06:07.518Z","confidence":"high","event":{"id":"cs2-event-9356","name":"ESL Challenger League Season 52 North America Cup 2","slug":"esl-challenger-league-season-52-north-america-cup-2","imageUrl":null,"prizePool":17500,"currency":"USD","tier":"A","prestigeScore":80,"status":"live","region":"North America","startsAt":"2026-09-23T01:00:00.000Z","endsAt":"2026-09-29T23:59:59.000Z","eventId":"cs2-event-9356","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-13857","name":"Iowa Stormboar","slug":"iowa-stormboar","teamTag":"IS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp","countryName":"United States","countryCode":"US","worldRanking":177},"team2":{"id":"cs2-team-12971","name":"Wanted Goons","slug":"wanted-goons","teamTag":"WG","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/2fd6ff3bc5a226dfa92640ab178d60cb.webp","countryName":null,"countryCode":null,"worldRanking":230,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7ff257ba3339dbf5bd82c1457bcd0e4c.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7ff257ba3339dbf5bd82c1457bcd0e4c.webp"},"maps":[{"id":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","mapNumber":1,"mapName":"Dust2","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[10,3],"team2Halves":[2,0],"winnerTeamId":"cs2-team-13857","durationRounds":15,"lastSyncedAt":"2026-09-23T03:04:18.990Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398526-map-2","matchId":"cs2-match-2398526","mapNumber":2,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[5,7],"team2Halves":[7,5],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-23T03:04:28.968Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}},{"entityType":"cs2_match","id":"cs2-match-2398527","eventId":"cs2-event-9356","eventName":"ESL Challenger League Season 52 North America Cup 2","eventSlug":"esl-challenger-league-season-52-north-america-cup-2","stageName":null,"startsAt":"2026-09-23T02:43:06.000Z","endsAt":"2026-09-23T02:44:02.768Z","bestOf":3,"status":"completed","team1Id":"cs2-team-12301","team2Id":"cs2-team-13124","team1Name":"FlyQuest RED","team2Name":"Marsborne","team1Score":0,"team2Score":2,"winnerTeamId":"cs2-team-13124","lastSyncedAt":"2026-09-23T03:06:08.339Z","lastVerified":"2026-09-23T03:06:08.339Z","confidence":"high","event":{"id":"cs2-event-9356","name":"ESL Challenger League Season 52 North America Cup 2","slug":"esl-challenger-league-season-52-north-america-cup-2","imageUrl":null,"prizePool":17500,"currency":"USD","tier":"A","prestigeScore":80,"status":"live","region":"North America","startsAt":"2026-09-23T01:00:00.000Z","endsAt":"2026-09-29T23:59:59.000Z","eventId":"cs2-event-9356","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-12301","name":"FlyQuest RED","slug":"flyquest-red","teamTag":"FR","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/55414f2cbe99ee64615c4f961b981446.webp","countryName":"United States","countryCode":"US","worldRanking":null},"team2":{"id":"cs2-team-13124","name":"Marsborne","slug":"marsborne","teamTag":"MARSBORN","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7d1b9c59f37fb864efc779a704207c23.webp","countryName":"Canada","countryCode":"CA","worldRanking":94},"maps":[{"id":"cs2-match-2398527-map-1","matchId":"cs2-match-2398527","mapNumber":1,"mapName":"Mirage","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[2],"team2Halves":[10],"winnerTeamId":"cs2-team-13124","durationRounds":23,"lastSyncedAt":"2026-09-23T02:53:38.850Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398527-map-2","matchId":"cs2-match-2398527","mapNumber":2,"mapName":"Ancient","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[2,0],"team2Halves":[10,3],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-23T02:54:00.863Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}],"meta":{"count":2,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/matches/results":{"get":{"summary":"Recent results","description":"Finished matches with final series score and winner, newest first.\n\nSame response as `GET /api/v1/cs2/matches/recent`.","operationId":"getCs2MatchesResults","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Recent results"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/matches/recent"}},"/cs2/matches/completed":{"get":{"summary":"Recent results","description":"Finished matches with final series score and winner, newest first.\n\nSame response as `GET /api/v1/cs2/matches/recent`.","operationId":"getCs2MatchesCompleted","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Recent results"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/matches/recent"}},"/cs2/matches/{matchId}/streams":{"get":{"summary":"Match streams","description":"Broadcast links for a match, when known.","operationId":"getCs2MatchesMatchIdStreams","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Match streams","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_match_streams","matchId":"cs2-match-2398526","streams":[]},"meta":{"count":0,"limit":0,"total":0,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/matches/{matchId}/head-to-head":{"get":{"summary":"Match head-to-head","description":"Previous meetings between the two teams in this match.","operationId":"getCs2MatchesMatchIdHeadToHead","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Match head-to-head","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_team_h2h","team":{"id":"cs2-team-13857","name":"Iowa Stormboar"},"opponent":{"id":"cs2-team-12971","name":"Wanted Goons"},"totalMatches":2,"matchRecord":{"teamWins":2,"opponentWins":0,"teamWinPercent":100,"opponentWinPercent":0},"mapRecord":{"teamWins":3,"opponentWins":0,"totalDecidedMaps":3,"teamWinPercent":100,"opponentWinPercent":0},"mapBreakdown":[{"mapName":"Dust2","played":1,"teamWins":1,"opponentWins":0,"teamWinPercent":100,"opponentWinPercent":0,"roundsFor":13,"roundsAgainst":2,"roundDifferential":11},{"mapName":"Cache","played":1,"teamWins":1,"opponentWins":0,"teamWinPercent":100,"opponentWinPercent":0,"roundsFor":16,"roundsAgainst":13,"roundDifferential":3}],"recent5Matches":[{"matchId":"cs2-match-2398526","status":"completed","startsAt":"2026-09-23T02:58:01.000Z","eventName":"ESL Challenger League Season 52 North America Cup 2","bestOf":null,"opponentId":"cs2-team-12971","opponentName":"Wanted Goons","teamScore":2,"opponentScore":0,"score":"2-0","result":"W","maps":[{"mapId":"cs2-match-2398526-map-1","mapNumber":1,"mapName":"Dust2","status":"completed","teamScore":13,"opponentScore":2,"score":"13-2","result":"W","winnerTeamId":"cs2-team-13857","roundsFor":13,"roundsAgainst":2},{"mapId":"cs2-match-2398526-map-2","mapNumber":2,"mapName":"Cache","status":"completed","teamScore":16,"opponentScore":13,"score":"16-13","result":"W","winnerTeamId":"cs2-team-13857","roundsFor":16,"roundsAgainst":13}]},{"matchId":"cs2-match-2397468","status":"completed","startsAt":"2026-09-05T01:00:00.000Z","eventName":"NSTLGA League Season 2","bestOf":1,"opponentId":"cs2-team-12971","opponentName":"Wanted Goons","teamScore":1,"opponentScore":0,"score":"1-0","result":"W","maps":[{"mapId":"cs2-match-2397468-map-1","mapNumber":1,"mapName":"Mirage","status":"completed","teamScore":13,"opponentScore":7,"score":"13-7","result":"W","winnerTeamId":"cs2-team-13857","roundsFor":13,"roundsAgainst":7}]}],"matches":[{"matchId":"cs2-match-2398526","status":"completed","startsAt":"2026-09-23T02:58:01.000Z","eventName":"ESL Challenger League Season 52 North America Cup 2","bestOf":null,"opponentId":"cs2-team-12971","opponentName":"Wanted Goons","teamScore":2,"opponentScore":0,"score":"2-0","result":"W","maps":[{"mapId":"cs2-match-2398526-map-1","mapNumber":1,"mapName":"Dust2","status":"completed","teamScore":13,"opponentScore":2,"score":"13-2","result":"W","winnerTeamId":"cs2-team-13857","roundsFor":13,"roundsAgainst":2},{"mapId":"cs2-match-2398526-map-2","mapNumber":2,"mapName":"Cache","status":"completed","teamScore":16,"opponentScore":13,"score":"16-13","result":"W","winnerTeamId":"cs2-team-13857","roundsFor":16,"roundsAgainst":13}]},{"matchId":"cs2-match-2397468","status":"completed","startsAt":"2026-09-05T01:00:00.000Z","eventName":"NSTLGA League Season 2","bestOf":1,"opponentId":"cs2-team-12971","opponentName":"Wanted Goons","teamScore":1,"opponentScore":0,"score":"1-0","result":"W","maps":[{"mapId":"cs2-match-2397468-map-1","mapNumber":1,"mapName":"Mirage","status":"completed","teamScore":13,"opponentScore":7,"score":"13-7","result":"W","winnerTeamId":"cs2-team-13857","roundsFor":13,"roundsAgainst":7}]}],"dataAvailable":true},"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/matches/{matchId}/demos":{"get":{"summary":"Match demos","description":"Demo availability per map, and whether each demo has been parsed into round data.","operationId":"getCs2MatchesMatchIdDemos","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Match demos","content":{"application/json":{"example":{"success":true,"data":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","dataQuality":"unavailable","message":"Demo archive availability has not been indexed for this CS2 match yet."},"meta":{"count":0,"dataAvailable":false,"limit":0,"total":0,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/matches/{matchId}/maps":{"get":{"summary":"Match maps","description":"Maps played or scheduled in a match: map name, score, halves and winner.","operationId":"getCs2MatchesMatchIdMaps","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Match maps","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_map","id":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","mapNumber":1,"mapName":"Dust2","status":"completed","team1Score":13,"team2Score":2,"team1Halves":[10,3],"team2Halves":[2,0],"winnerTeamId":"cs2-team-13857","durationRounds":15,"lastSyncedAt":"2026-09-23T03:04:18.990Z","playerStats":[{"id":"live-source-match-2398526-map-1-H0NeST","mapId":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","playerId":"cs2-player-24045","playerName":"H0NeST","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":16,"deaths":9,"assists":3,"plusMinus":7,"adr":null,"kast":null,"rating":1.41,"ratingVersion":"source_rating_3_0","headshots":11,"headshotPercent":null,"firstKills":1,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-23T02:57:57.779Z","mapNameCanonical":null,"imageUrl":null,"mapImageUrl":null,"coverImageUrl":null,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},{"id":"live-source-match-2398526-map-1-Johan","mapId":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","playerId":"cs2-player-24467","playerName":"Johan","teamId":"cs2-team-12971","teamName":"Wanted Goons","kills":3,"deaths":14,"assists":2,"plusMinus":-11,"adr":null,"kast":null,"rating":0.41,"ratingVersion":"source_rating_3_0","headshots":2,"headshotPercent":null,"firstKills":1,"firstDeaths":2,"source":"live","lastSyncedAt":"2026-09-23T02:57:58.661Z","mapNameCanonical":null,"imageUrl":null,"mapImageUrl":null,"coverImageUrl":null,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{}}}],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png","pickTeamId":"cs2-team-12971","objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"availableSubresources":["player_stats"],"unavailableSubresources":["objective_stats"],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-23T03:04:18.990Z","mapNameCanonical":"Dust2","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/dust2.png","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}},{"entityType":"cs2_map","id":"cs2-match-2398526-map-2","matchId":"cs2-match-2398526","mapNumber":2,"mapName":"Cache","status":"completed","team1Score":16,"team2Score":13,"team1Halves":[5,7],"team2Halves":[7,5],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-23T03:04:28.968Z","playerStats":[{"id":"live-source-match-2398526-map-2-H0NeST","mapId":"cs2-match-2398526-map-2","matchId":"cs2-match-2398526","playerId":"cs2-player-24045","playerName":"H0NeST","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":27,"deaths":18,"assists":7,"plusMinus":9,"adr":94.03,"kast":0.8276,"rating":1.103,"ratingVersion":"live_approx","headshots":12,"headshotPercent":0.4444,"firstKills":8,"firstDeaths":4,"source":"live","lastSyncedAt":"2026-09-23T02:59:53.078Z","mapNameCanonical":null,"imageUrl":null,"mapImageUrl":null,"coverImageUrl":null,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},{"id":"live-source-match-2398526-map-2-Johan","mapId":"cs2-match-2398526-map-2","matchId":"cs2-match-2398526","playerId":"cs2-player-24467","playerName":"Johan","teamId":"cs2-team-12971","teamName":"Wanted Goons","kills":9,"deaths":23,"assists":5,"plusMinus":-14,"adr":45.79,"kast":0.5517,"rating":0.532,"ratingVersion":"live_approx","headshots":4,"headshotPercent":0.4444,"firstKills":1,"firstDeaths":7,"source":"live","lastSyncedAt":"2026-09-23T02:59:53.078Z","mapNameCanonical":null,"imageUrl":null,"mapImageUrl":null,"coverImageUrl":null,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{}}}],"bombEvents":[],"bombStats":[],"weaponAggregates":[],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/cache.png","pickTeamId":"cs2-team-13857","objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"availableSubresources":["player_stats"],"unavailableSubresources":["objective_stats"],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-23T03:04:28.968Z","mapNameCanonical":"Cache","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/cache.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/cache.png","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}}],"meta":{"count":3,"dataAvailable":true,"limit":3,"total":3,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/matches/{matchId}/games":{"get":{"summary":"Match games","description":"The match's maps as games, each with the `gameId` used by `/cs2/games/{gameId}`.","operationId":"getCs2MatchesMatchIdGames","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Match games","content":{"application/json":{"example":{"success":true,"data":[{"id":"cs2-match-2398526-map-1","entityType":"cs2_game","matchId":"cs2-match-2398526","mapNumber":1,"map":"Dust2","pickTeamId":null,"winnerTeamId":"cs2-team-13857","score":{"team1":13,"team2":2},"halfScores":{"team1":[10,3],"team2":[2,0]},"team1Halves":[10,3],"team2Halves":[2,0],"overtime":null,"durationRounds":15,"duration":{"rounds":15,"source":"stored"},"status":"completed","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"playerStatsAvailable":true,"playerStats":[{"playerId":"cs2-player-24045","playerName":"H0NeST","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":16,"deaths":9,"assists":3,"plusMinus":7,"adr":null,"kast":null,"rating":1.41,"ratingVersion":"source_rating_3_0","headshots":11,"headshotPercent":null,"openingKills":1,"openingDeaths":1,"rating3Profile":{"rating3":null,"rating3Available":false,"subratings":{},"openingDuels":{},"unavailableSubratings":["multi_kills","round_swing"],"rating2":1.41},"source":"live","lastSyncedAt":"2026-09-23T02:57:57.779Z"},{"playerId":"cs2-player-24467","playerName":"Johan","teamId":"cs2-team-12971","teamName":"Wanted Goons","kills":3,"deaths":14,"assists":2,"plusMinus":-11,"adr":null,"kast":null,"rating":0.41,"ratingVersion":"source_rating_3_0","headshots":2,"headshotPercent":null,"openingKills":1,"openingDeaths":2,"rating3Profile":{"rating3":null,"rating3Available":false,"subratings":{},"openingDuels":{},"unavailableSubratings":["multi_kills","round_swing"],"rating2":0.41},"source":"live","lastSyncedAt":"2026-09-23T02:57:58.661Z"}],"roundsAvailable":false,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"weaponStatsAvailable":false,"weaponUsage":[],"dataCompleteness":{"score":true,"winner":true,"halfScores":true,"playerStats":true,"objectiveStats":false,"weaponUsage":false},"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}},{"id":"cs2-match-2398526-map-2","entityType":"cs2_game","matchId":"cs2-match-2398526","mapNumber":2,"map":"Cache","pickTeamId":null,"winnerTeamId":null,"score":{"team1":16,"team2":13},"halfScores":{"team1":[5,7],"team2":[7,5]},"team1Halves":[5,7],"team2Halves":[7,5],"overtime":{"rounds":5,"team1":4,"team2":1},"durationRounds":29,"duration":{"rounds":29,"source":"score_inferred"},"status":"completed","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"playerStatsAvailable":true,"playerStats":[{"playerId":"cs2-player-24045","playerName":"H0NeST","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":27,"deaths":18,"assists":7,"plusMinus":9,"adr":94.03,"kast":0.8276,"rating":1.103,"ratingVersion":"live_approx","headshots":12,"headshotPercent":0.4444,"openingKills":8,"openingDeaths":4,"rating3Profile":{"rating3":null,"rating3Available":false,"subratings":{},"openingDuels":{},"unavailableSubratings":["multi_kills","round_swing"],"rating2":1.103},"source":"live","lastSyncedAt":"2026-09-23T02:59:53.078Z"},{"playerId":"cs2-player-24467","playerName":"Johan","teamId":"cs2-team-12971","teamName":"Wanted Goons","kills":9,"deaths":23,"assists":5,"plusMinus":-14,"adr":45.79,"kast":0.5517,"rating":0.532,"ratingVersion":"live_approx","headshots":4,"headshotPercent":0.4444,"openingKills":1,"openingDeaths":7,"rating3Profile":{"rating3":null,"rating3Available":false,"subratings":{},"openingDuels":{},"unavailableSubratings":["multi_kills","round_swing"],"rating2":0.532},"source":"live","lastSyncedAt":"2026-09-23T02:59:53.078Z"}],"roundsAvailable":false,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"weaponStatsAvailable":false,"weaponUsage":[],"dataCompleteness":{"score":true,"winner":false,"halfScores":true,"playerStats":true,"objectiveStats":false,"weaponUsage":false},"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}}],"meta":{"count":3,"dataAvailable":true,"limit":3,"total":3,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/matches/{matchId}/player-stats":{"get":{"summary":"Match player stats","description":"Per-player stats for each map of a match: kills, deaths, ADR, KAST and rating.","operationId":"getCs2MatchesMatchIdPlayerStats","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Match player stats","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_player_stat","id":"live-source-match-2398526-map-1-H0NeST","mapId":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","playerId":"cs2-player-24045","playerName":"H0NeST","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":16,"deaths":9,"assists":3,"plusMinus":7,"adr":null,"kast":null,"rating":1.41,"ratingVersion":"source_rating_3_0","headshots":11,"headshotPercent":null,"firstKills":1,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-23T02:57:57.779Z","player":{"id":"cs2-player-24045","nickname":"H0NeST","slug":"h0nest","realName":"Nazar Stefinko","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f2972c1aaaea60879f3c33ed6058b227.webp","countryName":"Ukraine","countryCode":"UA","age":18,"rating":1.26,"mapsPlayed":44,"careerStats":{"rating":1.31,"window":"past_3_months","opening":null,"sniping":null,"trading":null,"utility":null,"entrying":null,"clutching":null,"firepower":null,"mapsPlayed":50,"prizeMoney":3100,"careerRating":1.31,"windowRating":null,"missingFields":["age"],"profileStatus":"partial","lastKnownRating":1.31,"lastActiveTournament":"LiveFISSURE Playground 3","profileImageStatus":"success","profileImageClaimedAt":"2026-06-26T02:34:40.140807+02:00"},"currentTeamId":"cs2-team-13857","status":"inactive","primaryRole":"entry","roleConfidence":"medium","statusUpdatedAt":"2026-07-05T00:40:56.174Z","lastSyncedAt":"2026-09-23T03:04:06.671Z","lastVerified":"2026-09-23T03:04:06.671Z"},"team":{"id":"cs2-team-13857","name":"Iowa Stormboar","slug":"iowa-stormboar","teamTag":"IS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp","countryName":"United States","countryCode":"US","region":"Americas","worldRanking":177,"lastSyncedAt":"2026-09-23T03:09:17.179Z","lastVerified":"2026-09-23T03:09:17.179Z","confidence":"high"},"ctKills":null,"ctDeaths":null,"ctAdr":null,"ctKast":null,"ctRating":null,"tKills":null,"tDeaths":null,"tAdr":null,"tKast":null,"tRating":null,"sideDataAvailable":false,"availableSubresources":[],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-23T02:57:57.779Z"},{"entityType":"cs2_player_stat","id":"live-source-match-2398526-map-1-Scorchyy","mapId":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","playerId":"cs2-player-24528","playerName":"Scorchyy","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":12,"deaths":6,"assists":1,"plusMinus":6,"adr":null,"kast":null,"rating":1.46,"ratingVersion":"source_rating_3_0","headshots":4,"headshotPercent":null,"firstKills":3,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-23T02:57:57.477Z","player":{"id":"cs2-player-24528","nickname":"Scorchyy","slug":"scorchyy","realName":"Brett Coolen","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/039375d98261969fba392fe26c052bab.webp","countryName":"Canada","countryCode":"CA","age":25,"rating":1.04,"mapsPlayed":44,"careerStats":{"rating":1.04,"window":"past_3_months","opening":37,"sniping":90,"trading":79,"utility":45,"entrying":53,"clutching":82,"firepower":50,"mapsPlayed":37,"prizeMoney":2700,"careerRating":1.04,"windowRating":1.04,"missingFields":[],"profileStatus":"success","lastKnownRating":1.04,"lastActiveTournament":"Live XSE Pro League","profileImageStatus":"success","profileImageResetAt":"2026-07-12T00:58:40.232478+00:00","profileImageClaimedAt":"2026-09-11T01:44:23.437477+00:00"},"currentTeamId":"cs2-team-13857","status":"active","primaryRole":"AWPer","roleConfidence":"high","statusUpdatedAt":"2026-07-05T20:54:28.233Z","lastSyncedAt":"2026-09-23T03:04:06.573Z","lastVerified":"2026-09-23T03:04:06.573Z"},"team":{"id":"cs2-team-13857","name":"Iowa Stormboar","slug":"iowa-stormboar","teamTag":"IS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp","countryName":"United States","countryCode":"US","region":"Americas","worldRanking":177,"lastSyncedAt":"2026-09-23T03:09:17.179Z","lastVerified":"2026-09-23T03:09:17.179Z","confidence":"high"},"ctKills":null,"ctDeaths":null,"ctAdr":null,"ctKast":null,"ctRating":null,"tKills":null,"tDeaths":null,"tAdr":null,"tKast":null,"tRating":null,"sideDataAvailable":false,"availableSubresources":[],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-23T02:57:57.477Z"}],"meta":{"count":20,"dataAvailable":true,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"limit":20,"total":20,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/matches/{matchId}/lineup-stats":{"get":{"summary":"Match lineup stats","description":"Each team's lineup for the match with recent form stats.","operationId":"getCs2MatchesMatchIdLineupStats","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}},{"name":"windowDays","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Match lineup stats","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_match_lineup_stats","matchId":"cs2-match-2398526","windowDays":90,"dataAvailable":true,"teams":[{"teamId":"cs2-team-13857","players":[{"playerId":"cs2-player-24045","teamId":"cs2-team-13857","nickname":"H0NeST","name":"Nazar Stefinko","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f2972c1aaaea60879f3c33ed6058b227.webp","slug":"h0nest","countryName":"Ukraine","countryCode":"UA","role":"entry","windowDays":90,"dataAvailable":true,"maps":42,"matches":20,"rating":1.21,"adr":95.7,"kast":0.758,"kdRatio":1.14,"kills":762,"deaths":666,"assists":169,"unavailableSubratings":["multi_kill_rating","round_swing"]},{"playerId":"cs2-player-23690","teamId":"cs2-team-13857","nickname":"TyRa","name":"Ty Aron","imageUrl":null,"slug":"tyra","countryName":"United States","countryCode":"US","role":"entry","windowDays":90,"dataAvailable":true,"maps":33,"matches":16,"rating":1,"adr":77.4,"kast":0.574,"kdRatio":0.89,"kills":456,"deaths":515,"assists":117,"unavailableSubratings":["multi_kill_rating","round_swing"]}]},{"teamId":"cs2-team-12971","players":[{"playerId":"cs2-player-24664","teamId":"cs2-team-12971","nickname":"killerPandas","name":"Dylan Pellegrino","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f610dd85b90e96df36b58b51a2587384.png","slug":"killerpandas","countryName":"United States","countryCode":"US","role":"AWPer","windowDays":90,"dataAvailable":true,"maps":16,"matches":8,"rating":1,"adr":73.1,"kast":0.669,"kdRatio":0.97,"kills":232,"deaths":238,"assists":29,"unavailableSubratings":["multi_kill_rating","round_swing"]},{"playerId":"cs2-player-26098","teamId":"cs2-team-12971","nickname":"hibui","name":"Hunter Conklin","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e529872541a36b595ef27153a38c8dd1.webp","slug":"hibui","countryName":"United States","countryCode":"US","role":"support","windowDays":90,"dataAvailable":true,"maps":18,"matches":9,"rating":0.95,"adr":65.6,"kast":0.679,"kdRatio":0.87,"kills":221,"deaths":255,"assists":51,"unavailableSubratings":["multi_kill_rating","round_swing"]}]}],"players":[{"playerId":"cs2-player-24045","teamId":"cs2-team-13857","nickname":"H0NeST","name":"Nazar Stefinko","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f2972c1aaaea60879f3c33ed6058b227.webp","slug":"h0nest","countryName":"Ukraine","countryCode":"UA","role":"entry","windowDays":90,"dataAvailable":true,"maps":42,"matches":20,"rating":1.21,"adr":95.7,"kast":0.758,"kdRatio":1.14,"kills":762,"deaths":666,"assists":169,"unavailableSubratings":["multi_kill_rating","round_swing"]},{"playerId":"cs2-player-23690","teamId":"cs2-team-13857","nickname":"TyRa","name":"Ty Aron","imageUrl":null,"slug":"tyra","countryName":"United States","countryCode":"US","role":"entry","windowDays":90,"dataAvailable":true,"maps":33,"matches":16,"rating":1,"adr":77.4,"kast":0.574,"kdRatio":0.89,"kills":456,"deaths":515,"assists":117,"unavailableSubratings":["multi_kill_rating","round_swing"]}]},"meta":{"count":10,"dataAvailable":true,"limit":10,"total":10,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/matches/{matchId}/players":{"get":{"summary":"Match player stats","description":"Per-player stats for each map of a match: kills, deaths, ADR, KAST and rating.\n\nSame response as `GET /api/v1/cs2/matches/{matchId}/player-stats`.","operationId":"getCs2MatchesMatchIdPlayers","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Match player stats"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/matches/{matchId}/player-stats"}},"/cs2/matches/{matchId}/stats":{"get":{"summary":"Match player stats","description":"Per-player stats for each map of a match: kills, deaths, ADR, KAST and rating.\n\nSame response as `GET /api/v1/cs2/matches/{matchId}/player-stats`.","operationId":"getCs2MatchesMatchIdStats","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Match player stats"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/matches/{matchId}/player-stats"}},"/cs2/matches/{matchId}":{"get":{"summary":"Match details","description":"One match: event, teams, series score, maps, veto and which sub-resources have data.","operationId":"getCs2MatchesMatchId","tags":["CS2"],"parameters":[{"name":"matchId","in":"path","required":true,"description":"Match id, e.g. `cs2-match-2398421`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Match details","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_match","id":"cs2-match-2398526","eventId":"cs2-event-9356","eventName":"ESL Challenger League Season 52 North America Cup 2","eventSlug":"esl-challenger-league-season-52-north-america-cup-2","stageName":"Upper bracket","startsAt":"2026-09-23T02:58:01.000Z","endsAt":"2026-09-23T03:00:58.213Z","bestOf":3,"status":"completed","team1Id":"cs2-team-13857","team2Id":"cs2-team-12971","team1Name":"Iowa Stormboar","team2Name":"Wanted Goons","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-13857","liveState":{"teams":{"team1Name":"Iowa Stormboar","team2Name":"Wanted Goons","ctTeamName":"Wanted Goons","terroristTeamName":"Iowa Stormboar"},"source":"live","status":"live","matchId":"cs2-match-2398526","roundEnds":[{"winner":"TERRORIST","eventId":"645db6f393fca49e22e4bf48eb2f213d","payload":{"winner":"TERRORIST","winType":"Terrorists_Win","terroristScore":16,"counterTerroristScore":13},"winType":"Terrorists_Win","eventType":"RoundEnd","observedAt":"2026-09-23T02:59:52.534Z","terroristScore":16,"webhookEligible":true,"counterTerroristScore":13},{"winner":"TERRORIST","eventId":"9165facec222a504457850548c7e5020","payload":{"winner":"TERRORIST","winType":"Terrorists_Win","terroristScore":15,"counterTerroristScore":13},"winType":"Terrorists_Win","eventType":"RoundEnd","observedAt":"2026-09-23T02:59:52.535Z","terroristScore":15,"webhookEligible":true,"counterTerroristScore":13}],"bombEvents":[{"source":"live","eventId":"3d6e19c0feb325ab753bc9cefe47430a","payload":{"bombSite":"A","tPlayers":2,"ctPlayers":1,"playerName":"TyRa","playerNick":"TyRa"},"bombSite":"A","tPlayers":2,"ctPlayers":1,"eventType":"BombPlanted","observedAt":"2026-09-23T02:59:52.534Z","playerName":"TyRa","playerNick":"TyRa","webhookEligible":true},{"source":"live","eventId":"d5e85dd74809ea07557b244c6ab64254","payload":{"bombSite":"B","tPlayers":4,"ctPlayers":3,"playerName":"Valter0k","playerNick":"Valter0k"},"bombSite":"B","tPlayers":4,"ctPlayers":3,"eventType":"BombPlanted","observedAt":"2026-09-23T02:59:52.535Z","playerName":"Valter0k","playerNick":"Valter0k","webhookEligible":true}],"capturedAt":"2026-09-23T02:59:52.535Z","currentMap":"de_cache","team1Score":16,"team2Score":13,"bombPlanted":false,"playerStats":[{"hp":0,"adr":94.03448275862068,"name":"H0NeST","nick":"H0NeST","side":"T","alive":false,"kills":27,"money":8050,"deaths":18,"helmet":false,"kevlar":false,"assists":7,"steamId":"1:0:222104593","hasDefuseKit":false,"primaryWeapon":null},{"hp":0,"adr":91.96551724137932,"name":"TyRa","nick":"TyRa","side":"T","alive":false,"kills":24,"money":6850,"deaths":20,"helmet":false,"kevlar":false,"assists":10,"steamId":"1:1:438688670","hasDefuseKit":false,"primaryWeapon":null}],"currentRound":29,"scoreSummary":null,"winnerTeamId":null,"responseCount":1,"eventNamesSeen":["Assist","BombPlanted"],"roundTimeSeconds":null,"mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":true,"unavailableReason":null,"confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[{"source":"live","eventId":"3d6e19c0feb325ab753bc9cefe47430a","payload":{},"bombSite":"A","tPlayers":2,"ctPlayers":1,"eventType":"BombPlanted","observedAt":"2026-09-23T02:59:52.534Z","playerName":"TyRa","playerNick":"TyRa","webhookEligible":true},{"source":"live","eventId":"d5e85dd74809ea07557b244c6ab64254","payload":{},"bombSite":"B","tPlayers":4,"ctPlayers":3,"eventType":"BombPlanted","observedAt":"2026-09-23T02:59:52.535Z","playerName":"Valter0k","playerNick":"Valter0k","webhookEligible":true}]}},"vetoOrder":[{"map":"mirage","order":1,"action":"ban","teamId":"cs2-team-12971","teamName":"Wanted Goons"},{"map":"inferno","order":2,"action":"ban","teamId":"cs2-team-13857","teamName":"Iowa Stormboar"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:06:07.518Z","lastVerified":"2026-09-23T03:06:07.518Z","confidence":"high","event":{"id":"cs2-event-9356","name":"ESL Challenger League Season 52 North America Cup 2","slug":"esl-challenger-league-season-52-north-america-cup-2","imageUrl":null,"prizePool":17500,"currency":"USD","location":null,"format":null,"teamCount":null,"standings":null,"startsAt":"2026-09-23T01:00:00.000Z","endsAt":"2026-09-29T23:59:59.000Z","status":"live","tier":"A","prestigeScore":80,"region":"North America","isLan":null,"confirmedStatus":"source_listed","streamLinks":null,"vodLinks":null,"lastSyncedAt":"2026-09-23T03:15:01.834Z","lastVerified":"2026-09-23T03:15:01.834Z","confidence":"high","eventId":"cs2-event-9356","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-13857","name":"Iowa Stormboar","slug":"iowa-stormboar","teamTag":"IS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp","countryName":"United States","countryCode":"US","region":"Americas","worldRanking":177,"lastSyncedAt":"2026-09-23T03:09:17.179Z","lastVerified":"2026-09-23T03:09:17.179Z","confidence":"high"},"team2":{"id":"cs2-team-12971","name":"Wanted Goons","slug":"wanted-goons","teamTag":"WG","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/2fd6ff3bc5a226dfa92640ab178d60cb.webp","countryName":null,"countryCode":null,"region":"Americas","worldRanking":230,"lastSyncedAt":"2026-09-23T03:11:05.451Z","lastVerified":"2026-09-23T03:11:05.451Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7ff257ba3339dbf5bd82c1457bcd0e4c.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7ff257ba3339dbf5bd82c1457bcd0e4c.webp"},"maps":[{"id":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","mapNumber":1,"mapName":"Dust2","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[10,3],"team2Halves":[2,0],"winnerTeamId":"cs2-team-13857","durationRounds":15,"lastSyncedAt":"2026-09-23T03:04:18.990Z","playerStats":[{"id":"live-source-match-2398526-map-1-H0NeST","mapId":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","playerId":"cs2-player-24045","playerName":"H0NeST","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":16,"deaths":9,"assists":3,"plusMinus":7,"adr":null,"kast":null,"rating":1.41,"ratingVersion":"source_rating_3_0","headshots":11,"headshotPercent":null,"firstKills":1,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-23T02:57:57.779Z","player":{},"ctKills":null,"ctDeaths":null,"ctAdr":null,"ctKast":null,"ctRating":null,"tKills":null,"tDeaths":null,"tAdr":null,"tKast":null,"tRating":null,"sideDataAvailable":false},{"id":"live-source-match-2398526-map-1-Scorchyy","mapId":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","playerId":"cs2-player-24528","playerName":"Scorchyy","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":12,"deaths":6,"assists":1,"plusMinus":6,"adr":null,"kast":null,"rating":1.46,"ratingVersion":"source_rating_3_0","headshots":4,"headshotPercent":null,"firstKills":3,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-23T02:57:57.477Z","player":{},"ctKills":null,"ctDeaths":null,"ctAdr":null,"ctKast":null,"ctRating":null,"tKills":null,"tDeaths":null,"tAdr":null,"tKast":null,"tRating":null,"sideDataAvailable":false}],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp","pickTeamId":"cs2-team-12971","objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_stats_eligible"}},"scorePending":true},{"id":"cs2-match-2398526-map-2","matchId":"cs2-match-2398526","mapNumber":2,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[5,7],"team2Halves":[7,5],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-23T03:04:28.968Z","playerStats":[{"id":"live-source-match-2398526-map-2-H0NeST","mapId":"cs2-match-2398526-map-2","matchId":"cs2-match-2398526","playerId":"cs2-player-24045","playerName":"H0NeST","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":27,"deaths":18,"assists":7,"plusMinus":9,"adr":94.03,"kast":0.8276,"rating":1.103,"ratingVersion":"live_approx","headshots":12,"headshotPercent":0.4444,"firstKills":8,"firstDeaths":4,"source":"live","lastSyncedAt":"2026-09-23T02:59:53.078Z","player":{},"ctKills":null,"ctDeaths":null,"ctAdr":null,"ctKast":null,"ctRating":null,"tKills":null,"tDeaths":null,"tAdr":null,"tKast":null,"tRating":null,"sideDataAvailable":false},{"id":"live-source-match-2398526-map-2-Scorchyy","mapId":"cs2-match-2398526-map-2","matchId":"cs2-match-2398526","playerId":"cs2-player-24528","playerName":"Scorchyy","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":18,"deaths":18,"assists":1,"plusMinus":0,"adr":54.93,"kast":0.6897,"rating":0.78,"ratingVersion":"live_approx","headshots":5,"headshotPercent":0.2778,"firstKills":1,"firstDeaths":2,"source":"live","lastSyncedAt":"2026-09-23T02:59:53.078Z","player":{},"ctKills":null,"ctDeaths":null,"ctAdr":null,"ctKast":null,"ctRating":null,"tKills":null,"tDeaths":null,"tAdr":null,"tKast":null,"tRating":null,"sideDataAvailable":false}],"mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp","pickTeamId":"cs2-team-13857","objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_stats_eligible"}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/738f1b6567ed5bf2813a2ef99b09ecfd.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps","player_stats"],"unavailableSubresources":["objective_stats"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/matches":{"get":{"summary":"List matches","description":"Matches with filters for status, team, event and date range.","operationId":"getCs2Matches","tags":["CS2"],"parameters":[{"name":"eventId","in":"query","required":false,"description":"Filter by `eventId`.","schema":{"type":"string"}},{"name":"event_id","in":"query","required":false,"description":"Filter by `event_id`.","schema":{"type":"string"}},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return.","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Start of the date range (ISO 8601, UTC).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":25}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"order","in":"query","required":false,"description":"Filter by `order`.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"playerId","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"player_id","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"Sort order.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter by status.","schema":{"type":"string"}},{"name":"summary","in":"query","required":false,"description":"`true` returns a summary instead of full rows.","schema":{"type":"boolean"}},{"name":"team","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"teamId","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"team_id","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"End of the date range (ISO 8601, UTC).","schema":{"type":"string"}}],"responses":{"200":{"description":"List matches","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_match","id":"cs2-match-2397941","eventId":"cs2-event-9256","eventName":"Stake Ranked Episode","eventSlug":"stake-ranked-episode-4","stageName":null,"startsAt":"2026-10-01T17:30:00.000Z","endsAt":null,"bestOf":3,"status":"upcoming","team1Id":"cs2-team-6667","team2Id":"cs2-team-7969","team1Name":"FaZe","team2Name":"Nemiga","team1Score":null,"team2Score":null,"winnerTeamId":null,"lastSyncedAt":"2026-09-23T03:06:07.226Z","lastVerified":"2026-09-23T03:06:07.226Z","confidence":"high","event":{"id":"cs2-event-9256","name":"Stake Ranked Episode","slug":"stake-ranked-episode-4","imageUrl":null,"prizePool":100000,"currency":"USD","tier":"B","prestigeScore":55,"status":"upcoming","region":null,"startsAt":"2026-10-01T00:00:00.000Z","endsAt":"2026-10-04T23:59:59.000Z","eventId":"cs2-event-9256","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/21396af31d05530bf62f7baa70ee6f59.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-6667","name":"FaZe","slug":"faze","teamTag":"FAZE","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/2c2c7af6d0a6aad17cd9e46ce44fd133.webp","countryName":"Slovakia","countryCode":"SK","worldRanking":13,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/2653bc97908a106127134d6d94d50157.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/2653bc97908a106127134d6d94d50157.webp"},"team2":{"id":"cs2-team-7969","name":"Nemiga","slug":"nemiga","teamTag":"NEMIGA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f2950ddfe847711229d534feda9e6c0a.webp","countryName":"Russia","countryCode":"RU","worldRanking":36},"maps":[{"id":"cs2-match-2397941-map-1","matchId":"cs2-match-2397941","mapNumber":1,"mapName":"TBA","status":"upcoming","team1Score":null,"team2Score":null,"team1Halves":null,"team2Halves":null,"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-18T05:59:15.176Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{}}},{"id":"cs2-match-2397941-map-2","matchId":"cs2-match-2397941","mapNumber":2,"mapName":"TBA","status":"upcoming","team1Score":null,"team2Score":null,"team1Halves":null,"team2Halves":null,"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-18T05:59:15.209Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{}}}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/21396af31d05530bf62f7baa70ee6f59.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_played"}}},{"entityType":"cs2_match","id":"cs2-match-2397940","eventId":"cs2-event-9256","eventName":"Stake Ranked Episode","eventSlug":"stake-ranked-episode-4","stageName":null,"startsAt":"2026-10-01T15:00:00.000Z","endsAt":null,"bestOf":3,"status":"upcoming","team1Id":"cs2-team-6665","team2Id":"cs2-team-12474","team1Name":"Astralis","team2Name":"Alliance","team1Score":null,"team2Score":null,"winnerTeamId":null,"lastSyncedAt":"2026-09-23T03:06:06.797Z","lastVerified":"2026-09-23T03:06:06.797Z","confidence":"high","event":{"id":"cs2-event-9256","name":"Stake Ranked Episode","slug":"stake-ranked-episode-4","imageUrl":null,"prizePool":100000,"currency":"USD","tier":"B","prestigeScore":55,"status":"upcoming","region":null,"startsAt":"2026-10-01T00:00:00.000Z","endsAt":"2026-10-04T23:59:59.000Z","eventId":"cs2-event-9256","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/21396af31d05530bf62f7baa70ee6f59.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-6665","name":"Astralis","slug":"astralis","teamTag":"ASTRALIS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/115a7a4271abd37bd4103803c8361afd.svg","countryName":"Denmark","countryCode":"DK","worldRanking":11},"team2":{"id":"cs2-team-12474","name":"Alliance","slug":"alliance","teamTag":"ALLIANCE","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/cccad477eb24a51ef1c9909e0b7f1c22.webp","countryName":"Sweden","countryCode":"SE","worldRanking":21},"maps":[{"id":"cs2-match-2397940-map-1","matchId":"cs2-match-2397940","mapNumber":1,"mapName":"TBA","status":"upcoming","team1Score":null,"team2Score":null,"team1Halves":null,"team2Halves":null,"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-18T05:59:10.372Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{}}},{"id":"cs2-match-2397940-map-2","matchId":"cs2-match-2397940","mapNumber":2,"mapName":"TBA","status":"upcoming","team1Score":null,"team2Score":null,"team1Halves":null,"team2Halves":null,"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-18T05:59:10.402Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{}}}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/21396af31d05530bf62f7baa70ee6f59.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"not_played","resultStatus":"upcoming","isForfeit":false,"statsEligible":false,"unavailableReason":"not_played","dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_played"}}}],"meta":{"page":1,"limit":2,"total":14369,"filteredUnconfirmedLive":0,"count":2,"totalPages":7185,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/games/{gameId}/stats":{"get":{"summary":"Map player stats","description":"Per-player stats for one map (game).","operationId":"getCs2GamesGameIdStats","tags":["CS2"],"parameters":[{"name":"gameId","in":"path","required":true,"description":"Game (map) id from `/cs2/matches/{matchId}/games`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Map player stats","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_player_stat","id":"live-source-match-2398526-map-1-H0NeST","mapId":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","playerId":"cs2-player-24045","playerName":"H0NeST","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":16,"deaths":9,"assists":3,"plusMinus":7,"adr":null,"kast":null,"rating":1.41,"ratingVersion":"source_rating_3_0","headshots":11,"headshotPercent":null,"firstKills":1,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-23T02:57:57.779Z","player":{"id":"cs2-player-24045","nickname":"H0NeST","slug":"h0nest","realName":"Nazar Stefinko","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f2972c1aaaea60879f3c33ed6058b227.webp","countryName":"Ukraine","countryCode":"UA","age":18,"rating":1.26,"mapsPlayed":44,"careerStats":{"rating":1.31,"window":"past_3_months","opening":null,"sniping":null,"trading":null,"utility":null,"entrying":null,"clutching":null,"firepower":null,"mapsPlayed":50,"prizeMoney":3100,"careerRating":1.31,"windowRating":null,"missingFields":["age"],"profileStatus":"partial","lastKnownRating":1.31,"lastActiveTournament":"LiveFISSURE Playground 3","profileImageStatus":"success","profileImageClaimedAt":"2026-06-26T02:34:40.140807+02:00"},"currentTeamId":"cs2-team-13857","status":"inactive","primaryRole":"entry","roleConfidence":"medium","statusUpdatedAt":"2026-07-05T00:40:56.174Z","lastSyncedAt":"2026-09-23T03:04:06.671Z","lastVerified":"2026-09-23T03:04:06.671Z"},"team":{"id":"cs2-team-13857","name":"Iowa Stormboar","slug":"iowa-stormboar","teamTag":"IS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp","countryName":"United States","countryCode":"US","region":"Americas","worldRanking":177,"lastSyncedAt":"2026-09-23T03:09:17.179Z","lastVerified":"2026-09-23T03:09:17.179Z","confidence":"high"},"availableSubresources":[],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-23T02:57:57.779Z"},{"entityType":"cs2_player_stat","id":"live-source-match-2398526-map-1-Scorchyy","mapId":"cs2-match-2398526-map-1","matchId":"cs2-match-2398526","playerId":"cs2-player-24528","playerName":"Scorchyy","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":12,"deaths":6,"assists":1,"plusMinus":6,"adr":null,"kast":null,"rating":1.46,"ratingVersion":"source_rating_3_0","headshots":4,"headshotPercent":null,"firstKills":3,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-23T02:57:57.477Z","player":{"id":"cs2-player-24528","nickname":"Scorchyy","slug":"scorchyy","realName":"Brett Coolen","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/039375d98261969fba392fe26c052bab.webp","countryName":"Canada","countryCode":"CA","age":25,"rating":1.04,"mapsPlayed":44,"careerStats":{"rating":1.04,"window":"past_3_months","opening":37,"sniping":90,"trading":79,"utility":45,"entrying":53,"clutching":82,"firepower":50,"mapsPlayed":37,"prizeMoney":2700,"careerRating":1.04,"windowRating":1.04,"missingFields":[],"profileStatus":"success","lastKnownRating":1.04,"lastActiveTournament":"Live XSE Pro League","profileImageStatus":"success","profileImageResetAt":"2026-07-12T00:58:40.232478+00:00","profileImageClaimedAt":"2026-09-11T01:44:23.437477+00:00"},"currentTeamId":"cs2-team-13857","status":"active","primaryRole":"AWPer","roleConfidence":"high","statusUpdatedAt":"2026-07-05T20:54:28.233Z","lastSyncedAt":"2026-09-23T03:04:06.573Z","lastVerified":"2026-09-23T03:04:06.573Z"},"team":{"id":"cs2-team-13857","name":"Iowa Stormboar","slug":"iowa-stormboar","teamTag":"IS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c875a66adefc7e50e0b34ba4b97bed5c.webp","countryName":"United States","countryCode":"US","region":"Americas","worldRanking":177,"lastSyncedAt":"2026-09-23T03:09:17.179Z","lastVerified":"2026-09-23T03:09:17.179Z","confidence":"high"},"availableSubresources":[],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-23T02:57:57.477Z"}],"meta":{"count":10,"dataAvailable":true,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"playerSkins":[],"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"limit":10,"total":10,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/games/{gameId}/player-stats":{"get":{"summary":"Map player stats","description":"Per-player stats for one map (game).\n\nSame response as `GET /api/v1/cs2/games/{gameId}/stats`.","operationId":"getCs2GamesGameIdPlayerStats","tags":["CS2"],"parameters":[{"name":"gameId","in":"path","required":true,"description":"Game (map) id from `/cs2/matches/{matchId}/games`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Map player stats"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/games/{gameId}/stats"}},"/cs2/games/{gameId}/rounds":{"get":{"summary":"Map rounds","description":"Round-by-round results for one map: winner, side and how each round ended.","operationId":"getCs2GamesGameIdRounds","tags":["CS2"],"parameters":[{"name":"gameId","in":"path","required":true,"description":"Game (map) id from `/cs2/matches/{matchId}/games`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Map rounds","content":{"application/json":{"example":{"success":true,"data":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","dataQuality":"unavailable","message":"Round-level bomb event data is not available for this map yet."},"meta":{"count":0,"dataAvailable":false,"limit":0,"total":0,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/games/{gameId}/events":{"get":{"summary":"Map events","description":"Kills, utility, bomb and round events for one map, where demo data exists.","operationId":"getCs2GamesGameIdEvents","tags":["CS2"],"parameters":[{"name":"gameId","in":"path","required":true,"description":"Game (map) id from `/cs2/matches/{matchId}/games`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 5000; larger values are reduced to 5000.","schema":{"type":"integer","minimum":1,"maximum":5000,"default":1000}}],"responses":{"200":{"description":"Map events","content":{"application/json":{"example":{"success":true,"data":[{"id":"live_evt_0","type":"BombPlanted","round":null,"source":"live","eventId":"3d6e19c0feb325ab753bc9cefe47430a","payload":{"bombSite":"A","tPlayers":2,"ctPlayers":1,"playerName":"TyRa","playerNick":"TyRa"},"bombSite":"A","tPlayers":2,"ctPlayers":1,"eventType":"BombPlanted","observedAt":"2026-09-23T02:59:52.534Z","playerName":"TyRa","playerNick":"TyRa","webhookEligible":true},{"id":"live_evt_1","type":"BombPlanted","round":null,"source":"live","eventId":"d5e85dd74809ea07557b244c6ab64254","payload":{"bombSite":"B","tPlayers":4,"ctPlayers":3,"playerName":"Valter0k","playerNick":"Valter0k"},"bombSite":"B","tPlayers":4,"ctPlayers":3,"eventType":"BombPlanted","observedAt":"2026-09-23T02:59:52.535Z","playerName":"Valter0k","playerNick":"Valter0k","webhookEligible":true}],"meta":{"count":64,"dataAvailable":true,"source":"live_state","dataScope":"live_live feed_events","unavailableEventTypes":[],"limit":64,"total":64,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/games/{gameId}":{"get":{"summary":"Game details","description":"One map (game) of a match with score, halves and winner.","operationId":"getCs2GamesGameId","tags":["CS2"],"parameters":[{"name":"gameId","in":"path","required":true,"description":"Game (map) id from `/cs2/matches/{matchId}/games`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Game details","content":{"application/json":{"example":{"success":true,"data":{"id":"cs2-match-2398526-map-1","entityType":"cs2_game","matchId":"cs2-match-2398526","mapNumber":1,"map":"Dust2","pickTeamId":null,"winnerTeamId":"cs2-team-13857","score":{"team1":13,"team2":2},"halfScores":{"team1":[10,3],"team2":[2,0]},"team1Halves":[10,3],"team2Halves":[2,0],"overtime":null,"durationRounds":15,"duration":{"rounds":15,"source":"stored"},"status":"completed","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"playerStatsAvailable":true,"playerStats":[{"playerId":"cs2-player-24045","playerName":"H0NeST","teamId":"cs2-team-13857","teamName":"Iowa Stormboar","kills":16,"deaths":9,"assists":3,"plusMinus":7,"adr":null,"kast":null,"rating":1.41,"ratingVersion":"source_rating_3_0","headshots":11,"headshotPercent":null,"openingKills":1,"openingDeaths":1,"rating3Profile":{"rating3":null,"rating3Available":false,"subratings":{"kills":16,"damage":null,"survival":2.1111,"kast":null,"multiKills":null,"roundSwing":null},"openingDuels":{"openingKills":1,"openingDeaths":1,"successRate":0.5},"unavailableSubratings":["multi_kills","round_swing"],"rating2":1.41},"source":"live","lastSyncedAt":"2026-09-23T02:57:57.779Z"},{"playerId":"cs2-player-24467","playerName":"Johan","teamId":"cs2-team-12971","teamName":"Wanted Goons","kills":3,"deaths":14,"assists":2,"plusMinus":-11,"adr":null,"kast":null,"rating":0.41,"ratingVersion":"source_rating_3_0","headshots":2,"headshotPercent":null,"openingKills":1,"openingDeaths":2,"rating3Profile":{"rating3":null,"rating3Available":false,"subratings":{"kills":3,"damage":null,"survival":0.3571,"kast":null,"multiKills":null,"roundSwing":null},"openingDuels":{"openingKills":1,"openingDeaths":2,"successRate":0.3333},"unavailableSubratings":["multi_kills","round_swing"],"rating2":0.41},"source":"live","lastSyncedAt":"2026-09-23T02:57:58.661Z"}],"roundsAvailable":false,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"weaponStatsAvailable":false,"weaponUsage":[],"dataCompleteness":{"score":true,"winner":true,"halfScores":true,"playerStats":true,"objectiveStats":false,"weaponUsage":false},"dataAvailability":{"playerStats":{"dataAvailable":true,"unavailableReason":null}}},"meta":{"dataAvailable":true,"source":"match_maps"}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/maps":{"get":{"summary":"Map catalog","description":"Every competitive map with its name and image.","operationId":"getCs2Maps","tags":["CS2"],"responses":{"200":{"description":"Map catalog","content":{"application/json":{"example":{"success":true,"data":[{"id":"de_ancient","slug":"ancient","name":"Ancient","mapNameCanonical":"Ancient","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png"},{"id":"de_anubis","slug":"anubis","name":"Anubis","mapNameCanonical":"Anubis","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png"}],"meta":{"count":10,"source":"static_catalog","limit":10,"total":10,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/map-pool":{"get":{"summary":"Active map pool","description":"The maps in the current competitive pool.","operationId":"getCs2MapPool","tags":["CS2"],"responses":{"200":{"description":"Active map pool","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_active_duty_map_pool","asOf":"2026-09-23","poolName":"Active Duty","inPoolCount":7,"maps":[{"id":"de_ancient","slug":"ancient","name":"Ancient","status":"in_pool","inPoolSince":"2023-09-27","removedAt":null,"mapNameCanonical":"Ancient","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png","inPool":true,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]}},{"id":"de_anubis","slug":"anubis","name":"Anubis","status":"in_pool","inPoolSince":"2023-09-27","removedAt":null,"mapNameCanonical":"Anubis","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","inPool":true,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]}}],"inPool":[{"id":"de_ancient","slug":"ancient","name":"Ancient","status":"in_pool","inPoolSince":"2023-09-27","removedAt":null,"mapNameCanonical":"Ancient","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/ancient.png","inPool":true},{"id":"de_anubis","slug":"anubis","name":"Anubis","status":"in_pool","inPoolSince":"2023-09-27","removedAt":null,"mapNameCanonical":"Anubis","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","inPool":true}],"removed":[{"id":"de_overpass","slug":"overpass","name":"Overpass","status":"removed","inPoolSince":"2025-07-01","removedAt":"2026-07-06","mapNameCanonical":"Overpass","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/overpass.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/overpass.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/overpass.png","inPool":false},{"id":"de_train","slug":"train","name":"Train","status":"removed","inPoolSince":"2025-01-01","removedAt":"2026-01-01","mapNameCanonical":"Train","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/train.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/train.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/train.png","inPool":false}],"source":"valve_premier_rotation","notes":"Season 5 (2026-07-06): Cache replaced Overpass."},"meta":{"count":10,"inPool":7,"source":"valve_premier_rotation","dataAvailable":true,"limit":10,"total":10,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/maps/pool":{"get":{"summary":"Active map pool","description":"The maps in the current competitive pool.\n\nSame response as `GET /api/v1/cs2/map-pool`.","operationId":"getCs2MapsPool","tags":["CS2"],"responses":{"200":{"description":"Active map pool"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/map-pool"}},"/cs2/weapons":{"get":{"summary":"Weapon catalog","description":"CS2 weapons with their category (rifle, pistol, SMG and so on).","operationId":"getCs2Weapons","tags":["CS2"],"responses":{"200":{"description":"Weapon catalog","content":{"application/json":{"example":{"success":true,"data":[{"id":"ak47","slug":"ak47","name":"AK-47","category":"rifle"},{"id":"m4a1","slug":"m4a1","name":"M4A1-S","category":"rifle"}],"meta":{"count":18,"source":"static_catalog","limit":18,"total":18,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/regions":{"get":{"summary":"Regions","description":"Regions used for teams and regional rankings.","operationId":"getCs2Regions","tags":["CS2"],"responses":{"200":{"description":"Regions","content":{"application/json":{"example":{"success":true,"data":[{"id":"europe","slug":"europe","name":"Europe"},{"id":"americas","slug":"americas","name":"Americas"}],"meta":{"count":7,"source":"static_catalog","limit":7,"total":7,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/leagues":{"get":{"summary":"Leagues","description":"Leagues and circuits that group events.","operationId":"getCs2Leagues","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Leagues","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_event","id":"cs2-event-ranked-episode-4-open-qualifier","name":"Ranked Episode 4 Open Qualifier","slug":"ranked-episode-4-open-qualifier","tier":null,"region":null,"status":null,"location":null,"bannerImageUrl":null,"eventStructure":null,"prizeDistribution":null,"stats":null,"availableSubresources":["teams","results"],"unavailableSubresources":["matches","standings"],"unavailableFields":{"imageUrl":{"reason":"event_field_unavailable"},"prizePool":{"reason":"event_field_unavailable"},"currency":{"reason":"event_field_unavailable"},"location":null,"format":{"reason":"event_field_unavailable"},"teamCount":{"reason":"event_field_unavailable"},"standings":{"reason":"event_field_unavailable"},"startsAt":{"reason":"event_field_unavailable"},"endsAt":{"reason":"event_field_unavailable"}},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":null},{"entityType":"cs2_event","id":"cs2-event-8699","name":"Radio Popular Roman Imperium Cup II","slug":"radio-popular-roman-imperium-cup-ii","tier":null,"region":null,"status":"completed","location":null,"bannerImageUrl":null,"eventStructure":null,"prizeDistribution":null,"stats":null,"availableSubresources":["teams","results"],"unavailableSubresources":["matches","standings"],"unavailableFields":{"imageUrl":{"reason":"event_field_unavailable"},"prizePool":{"reason":"event_field_unavailable"},"currency":{"reason":"event_field_unavailable"},"location":null,"format":{"reason":"event_field_unavailable"},"teamCount":{"reason":"event_field_unavailable"},"standings":{"reason":"event_field_unavailable"},"startsAt":{"reason":"event_field_unavailable"},"endsAt":{"reason":"event_field_unavailable"}},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":null}],"meta":{"count":2,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/skins/trending":{"get":{"summary":"Trending skins","description":"Skins with the largest recent price moves.","operationId":"getCs2SkinsTrending","tags":["CS2"],"parameters":[{"name":"direction","in":"query","required":false,"description":"Filter by `direction`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 50; larger values are reduced to 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":8}},{"name":"minPrice","in":"query","required":false,"description":"Minimum price (USD).","schema":{"type":"string"}},{"name":"min_price","in":"query","required":false,"description":"Minimum price (USD).","schema":{"type":"string"}},{"name":"period","in":"query","required":false,"description":"Filter by `period`.","schema":{"type":"string"}},{"name":"range","in":"query","required":false,"description":"Filter by `range`.","schema":{"type":"string"}},{"name":"timeframe","in":"query","required":false,"description":"Filter by `timeframe`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Trending skins","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_skin_trending","timeframe":"7d","gainers":[{"entityType":"cs2_skin_trending","skinItemId":"cs2-skin-547e24b7ec731a833e493938","marketHashName":"MP9 | Starlight Protector (Field-Tested)","slug":"mp9-starlight-protector-field-tested-547e24b7","imageUrl":null,"weapon":"MP9","skinName":"Starlight Protector","exterior":"Field-Tested","category":"skin","stattrak":false,"souvenir":false,"currency":"USD","currentPrice":61.78,"currentCents":6178,"observedAt":"2026-08-02T13:03:51.110Z","changePct":1.3,"change1d":0,"change7d":1.3,"change30d":0.36,"change90d":-1.22,"change180d":-10.7,"change365d":3390.4,"sparkline":[6200,6200],"points30d":30,"points365d":465,"volume30d":780261,"avgVolume30d":6002.007692307692},{"entityType":"cs2_skin_trending","skinItemId":"cs2-skin-c7e6b7658c7efa7d995d3bec","marketHashName":"SSG 08 | Dragonfire (Field-Tested)","slug":"ssg-08-dragonfire-field-tested-c7e6b765","imageUrl":null,"weapon":"SSG 08","skinName":"Dragonfire","exterior":"Field-Tested","category":"skin","stattrak":false,"souvenir":false,"currency":"USD","currentPrice":253.31,"currentCents":25331,"observedAt":"2026-08-02T13:03:49.405Z","changePct":1.09,"change1d":0,"change7d":1.09,"change30d":0.66,"change90d":-14.13,"change180d":-18.19,"change365d":1874.36,"sparkline":[25325,25325],"points30d":30,"points365d":465,"volume30d":288207,"avgVolume30d":2216.976923076923}],"losers":[{"entityType":"cs2_skin_trending","skinItemId":"cs2-skin-4effe99dc6bb1a1a474ab49d","marketHashName":"★ Sport Gloves | Hedge Maze (Field-Tested)","slug":"sport-gloves-hedge-maze-field-tested-4effe99d","imageUrl":null,"weapon":"Sport Gloves","skinName":"Hedge Maze","exterior":"Field-Tested","category":"skin","stattrak":false,"souvenir":false,"currency":"USD","currentPrice":4147.69,"currentCents":414769,"observedAt":"2026-08-02T13:03:50.202Z","changePct":-5.67,"change1d":0,"change7d":-5.67,"change30d":-15.26,"change90d":-13.28,"change180d":-27.65,"change365d":-51.26,"sparkline":[412961,412961],"points30d":30,"points365d":465,"volume30d":356784,"avgVolume30d":2744.492307692308},{"entityType":"cs2_skin_trending","skinItemId":"cs2-skin-20fa5cb15f4a27894be1d0b8","marketHashName":"M4A1-S | Fade (Factory New)","slug":"m4a1-s-fade-factory-new-20fa5cb1","imageUrl":null,"weapon":"M4A1-S","skinName":"Fade","exterior":"Factory New","category":"skin","stattrak":false,"souvenir":false,"currency":"USD","currentPrice":214.74,"currentCents":21474,"observedAt":"2026-07-31T08:02:25.650Z","changePct":-5.36,"change1d":0,"change7d":-5.36,"change30d":-23.37,"change90d":-38.76,"change180d":-48.28,"change365d":-50.97,"sparkline":[28205,29000],"points30d":30,"points365d":345,"volume30d":214260,"avgVolume30d":21426}],"dataAvailable":true},"meta":{"timeframe":"7d","minPrice":50,"limit":2,"computedAt":"2026-08-03T19:38:22.010Z","gainersCount":2,"losersCount":2,"count":0,"total":0,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/skins/search":{"get":{"summary":"List skins","description":"Skins with filters for name, weapon, rarity and price.\n\nSame response as `GET /api/v1/cs2/skins`.","operationId":"getCs2SkinsSearch","tags":["CS2"],"parameters":[{"name":"category","in":"query","required":false,"description":"Filter by `category`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":50}},{"name":"maxPrice","in":"query","required":false,"description":"Filter by `maxPrice`.","schema":{"type":"string"}},{"name":"max_price","in":"query","required":false,"description":"Maximum price (USD).","schema":{"type":"string"}},{"name":"minPrice","in":"query","required":false,"description":"Minimum price (USD).","schema":{"type":"string"}},{"name":"min_price","in":"query","required":false,"description":"Minimum price (USD).","schema":{"type":"string"}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"provider","in":"query","required":false,"description":"Filter by `provider`.","schema":{"type":"string"}},{"name":"q","in":"query","required":true,"description":"Search text.","schema":{"type":"string"}},{"name":"rarity","in":"query","required":false,"description":"Skin rarity.","schema":{"type":"string"}},{"name":"skin_name","in":"query","required":false,"description":"Filter by `skin_name`.","schema":{"type":"string"}},{"name":"weapon","in":"query","required":false,"description":"Weapon name.","schema":{"type":"string"}}],"responses":{"200":{"description":"List skins"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/skins"}},"/cs2/skins/{skinIdOrSlug}/prices":{"get":{"summary":"Skin prices","description":"Current prices for a skin on each marketplace that lists it.","operationId":"getCs2SkinsSkinIdOrSlugPrices","tags":["CS2"],"parameters":[{"name":"skinIdOrSlug","in":"path","required":true,"description":"Skin id or slug.","schema":{"type":"string"}},{"name":"provider","in":"query","required":false,"description":"Filter by `provider`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Skin prices","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_skin_prices","skin":{"id":"cs2-skin-e2e778aa2131cbdbee537b9f","marketHashName":"★ Sport Gloves | Nocts (Field-Tested)","slug":"sport-gloves-nocts-field-tested-e2e778aa","itemName":"★ Sport Gloves | Nocts (Field-Tested)","weapon":"Sport Gloves","skinName":"Nocts","category":"glove","rarity":"Extraordinary","exterior":"Field-Tested","stattrak":false,"souvenir":false,"imageUrl":null,"firstSeenAt":"2026-07-05T03:28:07.857Z","lastSyncedAt":"2026-09-23T03:09:15.542Z"},"prices":[{"provider":"avanmarket","currency":"USD","price":591.14,"priceCents":59114,"observedAt":"2026-09-23T03:08:56.297Z","offersCount":91,"count":91,"providerName":"Avan.Market","providerIcon":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9f2f1a901a86db9b59f73c0500004646.webp","buyUrl":"https://avan.market/market/cs/%E2%98%85-sport-gloves-nocts-field-tested?currency=1"},{"provider":"buff163","currency":"USD","price":564.01,"priceCents":56401,"observedAt":"2026-09-23T03:08:56.297Z","offersCount":825,"count":825,"providerName":"Buff.163","providerIcon":"https://api.citoapi.com/api/v1/public/images/cs2/logos/5e05ca45e8faaff96fcf909e2b2f7505.webp","buyUrl":"https://buff.163.com/market/csgo#tab=selling&search=%E2%98%85%20Sport%20Gloves%20%7C%20Nocts%20(Field-Tested)"}],"dataAvailable":true,"unavailableReason":null},"meta":{"count":200,"provider":"all","limit":200,"total":200,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/skins/{skinIdOrSlug}/order-book":{"get":{"summary":"Skin order book","description":"Buy and sell orders for a skin, where a marketplace exposes them.","operationId":"getCs2SkinsSkinIdOrSlugOrderBook","tags":["CS2"],"parameters":[{"name":"skinIdOrSlug","in":"path","required":true,"description":"Skin id or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Skin order book","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_skin_order_book","skin":{"id":"cs2-skin-e2e778aa2131cbdbee537b9f","marketHashName":"★ Sport Gloves | Nocts (Field-Tested)","slug":"sport-gloves-nocts-field-tested-e2e778aa","itemName":"★ Sport Gloves | Nocts (Field-Tested)","weapon":"Sport Gloves","skinName":"Nocts","category":"glove","rarity":"Extraordinary","exterior":"Field-Tested","stattrak":false,"souvenir":false,"imageUrl":null,"firstSeenAt":"2026-07-05T03:28:07.857Z","lastSyncedAt":"2026-09-23T03:09:15.542Z"},"orderBook":{"currency":"USD","buyTotal":null,"buyOrders":[],"sellTotal":6436,"cashSpread":null,"dataPoints":6436,"sellOrders":[{"side":"sell","count":19,"price":559.35,"currency":"USD","provider":"skins","priceCents":55935},{"side":"sell","count":983,"price":560.13,"currency":"USD","provider":"youpin","priceCents":56013}],"steamSpread":null,"steamBuyOrder":null,"cashSpreadCents":null,"highestBuyOrder":null,"lowestSellOrder":{"side":"sell","count":19,"price":559.35,"currency":"USD","provider":"skins","priceCents":55935},"steamSpreadCents":null},"dataAvailable":true,"unavailableReason":null},"meta":{"buyCount":0,"sellCount":25}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/skins/{skinIdOrSlug}/history":{"get":{"summary":"Skin price history","description":"Price history for a skin.","operationId":"getCs2SkinsSkinIdOrSlugHistory","tags":["CS2"],"parameters":[{"name":"skinIdOrSlug","in":"path","required":true,"description":"Skin id or slug.","schema":{"type":"string"}},{"name":"days","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}},{"name":"provider","in":"query","required":false,"description":"Filter by `provider`.","schema":{"type":"string"}},{"name":"range","in":"query","required":false,"description":"Filter by `range`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Skin price history","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_skin_price_history","skin":{"id":"cs2-skin-e2e778aa2131cbdbee537b9f","marketHashName":"★ Sport Gloves | Nocts (Field-Tested)","slug":"sport-gloves-nocts-field-tested-e2e778aa","itemName":"★ Sport Gloves | Nocts (Field-Tested)","weapon":"Sport Gloves","skinName":"Nocts","category":"glove","rarity":"Extraordinary","exterior":"Field-Tested","stattrak":false,"souvenir":false,"imageUrl":null,"firstSeenAt":"2026-07-05T03:28:07.857Z","lastSyncedAt":"2026-09-23T03:09:15.542Z"},"history":[{"provider":"cheapest","currency":"USD","bucket":"2020-12-11T00:00:00.000Z","avgPrice":364.42,"minPrice":364.42,"maxPrice":364.42,"price":364.42,"priceCents":36442,"volume":0,"samples":1},{"provider":"cheapest","currency":"USD","bucket":"2020-12-12T00:00:00.000Z","avgPrice":360.09,"minPrice":360.09,"maxPrice":360.09,"price":360.09,"priceCents":36009,"volume":0,"samples":1}],"dataAvailable":true,"unavailableReason":null},"meta":{"count":2010,"provider":"all","days":99999,"limit":2010,"total":2010,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/skins/{skinIdOrSlug}":{"get":{"summary":"Skin details","description":"One skin: weapon, rarity, collection, image and price summary.","operationId":"getCs2SkinsSkinIdOrSlug","tags":["CS2"],"parameters":[{"name":"skinIdOrSlug","in":"path","required":true,"description":"Skin id or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Skin details","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_skin","id":"cs2-skin-e2e778aa2131cbdbee537b9f","marketHashName":"★ Sport Gloves | Nocts (Field-Tested)","slug":"sport-gloves-nocts-field-tested-e2e778aa","itemName":"★ Sport Gloves | Nocts (Field-Tested)","weapon":"Sport Gloves","skinName":"Nocts","category":"glove","rarity":"Extraordinary","exterior":"Field-Tested","stattrak":false,"souvenir":false,"imageUrl":null,"firstSeenAt":"2026-07-05T03:28:07.857Z","lastSyncedAt":"2026-09-23T03:09:15.542Z","dataAvailable":true,"latestPrices":[{"provider":"avanmarket","currency":"USD","price":591.14,"priceCents":59114,"observedAt":"2026-09-23T03:08:56.297Z","offersCount":91,"count":91,"providerName":"Avan.Market","providerIcon":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9f2f1a901a86db9b59f73c0500004646.webp","buyUrl":"https://avan.market/market/cs/%E2%98%85-sport-gloves-nocts-field-tested?currency=1"},{"provider":"buff163","currency":"USD","price":564.01,"priceCents":56401,"observedAt":"2026-09-23T03:08:56.297Z","offersCount":825,"count":825,"providerName":"Buff.163","providerIcon":"https://api.citoapi.com/api/v1/public/images/cs2/logos/5e05ca45e8faaff96fcf909e2b2f7505.webp","buyUrl":"https://buff.163.com/market/csgo#tab=selling&search=%E2%98%85%20Sport%20Gloves%20%7C%20Nocts%20(Field-Tested)"}],"availableSubresources":["prices","history"]},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/skins":{"get":{"summary":"List skins","description":"Skins with filters for name, weapon, rarity and price.","operationId":"getCs2Skins","tags":["CS2"],"parameters":[{"name":"category","in":"query","required":false,"description":"Filter by `category`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":50}},{"name":"maxPrice","in":"query","required":false,"description":"Filter by `maxPrice`.","schema":{"type":"string"}},{"name":"max_price","in":"query","required":false,"description":"Maximum price (USD).","schema":{"type":"string"}},{"name":"minPrice","in":"query","required":false,"description":"Minimum price (USD).","schema":{"type":"string"}},{"name":"min_price","in":"query","required":false,"description":"Minimum price (USD).","schema":{"type":"string"}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"provider","in":"query","required":false,"description":"Filter by `provider`.","schema":{"type":"string"}},{"name":"q","in":"query","required":false,"description":"Search text.","schema":{"type":"string"}},{"name":"rarity","in":"query","required":false,"description":"Skin rarity.","schema":{"type":"string"}},{"name":"skin_name","in":"query","required":false,"description":"Filter by `skin_name`.","schema":{"type":"string"}},{"name":"weapon","in":"query","required":false,"description":"Weapon name.","schema":{"type":"string"}}],"responses":{"200":{"description":"List skins","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_skin","id":"cs2-skin-e2e778aa2131cbdbee537b9f","marketHashName":"★ Sport Gloves | Nocts (Field-Tested)","slug":"sport-gloves-nocts-field-tested-e2e778aa","itemName":"★ Sport Gloves | Nocts (Field-Tested)","weapon":"Sport Gloves","skinName":"Nocts","category":"glove","rarity":"Extraordinary","exterior":"Field-Tested","stattrak":false,"souvenir":false,"imageUrl":null,"firstSeenAt":"2026-07-05T03:28:07.857Z","lastSyncedAt":"2026-09-23T03:09:15.542Z","latestProvider":"avanmarket","latestPrice":591.14,"latestPriceCents":59114,"latestCurrency":"USD","latestObservedAt":"2026-09-23T03:08:56.297Z","dataAvailable":true,"availableSubresources":["prices","history"]},{"entityType":"cs2_skin","id":"cs2-skin-c5e0d01b9d430d8e46c554c0","marketHashName":"M4A1-S | Blue Phosphor (Factory New)","slug":"m4a1-s-blue-phosphor-factory-new-c5e0d01b","itemName":"M4A1-S | Blue Phosphor (Factory New)","weapon":"M4A1-S","skinName":"Blue Phosphor","category":"skin","rarity":"Classified","exterior":"Factory New","stattrak":false,"souvenir":false,"imageUrl":null,"firstSeenAt":"2026-07-05T03:22:53.202Z","lastSyncedAt":"2026-09-23T03:09:05.648Z","latestProvider":"balticskins","latestPrice":586.95,"latestPriceCents":58695,"latestCurrency":"USD","latestObservedAt":"2026-09-23T03:08:56.272Z","dataAvailable":true,"availableSubresources":["prices","history"]}],"meta":{"page":1,"limit":2,"total":8783,"count":2,"totalPages":4392,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/maps/{mapId}/stats":{"get":{"summary":"Map player stats","description":"Per-player stats for one map (game).\n\nSame response as `GET /api/v1/cs2/games/{gameId}/stats`.","operationId":"getCs2MapsMapIdStats","tags":["CS2"],"parameters":[{"name":"mapId","in":"path","required":true,"description":"Game (map) id from `/cs2/matches/{matchId}/games`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Map player stats"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/games/{gameId}/stats"}},"/cs2/maps/{mapId}/player-stats":{"get":{"summary":"Map player stats","description":"Per-player stats for one map (game).\n\nSame response as `GET /api/v1/cs2/games/{gameId}/stats`.","operationId":"getCs2MapsMapIdPlayerStats","tags":["CS2"],"parameters":[{"name":"mapId","in":"path","required":true,"description":"Game (map) id from `/cs2/matches/{matchId}/games`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Map player stats"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/games/{gameId}/stats"}},"/cs2/maps/{mapId}/rounds":{"get":{"summary":"Map rounds","description":"Round-by-round results for one map: winner, side and how each round ended.\n\nSame response as `GET /api/v1/cs2/games/{gameId}/rounds`.","operationId":"getCs2MapsMapIdRounds","tags":["CS2"],"parameters":[{"name":"mapId","in":"path","required":true,"description":"Game (map) id from `/cs2/matches/{matchId}/games`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Map rounds"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/games/{gameId}/rounds"}},"/cs2/teams/rankings":{"get":{"summary":"Team rankings","description":"The latest world team ranking, one row per team, with points and change since the previous ranking.\n\nSame response as `GET /api/v1/cs2/rankings`.","operationId":"getCs2TeamsRankings","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"source","in":"query","required":false,"description":"Ranking to use: omit for Valve Regional Standings, or `world` for the world ranking filtered to this region.","schema":{"type":"string"}}],"responses":{"200":{"description":"Team rankings"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/rankings"}},"/cs2/teams/{teamIdOrSlug}/transfers":{"get":{"summary":"Team transfers","description":"Players who joined or left a team.","operationId":"getCs2TeamsTeamIdOrSlugTransfers","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"after","in":"query","required":false,"description":"Only rows after this time (ISO 8601).","schema":{"type":"string"}},{"name":"before","in":"query","required":false,"description":"Only rows before this time (ISO 8601).","schema":{"type":"string"}},{"name":"from_team","in":"query","required":false,"description":"Filter by `from_team`.","schema":{"type":"string"}},{"name":"include_computed","in":"query","required":false,"description":"Filter by `include_computed`.","schema":{"type":"string"}},{"name":"include_undated","in":"query","required":false,"description":"Filter by `include_undated`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"player","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"player_id","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter by status.","schema":{"type":"string"}},{"name":"team","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"team_id","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}},{"name":"to_team","in":"query","required":false,"description":"Filter by `to_team`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Team transfers","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_transfers","dataAvailable":true,"transfers":[{"transferKey":"profile-history:2025-01-01:source-player-18221:source-team-9565:source-team-4494:joined","playerId":"cs2-player-18221","playerName":"Spinx","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/252b36c5681479de69062d9a8b90736e.webp","fromTeamId":"cs2-team-9565","fromTeamName":"Vitality","fromTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","fromTeamAlternateLogoUrl":null,"fromTeamDarkUiLogoUrl":null,"fromTeamIsNoTeam":false,"toTeamId":"cs2-team-4494","toTeamName":"MOUZ","toTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0ad08abfc7542d74ca19505208967289.svg","toTeamAlternateLogoUrl":null,"toTeamDarkUiLogoUrl":null,"toTeamIsNoTeam":false,"status":"joined","role":null,"transferDate":"2025-01-01T12:00:00.000Z","joinDate":"2025-01-01T12:00:00.000Z","leaveDate":null,"detectedAt":"2026-07-10T00:54:23.160Z"},{"transferKey":"profile-history:2025-01-01:source-player-11816:source-team-6667:source-team-9565:joined","playerId":"cs2-player-11816","playerName":"ropz","playerImageUrl":null,"fromTeamId":"cs2-team-6667","fromTeamName":"FaZe","fromTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/2c2c7af6d0a6aad17cd9e46ce44fd133.webp","fromTeamAlternateLogoUrl":null,"fromTeamDarkUiLogoUrl":null,"fromTeamIsNoTeam":false,"toTeamId":"cs2-team-9565","toTeamName":"Vitality","toTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","toTeamAlternateLogoUrl":null,"toTeamDarkUiLogoUrl":null,"toTeamIsNoTeam":false,"status":"joined","role":null,"transferDate":"2025-01-01T12:00:00.000Z","joinDate":"2025-01-01T12:00:00.000Z","leaveDate":null,"detectedAt":"2026-07-09T20:16:18.067Z"}]},"meta":{"count":2,"total":33,"page":1,"limit":2,"dataAvailable":true,"totalPages":17,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/roster":{"get":{"summary":"Team roster","description":"A team's current players and coach, with role, country and join date where known.","operationId":"getCs2TeamsTeamIdOrSlugRoster","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}}],"responses":{"200":{"description":"Team roster","content":{"application/json":{"example":{"success":true,"data":[{"teamId":"cs2-team-9565","teamName":"Vitality","playerId":"cs2-player-11893","playerNickname":"ZywOo","playerName":"Mathieu Herbaut","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp","playerSlug":"zywoo","countryName":"France","countryCode":"FR","age":25,"rating":1.31,"mapsPlayed":167,"role":"AWPer","fromAt":"2018-10-01T12:00:00.000Z","toAt":null,"isActive":true,"tenureKnown":true,"tenureUnavailableReason":null,"lastSyncedAt":"2026-09-23T00:11:42.818Z"},{"teamId":"cs2-team-9565","teamName":"Vitality","playerId":"cs2-player-9086","playerNickname":"XTQZZZ","playerName":"Rémy Quoniam","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b689e77e923fa8285d5fd19cd911b6b0.webp","playerSlug":"xtqzzz","countryName":"France","countryCode":"FR","age":37,"rating":0,"mapsPlayed":null,"role":"coach","fromAt":null,"toAt":null,"isActive":true,"tenureKnown":false,"tenureUnavailableReason":"source_join_date_unavailable","lastSyncedAt":"2026-09-23T00:11:42.387Z"}],"meta":{"count":6,"rosterCheckedAt":"2026-09-23T00:11:43.764Z","rosterStatus":"complete","noActivePlayers":false,"unknownRosterSlots":0,"partialRoster":false,"activePlayerCount":5,"coachCount":1,"rosterTenureKnown":false,"rosterTenureUnavailableReason":"source_join_date_unavailable","activePlayers":5,"coaches":1,"lastKnownRoster":false,"limit":6,"total":6,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/roster-history":{"get":{"summary":"Team roster history","description":"Every player who has played for a team, with start and end dates.","operationId":"getCs2TeamsTeamIdOrSlugRosterHistory","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"changesLimit","in":"query","required":false,"description":"Filter by `changesLimit`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Team roster history","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_team_roster_history","teamId":"cs2-team-9565","teamName":"Vitality","dataAvailable":true,"rosterStatus":"partial","noActivePlayers":false,"unknownRosterSlots":4,"partialRoster":true,"activePlayerCount":1,"coachCount":0,"rosterTenureKnown":true,"rosterTenureUnavailableReason":null,"currentRoster":[{"teamId":"cs2-team-9565","teamName":"Vitality","playerId":"cs2-player-11816","playerNickname":"ropz","playerName":"Robin Kool","playerImageUrl":null,"playerSlug":"ropz","countryName":"Estonia","countryCode":"EE","age":26,"rating":1.05,"mapsPlayed":170,"role":"rifler","fromAt":"2018-10-01T12:00:00.000Z","toAt":null,"isActive":true,"tenureKnown":true,"tenureUnavailableReason":null,"lastSyncedAt":"2026-09-23T00:11:43.764Z"}],"activePlayers":[{"teamId":"cs2-team-9565","teamName":"Vitality","playerId":"cs2-player-11816","playerNickname":"ropz","playerName":"Robin Kool","playerImageUrl":null,"playerSlug":"ropz","countryName":"Estonia","countryCode":"EE","age":26,"rating":1.05,"mapsPlayed":170,"role":"rifler","fromAt":"2018-10-01T12:00:00.000Z","toAt":null,"isActive":true,"tenureKnown":true,"tenureUnavailableReason":null,"lastSyncedAt":"2026-09-23T00:11:43.764Z"}],"coach":null,"coaches":[],"historicalMemberships":[{"teamId":"cs2-team-9565","teamName":"Vitality","playerId":"cs2-player-11816","playerNickname":"ropz","playerName":"Robin Kool","playerImageUrl":null,"playerSlug":"ropz","countryName":"Estonia","countryCode":"EE","age":26,"rating":1.05,"mapsPlayed":170,"role":"rifler","fromAt":"2018-10-01T12:00:00.000Z","toAt":null,"isActive":true,"tenureKnown":true,"tenureUnavailableReason":null,"lastSyncedAt":"2026-09-23T00:11:43.764Z"}],"rosterChanges":[{"changeId":"abded9f6-37f9-499a-a1b4-47cb0ae1b789","changeType":"join","teamId":"cs2-team-9565","fromTeamId":null,"toTeamId":"cs2-team-9565","teamName":"Vitality","playerId":"cs2-player-9086","playerName":"XTQZZZ","roleBefore":null,"roleAfter":"coach","effectiveAt":"2026-07-24T14:11:58.925Z","detectedAt":"2026-07-24T14:11:58.926Z","confidence":"medium"},{"changeId":"915264bd-9a63-4803-a347-bc2858460ab0","changeType":"leave","teamId":"cs2-team-6073","fromTeamId":"cs2-team-6073","toTeamId":"cs2-team-9565","teamName":"melty","playerId":"cs2-player-9086","playerName":"XTQZZZ","roleBefore":"rifler","roleAfter":null,"effectiveAt":"2026-07-24T14:11:58.775Z","detectedAt":"2026-07-24T14:11:58.777Z","confidence":"medium"}]},"meta":{"memberships":1,"changes":50,"dataAvailable":true}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/players/history":{"get":{"summary":"Team roster history","description":"Every player who has played for a team, with start and end dates.\n\nSame response as `GET /api/v1/cs2/teams/{teamIdOrSlug}/roster-history`.","operationId":"getCs2TeamsTeamIdOrSlugPlayersHistory","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"changesLimit","in":"query","required":false,"description":"Filter by `changesLimit`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Team roster history"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/teams/{teamIdOrSlug}/roster-history"}},"/cs2/teams/{teamIdOrSlug}/matches":{"get":{"summary":"Team matches","description":"A team's matches, upcoming and finished.","operationId":"getCs2TeamsTeamIdOrSlugMatches","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":25}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"status","in":"query","required":false,"description":"Filter by status.","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"Filter by type.","schema":{"type":"string"}}],"responses":{"200":{"description":"Team matches","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_match","id":"cs2-match-2398108","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T18:49:47.000Z","endsAt":null,"bestOf":5,"status":"completed","team1Id":"cs2-team-11861","team2Id":"cs2-team-9565","team1Name":"Aurora","team2Name":"Vitality","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565","lastSyncedAt":"2026-09-23T03:07:06.893Z","lastVerified":"2026-09-23T03:07:06.893Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":null,"prizePool":5000008,"currency":"USD","tier":"A","prestigeScore":75,"status":"completed","region":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","eventId":"cs2-event-8057","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-11861","name":"Aurora","slug":"aurora","teamTag":"AURORA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cf72686d65237eb4fe4365d8070d068.webp","countryName":"Türkiye","countryCode":"TR","worldRanking":9},"team2":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","worldRanking":2,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"maps":[{"id":"cs2-match-2398108-map-1","matchId":"cs2-match-2398108","mapNumber":1,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[3,1],"team2Halves":[9,4],"winnerTeamId":"cs2-team-9565","durationRounds":17,"lastSyncedAt":"2026-09-22T19:46:26.632Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398108-map-2","matchId":"cs2-match-2398108","mapNumber":2,"mapName":"Inferno","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[7,6],"team2Halves":[5,6],"winnerTeamId":"cs2-team-11861","durationRounds":24,"lastSyncedAt":"2026-09-22T19:46:37.002Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}},{"entityType":"cs2_match","id":"cs2-match-2398107","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T12:00:00.000Z","endsAt":null,"bestOf":3,"status":"completed","team1Id":"cs2-team-9565","team2Id":"cs2-team-8297","team1Name":"Vitality","team2Name":"FURIA","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-9565","lastSyncedAt":"2026-09-23T03:03:45.610Z","lastVerified":"2026-09-23T03:03:45.610Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":null,"prizePool":5000008,"currency":"USD","tier":"A","prestigeScore":75,"status":"completed","region":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","eventId":"cs2-event-8057","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","worldRanking":2,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"team2":{"id":"cs2-team-8297","name":"FURIA","slug":"furia","teamTag":"FURIA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/ae2903ad6662885facbfedf1183a1b22.svg","countryName":"Brazil","countryCode":"BR","worldRanking":4},"maps":[{"id":"cs2-match-2398107-map-1","matchId":"cs2-match-2398107","mapNumber":1,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,1],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:43.662Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},{"id":"cs2-match-2398107-map-2","matchId":"cs2-match-2398107","mapNumber":2,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,4],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:52.776Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}}}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}],"meta":{"count":2,"total":271,"limit":2,"page":1,"hasMore":true,"type":"all","totalPages":136,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/upcoming":{"get":{"summary":"Team upcoming matches","description":"A team's scheduled matches.","operationId":"getCs2TeamsTeamIdOrSlugUpcoming","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 50; larger values are reduced to 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":10}}],"responses":{"200":{"description":"Team upcoming matches","content":{"application/json":{"example":{"success":true,"data":[],"meta":{"count":0,"type":"upcoming","limit":0,"total":0,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/upcoming-matches":{"get":{"summary":"Team upcoming matches","description":"A team's scheduled matches.\n\nSame response as `GET /api/v1/cs2/teams/{teamIdOrSlug}/upcoming`.","operationId":"getCs2TeamsTeamIdOrSlugUpcomingMatches","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 50; larger values are reduced to 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":10}}],"responses":{"200":{"description":"Team upcoming matches"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/teams/{teamIdOrSlug}/upcoming"}},"/cs2/teams/{teamIdOrSlug}/results":{"get":{"summary":"Team results","description":"A team's finished matches, newest first.","operationId":"getCs2TeamsTeamIdOrSlugResults","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":20}}],"responses":{"200":{"description":"Team results","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_match","id":"cs2-match-2398108","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T18:49:47.000Z","endsAt":null,"bestOf":5,"status":"completed","team1Id":"cs2-team-11861","team2Id":"cs2-team-9565","team1Name":"Aurora","team2Name":"Vitality","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565","lastSyncedAt":"2026-09-23T03:07:06.893Z","lastVerified":"2026-09-23T03:07:06.893Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":null,"prizePool":5000008,"currency":"USD","tier":"A","prestigeScore":75,"status":"completed","region":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","eventId":"cs2-event-8057","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-11861","name":"Aurora","slug":"aurora","teamTag":"AURORA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cf72686d65237eb4fe4365d8070d068.webp","countryName":"Türkiye","countryCode":"TR","worldRanking":9},"team2":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","worldRanking":2,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"maps":[{"id":"cs2-match-2398108-map-1","matchId":"cs2-match-2398108","mapNumber":1,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[3,1],"team2Halves":[9,4],"winnerTeamId":"cs2-team-9565","durationRounds":17,"lastSyncedAt":"2026-09-22T19:46:26.632Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398108-map-2","matchId":"cs2-match-2398108","mapNumber":2,"mapName":"Inferno","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[7,6],"team2Halves":[5,6],"winnerTeamId":"cs2-team-11861","durationRounds":24,"lastSyncedAt":"2026-09-22T19:46:37.002Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}},{"entityType":"cs2_match","id":"cs2-match-2398107","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T12:00:00.000Z","endsAt":null,"bestOf":3,"status":"completed","team1Id":"cs2-team-9565","team2Id":"cs2-team-8297","team1Name":"Vitality","team2Name":"FURIA","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-9565","lastSyncedAt":"2026-09-23T03:03:45.610Z","lastVerified":"2026-09-23T03:03:45.610Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":null,"prizePool":5000008,"currency":"USD","tier":"A","prestigeScore":75,"status":"completed","region":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","eventId":"cs2-event-8057","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","worldRanking":2,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"team2":{"id":"cs2-team-8297","name":"FURIA","slug":"furia","teamTag":"FURIA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/ae2903ad6662885facbfedf1183a1b22.svg","countryName":"Brazil","countryCode":"BR","worldRanking":4},"maps":[{"id":"cs2-match-2398107-map-1","matchId":"cs2-match-2398107","mapNumber":1,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,1],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:43.662Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},{"id":"cs2-match-2398107-map-2","matchId":"cs2-match-2398107","mapNumber":2,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,4],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:52.776Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{},"teamStats":[],"roundEvents":[]},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}}}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}],"meta":{"count":2,"type":"recent","limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/recent":{"get":{"summary":"Team results","description":"A team's finished matches, newest first.\n\nSame response as `GET /api/v1/cs2/teams/{teamIdOrSlug}/results`.","operationId":"getCs2TeamsTeamIdOrSlugRecent","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":20}}],"responses":{"200":{"description":"Team results"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/teams/{teamIdOrSlug}/results"}},"/cs2/teams/{teamIdOrSlug}/trends":{"get":{"summary":"Team trends","description":"A team's form over time: win rate and rating by period.","operationId":"getCs2TeamsTeamIdOrSlugTrends","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Team trends","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_team_performance_trends","teamId":"cs2-team-9565","teamName":"Vitality","dataAvailable":true,"trends":[{"trendKey":"career:source-team-9565","teamId":"cs2-team-9565","teamName":"Vitality","windowType":"career","periodStart":null,"periodEnd":"2026-07-10T01:57:53.312Z","matches":30,"matchWins":25,"matchLosses":5,"maps":109,"mapWins":59,"mapLosses":15,"mapsDecided":74,"mapsUnresolved":35,"winRate":0.8333,"mapWinPercent":0.7973,"mapWinPercentBasis":"decided_maps","roundsFor":940,"roundsAgainst":677,"opponentDifficulty":null,"recentForm":{"sourceEndpoint":"/api/v1/cs2/teams/{teamId}/form"},"mapStats":{"sourceEndpoint":"/api/v1/cs2/teams/{teamId}/map-stats"},"source":"computed_from_matches","computedAt":"2026-07-10T01:57:53.312Z"},{"trendKey":"last_30_days:source-team-9565","teamId":"cs2-team-9565","teamName":"Vitality","windowType":"last_30_days","periodStart":"2026-06-10T01:57:53.312Z","periodEnd":"2026-07-10T01:57:53.312Z","matches":5,"matchWins":3,"matchLosses":2,"maps":19,"mapWins":8,"mapLosses":6,"mapsDecided":14,"mapsUnresolved":5,"winRate":0.6,"mapWinPercent":0.5714,"mapWinPercentBasis":"decided_maps","roundsFor":158,"roundsAgainst":135,"opponentDifficulty":null,"recentForm":{"sourceEndpoint":"/api/v1/cs2/teams/{teamId}/form"},"mapStats":{"sourceEndpoint":"/api/v1/cs2/teams/{teamId}/map-stats"},"source":"computed_from_matches","computedAt":"2026-07-10T01:57:53.312Z"}]},"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/stats":{"get":{"summary":"Team stats","description":"Aggregate team stats over a recent window.","operationId":"getCs2TeamsTeamIdOrSlugStats","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}}],"responses":{"200":{"description":"Team stats","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_team_stats","teamId":"cs2-team-9565","matches":249,"wins":196,"losses":53,"winRate":0.7871485943775101,"maps":825,"mapWinRates":[{"mapName":"Mirage","played":140,"wins":76,"winRate":0.5428571428571428,"isUnknownMap":false,"unavailableReason":null,"mapNameCanonical":"Mirage","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png"},{"mapName":"Inferno","played":134,"wins":81,"winRate":0.6044776119402985,"isUnknownMap":false,"unavailableReason":null,"mapNameCanonical":"Inferno","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/inferno.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/inferno.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/inferno.png"}],"unknownMapCount":93,"averageRating":1.1472251655629138,"recentForm":[{"matchId":"cs2-match-2398108","opponentId":"cs2-team-11861","opponentName":"Aurora","result":"W","startsAt":"2026-09-20T18:49:47.000Z","score":{"team1":1,"team2":3}},{"matchId":"cs2-match-2398107","opponentId":"cs2-team-8297","opponentName":"FURIA","result":"W","startsAt":"2026-09-20T12:00:00.000Z","score":{"team1":2,"team2":0}}],"ctT":{"ctRounds":null,"ctWins":null,"ctWinPercent":null,"tRounds":null,"tWins":null,"tWinPercent":null,"source":null},"economy":{"pistolRounds":null,"pistolWins":null,"pistolWinPercent":null,"ecoRounds":null,"ecoWins":null,"ecoWinPercent":null,"forceRounds":null,"forceWins":null,"forceWinPercent":null,"fullBuyRounds":null,"fullBuyWins":null,"fullBuyWinPercent":null,"source":null},"dataAvailable":true,"unavailableReason":null},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/maps":{"get":{"summary":"Team maps","description":"Maps from a team's matches, one row per map (played or scheduled) with score, halves and winner.","operationId":"getCs2TeamsTeamIdOrSlugMaps","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Team maps","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_map","id":"cs2-match-2387547-map-4","matchId":"cs2-match-2387547","mapNumber":4,"mapName":null,"status":"completed","team1Score":null,"team2Score":null,"team1Halves":null,"team2Halves":null,"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-23T03:07:48.344Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"availableSubresources":[],"unavailableSubresources":["player_stats","objective_stats"],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-23T03:07:48.344Z","mapNameCanonical":null,"imageUrl":null,"coverImageUrl":null,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}},{"entityType":"cs2_map","id":"cs2-match-2387547-map-3","matchId":"cs2-match-2387547","mapNumber":3,"mapName":"Mirage","status":"completed","team1Score":13,"team2Score":16,"team1Halves":[5,7],"team2Halves":[7,5],"winnerTeamId":"cs2-team-9565","durationRounds":29,"lastSyncedAt":"2026-09-23T03:07:48.072Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png","pickTeamId":null,"objectiveStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[]},"availableSubresources":[],"unavailableSubresources":["player_stats","objective_stats"],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-23T03:07:48.072Z","mapNameCanonical":"Mirage","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/mirage.png","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}],"meta":{"count":2,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/map-pool":{"get":{"summary":"Team maps","description":"Maps from a team's matches, one row per map (played or scheduled) with score, halves and winner.\n\nSame response as `GET /api/v1/cs2/teams/{teamIdOrSlug}/maps`.","operationId":"getCs2TeamsTeamIdOrSlugMapPool","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Team maps"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/teams/{teamIdOrSlug}/maps"}},"/cs2/teams/{teamIdOrSlug}/form":{"get":{"summary":"Team form","description":"A team's last results as a W/L sequence with scores.","operationId":"getCs2TeamsTeamIdOrSlugForm","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 50; larger values are reduced to 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":10}}],"responses":{"200":{"description":"Team form","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_team_form","teamId":"cs2-team-9565","teamName":"Vitality","window":2,"record":{"wins":2,"losses":0,"unknown":0,"winPercent":100},"matches":[{"matchId":"cs2-match-2398108","status":"completed","startsAt":"2026-09-20T18:49:47.000Z","eventName":"StarLadder StarSeries Fall 2026","bestOf":null,"opponentId":"cs2-team-11861","opponentName":"Aurora","teamScore":3,"opponentScore":1,"score":"3-1","result":"W","maps":[{"mapId":"cs2-match-2398108-map-1","mapNumber":1,"mapName":"Anubis","status":"completed","teamScore":13,"opponentScore":4,"score":"13-4","result":"W","winnerTeamId":"cs2-team-9565","roundsFor":13,"roundsAgainst":4},{"mapId":"cs2-match-2398108-map-2","mapNumber":2,"mapName":"Inferno","status":"completed","teamScore":11,"opponentScore":13,"score":"11-13","result":"L","winnerTeamId":"cs2-team-11861","roundsFor":11,"roundsAgainst":13}]},{"matchId":"cs2-match-2398107","status":"completed","startsAt":"2026-09-20T12:00:00.000Z","eventName":"StarLadder StarSeries Fall 2026","bestOf":null,"opponentId":"cs2-team-8297","opponentName":"FURIA","teamScore":2,"opponentScore":0,"score":"2-0","result":"W","maps":[{"mapId":"cs2-match-2398107-map-1","mapNumber":1,"mapName":"Cache","status":"completed","teamScore":null,"opponentScore":null,"score":null,"result":"unknown","winnerTeamId":null,"roundsFor":null,"roundsAgainst":null},{"mapId":"cs2-match-2398107-map-2","mapNumber":2,"mapName":"Anubis","status":"completed","teamScore":null,"opponentScore":null,"score":null,"result":"unknown","winnerTeamId":null,"roundsFor":null,"roundsAgainst":null}]}],"dataAvailable":true},"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/map-stats":{"get":{"summary":"Team map stats","description":"Per-map win rate, rounds and pick/ban tendencies.","operationId":"getCs2TeamsTeamIdOrSlugMapStats","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":250}},{"name":"windowDays","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Team map stats","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_team_map_stats","teamId":"cs2-team-9565","teamName":"Vitality","matchWindow":2,"windowDays":null,"totalMaps":8,"totalMapWins":3,"mapWinPercent":37.5,"sideEconomy":{"dataAvailable":false,"unavailableReason":"being_recomputed","message":"Side and buy-type round win rates are being recomputed and are not available yet.","ctRounds":null,"ctWins":null,"ctWinPercent":null,"tRounds":null,"tWins":null,"tWinPercent":null,"pistolRounds":null,"pistolWins":null,"pistolWinPercent":null,"ecoRounds":null,"ecoWins":null,"ecoWinPercent":null,"forceRounds":null,"forceWins":null,"forceWinPercent":null,"fullBuyRounds":null,"fullBuyWins":null,"fullBuyWinPercent":null,"source":null},"maps":[{"mapName":"Anubis","played":2,"wins":1,"losses":0,"ties":1,"roundsFor":13,"roundsAgainst":4,"latestPlayedAt":"2026-09-20T18:49:47.000Z","isUnknownMap":false,"unavailableReason":null,"mapNameCanonical":"Anubis","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/anubis.png","pickPercent":25,"winPercent":50,"lossPercent":0,"roundDifferential":9,"avgRoundsFor":6.5,"avgRoundsAgainst":2},{"mapName":"Cache","played":2,"wins":1,"losses":0,"ties":1,"roundsFor":13,"roundsAgainst":7,"latestPlayedAt":"2026-09-20T18:49:47.000Z","isUnknownMap":false,"unavailableReason":null,"mapNameCanonical":"Cache","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/cache.png","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/cache.png","coverImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/maps/cache.png","pickPercent":25,"winPercent":50,"lossPercent":0,"roundDifferential":6,"avgRoundsFor":6.5,"avgRoundsAgainst":3.5}],"dataAvailable":true},"meta":{"count":5,"dataAvailable":true,"limit":5,"total":5,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/vs/{opponentIdOrSlug}":{"get":{"summary":"Team head-to-head","description":"Record and past matches between two teams.","operationId":"getCs2TeamsTeamIdOrSlugVsOpponentIdOrSlug","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"opponentIdOrSlug","in":"path","required":true,"description":"Opponent team id or slug.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Team head-to-head","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_team_h2h","team":{"id":"cs2-team-9565","name":"Vitality"},"opponent":{"id":"cs2-team-7020","name":"Spirit"},"totalMatches":2,"matchRecord":{"teamWins":2,"opponentWins":0,"teamWinPercent":100,"opponentWinPercent":0},"mapRecord":{"teamWins":5,"opponentWins":0,"totalDecidedMaps":5,"teamWinPercent":100,"opponentWinPercent":0},"mapBreakdown":[{"mapName":"Mirage","played":2,"teamWins":2,"opponentWins":0,"teamWinPercent":100,"opponentWinPercent":0,"roundsFor":35,"roundsAgainst":30,"roundDifferential":5},{"mapName":"Dust2","played":2,"teamWins":2,"opponentWins":0,"teamWinPercent":100,"opponentWinPercent":0,"roundsFor":26,"roundsAgainst":13,"roundDifferential":13}],"recent5Matches":[{"matchId":"cs2-match-2393245","status":"completed","startsAt":"2026-04-19T17:00:00.000Z","eventName":"IEM Rio 2026","bestOf":3,"opponentId":"cs2-team-7020","opponentName":"Spirit","teamScore":3,"opponentScore":0,"score":"3-0","result":"W","maps":[{"mapId":"cs2-match-2393245-map-1","mapNumber":1,"mapName":"Mirage","status":"completed","teamScore":16,"opponentScore":13,"score":"16-13","result":"W","winnerTeamId":"cs2-team-9565","roundsFor":16,"roundsAgainst":13},{"mapId":"cs2-match-2393245-map-2","mapNumber":2,"mapName":"Nuke","status":"completed","teamScore":13,"opponentScore":10,"score":"13-10","result":"W","winnerTeamId":"cs2-team-9565","roundsFor":13,"roundsAgainst":10}]},{"matchId":"cs2-match-2388128","status":"completed","startsAt":"2025-12-13T16:00:00.000Z","eventName":"StarLadder Budapest Major 2025","bestOf":null,"opponentId":"cs2-team-7020","opponentName":"Spirit","teamScore":2,"opponentScore":0,"score":"2-0","result":"W","maps":[{"mapId":"cs2-match-2388128-map-1","mapNumber":1,"mapName":"Mirage","status":"completed","teamScore":19,"opponentScore":17,"score":"19-17","result":"W","winnerTeamId":"cs2-team-9565","roundsFor":19,"roundsAgainst":17},{"mapId":"cs2-match-2388128-map-2","mapNumber":2,"mapName":"Dust2","status":"completed","teamScore":13,"opponentScore":8,"score":"13-8","result":"W","winnerTeamId":"cs2-team-9565","roundsFor":13,"roundsAgainst":8}]}],"matches":[{"matchId":"cs2-match-2393245","status":"completed","startsAt":"2026-04-19T17:00:00.000Z","eventName":"IEM Rio 2026","bestOf":3,"opponentId":"cs2-team-7020","opponentName":"Spirit","teamScore":3,"opponentScore":0,"score":"3-0","result":"W","maps":[{"mapId":"cs2-match-2393245-map-1","mapNumber":1,"mapName":"Mirage","status":"completed","teamScore":16,"opponentScore":13,"score":"16-13","result":"W","winnerTeamId":"cs2-team-9565","roundsFor":16,"roundsAgainst":13},{"mapId":"cs2-match-2393245-map-2","mapNumber":2,"mapName":"Nuke","status":"completed","teamScore":13,"opponentScore":10,"score":"13-10","result":"W","winnerTeamId":"cs2-team-9565","roundsFor":13,"roundsAgainst":10}]},{"matchId":"cs2-match-2388128","status":"completed","startsAt":"2025-12-13T16:00:00.000Z","eventName":"StarLadder Budapest Major 2025","bestOf":null,"opponentId":"cs2-team-7020","opponentName":"Spirit","teamScore":2,"opponentScore":0,"score":"2-0","result":"W","maps":[{"mapId":"cs2-match-2388128-map-1","mapNumber":1,"mapName":"Mirage","status":"completed","teamScore":19,"opponentScore":17,"score":"19-17","result":"W","winnerTeamId":"cs2-team-9565","roundsFor":19,"roundsAgainst":17},{"mapId":"cs2-match-2388128-map-2","mapNumber":2,"mapName":"Dust2","status":"completed","teamScore":13,"opponentScore":8,"score":"13-8","result":"W","winnerTeamId":"cs2-team-9565","roundsFor":13,"roundsAgainst":8}]}],"dataAvailable":true},"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams/{teamIdOrSlug}/h2h/{opponentIdOrSlug}":{"get":{"summary":"Team head-to-head","description":"Record and past matches between two teams.\n\nSame response as `GET /api/v1/cs2/teams/{teamIdOrSlug}/vs/{opponentIdOrSlug}`.","operationId":"getCs2TeamsTeamIdOrSlugH2hOpponentIdOrSlug","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"opponentIdOrSlug","in":"path","required":true,"description":"Opponent team id or slug.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Team head-to-head"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/teams/{teamIdOrSlug}/vs/{opponentIdOrSlug}"}},"/cs2/h2h/pairs":{"get":{"summary":"Head-to-head pairs","description":"Team pairs that have played each other, for building head-to-head pages.","operationId":"getCs2H2hPairs","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 500; larger values are reduced to 500.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"minMeetings","in":"query","required":false,"description":"Filter by `minMeetings`.","schema":{"type":"string"}},{"name":"min_meetings","in":"query","required":false,"description":"Filter by `min_meetings`.","schema":{"type":"string"}},{"name":"windowDays","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}},{"name":"window_days","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Head-to-head pairs","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_h2h_pair","pairs":[{"teamA":{"id":"cs2-team-4494","name":"MOUZ","slug":"mouz"},"teamB":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality"},"meetings":17,"lastMeetingAt":"2026-09-05T16:45:00.000Z"},{"teamA":{"id":"cs2-team-8113","name":"Sharks","slug":"team-8113"},"teamB":{"id":"cs2-team-9996","name":"9z","slug":"9z"},"meetings":17,"lastMeetingAt":"2026-05-27T16:45:00.000Z"}],"dataAvailable":true},"meta":{"count":2,"limit":2,"minMeetings":2,"windowDays":730,"dataAvailable":true,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/teams/{teamIdOrSlug}":{"get":{"summary":"Team details","description":"One team: name, logo, country, region, world ranking and current roster.","operationId":"getCs2TeamsTeamIdOrSlug","tags":["CS2"],"parameters":[{"name":"teamIdOrSlug","in":"path","required":true,"description":"Team id (`cs2-team-7020`) or slug (`spirit`).","schema":{"type":"string"}},{"name":"recentLimit","in":"query","required":false,"description":"Filter by `recentLimit`.","schema":{"type":"string"}},{"name":"recent_limit","in":"query","required":false,"description":"Filter by `recent_limit`.","schema":{"type":"string"}},{"name":"upcomingLimit","in":"query","required":false,"description":"Filter by `upcomingLimit`.","schema":{"type":"string"}},{"name":"upcoming_limit","in":"query","required":false,"description":"Filter by `upcoming_limit`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Team details","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_team","id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","roster":[{"teamId":"cs2-team-9565","teamName":null,"playerId":"cs2-player-11893","playerNickname":"ZywOo","playerName":"Mathieu Herbaut","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp","playerSlug":"zywoo","countryName":"France","countryCode":"FR","age":25,"rating":1.31,"mapsPlayed":167,"role":"AWPer","fromAt":"2018-10-01T12:00:00.000Z","toAt":null,"isActive":true,"tenureKnown":true,"tenureUnavailableReason":null,"lastSyncedAt":"2026-09-23T00:11:42.818Z"},{"teamId":"cs2-team-9565","teamName":null,"playerId":"cs2-player-9086","playerNickname":"XTQZZZ","playerName":"Rémy Quoniam","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b689e77e923fa8285d5fd19cd911b6b0.webp","playerSlug":"xtqzzz","countryName":"France","countryCode":"FR","age":37,"rating":0,"mapsPlayed":null,"role":"coach","fromAt":null,"toAt":null,"isActive":true,"tenureKnown":false,"tenureUnavailableReason":"source_join_date_unavailable","lastSyncedAt":"2026-09-23T00:11:42.387Z"}],"recentResults":[{"entityType":"cs2_match","id":"cs2-match-2398108","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T18:49:47.000Z","endsAt":null,"bestOf":5,"status":"completed","team1Id":"cs2-team-11861","team2Id":"cs2-team-9565","team1Name":"Aurora","team2Name":"Vitality","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565","lastSyncedAt":"2026-09-23T03:07:06.893Z","lastVerified":"2026-09-23T03:07:06.893Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":null,"prizePool":5000008,"currency":"USD","tier":"A","prestigeScore":75,"status":"completed","region":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","eventId":"cs2-event-8057","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-11861","name":"Aurora","slug":"aurora","teamTag":"AURORA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cf72686d65237eb4fe4365d8070d068.webp","countryName":"Türkiye","countryCode":"TR","worldRanking":9},"team2":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","worldRanking":2,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"maps":[{"id":"cs2-match-2398108-map-1","matchId":"cs2-match-2398108","mapNumber":1,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[3,1],"team2Halves":[9,4],"winnerTeamId":"cs2-team-9565","durationRounds":17,"lastSyncedAt":"2026-09-22T19:46:26.632Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{},"scorePending":true},{"id":"cs2-match-2398108-map-2","matchId":"cs2-match-2398108","mapNumber":2,"mapName":"Inferno","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[7,6],"team2Halves":[5,6],"winnerTeamId":"cs2-team-11861","durationRounds":24,"lastSyncedAt":"2026-09-22T19:46:37.002Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}},{"entityType":"cs2_match","id":"cs2-match-2398107","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T12:00:00.000Z","endsAt":null,"bestOf":3,"status":"completed","team1Id":"cs2-team-9565","team2Id":"cs2-team-8297","team1Name":"Vitality","team2Name":"FURIA","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-9565","lastSyncedAt":"2026-09-23T03:03:45.610Z","lastVerified":"2026-09-23T03:03:45.610Z","confidence":"high","event":{"id":"cs2-event-8057","name":"StarLadder StarSeries Fall 2026","slug":"starladder-starseries-fall-2026","imageUrl":null,"prizePool":5000008,"currency":"USD","tier":"A","prestigeScore":75,"status":"completed","region":null,"startsAt":"2026-09-17T10:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","eventId":"cs2-event-8057","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","worldRanking":2,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"team2":{"id":"cs2-team-8297","name":"FURIA","slug":"furia","teamTag":"FURIA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/ae2903ad6662885facbfedf1183a1b22.svg","countryName":"Brazil","countryCode":"BR","worldRanking":4},"maps":[{"id":"cs2-match-2398107-map-1","matchId":"cs2-match-2398107","mapNumber":1,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,1],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:43.662Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{}},{"id":"cs2-match-2398107-map-2","matchId":"cs2-match-2398107","mapNumber":2,"mapName":"Anubis","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8,5],"team2Halves":[4,4],"winnerTeamId":null,"durationRounds":null,"lastSyncedAt":"2026-09-22T19:47:52.776Z","mapImageUrl":null,"pickTeamId":null,"objectiveStats":{},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{}}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps"],"unavailableSubresources":["player_stats","live_state"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}],"upcomingMatches":[],"rankingHistory":[{"date":"2026-09-07","rank":4},{"date":"2026-09-07","rank":5}],"rankingDevelopment":[{"date":"2026-09-07","rank":4},{"date":"2026-09-07","rank":5}],"achievements":[{"type":"trophy","title":"StarLadder StarSeries Fall 2026","eventId":"cs2-event-8057","eventUrl":null,"imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","trophyIndex":0},{"type":"trophy","title":"BLAST Rivals 2026 Season 1","eventId":"cs2-event-8250","eventUrl":null,"imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/feaa79d30cefd055fc644728d87a35b7.webp","trophyIndex":1}],"trophies":[{"type":"trophy","title":"StarLadder StarSeries Fall 2026","eventId":"cs2-event-8057","eventUrl":null,"imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","trophyIndex":0},{"type":"trophy","title":"BLAST Rivals 2026 Season 1","eventId":"cs2-event-8250","eventUrl":null,"imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/feaa79d30cefd055fc644728d87a35b7.webp","trophyIndex":1}],"newsLinks":[{"url":null,"date":"21/9","title":"Short: Media: jL on standby for EPL S24","sourceContext":"source_team_mentions"},{"url":null,"date":"20/9","title":"ZywOo: \"It's crazy to say it's been a while for us to win a trophy\"","sourceContext":"source_team_mentions"}],"rosterStatus":"complete","noActivePlayers":false,"unknownRosterSlots":0,"partialRoster":false,"activePlayerCount":5,"coachCount":1,"rosterTenureKnown":false,"rosterTenureUnavailableReason":"source_join_date_unavailable","activePlayers":[{"teamId":null,"teamName":null,"playerId":null,"playerNickname":null,"playerName":null,"playerImageUrl":null,"playerSlug":null,"countryName":null,"countryCode":null,"age":null,"rating":null,"mapsPlayed":null,"role":"AWPer","fromAt":"2018-10-01T12:00:00.000Z","toAt":null,"isActive":true,"tenureKnown":true,"tenureUnavailableReason":null},{"teamId":null,"teamName":null,"playerId":null,"playerNickname":null,"playerName":null,"playerImageUrl":null,"playerSlug":null,"countryName":null,"countryCode":null,"age":null,"rating":null,"mapsPlayed":null,"role":"entry","fromAt":"2023-06-01T12:00:00.000Z","toAt":null,"isActive":true,"tenureKnown":true,"tenureUnavailableReason":null}],"coaches":[{"teamId":null,"teamName":null,"playerId":null,"playerNickname":null,"playerName":null,"playerImageUrl":null,"playerSlug":null,"countryName":null,"countryCode":null,"age":null,"rating":null,"mapsPlayed":null,"role":"coach","fromAt":null,"toAt":null,"isActive":true,"tenureKnown":false,"tenureUnavailableReason":"source_join_date_unavailable"}],"coach":{"teamId":null,"teamName":null,"playerId":null,"playerNickname":null,"playerName":null,"playerImageUrl":null,"playerSlug":null,"countryName":null,"countryCode":null,"age":null,"rating":null,"mapsPlayed":null,"role":"coach","fromAt":null,"toAt":null,"isActive":true,"tenureKnown":false,"tenureUnavailableReason":"source_join_date_unavailable"},"valveRanking":3,"socialLinks":[{"url":"https://www.twitter.com/i/user/1603687711","platform":"x"},{"url":"https://www.twitch.tv/vitality","platform":"twitch"}],"availableSubresources":["roster","matches"],"unavailableSubresources":["upcoming_matches"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/teams":{"get":{"summary":"List teams","description":"Teams ordered by world ranking, with logo, country and roster. `compact=true` returns lighter rows.","operationId":"getCs2Teams","tags":["CS2"],"parameters":[{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"q","in":"query","required":false,"description":"Search text.","schema":{"type":"string"}},{"name":"search","in":"query","required":false,"description":"Search text.","schema":{"type":"string"}},{"name":"summary","in":"query","required":false,"description":"`true` returns a summary instead of full rows.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"List teams","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_team","id":"cs2-team-7020","name":"Spirit","slug":"spirit","teamTag":"SPIRIT","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/608894028d96779c209b2fb4c03da37c.webp","countryName":"Russia","countryCode":"RU","region":"Europe","worldRanking":1,"lastSyncedAt":"2026-09-23T03:11:27.600Z","lastVerified":"2026-09-23T03:11:27.600Z","confidence":"high","roster":[{"teamId":"cs2-team-7020","teamName":"Spirit","playerId":"cs2-player-16920","playerNickname":"sh1ro","playerName":"Dmitry Sokolov","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7f5bf023e498d2d07c3a9a59335da3c4.webp","playerSlug":"sh1ro","countryName":"Russia","countryCode":"RU","age":24,"rating":1.17,"mapsPlayed":136,"role":"AWPer","fromAt":"2023-12-01T12:00:00.000Z","toAt":null,"isActive":true,"tenureKnown":true,"tenureUnavailableReason":null,"lastSyncedAt":"2026-09-23T00:11:32.540Z"},{"teamId":"cs2-team-7020","teamName":"Spirit","playerId":"cs2-player-2154","playerNickname":"hally","playerName":"Sergey Shavaev","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/445dd6783047f7e0191ccedacc007ac8.png","playerSlug":"hally","countryName":"Russia","countryCode":"RU","age":33,"rating":0,"mapsPlayed":null,"role":"coach","fromAt":null,"toAt":null,"isActive":true,"tenureKnown":false,"tenureUnavailableReason":"source_join_date_unavailable","lastSyncedAt":"2026-09-23T00:11:30.998Z"}],"rankingHistoryCount":180,"rankingDevelopmentCount":180,"trophiesCount":12,"achievementsCount":12,"newsLinksCount":10,"heavyFieldsOmitted":["rankingHistory","rankingDevelopment"],"heavyFieldsAvailableAt":"/api/v1/cs2/teams/spirit","rosterStatus":"complete","noActivePlayers":false,"unknownRosterSlots":0,"partialRoster":false,"activePlayerCount":5,"coachCount":1,"rosterTenureKnown":false,"rosterTenureUnavailableReason":"source_join_date_unavailable","coach":{"teamId":"cs2-team-7020","teamName":null,"playerId":"cs2-player-2154","playerNickname":"hally","playerName":"Sergey Shavaev","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/445dd6783047f7e0191ccedacc007ac8.png","playerSlug":"hally","countryName":"Russia","countryCode":"RU","age":33,"rating":0,"mapsPlayed":null,"role":"coach","fromAt":null,"toAt":null,"isActive":true,"tenureKnown":false,"tenureUnavailableReason":"source_join_date_unavailable","lastSyncedAt":"2026-09-23T00:11:30.998Z"},"valveRanking":1,"socialLinks":[{"url":"https://www.twitter.com/i/user/3814210037","platform":"x"},{"url":"https://www.instagram.com/team__spirit","platform":"instagram"}],"availableSubresources":["roster","matches"],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/25ac49209b09795f64e76b9800aa5b5c.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/25ac49209b09795f64e76b9800aa5b5c.webp"},{"entityType":"cs2_team","id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","roster":[{"teamId":"cs2-team-9565","teamName":"Vitality","playerId":"cs2-player-11893","playerNickname":"ZywOo","playerName":"Mathieu Herbaut","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp","playerSlug":"zywoo","countryName":"France","countryCode":"FR","age":25,"rating":1.31,"mapsPlayed":167,"role":"AWPer","fromAt":"2018-10-01T12:00:00.000Z","toAt":null,"isActive":true,"tenureKnown":true,"tenureUnavailableReason":null,"lastSyncedAt":"2026-09-23T00:11:42.818Z"},{"teamId":"cs2-team-9565","teamName":"Vitality","playerId":"cs2-player-9086","playerNickname":"XTQZZZ","playerName":"Rémy Quoniam","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b689e77e923fa8285d5fd19cd911b6b0.webp","playerSlug":"xtqzzz","countryName":"France","countryCode":"FR","age":37,"rating":0,"mapsPlayed":null,"role":"coach","fromAt":null,"toAt":null,"isActive":true,"tenureKnown":false,"tenureUnavailableReason":"source_join_date_unavailable","lastSyncedAt":"2026-09-23T00:11:42.387Z"}],"rankingHistoryCount":180,"rankingDevelopmentCount":180,"trophiesCount":28,"achievementsCount":28,"newsLinksCount":10,"heavyFieldsOmitted":["rankingHistory","rankingDevelopment"],"heavyFieldsAvailableAt":"/api/v1/cs2/teams/vitality","rosterStatus":"complete","noActivePlayers":false,"unknownRosterSlots":0,"partialRoster":false,"activePlayerCount":5,"coachCount":1,"rosterTenureKnown":false,"rosterTenureUnavailableReason":"source_join_date_unavailable","coach":{"teamId":"cs2-team-9565","teamName":null,"playerId":"cs2-player-9086","playerNickname":"XTQZZZ","playerName":"Rémy Quoniam","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b689e77e923fa8285d5fd19cd911b6b0.webp","playerSlug":"xtqzzz","countryName":"France","countryCode":"FR","age":37,"rating":0,"mapsPlayed":null,"role":"coach","fromAt":null,"toAt":null,"isActive":true,"tenureKnown":false,"tenureUnavailableReason":"source_join_date_unavailable","lastSyncedAt":"2026-09-23T00:11:42.387Z"},"valveRanking":3,"socialLinks":[{"url":"https://www.twitter.com/i/user/1603687711","platform":"x"},{"url":"https://www.twitch.tv/vitality","platform":"twitch"}],"availableSubresources":["roster","matches"],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"}],"meta":{"page":1,"limit":2,"total":4194,"count":2,"totalPages":2097,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/players/search":{"get":{"summary":"Search players","description":"Find players by nickname or real name. Requires `q`.","operationId":"getCs2PlayersSearch","tags":["CS2"],"parameters":[{"name":"q","in":"query","required":true,"description":"Search text.","schema":{"type":"string"}}],"responses":{"200":{"description":"Search players","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_player","id":"cs2-player-11893","nickname":"ZywOo","slug":"zywoo","realName":"Mathieu Herbaut","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp","countryName":"France","countryCode":"FR","age":25,"rating":1.31,"mapsPlayed":167,"careerStats":{"rating":1.31,"lastKnownRating":1.31},"currentTeamId":"cs2-team-9565","status":"active","primaryRole":"AWPer","roleConfidence":"high","statusUpdatedAt":"2026-09-23T00:11:42.818Z","lastSyncedAt":"2026-09-23T00:11:41.857Z","lastVerified":"2026-09-23T00:11:41.857Z","availableSubresources":["stats","matches"],"unavailableSubresources":["teams","weapons"],"unavailableFields":{},"dataQuality":"complete","confidence":"high","confidenceScore":0.95}],"meta":{"query":"zywoo","count":1,"limit":1,"total":1,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/players/{playerIdOrSlug}/career":{"get":{"summary":"Player career","description":"A player's career totals and team history.","operationId":"getCs2PlayersPlayerIdOrSlugCareer","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"include","in":"query","required":false,"description":"Filter by `include`.","schema":{"type":"string"}},{"name":"includeDemo","in":"query","required":false,"description":"Filter by `includeDemo`.","schema":{"type":"string"}},{"name":"include_demo","in":"query","required":false,"description":"Filter by `include_demo`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Player career","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_career_stats","playerId":"cs2-player-11893","playerNickname":"ZywOo","dataAvailable":true,"totals":{"matches":170,"maps":267,"kills":5031,"deaths":3423,"assists":370,"kdRatio":1.4698,"adr":88.66,"kast":0.7824,"rating":1.3088,"openingKills":243,"openingDeaths":124,"computedAt":"2026-09-23T03:15:31.874Z","clutchAttempts":null,"clutchWins":null,"clutchWinPercent":null,"flashAssists":null,"utilityDamage":null},"clutches":null,"flashAssists":null,"utilityDamage":null,"byTeam":[{"statKey":"team:source-player-11893:source-team-9565","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","periodType":"career","periodStart":"2018-11-18T23:10:00.000Z","periodEnd":"2026-09-20T15:00:00.000Z","eventId":null,"eventName":null,"matches":169,"maps":266,"kills":5014,"deaths":3404,"assists":370,"kdRatio":1.473,"adr":88.68,"kast":0.7828,"rating":1.3099,"openingKills":243,"openingDeaths":124,"consistencyScore":null,"volatilityScore":null,"opponentDifficulty":null,"computedAt":"2026-09-23T03:15:31.874Z"},{"statKey":"team:source-player-11893:source-team-4608","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-4608","teamName":"Natus Vincere","periodType":"career","periodStart":"2023-07-08T17:20:00.000Z","periodEnd":"2023-07-08T17:20:00.000Z","eventId":null,"eventName":null,"matches":1,"maps":1,"kills":17,"deaths":19,"assists":0,"kdRatio":0.8947,"adr":84.2,"kast":0.708,"rating":1.01,"openingKills":0,"openingDeaths":0,"consistencyScore":null,"volatilityScore":null,"opponentDifficulty":null,"computedAt":"2026-09-23T03:15:31.874Z"}]},"meta":{"count":1,"dataAvailable":true,"limit":1,"total":1,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/seasons":{"get":{"summary":"Player seasons","description":"A player's stats by year.","operationId":"getCs2PlayersPlayerIdOrSlugSeasons","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Player seasons","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_season_stats","playerId":"cs2-player-11893","playerNickname":"ZywOo","dataAvailable":true,"seasons":[{"statKey":"year:source-player-11893:2026","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","seasonYear":2026,"periodStart":"2026-02-02T13:00:00.000Z","periodEnd":"2026-09-20T15:00:00.000Z","matches":46,"maps":102,"kills":1818,"deaths":1176,"assists":370,"kdRatio":1.5459,"adr":96.11,"kast":0.7953,"rating":1.2584,"openingKills":243,"openingDeaths":124,"consistencyScore":null,"volatilityScore":null,"source":"match_stats","computedAt":"2026-09-23T03:15:32.102Z"},{"statKey":"year:source-player-11893:2025","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","seasonYear":2025,"periodStart":"2025-01-19T17:30:00.000Z","periodEnd":"2025-11-13T10:00:00.000Z","matches":42,"maps":51,"kills":843,"deaths":657,"assists":0,"kdRatio":1.2831,"adr":82.86,"kast":0.7671,"rating":1.2459,"openingKills":0,"openingDeaths":0,"consistencyScore":null,"volatilityScore":null,"source":"match_stats","computedAt":"2026-09-23T03:15:32.102Z"}]},"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/periods":{"get":{"summary":"Player periods","description":"A player's stats over rolling periods (e.g. last 3 months).","operationId":"getCs2PlayersPlayerIdOrSlugPeriods","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"period_type","in":"query","required":false,"description":"Filter by `period_type`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Player periods","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_period_stats","playerId":"cs2-player-11893","playerNickname":"ZywOo","periodTypeFilter":null,"periods":[{"statKey":"career:source-player-11893:source-team-9565:vitality","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","periodType":"career","periodStart":null,"periodEnd":null,"eventId":null,"eventName":null,"eventTier":null,"region":null,"matches":30,"maps":72,"kills":1409,"deaths":906,"assists":342,"kdRatio":1.5552,"adr":94.67,"kast":0.7997,"rating":1.2049,"openingKills":208,"openingDeaths":114,"consistencyScore":0.6997,"volatilityScore":0.3003,"opponentDifficulty":null,"computedAt":"2026-08-02T12:17:01.773Z"},{"statKey":"career:source-player-11893:none:all","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":null,"teamName":null,"periodType":"career","periodStart":null,"periodEnd":null,"eventId":null,"eventName":null,"eventTier":null,"region":null,"matches":2,"maps":3,"kills":72,"deaths":33,"assists":13,"kdRatio":2.1818,"adr":115.55,"kast":0.8494,"rating":1.296,"openingKills":10,"openingDeaths":4,"consistencyScore":0.8999,"volatilityScore":0.1001,"opponentDifficulty":null,"computedAt":"2026-07-10T18:36:32.013Z"}],"dataAvailable":true},"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/tournaments":{"get":{"summary":"Player tournaments","description":"Events a player has played, with placement and stats.","operationId":"getCs2PlayersPlayerIdOrSlugTournaments","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Player tournaments","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_tournaments","playerId":"cs2-player-11893","playerNickname":"ZywOo","tournaments":[{"eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","eventTier":"A","startsAt":"2026-09-20T00:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e41cca58363bb111170d38a8c053e424.webp","teamId":"cs2-team-9565","teamName":"Vitality","matches":3,"maps":5,"kills":83,"deaths":48,"assists":8,"kdRatio":1.729,"adr":90.64,"kast":0.84,"rating":1.547,"openingKills":12,"openingDeaths":2,"source":"match_stats"},{"eventId":"cs2-event-8249","eventName":"BLAST Open Porto 2026","eventSlug":"blast-open-porto-2026","eventTier":"A","startsAt":"2026-09-06T00:00:00.000Z","endsAt":"2026-09-06T23:59:59.000Z","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/64929ecef4267a000527d5fe1d3f62b1.webp","teamId":"cs2-team-9565","teamName":"Vitality","matches":6,"maps":14,"kills":234,"deaths":179,"assists":12,"kdRatio":1.307,"adr":81.32,"kast":0.74,"rating":1.292,"openingKills":16,"openingDeaths":7,"source":"match_stats"}],"dataAvailable":true},"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/events":{"get":{"summary":"Player tournaments","description":"Events a player has played, with placement and stats.\n\nSame response as `GET /api/v1/cs2/players/{playerIdOrSlug}/tournaments`.","operationId":"getCs2PlayersPlayerIdOrSlugEvents","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Player tournaments"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/players/{playerIdOrSlug}/tournaments"}},"/cs2/players/{playerIdOrSlug}/trends":{"get":{"summary":"Player trends","description":"A player's rating and form over time.","operationId":"getCs2PlayersPlayerIdOrSlugTrends","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"maps","in":"query","required":false,"description":"Filter by `maps`.","schema":{"type":"string"}},{"name":"periods","in":"query","required":false,"description":"Filter by `periods`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Player trends","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_performance_trends","playerId":"cs2-player-11893","playerNickname":"ZywOo","dataAvailable":true,"trends":[{"trendKey":"last_30_days:source-player-11893","playerId":"cs2-player-11893","playerName":"ZywOo","windowType":"last_30_days","periodStart":"2026-06-10T01:57:52.583Z","periodEnd":"2026-07-10T01:57:52.583Z","matches":5,"maps":12,"kills":220,"deaths":139,"assists":57,"kdRatio":1.5827,"adr":97.96,"kast":0.7987,"rating":1.2207,"consistencyScore":0.6844,"volatilityScore":0.3156,"computedAt":"2026-07-10T01:57:52.583Z"},{"trendKey":"last_90_days:source-player-11893","playerId":"cs2-player-11893","playerName":"ZywOo","windowType":"last_90_days","periodStart":"2026-04-11T01:57:52.583Z","periodEnd":"2026-07-10T01:57:52.583Z","matches":20,"maps":50,"kills":950,"deaths":619,"assists":216,"kdRatio":1.5347,"adr":95.4,"kast":0.7963,"rating":1.1959,"consistencyScore":0.6934,"volatilityScore":0.3066,"computedAt":"2026-07-10T01:57:52.583Z"}],"recentMaps":[{"matchId":"cs2-match-2398108","mapId":"cs2-match-2398108-map-3","mapName":"Mirage","startsAt":"2026-09-20T18:49:47.000Z","eventName":"StarLadder StarSeries Fall 2026","teamId":"cs2-team-9565","teamName":"Vitality","opponentName":"Aurora","kills":17,"deaths":7,"assists":null,"adr":98.8,"kast":0.941,"rating":1.63},{"matchId":"cs2-match-2398102","mapId":"cs2-match-2398102-map-1","mapName":"Mirage","startsAt":"2026-09-18T18:35:00.000Z","eventName":"StarLadder StarSeries Fall 2026","teamId":"cs2-team-9565","teamName":"Vitality","opponentName":"FURIA","kills":26,"deaths":13,"assists":1,"adr":null,"kast":null,"rating":1.99}]},"meta":{"periods":2,"recentMaps":20,"dataAvailable":true}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/transfers":{"get":{"summary":"Player transfers","description":"A player's moves between teams.","operationId":"getCs2PlayersPlayerIdOrSlugTransfers","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Player transfers","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_transfers","playerId":"cs2-player-11893","playerNickname":"ZywOo","dataAvailable":true,"currentTeamId":"cs2-team-9565","currentTeamName":"Vitality","status":"active","transferHistory":[{"transferKey":"profile-history:2018-10-01:source-player-11893:source-team-5639:source-team-9565:joined","playerId":"cs2-player-11893","playerName":"ZywOo","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp","fromTeamId":"cs2-team-5639","fromTeamName":"aAa","fromTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/686cbe0c559e95cae6a091ffc4a7f524.svg","fromTeamAlternateLogoUrl":null,"fromTeamDarkUiLogoUrl":null,"fromTeamIsNoTeam":false,"toTeamId":"cs2-team-9565","toTeamName":"Vitality","toTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","toTeamAlternateLogoUrl":null,"toTeamDarkUiLogoUrl":null,"toTeamIsNoTeam":false,"status":"joined","role":null,"transferDate":"2018-10-01T12:00:00.000Z","joinDate":"2018-10-01T12:00:00.000Z","leaveDate":null,"detectedAt":"2026-07-10T00:53:55.880Z"},{"transferKey":"profile-history:2017-09-01:source-player-11893:source-team-7649:source-team-5639:joined","playerId":"cs2-player-11893","playerName":"ZywOo","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp","fromTeamId":"cs2-team-7649","fromTeamName":"WySix","fromTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9a3798b5b0651fe2e6df965cb7b1279c.webp","fromTeamAlternateLogoUrl":null,"fromTeamDarkUiLogoUrl":null,"fromTeamIsNoTeam":false,"toTeamId":"cs2-team-5639","toTeamName":"aAa","toTeamLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/686cbe0c559e95cae6a091ffc4a7f524.svg","toTeamAlternateLogoUrl":null,"toTeamDarkUiLogoUrl":null,"toTeamIsNoTeam":false,"status":"joined","role":null,"transferDate":"2017-09-01T12:00:00.000Z","joinDate":"2017-09-01T12:00:00.000Z","leaveDate":null,"detectedAt":"2026-07-10T00:53:55.731Z"}],"rosterChanges":[{"changeId":"4dbd68eb-906d-4600-8782-c855a1ccf4bb","changeType":"join","teamId":"cs2-team-9565","fromTeamId":null,"toTeamId":"cs2-team-9565","teamName":"Vitality","playerId":"cs2-player-11893","playerName":"ZywOo","roleBefore":null,"roleAfter":"AWPer","effectiveAt":"2026-07-10T01:50:43.165Z","detectedAt":"2026-07-10T01:50:43.165Z","confidence":"medium"},{"changeId":"d2848d10-010b-4764-92fa-be5895c3ec66","changeType":"leave","teamId":"cs2-team-9565","fromTeamId":"cs2-team-9565","toTeamId":null,"teamName":"Vitality","playerId":"cs2-player-11893","playerName":"ZywOo","roleBefore":"AWPer","roleAfter":null,"effectiveAt":"2026-07-10T01:50:43.165Z","detectedAt":"2026-07-10T01:50:43.165Z","confidence":"medium"}],"teamHistory":[{"teamId":"cs2-team-9565","teamName":"Vitality","playerId":"cs2-player-11893","playerNickname":"ZywOo","playerName":"Mathieu Herbaut","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp","playerSlug":"zywoo","countryName":"France","countryCode":"FR","age":25,"rating":1.31,"mapsPlayed":167,"role":"AWPer","fromAt":"2018-10-01T12:00:00.000Z","toAt":null,"isActive":true,"tenureKnown":true,"tenureUnavailableReason":null,"lastSyncedAt":"2026-09-23T00:11:42.818Z"},{"teamId":"cs2-team-5639","teamName":"aAa","playerId":"cs2-player-11893","playerNickname":"ZywOo","playerName":"Mathieu Herbaut","playerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp","playerSlug":"zywoo","countryName":"France","countryCode":"FR","age":25,"rating":1.31,"mapsPlayed":167,"role":"AWPer","fromAt":"2017-09-01T12:00:00.000Z","toAt":"2018-09-30T12:00:00.000Z","isActive":false,"tenureKnown":true,"tenureUnavailableReason":null,"lastSyncedAt":"2026-07-10T01:37:18.872Z"}]},"meta":{"transfers":2,"changes":2,"memberships":7,"dataAvailable":true}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/stats":{"get":{"summary":"Player stats","description":"A player's aggregate stats: rating, ADR, KAST, K/D and more.","operationId":"getCs2PlayersPlayerIdOrSlugStats","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}],"responses":{"200":{"description":"Player stats","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_stats","playerId":"cs2-player-11893","maps":267,"totals":{"kills":5031,"deaths":3423,"assists":370,"headshots":56,"headshotPercent":0.2},"clutches":{"dataAvailable":false,"unavailableReason":"being_recomputed","message":"Clutch statistics are being recomputed and are not available yet."},"flashAssists":{"flashAssists":38},"rows":[{"id":"9f2d2cce-cb5c-4bb8-b734-ac91220c4f64","mapId":"cs2-match-2398108-map-3","matchId":"cs2-match-2398108","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","kills":17,"deaths":7,"assists":null,"plusMinus":10,"adr":98.8,"kast":0.941,"rating":1.63,"ratingVersion":"source_rating_3_0","headshots":null,"headshotPercent":null,"firstKills":null,"firstDeaths":null,"lastSyncedAt":"2026-09-22T19:46:44.885Z"},{"id":"live-source-match-2398102-map-1-ZywOo","mapId":"cs2-match-2398102-map-1","matchId":"cs2-match-2398102","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","kills":26,"deaths":13,"assists":1,"plusMinus":13,"adr":null,"kast":null,"rating":1.99,"ratingVersion":"source_rating_3_0","headshots":12,"headshotPercent":null,"firstKills":6,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-18T20:28:20.871Z"}]},"meta":{"dataAvailable":true,"availability":"available"}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/clutches":{"get":{"summary":"Player clutches","description":"A player's clutch situations (1vX). Currently being recomputed: returns `data_available: false` with `unavailable_reason: being_recomputed`.","operationId":"getCs2PlayersPlayerIdOrSlugClutches","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"player_id","in":"query","required":false,"description":"Player id or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Player clutches","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_clutches","playerId":"cs2-player-11893","playerNickname":"ZywOo","dataAvailable":false,"unavailableReason":"being_recomputed","message":"Clutch statistics are being recomputed and are not available yet."},"meta":{"count":0,"dataAvailable":false,"limit":0,"total":0,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/flash-assists":{"get":{"summary":"Player flash assists","description":"Kills a player set up with flashbangs.","operationId":"getCs2PlayersPlayerIdOrSlugFlashAssists","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}}],"responses":{"200":{"description":"Player flash assists","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_flash_assists","playerId":"cs2-player-11893","playerNickname":"ZywOo","dataAvailable":true,"flashAssists":[{"playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","flashAssists":38,"maps":22,"flashAssistsPerMap":1.7273}]},"meta":{"count":1,"dataAvailable":true,"limit":1,"total":1,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/matches":{"get":{"summary":"Player matches","description":"A player's stat lines, one row per map played, newest first.","operationId":"getCs2PlayersPlayerIdOrSlugMatches","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Player matches","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_player_stat","id":"9f2d2cce-cb5c-4bb8-b734-ac91220c4f64","mapId":"cs2-match-2398108-map-3","matchId":"cs2-match-2398108","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","kills":17,"deaths":7,"assists":null,"plusMinus":10,"adr":98.8,"kast":0.941,"rating":1.63,"ratingVersion":"source_rating_3_0","headshots":null,"headshotPercent":null,"firstKills":null,"firstDeaths":null,"lastSyncedAt":"2026-09-22T19:46:44.885Z","map":{"id":"cs2-match-2398108-map-3","matchId":"cs2-match-2398108","mapNumber":3,"mapName":"Mirage","status":"completed","team1Score":0,"team2Score":1,"team1Halves":[4,0],"team2Halves":[8,5],"winnerTeamId":"cs2-team-9565","durationRounds":17,"lastSyncedAt":"2026-09-22T19:46:47.384Z","match":{"id":"cs2-match-2398108","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T18:49:47.000Z","endsAt":null,"bestOf":5,"status":"completed","team1Id":"cs2-team-11861","team2Id":"cs2-team-9565","team1Name":"Aurora","team2Name":"Vitality","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565","liveState":{"status":"completed","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565"},"vetoOrder":[{},{}],"streamLinks":[{},{}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:07:06.893Z","lastVerified":"2026-09-23T03:07:06.893Z","confidence":"high","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_stats_eligible"}}},"availableSubresources":[],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-22T19:46:44.885Z"},{"entityType":"cs2_player_stat","id":"live-source-match-2398102-map-1-ZywOo","mapId":"cs2-match-2398102-map-1","matchId":"cs2-match-2398102","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","kills":26,"deaths":13,"assists":1,"plusMinus":13,"adr":null,"kast":null,"rating":1.99,"ratingVersion":"source_rating_3_0","headshots":12,"headshotPercent":null,"firstKills":6,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-18T20:28:20.871Z","map":{"id":"cs2-match-2398102-map-1","matchId":"cs2-match-2398102","mapNumber":1,"mapName":"Mirage","status":"completed","team1Score":1,"team2Score":0,"team1Halves":[7],"team2Halves":[5],"winnerTeamId":"cs2-team-9565","durationRounds":21,"lastSyncedAt":"2026-09-22T20:29:28.763Z","match":{"id":"cs2-match-2398102","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-18T18:35:00.000Z","endsAt":"2026-09-18T20:25:21.557Z","bestOf":3,"status":"completed","team1Id":"cs2-team-9565","team2Id":"cs2-team-8297","team1Name":"Vitality","team2Name":"FURIA","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-9565","liveState":{"teams":{},"source":"live","status":"live","matchId":"cs2-match-2398102","roundEnds":[{},{}],"bombEvents":[{},{}],"capturedAt":"2026-09-18T20:18:51.835Z","currentMap":"de_dust2","team1Score":13,"team2Score":5,"bombPlanted":false,"playerStats":[{},{}],"currentRound":18,"scoreSummary":null,"winnerTeamId":null,"responseCount":755,"eventNamesSeen":["Assist","BombPlanted"],"roundTimeSeconds":null,"mapImageUrl":null,"pickTeamId":null,"objectiveStats":{}},"vetoOrder":[{},{}],"streamLinks":[{},{}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:03:00.051Z","lastVerified":"2026-09-23T03:03:00.051Z","confidence":"high","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_stats_eligible"}}},"availableSubresources":[],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-18T20:28:20.871Z"}],"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/maps":{"get":{"summary":"Player maps","description":"A player's stats per map.","operationId":"getCs2PlayersPlayerIdOrSlugMaps","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"aggregate","in":"query","required":false,"description":"Filter by `aggregate`.","schema":{"type":"string"}},{"name":"days","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"summary","in":"query","required":false,"description":"`true` returns a summary instead of full rows.","schema":{"type":"boolean"}},{"name":"windowDays","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}},{"name":"window_days","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Player maps","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_player_stat","id":"9f2d2cce-cb5c-4bb8-b734-ac91220c4f64","mapId":"cs2-match-2398108-map-3","matchId":"cs2-match-2398108","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","kills":17,"deaths":7,"assists":null,"plusMinus":10,"adr":98.8,"kast":0.941,"rating":1.63,"ratingVersion":"source_rating_3_0","headshots":null,"headshotPercent":null,"firstKills":null,"firstDeaths":null,"lastSyncedAt":"2026-09-22T19:46:44.885Z","map":{"id":"cs2-match-2398108-map-3","matchId":"cs2-match-2398108","mapNumber":3,"mapName":"Mirage","status":"completed","team1Score":0,"team2Score":1,"team1Halves":[4,0],"team2Halves":[8,5],"winnerTeamId":"cs2-team-9565","durationRounds":17,"lastSyncedAt":"2026-09-22T19:46:47.384Z","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_stats_eligible"}}},"availableSubresources":[],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-22T19:46:44.885Z"},{"entityType":"cs2_player_stat","id":"live-source-match-2398102-map-1-ZywOo","mapId":"cs2-match-2398102-map-1","matchId":"cs2-match-2398102","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","kills":26,"deaths":13,"assists":1,"plusMinus":13,"adr":null,"kast":null,"rating":1.99,"ratingVersion":"source_rating_3_0","headshots":12,"headshotPercent":null,"firstKills":6,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-18T20:28:20.871Z","map":{"id":"cs2-match-2398102-map-1","matchId":"cs2-match-2398102","mapNumber":1,"mapName":"Mirage","status":"completed","team1Score":1,"team2Score":0,"team1Halves":[7],"team2Halves":[5],"winnerTeamId":"cs2-team-9565","durationRounds":21,"lastSyncedAt":"2026-09-22T20:29:28.763Z","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_stats_eligible"}}},"availableSubresources":[],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-18T20:28:20.871Z"}],"meta":{"count":2,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/teams":{"get":{"summary":"Player teams","description":"Teams a player has played for, with dates.","operationId":"getCs2PlayersPlayerIdOrSlugTeams","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}}],"responses":{"200":{"description":"Player teams","content":{"application/json":{"example":{"success":true,"data":[{"id":"8f40140c-772e-4d4e-8510-1c8360c754ba","teamId":"cs2-team-9565","playerId":"cs2-player-11893","role":"AWPer","fromAt":"2018-10-01T12:00:00.000Z","toAt":null,"isActive":true,"lastSyncedAt":"2026-09-23T00:11:42.818Z","team":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"}},{"id":"c89f70dc-3630-4fa3-8143-8967904b6b93","teamId":"cs2-team-5639","playerId":"cs2-player-11893","role":null,"fromAt":"2017-09-01T12:00:00.000Z","toAt":"2018-09-30T12:00:00.000Z","isActive":false,"lastSyncedAt":"2026-07-10T01:37:18.872Z","team":{"id":"cs2-team-5639","name":"aAa","slug":"aaa","teamTag":"AAA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/686cbe0c559e95cae6a091ffc4a7f524.svg","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":null,"lastSyncedAt":"2026-09-23T03:10:18.460Z","lastVerified":"2026-09-23T03:10:18.460Z","confidence":"high"}}],"meta":{"count":5,"limit":5,"total":5,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/teams/history":{"get":{"summary":"Player teams","description":"Teams a player has played for, with dates.\n\nSame response as `GET /api/v1/cs2/players/{playerIdOrSlug}/teams`.","operationId":"getCs2PlayersPlayerIdOrSlugTeamsHistory","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}}],"responses":{"200":{"description":"Player teams"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/players/{playerIdOrSlug}/teams"}},"/cs2/players/{playerIdOrSlug}/form":{"get":{"summary":"Player form","description":"A player's most recent maps with kills, deaths, ADR, KAST and rating.","operationId":"getCs2PlayersPlayerIdOrSlugForm","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}}],"responses":{"200":{"description":"Player form","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_player_stat","id":"9f2d2cce-cb5c-4bb8-b734-ac91220c4f64","mapId":"cs2-match-2398108-map-3","matchId":"cs2-match-2398108","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","kills":17,"deaths":7,"assists":null,"plusMinus":10,"adr":98.8,"kast":0.941,"rating":1.63,"ratingVersion":"source_rating_3_0","headshots":null,"headshotPercent":null,"firstKills":null,"firstDeaths":null,"lastSyncedAt":"2026-09-22T19:46:44.885Z","map":{"id":"cs2-match-2398108-map-3","matchId":"cs2-match-2398108","mapNumber":3,"mapName":"Mirage","status":"completed","team1Score":0,"team2Score":1,"team1Halves":[4,0],"team2Halves":[8,5],"winnerTeamId":"cs2-team-9565","durationRounds":17,"lastSyncedAt":"2026-09-22T19:46:47.384Z","match":{"id":"cs2-match-2398108","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-20T18:49:47.000Z","endsAt":null,"bestOf":5,"status":"completed","team1Id":"cs2-team-11861","team2Id":"cs2-team-9565","team1Name":"Aurora","team2Name":"Vitality","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565","liveState":{"status":"completed","team1Score":1,"team2Score":3,"winnerTeamId":"cs2-team-9565"},"vetoOrder":[{},{}],"streamLinks":[{},{}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:07:06.893Z","lastVerified":"2026-09-23T03:07:06.893Z","confidence":"high","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_stats_eligible"}}},"availableSubresources":[],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-22T19:46:44.885Z"},{"entityType":"cs2_player_stat","id":"live-source-match-2398102-map-1-ZywOo","mapId":"cs2-match-2398102-map-1","matchId":"cs2-match-2398102","playerId":"cs2-player-11893","playerName":"ZywOo","teamId":"cs2-team-9565","teamName":"Vitality","kills":26,"deaths":13,"assists":1,"plusMinus":13,"adr":null,"kast":null,"rating":1.99,"ratingVersion":"source_rating_3_0","headshots":12,"headshotPercent":null,"firstKills":6,"firstDeaths":1,"source":"live","lastSyncedAt":"2026-09-18T20:28:20.871Z","map":{"id":"cs2-match-2398102-map-1","matchId":"cs2-match-2398102","mapNumber":1,"mapName":"Mirage","status":"completed","team1Score":1,"team2Score":0,"team1Halves":[7],"team2Halves":[5],"winnerTeamId":"cs2-team-9565","durationRounds":21,"lastSyncedAt":"2026-09-22T20:29:28.763Z","match":{"id":"cs2-match-2398102","eventId":"cs2-event-8057","eventName":"StarLadder StarSeries Fall 2026","eventSlug":"starladder-starseries-fall-2026","stageName":null,"startsAt":"2026-09-18T18:35:00.000Z","endsAt":"2026-09-18T20:25:21.557Z","bestOf":3,"status":"completed","team1Id":"cs2-team-9565","team2Id":"cs2-team-8297","team1Name":"Vitality","team2Name":"FURIA","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-9565","liveState":{"teams":{},"source":"live","status":"live","matchId":"cs2-match-2398102","roundEnds":[{},{}],"bombEvents":[{},{}],"capturedAt":"2026-09-18T20:18:51.835Z","currentMap":"de_dust2","team1Score":13,"team2Score":5,"bombPlanted":false,"playerStats":[{},{}],"currentRound":18,"scoreSummary":null,"winnerTeamId":null,"responseCount":755,"eventNamesSeen":["Assist","BombPlanted"],"roundTimeSeconds":null,"mapImageUrl":null,"pickTeamId":null,"objectiveStats":{}},"vetoOrder":[{},{}],"streamLinks":[{},{}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:03:00.051Z","lastVerified":"2026-09-23T03:03:00.051Z","confidence":"high","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}}},"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_stats_eligible"}}},"availableSubresources":[],"unavailableSubresources":[],"unavailableFields":{},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7,"lastVerified":"2026-09-18T20:28:20.871Z"}],"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}/weapons":{"get":{"summary":"Player weapons","description":"A player's kills by weapon.","operationId":"getCs2PlayersPlayerIdOrSlugWeapons","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Player weapons","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player_weapon_stats","playerId":"cs2-player-11893","playerName":"ZywOo","dataAvailable":true,"dataScope":"player_attributed_kill_events","weapons":[{"weapon":"AWP","kills":282,"headshots":33,"headshotPercent":11.7,"maps":40,"matches":19,"lastSyncedAt":"2026-07-24T20:52:24.264Z"},{"weapon":"AK-47","kills":185,"headshots":122,"headshotPercent":65.9,"maps":35,"matches":19,"lastSyncedAt":"2026-07-24T20:52:24.264Z"}]},"meta":{"count":2,"dataAvailable":true,"dataScope":"player_attributed_kill_events","limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players/{playerIdOrSlug}":{"get":{"summary":"Player details","description":"One player: nickname, real name, photo, country, team, role and headline stats.","operationId":"getCs2PlayersPlayerIdOrSlug","tags":["CS2"],"parameters":[{"name":"playerIdOrSlug","in":"path","required":true,"description":"Player id (`cs2-player-11893`) or slug (`zywoo`).","schema":{"type":"string"}}],"responses":{"200":{"description":"Player details","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_player","id":"cs2-player-11893","nickname":"ZywOo","slug":"zywoo","realName":"Mathieu Herbaut","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9a20575a48df13463513233c6314f72c.webp","countryName":"France","countryCode":"FR","age":25,"rating":1.31,"mapsPlayed":167,"careerStats":{"rating":1.31,"lastKnownRating":1.31},"currentTeamId":"cs2-team-9565","status":"active","primaryRole":"AWPer","roleConfidence":"high","statusUpdatedAt":"2026-09-23T00:11:42.818Z","lastSyncedAt":"2026-09-23T00:11:41.857Z","lastVerified":"2026-09-23T00:11:41.857Z","roster":[{"id":"cs2-player-8f40140c-772e-4d4e-8510-1c8360c754ba","teamId":"cs2-team-9565","playerId":"cs2-player-11893","role":"AWPer","fromAt":"2018-10-01T12:00:00.000Z","toAt":null,"isActive":true,"lastSyncedAt":"2026-09-23T00:11:42.818Z","team":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"}},{"id":"cs2-player-c89f70dc-3630-4fa3-8143-8967904b6b93","teamId":"cs2-team-5639","playerId":"cs2-player-11893","role":null,"fromAt":"2017-09-01T12:00:00.000Z","toAt":"2018-09-30T12:00:00.000Z","isActive":false,"lastSyncedAt":"2026-07-10T01:37:18.872Z","team":{"id":"cs2-team-5639","name":"aAa","slug":"aaa","teamTag":"AAA","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/686cbe0c559e95cae6a091ffc4a7f524.svg","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":null,"lastSyncedAt":"2026-09-23T03:10:18.460Z","lastVerified":"2026-09-23T03:10:18.460Z","confidence":"high"}}],"currentTeam":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"availableSubresources":["stats","matches"],"unavailableSubresources":["weapons"],"unavailableFields":{},"dataQuality":"complete","confidence":"high","confidenceScore":0.95},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/players":{"get":{"summary":"List players","description":"Players with photo, country, team and rating.","operationId":"getCs2Players","tags":["CS2"],"parameters":[{"name":"active","in":"query","required":false,"description":"Filter by `active`.","schema":{"type":"boolean"}},{"name":"all","in":"query","required":false,"description":"Filter by `all`.","schema":{"type":"string"}},{"name":"archive","in":"query","required":false,"description":"Filter by `archive`.","schema":{"type":"boolean"}},{"name":"competitive","in":"query","required":false,"description":"Filter by `competitive`.","schema":{"type":"boolean"}},{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return.","schema":{"type":"string"}},{"name":"filter","in":"query","required":false,"description":"Filter by `filter`.","schema":{"type":"string"}},{"name":"hasImage","in":"query","required":false,"description":"Filter by `hasImage`.","schema":{"type":"string"}},{"name":"has_image","in":"query","required":false,"description":"Filter by `has_image`.","schema":{"type":"string"}},{"name":"includeUnverified","in":"query","required":false,"description":"Filter by `includeUnverified`.","schema":{"type":"string"}},{"name":"include_unverified","in":"query","required":false,"description":"Filter by `include_unverified`.","schema":{"type":"string"}},{"name":"letter","in":"query","required":false,"description":"Filter by `letter`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"orderBy","in":"query","required":false,"description":"Filter by `orderBy`.","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"q","in":"query","required":false,"description":"Search text.","schema":{"type":"string"}},{"name":"search","in":"query","required":false,"description":"Search text.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"Sort order.","schema":{"type":"string"}},{"name":"summary","in":"query","required":false,"description":"`true` returns a summary instead of full rows.","schema":{"type":"boolean"}},{"name":"teamId","in":"query","required":false,"description":"Team id or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"List players","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_player","id":"cs2-player-11358","nickname":"0i","slug":"0i","realName":"ZhiWei Liu","imageUrl":null,"countryName":"China","countryCode":"CN","age":null,"rating":0,"mapsPlayed":1,"careerStats":{"rating":0,"window":"past_3_months","opening":null,"sniping":null,"trading":null,"utility":null,"entrying":null,"clutching":null,"firepower":null,"mapsPlayed":null,"prizeMoney":31761,"careerRating":0,"windowRating":null,"missingFields":["age","maps_played"],"profileStatus":"failed","lastKnownRating":0,"lastActiveTournament":"LiveFISSURE Playground 3","profileImageStatus":"missing","profileImageClaimedAt":"2026-09-09T23:31:31.014284+00:00"},"currentTeamId":null,"status":null,"primaryRole":"rifler","roleConfidence":"low","statusUpdatedAt":"2026-09-11T00:50:14.854Z","lastSyncedAt":"2026-09-21T03:53:32.948Z","lastVerified":"2026-09-11T00:50:14.854Z","prizeMoney":31761,"availableSubresources":["stats","matches"],"unavailableSubresources":["weapons"],"unavailableFields":{"imageUrl":null,"age":{"reason":"profile_field_unavailable"},"currentTeamId":{"reason":"profile_field_unavailable"}},"dataQuality":"complete","confidence":"high","confidenceScore":0.95},{"entityType":"cs2_player","id":"cs2-player-25337","nickname":"0l0h0","slug":"0l0h0","realName":"Oleh Mazur","imageUrl":null,"countryName":"Ukraine","countryCode":"UA","age":null,"rating":1.05,"mapsPlayed":1,"careerStats":{"rating":1.05,"window":"past_3_months","opening":null,"sniping":null,"trading":null,"utility":null,"entrying":null,"clutching":null,"firepower":null,"mapsPlayed":6,"prizeMoney":145,"careerRating":1.05,"windowRating":null,"missingFields":["age"],"profileStatus":"partial","lastKnownRating":1.05,"lastActiveTournament":"LiveBLAST Open Porto","profileImageStatus":"missing","profileImageClaimedAt":"2026-09-09T01:45:18.695068+00:00"},"currentTeamId":null,"status":null,"primaryRole":"rifler","roleConfidence":"low","statusUpdatedAt":"2026-09-02T06:45:58.995Z","lastSyncedAt":"2026-09-17T09:16:26.808Z","lastVerified":"2026-09-17T09:16:26.808Z","prizeMoney":145,"availableSubresources":["stats","matches"],"unavailableSubresources":["weapons"],"unavailableFields":{"imageUrl":null,"age":{"reason":"profile_field_unavailable"},"currentTeamId":{"reason":"profile_field_unavailable"}},"dataQuality":"complete","confidence":"high","confidenceScore":0.95}],"meta":{"page":1,"limit":2,"total":6043,"count":2,"sort":"nickname","totalPages":3022,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/tournaments/live":{"get":{"summary":"Live events","description":"Tournaments being played now.\n\nSame response as `GET /api/v1/cs2/events/live`.","operationId":"getCs2TournamentsLive","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Live events"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/events/live"}},"/cs2/tournaments/upcoming":{"get":{"summary":"Upcoming events","description":"Scheduled tournaments, soonest first.\n\nSame response as `GET /api/v1/cs2/events/upcoming`.","operationId":"getCs2TournamentsUpcoming","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Upcoming events"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/events/upcoming"}},"/cs2/tournaments/recent":{"get":{"summary":"Recent events","description":"Finished tournaments, newest first.\n\nSame response as `GET /api/v1/cs2/events/recent`.","operationId":"getCs2TournamentsRecent","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Recent events"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/events/recent"}},"/cs2/tournaments/calendar":{"get":{"summary":"Event calendar","description":"Tournaments in a date range. Filter with `from` and `to`.\n\nSame response as `GET /api/v1/cs2/events/calendar`.","operationId":"getCs2TournamentsCalendar","tags":["CS2"],"parameters":[{"name":"from","in":"query","required":false,"description":"Start of the date range (ISO 8601, UTC).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":100}},{"name":"status","in":"query","required":false,"description":"Filter by status.","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"End of the date range (ISO 8601, UTC).","schema":{"type":"string"}}],"responses":{"200":{"description":"Event calendar"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/events/calendar"}},"/cs2/tournaments/active":{"get":{"summary":"Active events","description":"Tournaments in progress or starting soon.\n\nSame response as `GET /api/v1/cs2/events/active`.","operationId":"getCs2TournamentsActive","tags":["CS2"],"parameters":[{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return.","schema":{"type":"string"}},{"name":"includeUpcoming","in":"query","required":false,"description":"Filter by `includeUpcoming`.","schema":{"type":"string"}},{"name":"include_upcoming","in":"query","required":false,"description":"Filter by `include_upcoming`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":50}},{"name":"summary","in":"query","required":false,"description":"`true` returns a summary instead of full rows.","schema":{"type":"boolean"}},{"name":"upcomingLimit","in":"query","required":false,"description":"Filter by `upcomingLimit`.","schema":{"type":"string"}},{"name":"upcoming_limit","in":"query","required":false,"description":"Filter by `upcoming_limit`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Active events"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/events/active"}},"/cs2/tournaments":{"get":{"summary":"List events","description":"Tournaments with filters for status and date. List rows are compact; fetch one event for its full structure and standings.\n\nSame response as `GET /api/v1/cs2/events`.","operationId":"getCs2Tournaments","tags":["CS2"],"parameters":[{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"summary","in":"query","required":false,"description":"`true` returns a summary instead of full rows.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"List events"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/events"}},"/cs2/tournaments/{eventIdOrSlug}/matches":{"get":{"summary":"Event matches","description":"All matches of a tournament.\n\nSame response as `GET /api/v1/cs2/events/{eventIdOrSlug}/matches`.","operationId":"getCs2TournamentsEventIdOrSlugMatches","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":100}}],"responses":{"200":{"description":"Event matches"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/events/{eventIdOrSlug}/matches"}},"/cs2/tournaments/{eventIdOrSlug}/teams":{"get":{"summary":"Event teams","description":"Teams in a tournament.\n\nSame response as `GET /api/v1/cs2/events/{eventIdOrSlug}/teams`.","operationId":"getCs2TournamentsEventIdOrSlugTeams","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Event teams"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/events/{eventIdOrSlug}/teams"}},"/cs2/tournaments/{eventIdOrSlug}/participants":{"get":{"summary":"Event participants","description":"Teams in a tournament with their players.\n\nSame response as `GET /api/v1/cs2/events/{eventIdOrSlug}/participants`.","operationId":"getCs2TournamentsEventIdOrSlugParticipants","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Event participants"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/events/{eventIdOrSlug}/participants"}},"/cs2/tournaments/{eventIdOrSlug}/standings":{"get":{"summary":"Event standings","description":"Teams of a tournament with seed, final placement and prize, ordered by placement.\n\nSame response as `GET /api/v1/cs2/events/{eventIdOrSlug}/standings`.","operationId":"getCs2TournamentsEventIdOrSlugStandings","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Event standings"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/events/{eventIdOrSlug}/standings"}},"/cs2/tournaments/{eventIdOrSlug}/results":{"get":{"summary":"Event results","description":"Final placements and prize money for a tournament.\n\nSame response as `GET /api/v1/cs2/events/{eventIdOrSlug}/results`.","operationId":"getCs2TournamentsEventIdOrSlugResults","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":100}}],"responses":{"200":{"description":"Event results"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/events/{eventIdOrSlug}/results"}},"/cs2/tournaments/{eventIdOrSlug}/stats":{"get":{"summary":"Event stats","description":"Top players and teams by stats within a tournament.\n\nSame response as `GET /api/v1/cs2/events/{eventIdOrSlug}/stats`.","operationId":"getCs2TournamentsEventIdOrSlugStats","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Event stats"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/events/{eventIdOrSlug}/stats"}},"/cs2/tournaments/{eventIdOrSlug}/bracket":{"get":{"summary":"Event bracket","description":"Bracket, group stage, play-in and Swiss structure of a tournament, each slot with its teams, scores and winner.\n\nSame response as `GET /api/v1/cs2/events/{eventIdOrSlug}/bracket`.","operationId":"getCs2TournamentsEventIdOrSlugBracket","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Event bracket"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/events/{eventIdOrSlug}/bracket"}},"/cs2/tournaments/{eventIdOrSlug}":{"get":{"summary":"Event details","description":"One tournament: dates, location, prize pool, tier, teams and format.\n\nSame response as `GET /api/v1/cs2/events/{eventIdOrSlug}`.","operationId":"getCs2TournamentsEventIdOrSlug","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Event details"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}},"x-alias-of":"/cs2/events/{eventIdOrSlug}"}},"/cs2/events/live":{"get":{"summary":"Live events","description":"Tournaments being played now.","operationId":"getCs2EventsLive","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Live events","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_event","eventId":"cs2-event-9266","id":"cs2-event-9266","name":"Logitech G Play Connect 2026","slug":"logitech-g-play-connect-2026","status":"live","confirmedStatus":"source_listed","startsAt":"2026-09-17T08:30:00.000Z","endsAt":"2026-09-23T23:59:59.000Z","tier":"B","prestigeScore":55,"region":"Europe","isLan":true,"location":null,"prizePool":100000,"currency":"USD","prizeDistribution":[{"label":"Total prize pool","amount":100000,"percent":100,"currency":"USD"},{"label":"1st","amount":40000,"teamId":null,"currency":"USD","teamName":null,"clubPrize":null,"placement":"1st","spotPrize":null,"playerPrize":40000}],"format":"Group stage: Round-robin Bo1 / Playoffs: Single elimination Bo3 - Grand final Bo5","teamCount":12,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/3c695e1ca7dd6d43d2c4d3daf93e4618.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/3c695e1ca7dd6d43d2c4d3daf93e4618.webp","bannerImageUrl":null,"eventStructure":{"other":[],"teams":[],"playIn":[],"mapPool":[{"key":"cache","name":"Cache","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"},{"key":"dust2","name":"Dust2","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"}],"brackets":[],"groupStage":[],"allBrackets":[],"relatedEvents":[{"id":"cs2-event-9267","name":"Logitech G Play Connect 2026 Closed Qualifier","slug":"logitech-g-play-connect-2026-closed-qualifier","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/91534393b3d18b80a2dfca7e1d12f596.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c2c31171918f0f4e8da616513d12d178.webp"}]},"hasBracketStructure":true,"standingsAvailable":true,"standings":[{"seed":16,"teamId":"cs2-team-11241","teamName":"B8","placement":null},{"seed":20,"teamId":"cs2-team-9928","teamName":"GamerLegion","placement":null}],"lastSyncedAt":"2026-09-23T03:15:01.331Z","lastVerified":"2026-09-23T03:15:01.331Z","indexedMatchCount":35,"indexedParticipantCount":12},{"entityType":"cs2_event","eventId":"cs2-event-9222","id":"cs2-event-9222","name":"Stake Pulse Beat II","slug":"stake-pulse-beat-ii","status":"live","confirmedStatus":"source_listed","startsAt":"2026-09-21T10:00:00.000Z","endsAt":"2026-09-26T23:59:59.000Z","tier":"B","prestigeScore":55,"region":"Europe","isLan":true,"location":null,"prizePool":60000,"currency":"USD","prizeDistribution":[{"label":"Total prize pool","amount":60000,"percent":100,"currency":"USD"},{"label":"1st","amount":20000,"teamId":null,"currency":"USD","teamName":null,"clubPrize":null,"placement":"1st","spotPrize":null,"playerPrize":20000}],"format":"Group stage: GSL Bo3 / Playoffs: Single elimination Bo3","teamCount":16,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/05bc5f451087fcb52f165d629a869659.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/05bc5f451087fcb52f165d629a869659.webp","bannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/5f78be6696399cd09249b02aaba00e2b.webp","eventStructure":{"other":[],"teams":[],"playIn":[],"mapPool":[{"key":"cache","name":"Cache","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"},{"key":"dust2","name":"Dust2","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"}],"brackets":[],"groupStage":[],"allBrackets":[],"relatedEvents":[{"id":"cs2-event-9221","name":"Stake Pulse Beat I","slug":"stake-pulse-beat-i","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/cc06bce6e2266d321e98b51ed97d659d.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/38458c1227c996327422b61e1d053e26.webp"},{"id":"cs2-event-9223","name":"Stake Pulse Beat III","slug":"stake-pulse-beat-iii","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/cc06bce6e2266d321e98b51ed97d659d.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/38458c1227c996327422b61e1d053e26.webp"}]},"hasBracketStructure":true,"standingsAvailable":true,"standings":[{"seed":11,"teamId":"cs2-team-6665","teamName":"Astralis","placement":null},{"seed":30,"teamId":"cs2-team-10245","teamName":"JiJieHao","placement":null}],"lastSyncedAt":"2026-09-23T03:15:01.608Z","lastVerified":"2026-09-23T03:15:01.608Z","indexedMatchCount":14,"indexedParticipantCount":5}],"meta":{"count":2,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/events/active":{"get":{"summary":"Active events","description":"Tournaments in progress or starting soon.","operationId":"getCs2EventsActive","tags":["CS2"],"parameters":[{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return.","schema":{"type":"string"}},{"name":"includeUpcoming","in":"query","required":false,"description":"Filter by `includeUpcoming`.","schema":{"type":"string"}},{"name":"include_upcoming","in":"query","required":false,"description":"Filter by `include_upcoming`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":50}},{"name":"summary","in":"query","required":false,"description":"`true` returns a summary instead of full rows.","schema":{"type":"boolean"}},{"name":"upcomingLimit","in":"query","required":false,"description":"Filter by `upcomingLimit`.","schema":{"type":"string"}},{"name":"upcoming_limit","in":"query","required":false,"description":"Filter by `upcoming_limit`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Active events","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_event","eventId":"cs2-event-8266","id":"cs2-event-8266","name":"FISSURE Playground 3","slug":"fissure-playground-3","status":"completed","confirmedStatus":"detail_unavailable","startsAt":"2026-09-08T03:00:00.000Z","endsAt":"2026-09-13T23:59:59.000Z","tier":"A","prestigeScore":75,"region":"Asia","isLan":true,"location":"Shenzhen, China","prizePool":1000000,"currency":"USD","prizeDistribution":null,"format":null,"teamCount":16,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/d9d4c3f2cd813bd882aba0867173d3d8.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/d9d4c3f2cd813bd882aba0867173d3d8.webp","bannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/4136fd9dafdb58d6d881db924e6fa42a.webp","eventStructure":null,"hasBracketStructure":false,"standingsAvailable":true,"standings":[{"teamId":"cs2-team-11283","teamName":"Falcons","placement":1},{"teamId":"cs2-team-7020","teamName":"Spirit","placement":3}],"lastSyncedAt":"2026-09-13T19:40:36.753Z","lastVerified":"2026-09-13T12:25:01.955Z","activeEvent":true,"activeReason":"status_active","indexedMatchCount":29,"indexedParticipantCount":15},{"entityType":"cs2_event","eventId":"cs2-event-9240","id":"cs2-event-9240","name":"Esports Nations Cup 2026","slug":"esports-nations-cup-2026","status":"upcoming","confirmedStatus":"detail_unavailable","startsAt":"2026-11-10T00:00:00.000Z","endsAt":"2026-11-15T23:59:59.000Z","tier":"A","prestigeScore":75,"region":null,"isLan":true,"location":null,"prizePool":1320000,"currency":"USD","prizeDistribution":[{"label":"Total prize pool","amount":1320000,"percent":100,"currency":"USD"},{"label":"1st","amount":300000,"teamId":null,"currency":"USD","teamName":null,"clubPrize":null,"placement":"1st","spotPrize":null,"playerPrize":300000}],"format":"Group stage: Round-robin Bo1 / Playoffs: Single elimination Bo3 - Grand final Bo5 3rd place decider match Bo3 Event dates: Nov 10th - Nov 15th 2026","teamCount":24,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0c2fb0ed12bab08f0f0cf7bea895b2d4.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0c2fb0ed12bab08f0f0cf7bea895b2d4.webp","bannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/43105bff49c2aed223bf834eaac0682b.png","eventStructure":{"other":[{"name":"3rd Place Decider Match","type":null,"rounds":[{}],"display":"Collapsed","section":"other"}],"teams":[],"playIn":[],"mapPool":[{"key":"cache","name":"Cache","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"},{"key":"dust2","name":"Dust2","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"}],"brackets":[{"name":"Playoffs","type":null,"rounds":[{},{}],"display":"Collapsed","section":"bracket"}],"groupStage":[],"allBrackets":[{"name":"Playoffs","type":null,"rounds":[{},{}],"display":"Collapsed","section":"bracket"},{"name":"3rd Place Decider Match","type":null,"rounds":[{}],"display":"Collapsed","section":"other"}],"relatedEvents":[{"id":"cs2-event-9299","name":"Esports Nations Cup 2026 West Europe Closed Qualifier","slug":"esports-nations-cup-2026-west-europe-closed-qualifier","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0c2fb0ed12bab08f0f0cf7bea895b2d4.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c601f2190c6bd6a61c010068eb824d19.webp"},{"id":"cs2-event-9300","name":"Esports Nations Cup 2026 East Europe Closed Qualifier","slug":"esports-nations-cup-2026-east-europe-closed-qualifier","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0c2fb0ed12bab08f0f0cf7bea895b2d4.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c601f2190c6bd6a61c010068eb824d19.webp"}]},"hasBracketStructure":true,"standingsAvailable":true,"standings":[{"seed":null,"teamId":"cs2-team-5134","teamName":"United Kingdom","placement":null},{"seed":null,"teamId":"cs2-team-5142","teamName":"France","placement":null}],"lastSyncedAt":"2026-09-17T17:00:21.269Z","lastVerified":"2026-09-12T22:59:25.821Z","activeEvent":true,"activeReason":"status_active","indexedMatchCount":0,"indexedParticipantCount":24}],"meta":{"count":2,"activeCount":2,"upcomingFillCount":0,"dataAvailable":true,"sort":"prize_pool_desc,prestige_score_desc,starts_at_asc","statusScope":"active_only","limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/events/upcoming":{"get":{"summary":"Upcoming events","description":"Scheduled tournaments, soonest first.","operationId":"getCs2EventsUpcoming","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Upcoming events","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_event","eventId":"cs2-event-8302","id":"cs2-event-8302","name":"PGL Major Singapore 2026","slug":"pgl-major-singapore-2026","status":"upcoming","confirmedStatus":"source_listed","startsAt":"2026-12-13T00:00:00.000Z","endsAt":"2026-12-13T23:59:59.000Z","tier":"S","prestigeScore":100,"region":"Asia","isLan":true,"location":"Singapore","prizePool":1250000,"currency":"USD","prizeDistribution":[{"label":"Total prize pool","amount":1250000,"percent":100,"currency":"USD"}],"format":null,"teamCount":16,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9395bf632eb521bc32ed71ae89cf0d22.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9395bf632eb521bc32ed71ae89cf0d22.webp","bannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/85c65209bf71aa69cdb5b255e3a062a1.webp","eventStructure":{"other":[],"teams":[],"playIn":[],"mapPool":[{"key":"cache","name":"Cache","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"},{"key":"dust2","name":"Dust2","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"}],"brackets":[],"groupStage":[],"allBrackets":[],"relatedEvents":[{"id":"cs2-event-8301","name":"IEM Cologne Major 2026","slug":"iem-cologne-major-2026","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9395bf632eb521bc32ed71ae89cf0d22.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9981b4f7011470de58e32a195cd80cb0.webp"},{"id":"cs2-event-9028","name":"IEM Cologne Major 2026 Stage 1","slug":"iem-cologne-major-2026-stage-1","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9395bf632eb521bc32ed71ae89cf0d22.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9981b4f7011470de58e32a195cd80cb0.webp"}]},"hasBracketStructure":true,"standingsAvailable":false,"standings":null,"lastSyncedAt":"2026-09-23T03:15:15.126Z","lastVerified":"2026-09-23T03:15:15.126Z","indexedMatchCount":0,"indexedParticipantCount":0},{"entityType":"cs2_event","eventId":"cs2-event-8050","id":"cs2-event-8050","name":"PGL Masters Bucharest 2026","slug":"pgl-masters-bucharest-2026","status":"upcoming","confirmedStatus":"source_listed","startsAt":"2026-10-31T00:00:00.000Z","endsAt":"2026-10-31T23:59:59.000Z","tier":"A","prestigeScore":80,"region":"Europe","isLan":true,"location":"Bucharest, Romania","prizePool":1250000,"currency":"USD","prizeDistribution":[{"label":"Total prize pool","amount":1250000,"percent":100,"currency":"USD"},{"label":"Player Share","amount":625000,"percent":50,"currency":"USD"}],"format":null,"teamCount":16,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/856742d130d33845a6bc550723b76ede.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/856742d130d33845a6bc550723b76ede.webp","bannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/302d7de6941832dc49b87fa8f5d80a06.webp","eventStructure":{"other":[{"name":"3rd Place Decider Match","type":null,"rounds":[{}],"display":"Collapsed","section":"other"}],"teams":[],"playIn":[],"mapPool":[{"key":"cache","name":"Cache","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"},{"key":"dust2","name":"Dust2","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"}],"brackets":[{"name":"Playoffs","type":null,"rounds":[{},{}],"display":"Collapsed","section":"bracket"}],"groupStage":[],"allBrackets":[{"name":"Playoffs","type":null,"rounds":[{},{}],"display":"Collapsed","section":"bracket"},{"name":"3rd Place Decider Match","type":null,"rounds":[{}],"display":"Collapsed","section":"other"}],"relatedEvents":[{"id":"cs2-event-8046","name":"PGL Masters Bucharest 2025","slug":"pgl-masters-bucharest-2025","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/3d243df9e55b3252320526320ebfa51e.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/3d243df9e55b3252320526320ebfa51e.webp"},{"id":"cs2-event-8049","name":"PGL Astana 2026","slug":"pgl-astana-2026","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/644d92900311187d770719e536859432.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/4e065c74172980f5751433cb4b106ba7.webp"}]},"hasBracketStructure":true,"standingsAvailable":true,"standings":[{"teamId":"cs2-team-7020","teamName":"Spirit","placement":3},{"teamId":"cs2-team-11283","teamName":"Falcons","placement":1}],"lastSyncedAt":"2026-09-23T03:15:06.921Z","lastVerified":"2026-09-23T03:15:06.921Z","indexedMatchCount":0,"indexedParticipantCount":12}],"meta":{"count":2,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/events/recent":{"get":{"summary":"Recent events","description":"Finished tournaments, newest first.","operationId":"getCs2EventsRecent","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Recent events","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_event","eventId":"cs2-event-9405","id":"cs2-event-9405","name":"CCT 2026 Challengers South America Series 3","slug":"cct-2026-challengers-south-america-series-3","status":"completed","confirmedStatus":"detail_unavailable","startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-21T01:16:22.000Z","tier":"B","prestigeScore":55,"region":"South America","isLan":true,"location":null,"prizePool":2500,"currency":"USD","format":"Playoffs: Double elimination Bo3","teamCount":null,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","bannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/94643b0a8eb390b6b41cd3d1850aef12.webp","hasBracketStructure":true,"standingsAvailable":false,"lastSyncedAt":"2026-09-18T21:00:47.512Z","lastVerified":"2026-09-18T21:00:04.293Z","indexedMatchCount":8,"indexedParticipantCount":4},{"entityType":"cs2_event","eventId":"cs2-event-9034","id":"cs2-event-9034","name":"Liga Gamers Club 2026 Serie A February Cup","slug":"liga-gamers-club-2026-serie-a-february-cup","status":"completed","confirmedStatus":"detail_unavailable","startsAt":"2026-02-27T19:00:00.000Z","endsAt":"2026-09-20T23:59:59.000Z","tier":"A","prestigeScore":75,"region":"Europe","isLan":true,"location":null,"prizePool":2000,"currency":"USD","format":"Playoffs: Grand final Bo3","teamCount":2,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/3c16adb151dc0aeaf3d4fd611241f448.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/3c16adb151dc0aeaf3d4fd611241f448.webp","bannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/e423ed2e72d478274c8ca9da4f420b1d.webp","hasBracketStructure":true,"standingsAvailable":true,"lastSyncedAt":"2026-09-20T00:50:07.733Z","lastVerified":"2026-09-12T04:17:37.961Z","indexedMatchCount":1,"indexedParticipantCount":13}],"meta":{"count":2,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/events/calendar":{"get":{"summary":"Event calendar","description":"Tournaments in a date range. Filter with `from` and `to`.","operationId":"getCs2EventsCalendar","tags":["CS2"],"parameters":[{"name":"from","in":"query","required":false,"description":"Start of the date range (ISO 8601, UTC).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":100}},{"name":"status","in":"query","required":false,"description":"Filter by status.","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"End of the date range (ISO 8601, UTC).","schema":{"type":"string"}}],"responses":{"200":{"description":"Event calendar","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_tournament_calendar","dataAvailable":true,"events":[{"entityType":"cs2_event","eventId":"cs2-event-9390","id":"cs2-event-9390","name":"ESEA Intermediate Season 58 Oceania","slug":"esea-intermediate-season-58-oceania","status":"completed","confirmedStatus":"detail_unavailable","startsAt":"2026-09-03T07:30:00.000Z","endsAt":"2026-09-17T09:00:00.000Z","tier":null,"prestigeScore":null,"region":null,"isLan":true,"location":null,"prizePool":null,"currency":"USD","prizeDistribution":[{"label":"1st","amount":null,"teamId":"cs2-team-13686","currency":"USD","teamName":"Abyssal","clubPrize":null,"placement":"1st","spotPrize":null,"playerPrize":null},{"label":"2nd","amount":null,"teamId":null,"currency":"USD","teamName":null,"clubPrize":null,"placement":"2nd","spotPrize":null,"playerPrize":null}],"format":"Playoffs: Double elimination Bo3","teamCount":8,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b3b6c675c0b486f6d1aad32e024f6640.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b3b6c675c0b486f6d1aad32e024f6640.webp","bannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/10cea6fcaa71cda7f16863dab16cac31.jpg","eventStructure":{"other":[],"teams":[],"playIn":[],"mapPool":[{},{}],"brackets":[],"groupStage":[],"allBrackets":[],"relatedEvents":[{}]},"hasBracketStructure":true,"standingsAvailable":true,"standings":[{"seed":123,"teamId":"cs2-team-11668","teamName":"Mindfreak","placement":null},{"seed":155,"teamId":"cs2-team-12363","teamName":"Arcade","placement":null}],"lastSyncedAt":"2026-09-16T10:10:26.327Z","lastVerified":"2026-09-16T10:00:35.624Z","indexedParticipantCount":8},{"entityType":"cs2_event","eventId":"cs2-event-9345","id":"cs2-event-9345","name":"WINLINE MPKBK CIS LAN Season 7","slug":"winline-mpkbk-cis-lan-season-7","status":"completed","confirmedStatus":"detail_unavailable","startsAt":"2026-09-13T06:00:00.000Z","endsAt":"2026-09-16T23:59:59.000Z","tier":"B","prestigeScore":55,"region":"CIS","isLan":true,"location":null,"prizePool":40000,"currency":"USD","prizeDistribution":[{"label":"Total prize pool","amount":40000,"percent":100,"currency":"USD"},{"label":"1st","amount":20000,"teamId":"cs2-team-7969","currency":"USD","teamName":"Nemiga","clubPrize":null,"placement":"1st","spotPrize":null,"playerPrize":20000}],"format":"Group stage: GSL Bo3 / Playoffs: Single elimination Bo3 - Grand final Bo5","teamCount":16,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/cc5faeafdc5987365ea67be93acd1615.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/cc5faeafdc5987365ea67be93acd1615.webp","bannerImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/407000fc879b62b5ed1d535f5e8ead5b.webp","eventStructure":{"other":[],"teams":[],"playIn":[],"mapPool":[{},{}],"brackets":[],"groupStage":[],"allBrackets":[],"relatedEvents":[{},{}]},"hasBracketStructure":true,"standingsAvailable":true,"standings":[{"seed":43,"teamId":"cs2-team-13355","teamName":"Nemesis","placement":null},{"seed":45,"teamId":"cs2-team-13027","teamName":"Nuclear TigeRES","placement":null}],"lastSyncedAt":"2026-09-16T22:00:38.209Z","lastVerified":"2026-09-16T21:50:41.062Z","indexedParticipantCount":16}]},"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/events/{eventIdOrSlug}/matches":{"get":{"summary":"Event matches","description":"All matches of a tournament.","operationId":"getCs2EventsEventIdOrSlugMatches","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":100}}],"responses":{"200":{"description":"Event matches","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_match","id":"cs2-match-2398335","eventId":"cs2-event-9405","eventName":"CCT 2026 Challengers South America Series 3","eventSlug":"cct-2026-challengers-south-america-series-3","stageName":null,"startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-18T01:35:27.865Z","bestOf":3,"status":"completed","team1Id":"cs2-team-13907","team2Id":"cs2-team-13978","team1Name":"RUSH","team2Name":"Sementes do Mal","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-13907","liveState":{"teams":{"team1Name":"RUSH","team2Name":"Sementes do Mal","ctTeamName":"RUSH","terroristTeamName":"Sementes do Mal"},"source":"live","status":"live","matchId":"cs2-match-2398335","roundEnds":[{"winner":"CT","eventId":"8c7dd19ad868b4e7839eeef70f496ac8","payload":{},"winType":"CTs_Win","eventType":"RoundEnd","observedAt":"2026-09-18T01:21:07.634Z","terroristScore":8,"webhookEligible":true,"counterTerroristScore":13},{"winner":"TERRORIST","eventId":"916676e20e999307d8105ff1f5d3ebeb","payload":{},"winType":"Terrorists_Win","eventType":"RoundEnd","observedAt":"2026-09-18T01:21:07.634Z","terroristScore":8,"webhookEligible":true,"counterTerroristScore":12}],"bombEvents":[{"source":"live","eventId":"1f29548ca0ceb17014c035e6ffed2740","payload":{},"bombSite":"B","tPlayers":2,"ctPlayers":0,"eventType":"BombPlanted","observedAt":"2026-09-18T01:21:07.634Z","playerName":"coxinha","playerNick":"coxa","webhookEligible":true},{"source":"live","eventId":"f3960568b0c249e7e68165d061323faa","payload":{},"bombSite":"A","tPlayers":1,"ctPlayers":1,"eventType":"BombPlanted","observedAt":"2026-09-18T01:21:07.635Z","playerName":"Kaiserzy","playerNick":"Kaiserzy","webhookEligible":true}],"capturedAt":"2026-09-18T01:21:07.639Z","currentMap":"de_mirage","team1Score":13,"team2Score":8,"bombPlanted":false,"playerStats":[{"hp":0,"adr":87.95238095238095,"name":"terran","nick":"terran","side":"T","alive":false,"kills":17,"money":450,"deaths":16,"helmet":false,"kevlar":false,"assists":3,"steamId":"1:0:227765279","hasDefuseKit":false,"primaryWeapon":null},{"hp":0,"adr":79.38095238095238,"name":"MrD","nick":"Mrd","side":"T","alive":false,"kills":14,"money":950,"deaths":18,"helmet":false,"kevlar":false,"assists":3,"steamId":"1:1:454616928","hasDefuseKit":false,"primaryWeapon":null}],"currentRound":21,"scoreSummary":null,"winnerTeamId":null,"responseCount":1,"eventNamesSeen":["Assist","BombPlanted"],"roundTimeSeconds":null,"mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":true,"unavailableReason":null,"confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[{},{}]}},"vetoOrder":[{"map":"nuke","order":1,"action":"ban","teamId":"cs2-team-13978","teamName":"Sementes do Mal"},{"map":"anubis","order":2,"action":"ban","teamId":"cs2-team-13907","teamName":"RUSH"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:02:11.922Z","lastVerified":"2026-09-23T03:02:11.922Z","confidence":"high","event":{"id":"cs2-event-9405","name":"CCT 2026 Challengers South America Series 3","slug":"cct-2026-challengers-south-america-series-3","status":"completed","tier":"B","region":"South America","startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-21T01:16:22.000Z","imageUrl":null,"eventId":"cs2-event-9405","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-13907","name":"RUSH","slug":"rush-13907","teamTag":"RUSH","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7c531914f36436c8c3ff879db057eff6.webp","countryName":"Brazil","countryCode":"BR","region":"South America","worldRanking":224,"lastSyncedAt":"2026-09-23T03:08:38.333Z","lastVerified":"2026-09-23T03:08:38.333Z","confidence":"high"},"team2":{"id":"cs2-team-13978","name":"Sementes do Mal","slug":"sementes-do-mal","teamTag":"SDM","logoUrl":null,"countryName":null,"countryCode":null,"region":null,"worldRanking":246,"lastSyncedAt":"2026-09-23T03:09:54.964Z","lastVerified":"2026-09-23T03:09:54.964Z","confidence":"high"},"maps":[{"id":"cs2-match-2398335-map-1","matchId":"cs2-match-2398335","mapNumber":1,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8],"team2Halves":[4],"winnerTeamId":"cs2-team-13907","durationRounds":20,"lastSyncedAt":"2026-09-23T01:40:48.366Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp","pickTeamId":"cs2-team-13978","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398335-map-2","matchId":"cs2-match-2398335","mapNumber":2,"mapName":"Mirage","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[6],"team2Halves":[6],"winnerTeamId":"cs2-team-13907","durationRounds":21,"lastSyncedAt":"2026-09-23T01:41:15.210Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/5c7a6366afcc1accfbe8258a89177b93.webp","pickTeamId":"cs2-team-13907","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps","live_state"],"unavailableSubresources":["player_stats","objective_stats"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}},{"entityType":"cs2_match","id":"cs2-match-2398334","eventId":"cs2-event-9405","eventName":"CCT 2026 Challengers South America Series 3","eventSlug":"cct-2026-challengers-south-america-series-3","stageName":null,"startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-18T02:56:05.709Z","bestOf":3,"status":"completed","team1Id":"cs2-team-14045","team2Id":"cs2-team-14008","team1Name":"Underworld","team2Name":"your end","team1Score":1,"team2Score":2,"winnerTeamId":"cs2-team-14008","liveState":{"teams":{"team1Name":"Underworld","team2Name":"your end","ctTeamName":"your end","terroristTeamName":"Underworld"},"source":"live","status":"live","matchId":"cs2-match-2398334","roundEnds":[{"winner":"CT","eventId":"0921c5acbe23eca9b2adcb110f2d8dba","payload":{},"winType":"Bomb_Defused","eventType":"RoundEnd","observedAt":"2026-09-18T02:09:08.287Z","terroristScore":10,"webhookEligible":true,"counterTerroristScore":6},{"winner":"CT","eventId":"b0bb663abcf4b910bd2dd0853f89d138","payload":{},"winType":"CTs_Win","eventType":"RoundEnd","observedAt":"2026-09-18T02:09:08.287Z","terroristScore":10,"webhookEligible":true,"counterTerroristScore":5}],"bombEvents":[{"source":"live","eventId":"0f594bf0cad4a6e40dee28b737a11f8e","payload":{},"bombSite":"B","tPlayers":4,"ctPlayers":1,"eventType":"BombPlanted","observedAt":"2026-09-18T02:09:08.286Z","playerName":"Lukita","playerNick":"Lukita","webhookEligible":true},{"source":"live","eventId":"01276d1da569beaf5ebfd69277fc4f93","payload":{},"bombSite":"A","tPlayers":3,"ctPlayers":4,"eventType":"BombPlanted","observedAt":"2026-09-18T02:09:08.286Z","playerName":"Cr1a","playerNick":"Cr1a","webhookEligible":true}],"capturedAt":"2026-09-18T02:45:25.848Z","currentMap":"de_ancient","team1Score":11,"team2Score":13,"bombPlanted":false,"playerStats":[{"hp":0,"adr":90.29166666666667,"name":"tgS","nick":"tgS","side":"T","alive":false,"kills":17,"money":1100,"deaths":17,"helmet":false,"kevlar":false,"assists":8,"steamId":"1:1:519943302","hasDefuseKit":false,"primaryWeapon":null},{"hp":0,"adr":89.29166666666667,"name":"neskk","nick":"neskk","side":"T","alive":false,"kills":16,"money":1650,"deaths":17,"helmet":false,"kevlar":false,"assists":6,"steamId":"1:1:156198380","hasDefuseKit":false,"primaryWeapon":null}],"currentRound":24,"scoreSummary":null,"winnerTeamId":null,"responseCount":1045,"eventNamesSeen":["Assist","BombPlanted"],"roundTimeSeconds":null,"mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":true,"unavailableReason":null,"confidence":{"plants":"high","defuses":"high","explosions":"high","clutchDefuse":"medium"},"teamStats":[],"roundEvents":[{},{}]}},"vetoOrder":[{"map":"mirage","order":1,"action":"ban","teamId":"cs2-team-14008","teamName":"your end"},{"map":"anubis","order":2,"action":"ban","teamId":"cs2-team-14045","teamName":"Underworld"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:02:11.189Z","lastVerified":"2026-09-23T03:02:11.189Z","confidence":"high","event":{"id":"cs2-event-9405","name":"CCT 2026 Challengers South America Series 3","slug":"cct-2026-challengers-south-america-series-3","status":"completed","tier":"B","region":"South America","startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-21T01:16:22.000Z","imageUrl":null,"eventId":"cs2-event-9405","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-14045","name":"Underworld","slug":"underworld","teamTag":"UNDERWOR","logoUrl":null,"countryName":null,"countryCode":null,"region":null,"worldRanking":null,"lastSyncedAt":"2026-09-23T03:07:11.468Z","lastVerified":"2026-09-23T03:07:11.468Z","confidence":"high"},"team2":{"id":"cs2-team-14008","name":"your end","slug":"your-end","teamTag":"YOUREND","logoUrl":null,"countryName":null,"countryCode":null,"region":null,"worldRanking":192,"lastSyncedAt":"2026-09-23T03:09:33.979Z","lastVerified":"2026-09-23T03:09:33.979Z","confidence":"high"},"maps":[{"id":"cs2-match-2398334-map-1","matchId":"cs2-match-2398334","mapNumber":1,"mapName":"Inferno","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[6],"team2Halves":[6],"winnerTeamId":"cs2-team-14008","durationRounds":20,"lastSyncedAt":"2026-09-18T20:32:33.533Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/4004b70cfe62cef3b711c587bd0d342c.webp","pickTeamId":"cs2-team-14008","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398334-map-2","matchId":"cs2-match-2398334","mapNumber":2,"mapName":"Dust2","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[5],"team2Halves":[7],"winnerTeamId":"cs2-team-14045","durationRounds":24,"lastSyncedAt":"2026-09-23T03:07:00.643Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp","pickTeamId":"cs2-team-14045","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps","live_state"],"unavailableSubresources":["player_stats","objective_stats"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}],"meta":{"count":2,"event":{"id":"cs2-event-9405","name":"CCT 2026 Challengers South America Series 3","slug":"cct-2026-challengers-south-america-series-3","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","prizePool":2500,"currency":"USD","location":null,"format":"Playoffs: Double elimination Bo3","teamCount":null,"standings":null,"startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-21T01:16:22.000Z","status":"completed","tier":"B","prestigeScore":55,"region":"South America","isLan":true,"confirmedStatus":"detail_unavailable","streamLinks":null,"vodLinks":null,"lastSyncedAt":"2026-09-18T21:00:47.512Z","lastVerified":"2026-09-18T21:00:04.293Z","confidence":"high"},"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/events/{eventIdOrSlug}/teams":{"get":{"summary":"Event teams","description":"Teams in a tournament.","operationId":"getCs2EventsEventIdOrSlugTeams","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Event teams","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_event_teams","eventId":"cs2-event-9405","eventName":"CCT 2026 Challengers South America Series 3","dataAvailable":true,"teams":[{"id":"cs2-team-13978","name":"Sementes do Mal","eventSeed":null,"eventPlacement":null,"eventStatus":"attending","lastSyncedAt":"2026-09-17T20:55:03.035Z"},{"id":"cs2-team-13811","name":"QUINTESSÊNCIA","slug":"quintessncia","teamTag":"QUINTESS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b83bfcf22f50f55d9a7b96441358a4e0.webp","countryName":"Brazil","countryCode":"BR","region":"Americas","worldRanking":132,"lastSyncedAt":"2026-09-23T03:09:20.146Z","lastVerified":"2026-09-23T03:09:20.146Z","confidence":"high"}]},"meta":{"count":7,"participantCount":4,"matchTeamCount":8,"dataAvailable":true,"limit":7,"total":7,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/events/{eventIdOrSlug}/participants":{"get":{"summary":"Event participants","description":"Teams in a tournament with their players.","operationId":"getCs2EventsEventIdOrSlugParticipants","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 250; larger values are reduced to 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Event participants","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_event_participants","eventId":"cs2-event-9405","eventName":"CCT 2026 Challengers South America Series 3","dataAvailable":true,"teams":[{"eventId":"cs2-event-9405","teamId":"cs2-team-13907","teamName":"RUSH","seed":null,"placement":null,"status":"attending","lastSyncedAt":"2026-09-17T20:55:03.000Z"},{"eventId":"cs2-event-9405","teamId":"cs2-team-13978","teamName":"Sementes do Mal","seed":null,"placement":null,"status":"attending","lastSyncedAt":"2026-09-17T20:55:03.035Z"}]},"meta":{"count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/events/{eventIdOrSlug}/standings":{"get":{"summary":"Event standings","description":"Teams of a tournament with seed, final placement and prize, ordered by placement.","operationId":"getCs2EventsEventIdOrSlugStandings","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Event standings","content":{"application/json":{"example":{"success":true,"data":{"dataAvailable":false,"unavailableReason":"not_yet_indexed","dataQuality":"unavailable","message":"Event standings have not been indexed for this CS2 event yet."},"meta":{"count":0,"dataAvailable":false,"source":null,"limit":0,"total":0,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/events/{eventIdOrSlug}/results":{"get":{"summary":"Event results","description":"Final placements and prize money for a tournament.","operationId":"getCs2EventsEventIdOrSlugResults","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":100}}],"responses":{"200":{"description":"Event results","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_match","id":"cs2-match-2398341","eventId":"cs2-event-9405","eventName":"CCT 2026 Challengers South America Series 3","eventSlug":"cct-2026-challengers-south-america-series-3","stageName":null,"startsAt":"2026-09-21T01:16:22.000Z","endsAt":null,"bestOf":3,"status":"completed","team1Id":"cs2-team-14008","team2Id":"cs2-team-13811","team1Name":"your end","team2Name":"QUINTESSÊNCIA","team1Score":0,"team2Score":2,"winnerTeamId":"cs2-team-13811","liveState":{"status":"completed","team1Score":0,"team2Score":2,"winnerTeamId":"cs2-team-13811"},"vetoOrder":[{"map":"anubis","order":1,"action":"ban","teamId":"cs2-team-13811","teamName":"QUINTESSÊNCIA"},{"map":null,"order":2,"action":"ban","teamId":"cs2-team-14008","teamName":"your end"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:06:59.572Z","lastVerified":"2026-09-23T03:06:59.572Z","confidence":"high","event":{"id":"cs2-event-9405","name":"CCT 2026 Challengers South America Series 3","slug":"cct-2026-challengers-south-america-series-3","status":"completed","tier":"B","region":"South America","startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-21T01:16:22.000Z","imageUrl":null,"eventId":"cs2-event-9405","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-14008","name":"your end","slug":"your-end","teamTag":"YOUREND","logoUrl":null,"countryName":null,"countryCode":null,"region":null,"worldRanking":192,"lastSyncedAt":"2026-09-23T03:09:33.979Z","lastVerified":"2026-09-23T03:09:33.979Z","confidence":"high"},"team2":{"id":"cs2-team-13811","name":"QUINTESSÊNCIA","slug":"quintessncia","teamTag":"QUINTESS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b83bfcf22f50f55d9a7b96441358a4e0.webp","countryName":"Brazil","countryCode":"BR","region":"Americas","worldRanking":132,"lastSyncedAt":"2026-09-23T03:09:20.146Z","lastVerified":"2026-09-23T03:09:20.146Z","confidence":"high"},"maps":[{"id":"cs2-match-2398341-map-1","matchId":"cs2-match-2398341","mapNumber":1,"mapName":"Mirage","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[4,2],"team2Halves":[8,5],"winnerTeamId":"cs2-team-13811","durationRounds":19,"lastSyncedAt":"2026-09-23T02:08:13.380Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/5c7a6366afcc1accfbe8258a89177b93.webp","pickTeamId":"cs2-team-13811","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398341-map-2","matchId":"cs2-match-2398341","mapNumber":2,"mapName":"Nuke","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[5,2],"team2Halves":[7,6],"winnerTeamId":"cs2-team-13811","durationRounds":20,"lastSyncedAt":"2026-09-23T02:08:13.410Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/9397539119b91cb92e079508bbd387a0.webp","pickTeamId":"cs2-team-14008","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps","live_state"],"unavailableSubresources":["player_stats","objective_stats"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}},{"entityType":"cs2_match","id":"cs2-match-2398340","eventId":"cs2-event-9405","eventName":"CCT 2026 Challengers South America Series 3","eventSlug":"cct-2026-challengers-south-america-series-3","stageName":null,"startsAt":"2026-09-20T22:19:43.000Z","endsAt":null,"bestOf":3,"status":"completed","team1Id":"cs2-team-11008","team2Id":"cs2-team-13811","team1Name":"RUSH","team2Name":"QUINTESSÊNCIA","team1Score":0,"team2Score":2,"winnerTeamId":"cs2-team-13811","liveState":{"status":"completed","team1Score":0,"team2Score":2,"winnerTeamId":"cs2-team-13811"},"vetoOrder":[{"map":"nuke","order":1,"action":"ban","teamId":"cs2-team-13811","teamName":"QUINTESSÊNCIA"},{"map":"anubis","order":2,"action":"ban","teamId":"cs2-team-13907","teamName":"RUSH"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:07:01.475Z","lastVerified":"2026-09-23T03:07:01.475Z","confidence":"high","event":{"id":"cs2-event-9405","name":"CCT 2026 Challengers South America Series 3","slug":"cct-2026-challengers-south-america-series-3","status":"completed","tier":"B","region":"South America","startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-21T01:16:22.000Z","imageUrl":null,"eventId":"cs2-event-9405","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","bannerImageUrl":null},"team1":{"id":"cs2-team-11008","name":"RUSH","slug":"rush","teamTag":"RUSH","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/baa98090425384c3c4c98128b1d15abc.webp","countryName":"Brazil","countryCode":"BR","region":"South America","worldRanking":null,"lastSyncedAt":"2026-09-16T12:42:05.971Z","lastVerified":"2026-09-16T12:42:05.971Z","confidence":"high"},"team2":{"id":"cs2-team-13811","name":"QUINTESSÊNCIA","slug":"quintessncia","teamTag":"QUINTESS","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b83bfcf22f50f55d9a7b96441358a4e0.webp","countryName":"Brazil","countryCode":"BR","region":"Americas","worldRanking":132,"lastSyncedAt":"2026-09-23T03:09:20.146Z","lastVerified":"2026-09-23T03:09:20.146Z","confidence":"high"},"maps":[{"id":"cs2-match-2398340-map-1","matchId":"cs2-match-2398340","mapNumber":1,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[4,2],"team2Halves":[8,5],"winnerTeamId":"cs2-team-13811","durationRounds":19,"lastSyncedAt":"2026-09-23T01:12:19.011Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp","pickTeamId":"cs2-team-13811","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true},{"id":"cs2-match-2398340-map-2","matchId":"cs2-match-2398340","mapNumber":2,"mapName":"Mirage","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[2,0],"team2Halves":[10,3],"winnerTeamId":"cs2-team-13811","durationRounds":15,"lastSyncedAt":"2026-09-23T01:12:19.047Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/5c7a6366afcc1accfbe8258a89177b93.webp","pickTeamId":"cs2-team-13907","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{"playerStats":{}},"scorePending":true}],"eventLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","eventImageUrl":null,"eventBannerImageUrl":null,"availableSubresources":["maps","live_state"],"unavailableSubresources":["player_stats","objective_stats"],"unavailableFields":{},"dataQuality":"complete","confidenceScore":0.95,"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}],"meta":{"count":2,"indexedCount":2,"eventStructureCount":0,"dataAvailable":true,"event":{"id":"cs2-event-9405","name":"CCT 2026 Challengers South America Series 3","slug":"cct-2026-challengers-south-america-series-3","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","prizePool":2500,"currency":"USD","location":null,"format":"Playoffs: Double elimination Bo3","teamCount":null,"standings":null,"startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-21T01:16:22.000Z","status":"completed","tier":"B","prestigeScore":55,"region":"South America","isLan":true,"confirmedStatus":"detail_unavailable","streamLinks":null,"vodLinks":null,"lastSyncedAt":"2026-09-18T21:00:47.512Z","lastVerified":"2026-09-18T21:00:04.293Z","confidence":"high"},"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/events/{eventIdOrSlug}/stats":{"get":{"summary":"Event stats","description":"Top players and teams by stats within a tournament.","operationId":"getCs2EventsEventIdOrSlugStats","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Event stats","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_event_stats","eventId":"cs2-event-9405","eventName":"CCT 2026 Challengers South America Series 3","dataAvailable":true,"lastSyncedAt":"2026-09-23T01:40:58.954Z","demoCoverage":{"matchesIndexed":8,"demos":{"total":0,"byStatus":{}}},"topPlayers":[{"playerId":"cs2-player-24716","playerName":"cLd","teamId":"cs2-team-13907","teamName":"RUSH","maps":2,"kills":34,"deaths":24,"assists":11,"kdDiff":10,"kdRatio":1.4167,"adr":null,"kast":null,"rating":1.525,"rating3Profile":{"rating3":null,"rating3Available":false,"subratings":{"kills":17,"damage":null,"survival":1.875,"kast":null,"multiKills":null,"roundSwing":null},"openingDuels":{"openingKills":0,"openingDeaths":0,"successRate":null},"unavailableSubratings":["multi_kills","round_swing"],"rating2":1.525},"source":"live","lastSyncedAt":"2026-09-23T01:40:58.954Z"},{"playerId":"cs2-player-22423","playerName":"clon7","teamId":"cs2-team-13907","teamName":"RUSH","maps":2,"kills":37,"deaths":25,"assists":8,"kdDiff":12,"kdRatio":1.48,"adr":null,"kast":null,"rating":1.505,"rating3Profile":{"rating3":null,"rating3Available":false,"subratings":{"kills":18.5,"damage":null,"survival":1.8,"kast":null,"multiKills":null,"roundSwing":null},"openingDuels":{"openingKills":0,"openingDeaths":0,"successRate":null},"unavailableSubratings":["multi_kills","round_swing"],"rating2":1.505},"source":"live","lastSyncedAt":"2026-09-23T01:40:58.954Z"}],"topWeapons":[]},"meta":{"playerCount":2,"weaponCount":0,"dataAvailable":true,"demoCoverage":{"matchesIndexed":8,"demos":{"total":0,"byStatus":{}}}}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/events/{eventIdOrSlug}/bracket":{"get":{"summary":"Event bracket","description":"Bracket, group stage, play-in and Swiss structure of a tournament, each slot with its teams, scores and winner.","operationId":"getCs2EventsEventIdOrSlugBracket","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Event bracket","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_event_bracket","eventId":"cs2-event-9405","eventName":"CCT 2026 Challengers South America Series 3","dataAvailable":true,"bracket":[],"groupStage":[],"playIn":[],"swiss":null,"teams":[],"mapPool":[{"key":"cache","name":"Cache","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"},{"key":"dust2","name":"Dust2","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"}],"relatedEvents":[{"id":"cs2-event-9313","name":"CCT 2026 Challengers South America Series 2","slug":"cct-2026-challengers-south-america-series-2","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f0cb5ad3c32d928caa3bb237032de831.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f0cb5ad3c32d928caa3bb237032de831.webp"}],"completedMatchesFromStructure":[],"lastVerified":"2026-09-18T21:00:04.293Z"},"meta":{"dataAvailable":true,"swissAvailable":false,"completedStructureMatchCount":0}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/events/{eventIdOrSlug}":{"get":{"summary":"Event details","description":"One tournament: dates, location, prize pool, tier, teams and format.","operationId":"getCs2EventsEventIdOrSlug","tags":["CS2"],"parameters":[{"name":"eventIdOrSlug","in":"path","required":true,"description":"Event id (`cs2-event-8038`) or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Event details","content":{"application/json":{"example":{"success":true,"data":{"entityType":"cs2_event","eventId":"cs2-event-9405","id":"cs2-event-9405","name":"CCT 2026 Challengers South America Series 3","slug":"cct-2026-challengers-south-america-series-3","status":"completed","confirmedStatus":"detail_unavailable","startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-21T01:16:22.000Z","tier":"B","prestigeScore":55,"region":"South America","isLan":true,"location":null,"prizePool":2500,"currency":"USD","prizeDistribution":[{"label":"Total prize pool","amount":2500,"percent":100,"currency":"USD"}],"format":"Playoffs: Double elimination Bo3","teamCount":null,"logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp","bannerImageUrl":null,"eventStructure":{"other":[],"teams":[],"playIn":[],"mapPool":[{"key":"cache","name":"Cache","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp"},{"key":"dust2","name":"Dust2","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp"}],"brackets":[],"groupStage":[],"allBrackets":[],"relatedEvents":[{"id":"cs2-event-9313","name":"CCT 2026 Challengers South America Series 2","slug":"cct-2026-challengers-south-america-series-2","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f0cb5ad3c32d928caa3bb237032de831.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/f0cb5ad3c32d928caa3bb237032de831.webp"}]},"hasBracketStructure":true,"standingsAvailable":false,"standings":null,"lastSyncedAt":"2026-09-18T21:00:47.512Z","lastVerified":null,"indexedMatchCount":8,"indexedParticipantCount":4,"participants":[{"eventId":"cs2-event-9405","teamId":"cs2-team-13907","teamName":"RUSH","seed":null,"placement":null,"status":"attending","lastSyncedAt":"2026-09-17T20:55:03.000Z"},{"eventId":"cs2-event-9405","teamId":"cs2-team-13978","teamName":"Sementes do Mal","seed":null,"placement":null,"status":"attending","lastSyncedAt":"2026-09-17T20:55:03.035Z"}],"matches":[{"id":"cs2-match-2398334","eventId":"cs2-event-9405","eventName":"CCT 2026 Challengers South America Series 3","eventSlug":"cct-2026-challengers-south-america-series-3","stageName":null,"startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-18T02:56:05.709Z","bestOf":3,"status":"completed","team1Id":"cs2-team-14045","team2Id":"cs2-team-14008","team1Name":"Underworld","team2Name":"your end","team1Score":1,"team2Score":2,"winnerTeamId":"cs2-team-14008","liveState":{"teams":{"team1Name":"Underworld","team2Name":"your end","ctTeamName":"your end","terroristTeamName":"Underworld"},"source":"live","status":"live","matchId":"cs2-match-2398334","roundEnds":[{},{}],"bombEvents":[{},{}],"capturedAt":"2026-09-18T02:45:25.848Z","currentMap":"de_ancient","team1Score":11,"team2Score":13,"bombPlanted":false,"playerStats":[{},{}],"currentRound":24,"scoreSummary":null,"winnerTeamId":null,"responseCount":1045,"eventNamesSeen":["Assist","BombPlanted"],"roundTimeSeconds":null,"mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":true,"unavailableReason":null,"confidence":{},"teamStats":[],"roundEvents":[{},{}]}},"vetoOrder":[{"map":"mirage","order":1,"action":"ban","teamId":"cs2-team-14008","teamName":"your end"},{"map":"anubis","order":2,"action":"ban","teamId":"cs2-team-14045","teamName":"Underworld"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:02:11.189Z","lastVerified":"2026-09-23T03:02:11.189Z","confidence":"high","event":{"id":"cs2-event-9405","name":"CCT 2026 Challengers South America Series 3","slug":"cct-2026-challengers-south-america-series-3","status":"completed","tier":"B","region":"South America","startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-21T01:16:22.000Z","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp"},"team1":{"id":"cs2-team-14045","name":"Underworld","slug":"underworld","teamTag":"UNDERWOR","logoUrl":null,"countryName":null,"countryCode":null,"region":null,"worldRanking":null,"lastSyncedAt":"2026-09-23T03:07:11.468Z","lastVerified":"2026-09-23T03:07:11.468Z","confidence":"high"},"team2":{"id":"cs2-team-14008","name":"your end","slug":"your-end","teamTag":"YOUREND","logoUrl":null,"countryName":null,"countryCode":null,"region":null,"worldRanking":192,"lastSyncedAt":"2026-09-23T03:09:33.979Z","lastVerified":"2026-09-23T03:09:33.979Z","confidence":"high"},"maps":[{"id":"cs2-match-2398334-map-1","matchId":"cs2-match-2398334","mapNumber":1,"mapName":"Inferno","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[6],"team2Halves":[6],"winnerTeamId":"cs2-team-14008","durationRounds":20,"lastSyncedAt":"2026-09-18T20:32:33.533Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/4004b70cfe62cef3b711c587bd0d342c.webp","pickTeamId":"cs2-team-14008","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{},"scorePending":true},{"id":"cs2-match-2398334-map-2","matchId":"cs2-match-2398334","mapNumber":2,"mapName":"Dust2","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[5],"team2Halves":[7],"winnerTeamId":"cs2-team-14045","durationRounds":24,"lastSyncedAt":"2026-09-23T03:07:00.643Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/16948a6107149d6bce6ea2a0ace54d43.webp","pickTeamId":"cs2-team-14045","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{},"scorePending":true}],"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}},{"id":"cs2-match-2398335","eventId":"cs2-event-9405","eventName":"CCT 2026 Challengers South America Series 3","eventSlug":"cct-2026-challengers-south-america-series-3","stageName":null,"startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-18T01:35:27.865Z","bestOf":3,"status":"completed","team1Id":"cs2-team-13907","team2Id":"cs2-team-13978","team1Name":"RUSH","team2Name":"Sementes do Mal","team1Score":2,"team2Score":0,"winnerTeamId":"cs2-team-13907","liveState":{"teams":{"team1Name":"RUSH","team2Name":"Sementes do Mal","ctTeamName":"RUSH","terroristTeamName":"Sementes do Mal"},"source":"live","status":"live","matchId":"cs2-match-2398335","roundEnds":[{},{}],"bombEvents":[{},{}],"capturedAt":"2026-09-18T01:21:07.639Z","currentMap":"de_mirage","team1Score":13,"team2Score":8,"bombPlanted":false,"playerStats":[{},{}],"currentRound":21,"scoreSummary":null,"winnerTeamId":null,"responseCount":1,"eventNamesSeen":["Assist","BombPlanted"],"roundTimeSeconds":null,"mapImageUrl":null,"pickTeamId":null,"objectiveStats":{"dataAvailable":true,"unavailableReason":null,"confidence":{},"teamStats":[],"roundEvents":[{},{}]}},"vetoOrder":[{"map":"nuke","order":1,"action":"ban","teamId":"cs2-team-13978","teamName":"Sementes do Mal"},{"map":"anubis","order":2,"action":"ban","teamId":"cs2-team-13907","teamName":"RUSH"}],"streamLinks":[{"url":null,"label":null,"language":null,"platform":"twitch"},{"url":null,"label":null,"language":null,"platform":"youtube"}],"vodLinks":[],"lastSyncedAt":"2026-09-23T03:02:11.922Z","lastVerified":"2026-09-23T03:02:11.922Z","confidence":"high","event":{"id":"cs2-event-9405","name":"CCT 2026 Challengers South America Series 3","slug":"cct-2026-challengers-south-america-series-3","status":"completed","tier":"B","region":"South America","startsAt":"2026-09-17T23:45:00.000Z","endsAt":"2026-09-21T01:16:22.000Z","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7211f321d8786082be2e104946e5c0a9.webp"},"team1":{"id":"cs2-team-13907","name":"RUSH","slug":"rush-13907","teamTag":"RUSH","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/7c531914f36436c8c3ff879db057eff6.webp","countryName":"Brazil","countryCode":"BR","region":"South America","worldRanking":224,"lastSyncedAt":"2026-09-23T03:08:38.333Z","lastVerified":"2026-09-23T03:08:38.333Z","confidence":"high"},"team2":{"id":"cs2-team-13978","name":"Sementes do Mal","slug":"sementes-do-mal","teamTag":"SDM","logoUrl":null,"countryName":null,"countryCode":null,"region":null,"worldRanking":246,"lastSyncedAt":"2026-09-23T03:09:54.964Z","lastVerified":"2026-09-23T03:09:54.964Z","confidence":"high"},"maps":[{"id":"cs2-match-2398335-map-1","matchId":"cs2-match-2398335","mapNumber":1,"mapName":"Cache","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[8],"team2Halves":[4],"winnerTeamId":"cs2-team-13907","durationRounds":20,"lastSyncedAt":"2026-09-23T01:40:48.366Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c442564b5d271f85b71cc038389bd4ea.webp","pickTeamId":"cs2-team-13978","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{},"scorePending":true},{"id":"cs2-match-2398335-map-2","matchId":"cs2-match-2398335","mapNumber":2,"mapName":"Mirage","status":"completed","team1Score":null,"team2Score":null,"team1Halves":[6],"team2Halves":[6],"winnerTeamId":"cs2-team-13907","durationRounds":21,"lastSyncedAt":"2026-09-23T01:41:15.210Z","mapImageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/5c7a6366afcc1accfbe8258a89177b93.webp","pickTeamId":"cs2-team-13907","resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":false,"unavailableReason":null,"dataAvailability":{},"scorePending":true}],"resultType":"played","resultStatus":"completed","isForfeit":false,"statsEligible":true,"unavailableReason":null,"dataAvailability":{"playerStats":{"dataAvailable":false,"unavailableReason":"not_yet_indexed"}}}],"stats":null,"availableSubresources":["matches","teams"],"unavailableSubresources":["standings"],"unavailableFields":{"imageUrl":{"reason":"event_field_unavailable"},"prizePool":{"reason":"event_field_unavailable"},"location":null,"teamCount":{"reason":"event_field_unavailable"},"standings":{"reason":"event_field_unavailable"},"startsAt":{"reason":"event_field_unavailable"},"endsAt":{"reason":"event_field_unavailable"}},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7},"meta":{}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/events":{"get":{"summary":"List events","description":"Tournaments with filters for status and date. List rows are compact; fetch one event for its full structure and standings.","operationId":"getCs2Events","tags":["CS2"],"parameters":[{"name":"fields","in":"query","required":false,"description":"Comma-separated list of fields to return.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"summary","in":"query","required":false,"description":"`true` returns a summary instead of full rows.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"List events","content":{"application/json":{"example":{"success":true,"data":[{"entityType":"cs2_event","eventId":"cs2-event-8300","id":"cs2-event-8300","name":"Major #2 2028","slug":"major-2-2028","status":"upcoming","confirmedStatus":"source_listed","startsAt":"2028-12-10T00:00:00.000Z","endsAt":"2028-12-10T23:59:59.000Z","tier":"S","prestigeScore":100,"region":"Europe","isLan":true,"location":null,"prizePool":null,"currency":"USD","format":null,"teamCount":4,"logoUrl":null,"imageUrl":null,"bannerImageUrl":null,"hasBracketStructure":true,"standingsAvailable":true,"lastSyncedAt":"2026-09-23T03:15:26.387Z","lastVerified":null,"indexedMatchCount":0,"indexedParticipantCount":0,"eventStructure":null,"prizeDistribution":null,"stats":null,"availableSubresources":["matches","standings"],"unavailableSubresources":["teams"],"unavailableFields":{"imageUrl":{"reason":"event_field_unavailable"},"prizePool":{"reason":"event_field_unavailable"},"location":null,"format":{"reason":"event_field_unavailable"},"teamCount":{"reason":"event_field_unavailable"},"standings":{"reason":"event_field_unavailable"},"startsAt":{"reason":"event_field_unavailable"},"endsAt":{"reason":"event_field_unavailable"}},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7},{"entityType":"cs2_event","eventId":"cs2-event-8822","id":"cs2-event-8822","name":"PGL Event #8 2028","slug":"pgl-event-8-2028","status":"upcoming","confirmedStatus":"source_listed","startsAt":"2028-11-13T00:00:00.000Z","endsAt":"2028-11-13T23:59:59.000Z","tier":null,"prestigeScore":null,"region":"Europe","isLan":true,"location":null,"prizePool":null,"currency":"USD","format":null,"teamCount":4,"logoUrl":null,"imageUrl":null,"bannerImageUrl":null,"hasBracketStructure":true,"standingsAvailable":true,"lastSyncedAt":"2026-09-23T03:15:26.259Z","lastVerified":null,"indexedMatchCount":0,"indexedParticipantCount":0,"eventStructure":null,"prizeDistribution":null,"stats":null,"availableSubresources":["matches","standings"],"unavailableSubresources":["teams"],"unavailableFields":{"imageUrl":{"reason":"event_field_unavailable"},"prizePool":{"reason":"event_field_unavailable"},"location":null,"format":{"reason":"event_field_unavailable"},"teamCount":{"reason":"event_field_unavailable"},"standings":{"reason":"event_field_unavailable"},"startsAt":{"reason":"event_field_unavailable"},"endsAt":{"reason":"event_field_unavailable"}},"dataQuality":"partial","confidence":"medium","confidenceScore":0.7}],"meta":{"page":1,"limit":2,"total":1308,"count":2,"totalPages":654,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/rankings/world":{"get":{"summary":"World ranking","description":"The latest world team ranking.","operationId":"getCs2RankingsWorld","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"World ranking","content":{"application/json":{"example":{"success":true,"data":[{"id":"ee06a068-2a5a-415c-aa25-9a6bd864aa0c","teamId":"cs2-team-7020","teamName":"Spirit","rank":1,"points":1000,"change":0,"region":"Europe","rankingDate":"2026-09-23T00:00:00.000Z","syncedAt":"2026-09-23T03:07:49.835Z","team":{"id":"cs2-team-7020","name":"Spirit","slug":"spirit","teamTag":"SPIRIT","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/608894028d96779c209b2fb4c03da37c.webp","countryName":"Russia","countryCode":"RU","region":"Europe","lastSyncedAt":"2026-09-23T03:11:27.600Z","lastVerified":"2026-09-23T03:11:27.600Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/25ac49209b09795f64e76b9800aa5b5c.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/25ac49209b09795f64e76b9800aa5b5c.webp"}},{"id":"23408c88-6ee3-4376-9120-13bb3b0085ba","teamId":"cs2-team-9565","teamName":"Vitality","rank":2,"points":682,"change":3,"region":"Europe","rankingDate":"2026-09-23T00:00:00.000Z","syncedAt":"2026-09-23T03:07:49.835Z","team":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"}}],"meta":{"count":2,"total":249,"page":1,"limit":2,"ranking":"world","rankingDate":"2026-09-23","changeSince":"2026-09-16","syncedAt":"2026-09-23T03:07:49.835Z","availability":"available","totalPages":125,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/rankings/vrs":{"get":{"summary":"Valve Regional Standings","description":"The latest Valve Regional Standings (VRS).","operationId":"getCs2RankingsVrs","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Valve Regional Standings","content":{"application/json":{"example":{"success":true,"data":[{"id":"b7fc5b81-d58e-4ca2-8842-30155e77f459","teamId":"cs2-team-7020","teamName":"Spirit","rank":1,"points":2037,"change":0,"region":"Europe","rankingDate":"2026-09-23T00:00:00.000Z","syncedAt":"2026-09-23T03:07:49.835Z","team":{"id":"cs2-team-7020","name":"Spirit","slug":"spirit","teamTag":"SPIRIT","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/608894028d96779c209b2fb4c03da37c.webp","countryName":"Russia","countryCode":"RU","region":"Europe","lastSyncedAt":"2026-09-23T03:11:27.600Z","lastVerified":"2026-09-23T03:11:27.600Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/25ac49209b09795f64e76b9800aa5b5c.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/25ac49209b09795f64e76b9800aa5b5c.webp"}},{"id":"b1048400-a473-4fa7-9379-5948627fb987","teamId":"cs2-team-12468","teamName":"Legacy","rank":2,"points":1893,"change":1,"region":"South America","rankingDate":"2026-09-23T00:00:00.000Z","syncedAt":"2026-09-23T03:07:49.835Z","team":{"id":"cs2-team-12468","name":"Legacy","slug":"legacy","teamTag":"LEGACY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/b2dd3b4f042fdde6c47649ace7587673.webp","countryName":"Brazil","countryCode":"BR","region":"South America","lastSyncedAt":"2026-09-23T03:08:44.227Z","lastVerified":"2026-09-23T03:08:44.227Z","confidence":"high"}}],"meta":{"count":2,"total":358,"page":1,"limit":2,"ranking":"vrs","rankingDate":"2026-09-23","changeSince":"2026-09-16","syncedAt":"2026-09-23T03:07:49.835Z","availability":"available","totalPages":179,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/rankings/region/{region}":{"get":{"summary":"Regional ranking","description":"The latest ranking for one region, with each team's world and regional rank. `region`: `europe`, `americas`, `north-america`, `south-america`, `asia` or `oceania` (short forms `eu`, `am`, `na`, `sa`, `as` also work).","operationId":"getCs2RankingsRegionRegion","tags":["CS2"],"parameters":[{"name":"region","in":"path","required":true,"description":"Region: `europe`, `americas`, `north-america`, `south-america`, `asia`, `oceania`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"source","in":"query","required":false,"description":"Ranking to use: omit for Valve Regional Standings, or `world` for the world ranking filtered to this region.","schema":{"type":"string"}}],"responses":{"200":{"description":"Regional ranking","content":{"application/json":{"example":{"success":true,"data":[{"id":"b7fc5b81-d58e-4ca2-8842-30155e77f459","teamId":"cs2-team-7020","teamName":"Spirit","rank":1,"points":2037,"change":null,"region":"Europe","rankingDate":"2026-09-23T00:00:00.000Z","syncedAt":"2026-09-23T03:07:49.835Z","team":{"id":"cs2-team-7020","name":"Spirit","slug":"spirit","teamTag":"SPIRIT","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/608894028d96779c209b2fb4c03da37c.webp","countryName":"Russia","countryCode":"RU","region":"Europe","worldRanking":1,"lastSyncedAt":"2026-09-23T03:11:27.600Z","lastVerified":"2026-09-23T03:11:27.600Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/25ac49209b09795f64e76b9800aa5b5c.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/25ac49209b09795f64e76b9800aa5b5c.webp"},"regionalRank":1},{"id":"6a89657d-215b-43ea-9734-b93d79f710fd","teamId":"cs2-team-9565","teamName":"Vitality","rank":3,"points":1877,"change":null,"region":"Europe","rankingDate":"2026-09-23T00:00:00.000Z","syncedAt":"2026-09-23T03:07:49.835Z","team":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","worldRanking":2,"lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"},"regionalRank":2}],"meta":{"region":"europe","rankingDate":"2026-09-23","count":2,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/rankings/teams":{"get":{"summary":"Team rankings","description":"The latest world team ranking, one row per team, with points and change since the previous ranking.\n\nSame response as `GET /api/v1/cs2/rankings`.","operationId":"getCs2RankingsTeams","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"source","in":"query","required":false,"description":"Ranking to use: omit for Valve Regional Standings, or `world` for the world ranking filtered to this region.","schema":{"type":"string"}}],"responses":{"200":{"description":"Team rankings"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/rankings"}},"/cs2/rankings":{"get":{"summary":"Team rankings","description":"The latest world team ranking, one row per team, with points and change since the previous ranking.","operationId":"getCs2Rankings","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging.","schema":{"type":"integer","minimum":0}},{"name":"page","in":"query","required":false,"description":"Page number, starting at 1.","schema":{"type":"integer","minimum":1}},{"name":"source","in":"query","required":false,"description":"Ranking to use: omit for Valve Regional Standings, or `world` for the world ranking filtered to this region.","schema":{"type":"string"}}],"responses":{"200":{"description":"Team rankings","content":{"application/json":{"example":{"success":true,"data":[{"id":"ee06a068-2a5a-415c-aa25-9a6bd864aa0c","teamId":"cs2-team-7020","teamName":"Spirit","rank":1,"points":1000,"change":0,"region":"Europe","rankingDate":"2026-09-23T00:00:00.000Z","syncedAt":"2026-09-23T03:07:49.835Z","team":{"id":"cs2-team-7020","name":"Spirit","slug":"spirit","teamTag":"SPIRIT","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/608894028d96779c209b2fb4c03da37c.webp","countryName":"Russia","countryCode":"RU","region":"Europe","lastSyncedAt":"2026-09-23T03:11:27.600Z","lastVerified":"2026-09-23T03:11:27.600Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/25ac49209b09795f64e76b9800aa5b5c.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/25ac49209b09795f64e76b9800aa5b5c.webp"}},{"id":"23408c88-6ee3-4376-9120-13bb3b0085ba","teamId":"cs2-team-9565","teamName":"Vitality","rank":2,"points":682,"change":3,"region":"Europe","rankingDate":"2026-09-23T00:00:00.000Z","syncedAt":"2026-09-23T03:07:49.835Z","team":{"id":"cs2-team-9565","name":"Vitality","slug":"vitality","teamTag":"VITALITY","logoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/0cd34febd1ad61ff888f21b55756003b.webp","countryName":"France","countryCode":"FR","region":"Europe","lastSyncedAt":"2026-09-23T03:08:44.625Z","lastVerified":"2026-09-23T03:08:44.625Z","confidence":"high","alternateLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp","darkUiLogoUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/c5e463f9b2347d3aa58794fb8f7ec967.webp"}}],"meta":{"count":2,"total":249,"page":1,"limit":2,"ranking":"world","rankingDate":"2026-09-23","changeSince":"2026-09-16","syncedAt":"2026-09-23T03:07:49.835Z","availability":"available","totalPages":125,"hasNext":true,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/leaderboards/{metric}":{"get":{"summary":"Player leaderboard","description":"Top players by one metric over a recent window, with a minimum number of maps. `metric`: `rating`, `adr`, `kast`, `kd`, `kills` or `opening-kills`.","operationId":"getCs2LeaderboardsMetric","tags":["CS2"],"parameters":[{"name":"metric","in":"path","required":true,"description":"One of `rating`, `adr`, `kast`, `kd`, `kills`, `opening-kills`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"min_maps","in":"query","required":false,"description":"Minimum maps played to be included.","schema":{"type":"integer","minimum":0}},{"name":"window_days","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Player leaderboard","content":{"application/json":{"example":{"success":true,"data":[{"playerId":"cs2-player-17384","playerName":"Vexite","teamId":"cs2-team-12774","teamName":"FlyQuest","maps":29,"rating":1.52,"adr":85.9,"kast":0.859,"kills":438,"deaths":310,"openingKills":46,"kd":1.41,"player":{"id":"cs2-player-17384","nickname":"Vexite","slug":"vexite","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/042a64a7af4293ee4960693f2c787d70.webp","countryName":"Australia","countryCode":"AU"}},{"playerId":"cs2-player-4679","playerName":"jks","teamId":"cs2-team-12774","teamName":"FlyQuest","maps":28,"rating":1.43,"adr":82.2,"kast":0.771,"kills":412,"deaths":278,"openingKills":38,"kd":1.48,"player":{"id":"cs2-player-4679","nickname":"jks","slug":"jks","imageUrl":"https://api.citoapi.com/api/v1/public/images/cs2/logos/6c6cf0b51b83088a93334afcd6eb1640.webp","countryName":"Australia","countryCode":"AU"}}],"meta":{"metric":"rating","count":2,"aggregated":true,"windowDays":90,"minMaps":20,"availability":"available","limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"400":{"description":"Unsupported metric."},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."},"404":{"description":"No record with that id or slug."}}}},"/cs2/stats/players":{"get":{"summary":"Player stat leaders","description":"Players ranked by total kills, one row per player, with maps, K/D, ADR, KAST, rating and opening duels.","operationId":"getCs2StatsPlayers","tags":["CS2"],"parameters":[{"name":"days","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"window_days","in":"query","required":false,"description":"Look-back window in days.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Player stat leaders","content":{"application/json":{"example":{"success":true,"data":[{"playerId":"cs2-player-21708","playerName":"npl","teamId":"cs2-team-11241","teamName":"B8","maps":338,"kills":5379,"deaths":5132,"assists":677,"kdRatio":1.0481,"adr":79.07878472222222,"kast":0.7236527777777778,"rating":1.0897278106508876,"openingKills":342,"openingDeaths":317,"openingDuelSuccessRate":0.519,"rating3Profile":{"rating3":null,"rating3Available":false,"subratings":{"kills":15.914,"damage":79.07878472222222,"survival":1.18,"kast":0.7236527777777778,"multiKills":null,"roundSwing":null},"openingDuels":{"openingKills":342,"openingDeaths":317,"successRate":0.519},"unavailableSubratings":["multi_kills","round_swing"],"rating2":1.0897278106508876},"source":"match_stats"},{"playerId":"cs2-player-16948","playerName":"TRAVIS","teamId":"cs2-team-13214","teamName":"SPARTA","maps":357,"kills":5356,"deaths":5035,"assists":1056,"kdRatio":1.0638,"adr":76.59497975708501,"kast":0.741314979757085,"rating":1.0780169014084506,"openingKills":432,"openingDeaths":456,"openingDuelSuccessRate":0.4865,"rating3Profile":{"rating3":null,"rating3Available":false,"subratings":{"kills":15.003,"damage":76.59497975708501,"survival":1.2735,"kast":0.741314979757085,"multiKills":null,"roundSwing":null},"openingDuels":{"openingKills":432,"openingDeaths":456,"successRate":0.4865},"unavailableSubratings":["multi_kills","round_swing"],"rating2":1.0780169014084506},"source":"match_stats"}],"meta":{"category":"players","count":2,"source":"match_stats","dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/stats/teams":{"get":{"summary":"Team stat leaders","description":"Teams by maps played over a recent window (`days`, default 365; `min_maps`, default 10), with match, map and round win rates from completed maps.","operationId":"getCs2StatsTeams","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"min_maps","in":"query","required":false,"description":"Minimum maps played to be included.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Team stat leaders","content":{"application/json":{"example":{"success":true,"data":[{"teamId":"cs2-team-13027","teamName":"Nuclear TigeRES","matches":166,"matchWins":107,"matchWinPercent":0.6446,"maps":381,"mapWins":198,"mapLosses":183,"mapWinPercent":0.5197,"roundsFor":4238,"roundsAgainst":4053,"roundWinPercent":0.5112},{"teamId":"cs2-team-12895","teamName":"K27","matches":145,"matchWins":94,"matchWinPercent":0.6483,"maps":336,"mapWins":192,"mapLosses":144,"mapWinPercent":0.5714,"roundsFor":3796,"roundsAgainst":3473,"roundWinPercent":0.5222}],"meta":{"category":"teams","count":2,"windowDays":365,"minMaps":10,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/stats/maps":{"get":{"summary":"Map stats","description":"How many times each map was played in completed matches over a recent window (`days`, default 365), most played first, with its share of all maps.","operationId":"getCs2StatsMaps","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Map stats","content":{"application/json":{"example":{"success":true,"data":[{"mapName":"Dust II","mapsPlayed":3623,"share":0.1955},{"mapName":"Mirage","mapsPlayed":3219,"share":0.1737}],"meta":{"category":"maps","count":2,"windowDays":365,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/stats/weapons":{"get":{"summary":"Weapon stats","description":"Kills and headshot rate by weapon across parsed demos, with each weapon's share of all kills.","operationId":"getCs2StatsWeapons","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Weapon stats","content":{"application/json":{"example":{"success":true,"data":[{"weapon":"AK-47","kills":43201,"headshots":25978,"headshotPercent":0.6013,"killShare":0.3448,"maps":856},{"weapon":"M4A1-S","kills":17551,"headshots":7324,"headshotPercent":0.4173,"killShare":0.1401,"maps":851}],"meta":{"category":"weapons","count":2,"dataAvailable":true,"dataScope":"parsed_demos","limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/stats/pistol-rounds":{"get":{"summary":"Pistol round stats","description":"Team pistol round win rates. Currently being recomputed: returns `data_available: false` with `unavailable_reason: being_recomputed`.","operationId":"getCs2StatsPistolRounds","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"min_maps","in":"query","required":false,"description":"Minimum maps played to be included.","schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Pistol round stats","content":{"application/json":{"example":{"success":true,"data":[],"meta":{"category":"pistol-rounds","count":0,"dataAvailable":false,"unavailableReason":"being_recomputed","message":"Side and buy-type round win rates are being recomputed and are not available yet.","limit":0,"total":0,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/stats/opening-duels":{"get":{"summary":"Opening duel stats","description":"Players ranked by first kills and opening duel win rate.","operationId":"getCs2StatsOpeningDuels","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Opening duel stats","content":{"application/json":{"example":{"success":true,"data":[{"playerId":"cs2-player-22676","playerName":"karnez","teamId":"cs2-team-13924","teamName":"Black Phoenix","maps":239,"openingKills":693,"openingDeaths":664,"openingDuelAttempts":1357,"openingDuelSuccessRate":0.5106853352984525,"kills":3975,"deaths":3806},{"playerId":"cs2-player-21369","playerName":"1NVISIBLEE","teamId":"cs2-team-12609","teamName":"Lavked","maps":197,"openingKills":688,"openingDeaths":771,"openingDuelAttempts":1459,"openingDuelSuccessRate":0.4715558601782042,"kills":3118,"deaths":3421}],"meta":{"category":"opening-duels","count":2,"dataAvailable":true,"limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/stats/clutches":{"get":{"summary":"Clutch stats","description":"Players ranked by clutch wins. Currently being recomputed: returns `data_available: false` with `unavailable_reason: being_recomputed`.","operationId":"getCs2StatsClutches","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Clutch stats","content":{"application/json":{"example":{"success":true,"data":[],"meta":{"category":"clutches","count":0,"dataAvailable":false,"unavailableReason":"being_recomputed","message":"Clutch statistics are being recomputed and are not available yet.","limit":0,"total":0,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/stats/flash-assists":{"get":{"summary":"Flash assist stats","description":"Players ranked by flash assists.","operationId":"getCs2StatsFlashAssists","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Flash assist stats","content":{"application/json":{"example":{"success":true,"data":[{"playerId":"cs2-player-22481","playerName":"Chucky","teamId":"cs2-team-11609","teamName":"GenOne","flashAssists":221,"maps":89,"flashAssistsPerMap":2.4831},{"playerId":"cs2-player-23598","playerName":"noni","teamId":"cs2-team-12194","teamName":"Rune Eaters","flashAssists":142,"maps":63,"flashAssistsPerMap":2.254}],"meta":{"category":"flash-assists","count":2,"dataAvailable":true,"dataScope":"flash_assists_from_player_death_assistedflash","limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/stats/utility":{"get":{"summary":"Utility stats","description":"Players ranked by grenades thrown, by type. Updated hourly.","operationId":"getCs2StatsUtility","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Utility stats","content":{"application/json":{"example":{"success":true,"data":[{"playerId":"cs2-player-21263","playerName":"olimp","teamId":"cs2-team-13808","teamName":"Walczaki","maps":112,"utilityEvents":7567,"flashes":2132,"smokes":2509,"fireGrenades":1710,"heGrenades":1209,"decoys":7,"utilityPerMap":67.5625,"lastSyncedAt":"2026-08-01T12:47:53.691Z"},{"playerId":"cs2-player-19738","playerName":"djokooo","teamId":"cs2-team-11609","teamName":"GenOne","maps":159,"utilityEvents":7297,"flashes":2413,"smokes":1757,"fireGrenades":1764,"heGrenades":1357,"decoys":6,"utilityPerMap":45.8931,"lastSyncedAt":"2026-08-01T14:37:51.857Z"}],"meta":{"category":"utility","count":2,"dataAvailable":true,"dataScope":"player_utility_throws_by_type","limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/stats/economy":{"get":{"summary":"Economy stats","description":"Players ranked by spend, with full-buy, half-buy, force-buy and eco round counts. Updated hourly.","operationId":"getCs2StatsEconomy","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 200; larger values are reduced to 200.","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"Economy stats","content":{"application/json":{"example":{"success":true,"data":[{"playerId":"cs2-player-21971","playerName":"brooxsy","teamId":"cs2-team-11609","teamName":"GenOne","maps":179,"purchases":26551,"totalSpend":16058200,"avgEquipmentValue":3887.96,"equipmentSnapshots":3833,"fullBuyRounds":2481,"halfBuyRounds":423,"forceBuyRounds":241,"ecoOrPistolRounds":688,"spendPerMap":89710.6145,"lastSyncedAt":"2026-08-01T14:37:51.857Z"},{"playerId":"cs2-player-24818","playerName":"k4nfuz-","teamId":"cs2-team-13214","teamName":"SPARTA","maps":177,"purchases":25567,"totalSpend":15764050,"avgEquipmentValue":3857.99,"equipmentSnapshots":3825,"fullBuyRounds":2413,"halfBuyRounds":405,"forceBuyRounds":300,"ecoOrPistolRounds":707,"spendPerMap":89062.4294,"lastSyncedAt":"2026-08-01T23:08:53.397Z"}],"meta":{"category":"economy","count":2,"dataAvailable":true,"dataScope":"player_purchase_and_freeze_end_equipment_summary","limit":2,"total":2,"page":1,"totalPages":1,"hasNext":false,"hasPrev":false}}}}},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}}}},"/cs2/upcoming":{"get":{"summary":"Upcoming matches","description":"Scheduled matches, soonest first.\n\nSame response as `GET /api/v1/cs2/matches/upcoming`.","operationId":"getCs2Upcoming","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Upcoming matches"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/matches/upcoming"}},"/cs2/results":{"get":{"summary":"Recent results","description":"Finished matches with final series score and winner, newest first.\n\nSame response as `GET /api/v1/cs2/matches/recent`.","operationId":"getCs2Results","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Recent results"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/matches/recent"}},"/cs2/recent":{"get":{"summary":"Recent results","description":"Finished matches with final series score and winner, newest first.\n\nSame response as `GET /api/v1/cs2/matches/recent`.","operationId":"getCs2Recent","tags":["CS2"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Rows to return. Maximum 100; larger values are reduced to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Recent results"},"401":{"description":"Missing or invalid API key."},"403":{"description":"Your plan does not include CS2."}},"x-alias-of":"/cs2/matches/recent"}}},"tags":[{"name":"Call of Duty","description":"Call of Duty (CDL) matches, live scores, players, organizations, tournaments, standings, transfers, and leaderboards."},{"name":"Fortnite","description":"Fortnite competitive matches, tournaments/events, live leaderboards, players, orgs, pro rankings, transfers, and earnings leaderboards."},{"name":"Dota 2","description":"Dota 2 esports matches, teams, players, tournaments, player stats, and radar snapshots."},{"name":"CS2","description":"Counter-Strike 2: live matches, results, maps, rounds, teams, players, events, rankings, stats and skins.\n\n**Beta.** CS2 is in beta. If anything looks wrong, email support@citoapi.com with the endpoint and the id you called. Docs: https://citoapi.com/docs/api/cs2\n\n**Response shape.** Every response is `{ success, data, meta }`. Lists put rows in `data` and counts or paging in `meta`.\n\n**Ids.** Matches, teams, players and events have ids like `cs2-match-2398421`, `cs2-team-7020`, `cs2-player-11893`, `cs2-event-8038`. Teams, players and events also accept their slug (`vitality`, `zywoo`).\n\n**Paging.** `limit` sets how many rows come back. Each endpoint lists its own maximum (100 on most). Asking for more returns the maximum, not an error. Page with `offset` or `page` where the endpoint lists them.\n\n**Lists are compact.** List endpoints return summary rows. Fetch the single record (`/cs2/events/{eventIdOrSlug}`, `/cs2/teams/{teamIdOrSlug}`) for the full structure.\n\n**Images.** Logos, player photos, map images and event banners are served from `api.citoapi.com` and do not change address. An image field is `null` when we have no image for that record yet. Treat `null` as \"no image\" and show a placeholder.\n\n**Missing data.** When a record exists but a section has no data yet, the response says so with `data_available: false` and an `unavailable_reason`, rather than an error.\n\n**Times** are ISO 8601 in UTC."},{"name":"UFC","description":"UFC rankings, fighters, fighter profile stats, events, fight cards, bouts, and results."},{"name":"QR Code","description":"Generate QR codes with optional logo overlay."},{"name":"Utility","description":"Health and status endpoints."}]}