{"openapi":"3.1.0","info":{"title":"Overwatch 2 API","version":"1.0.0","description":"Live Overwatch 2 data as an API, powered by OverFast — clean JSON, no key. List every hero and open a hero for its role, abilities, hit points, story and artwork; browse all maps (filter by game mode), the game modes and the roles; search players by name; and open any player for their profile summary — endorsement level, avatar, title and competitive ranks per role on PC and console — and their career stats (games played, win rate, KDA, and breakdowns by role and hero). Mirrors the official Overwatch site, kept current. Distinct hero-shooter coverage — ideal for player-stat trackers, rank checkers, hero guides, team tools and Discord bots. 8 data endpoints. Authenticated with an x-oanor-key; fair-use rate limits per plan.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/overwatch-api","description":"oanor gateway"}],"tags":[{"name":"Game Data"},{"name":"Players"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/gamemodes":{"get":{"operationId":"get_v1_gamemodes","tags":["Game Data"],"summary":"Game modes","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":14,"gamemodes":[{"key":"assault","icon":"https://overfast-api.tekrop.fr/static/gamemodes/assault-icon.svg","name":"Assault","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/assault.avif","description":"Teams fight to capture or defend two successive points against the enemy team. It's an inactive Overwatch 1 gamemode, also called 2CP."},{"key":"capture-the-flag","icon":"https://overfast-api.tekrop.fr/static/gamemodes/capture-the-flag-icon.svg","name":"Capture the Flag","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/capture-the-flag.avif","description":"Teams compete to capture the enemy team’s flag while defending their own."},{"key":"clash","icon":"https://overfast-api.tekrop.fr/static/gamemodes/clash-icon.svg","name":"Clash","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/clash.avif","description":"Vie for dominance across a series of capture points with dynamic spawns and linear map routes, so you spend less time running back to the battle and more time in the heart of it."},{"key":"control","icon":"https://overfast-api.tekrop.fr/static/gamemodes/control-icon.svg","name":"Control","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/control.avif","description":"Teams fight to hold a single objective. The first team to win two rounds wins the map."},{"key":"deathmatch","icon":"https://overfast-api.tekrop.fr/static/gamemodes/deathmatch-icon.svg","name":"Deathmatch","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/deathmatch.avif","description":"Race to reach 20 points first by racking up kills in a free-for-all format."},{"key":"elimination","icon":"https://overfast-api.tekrop.fr/static/gamemodes/elimination-icon.svg","name":"Elimination","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/elimination.avif","description":"Dispatch all enemies to win the round. Win three rounds to claim victory. Available with teams of one, three, or six."},{"key":"escort","icon":"https://overfast-api.tekrop.fr/static/gamemodes/escort-icon.svg","name":"Escort","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/escort.avif","description":"One team escorts a payload to its delivery point, while the other races to stop them."},{"key":"flashpoint","icon":"https://overfast-api.tekrop.fr/static/gamemodes/flashpoint-icon.svg","name":"Flashpoint","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/flashpoint.avif","description":"Teams fight across our biggest PVP maps to date, New Junk City and Suravasa, to seize control of five different objectives in a fast-paced, best-of-five battle!"},{"key":"hybrid","icon":"https://overfast-api.tekrop.fr/static/gamemodes/hybrid-icon.svg","name":"Hybrid","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/hybrid.avif","description":"Attackers capture a payload, then escort it to its destination; defenders try to hold them back."},{"key":"payload-race","icon":"https://overfast-api.tekrop.fr/static/gamemodes/payload-race-icon.svg","name":"Payload Race","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/payload-race.avif","description":"Both teams get a payload to escort to the ending location while preventing the enemies from doing the same."},{"key":"practice-range","icon":"https://overfast-api.tekrop.fr/static/gamemodes/practice-range-icon.svg","name":"Practice Range","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/practice-range.avif","description":"Learn the basics, practice and test your settings."},{"key":"push","icon":"https://overfast-api.tekrop.fr/static/gamemodes/push-icon.svg","name":"Push","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/push.avif","description":"Teams battle to take control of a robot and push it toward the enemy base."},{"key":"team-deathmatch","icon":"https://overfast-api.tekrop.fr/static/gamemodes/team-deathmatch-icon.svg","name":"Team Deathmatch","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/team-deathmatch.avif","description":"Team up and triumph over your enemies by scoring the most kills."},{"key":"workshop","icon":"https://overfast-api.tekrop.fr/static/gamemodes/workshop-icon.svg","name":"Workshop","screenshot":"https://overfast-api.tekrop.fr/static/gamemodes/workshop.avif","description":"Experience custom and experimental gameplay, only in Custom Games."}]},"meta":{"timestamp":"2026-06-07T16:46:15.375Z","request_id":"72ac3bcf-ea62-4c46-baf7-68ab58cd8201"},"status":"ok","message":"Gamemodes retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/hero":{"get":{"operationId":"get_v1_hero","tags":["Game Data"],"summary":"Hero detail","description":"","parameters":[{"name":"key","in":"query","required":true,"description":"Hero key (e.g. ana)","schema":{"type":"string"},"example":"ana"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"hero":{"age":62,"name":"Ana","role":"support","story":"A founding member of Overwatch and once renowned as the greatest sniper in the world, Ana Amari comes from a long line of decorated military veterans. Though she was thought to have perished in a firefight with Talon, Ana has rejoined the fray to protect her country, family, and closest allies.","subrole":"tactician","birthday":"Jan 1","location":"Cairo, Egypt","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/985b06beae46b7ba3ca87d1512d0fc62ca7f206ceca58ef16fc44d43a1cc84ed.png","abilities":[{"icon":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/db33c39f25d96a2cabcacb778cf784535279180f6d9119ef56311bdcdf6077df.png","name":"Biotic Rifle","video":"https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/bltc56d4d9789a018d0/63390487ed7dcc6a0028039c/ANA_BIOTICRIFLE.jpg","description":"Long-range rifle that heals allies and damages enemies.  Hold to zoom in."},{"icon":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/620a97282b81ea178951b565e8249361e67c868387e61a4297261ffa11bace13.png","name":"Sleep Dart","video":"https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/bltb27e2783f517c7fe/63390487e3c2a2741688cba3/ANA_SLEEPDART.jpg","description":"Fires a dart that puts an enemy to sleep."},{"icon":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/886454bdb7df9ad8a47c4a3a8fa5dd488f5b2996e311f16d42a5f022942c4d18.png","name":"Biotic Grenade","video":"https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/bltcd66dcc6eb196187/633904873922a2677fc88cfa/ANA_BIOTICGRENADE.jpg","description":"Throws a grenade that heals and increases healing on allies, while damaging and preventing healing on enemies."},{"icon":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/726f2fa5b149e5ac58310f11893db1850a7312270db4f88c164bb43a84f962cf.png","name":"Nano Boost","video":"https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/blt5901c5f790bb82f9/63390487da1d806602f83eee/ANA_NANOBOOST.jpg","description":"Increases an ally's damage, while reducing damage taken."}],"hitpoints":{"armor":0,"total":250,"health":250,"shields":0},"description":"One of the founding members of Overwatch, Ana uses her skills and expertise to defend her home and the people she cares for."}},"meta":{"timestamp":"2026-06-07T16:46:15.499Z","request_id":"89878371-3faf-48d7-b347-9c6c6c49a175"},"status":"ok","message":"Hero retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/heroes":{"get":{"operationId":"get_v1_heroes","tags":["Game Data"],"summary":"All heroes","description":"","parameters":[{"name":"role","in":"query","required":false,"description":"tank, damage or support","schema":{"type":"string"},"example":"support"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":14,"heroes":[{"key":"ana","name":"Ana","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/985b06beae46b7ba3ca87d1512d0fc62ca7f206ceca58ef16fc44d43a1cc84ed.png"},{"key":"baptiste","name":"Baptiste","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/d4e6f1ca45d9f88fa89260787397f141a6f007b14e5b26698883b6a17bab9680.png"},{"key":"brigitte","name":"Brigitte","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/795fba91376d87d441a7f359ae12a3175dfa95825ccc4414cc6b95b129fc4cb0.png"},{"key":"illari","name":"Illari","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/ce42d1455e03e79f321345fea84b27a8918b5db8bd7ab9b2ca9e569606ede9e4.png"},{"key":"jetpack-cat","name":"Jetpack Cat","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/03a184cd0de27091e0099ac22635ad9615a8f6997881a5c25cc5f2444764f729.png"},{"key":"juno","name":"Juno","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/c0167d251e57b0aa2b1e16c37d87f0e7c77263db9dd0503d77b5f2589bf3e4a0.png"},{"key":"kiriko","name":"Kiriko","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/408603fe037e8576078eaac5eab2fb251489ced4003b11f5f522776d43d0b83d.png"},{"key":"lifeweaver","name":"Lifeweaver","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/3376515cebed0904012e67e956f6d1b9c12e03da642845eeaf787b7e4c7b339d.png"},{"key":"lucio","name":"Lúcio","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/040bb13f5123ab93faad2f95627ba184608aef4b2469a4d3003859c7087df044.png"},{"key":"mercy","name":"Mercy","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/3bfb8bd8ec827e53d870f1238ab73d8aa1f5dbfbcfaaf7f96ffcd35b5c6102ab.png"},{"key":"mizuki","name":"Mizuki","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/a9733c2367e0cbd70b9316fd2e1e17028653ec56d0051ea6ff098531dc4f99fc.png"},{"key":"moira","name":"Moira","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/f48f8485056d5d00dad195859188d23e50f7126b8b08b5646f46ef1b42f5e1de.png"},{"key":"wuyang","name":"Wuyang","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/4959500b495b35c0908be2abda56b53f2601b2c5cc39a1cfde8df1bffd38d66d.png"},{"key":"zenyatta","name":"Zenyatta","role":"support","portrait":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/7d1546b1541a8afc39353f9337a408d6275a141b0432b7e560ef61579996b0fc.png"}]},"meta":{"timestamp":"2026-06-07T16:46:15.620Z","request_id":"137b96bf-6c54-4af8-8109-6a0aa58ce49f"},"status":"ok","message":"Heroes retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/maps":{"get":{"operationId":"get_v1_maps","tags":["Game Data"],"summary":"All maps","description":"","parameters":[{"name":"gamemode","in":"query","required":false,"description":"Filter by game mode","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"maps":[{"name":"Aatlis","location":"Morocco","gamemodes":["flashpoint"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/aatlis.jpg","country_code":"MA"},{"name":"Antarctic Peninsula","location":"Antarctica","gamemodes":["control"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/antarctic-peninsula.jpg","country_code":"AQ"},{"name":"Temple of Anubis","location":"Giza Plateau, Egypt","gamemodes":["assault"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/anubis.jpg","country_code":"EG"},{"name":"Arena Victoriae","location":"Colosseo, Rome, Italy","gamemodes":["control"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/arena-victoriae.jpg","country_code":"IT"},{"name":"Ayutthaya","location":"Thailand","gamemodes":["capture-the-flag"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/ayutthaya.jpg","country_code":"TH"},{"name":"Black Forest","location":"Germany","gamemodes":["elimination"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/black-forest.jpg","country_code":"DE"},{"name":"Blizzard World","location":"Irvine, California, United States","gamemodes":["hybrid"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/blizzard-world.jpg","country_code":"US"},{"name":"Busan","location":"South Korea","gamemodes":["control"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/busan.jpg","country_code":"KR"},{"name":"Castillo","location":"Mexico","gamemodes":["elimination"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/castillo.jpg","country_code":"MX"},{"name":"Château Guillard","location":"Annecy, France","gamemodes":["deathmatch","team-deathmatch"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/chateau-guillard.jpg","country_code":"FR"},{"name":"Circuit Royal","location":"Monte Carlo, Monaco","gamemodes":["escort"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/circuit-royal.jpg","country_code":"MC"},{"name":"Colosseo","location":"Rome, Italy","gamemodes":["push"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/colosseo.jpg","country_code":"IT"},{"name":"Dorado","location":"Mexico","gamemodes":["escort"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/dorado.jpg","country_code":"MX"},{"name":"Ecopoint: Antarctica","location":"Antarctica","gamemodes":["elimination"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/ecopoint-antarctica.jpg","country_code":"AQ"},{"name":"Eichenwalde","location":"Stuttgart, Germany","gamemodes":["hybrid"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/eichenwalde.jpg","country_code":"DE"},{"name":"Esperança","location":"Portugal","gamemodes":["push"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/esperanca.jpg","country_code":"PT"},{"name":"Gogadoro","location":"Busan, South Korea","gamemodes":["control"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/gogadoro.jpg","country_code":"KR"},{"name":"Hanamura","location":"Tokyo, Japan","gamemodes":["assault"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/hanamura.jpg","country_code":"JP"},{"name":"Hanaoka","location":"Tokyo, Japan","gamemodes":["clash"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/hanaoka.jpg","country_code":"JP"},{"name":"Havana","location":"Havana, Cuba","gamemodes":["escort"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/havana.jpg","country_code":"CU"},{"name":"Hollywood","location":"Los Angeles, United States","gamemodes":["hybrid"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/hollywood.jpg","country_code":"US"},{"name":"Horizon Lunar Colony","location":"Earth's moon","gamemodes":["assault"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/horizon.jpg"},{"name":"Ilios","location":"Greece","gamemodes":["control"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/ilios.jpg","country_code":"GR"},{"name":"Junkertown","location":"Central Australia","gamemodes":["escort"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/junkertown.jpg","country_code":"AU"},{"name":"Lijiang Tower","location":"China","gamemodes":["control"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/lijiang-tower.jpg","country_code":"CN"},{"name":"Kanezaka","location":"Tokyo, Japan","gamemodes":["deathmatch","team-deathmatch"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/kanezaka.jpg","country_code":"JP"},{"name":"King’s Row","location":"London, United Kingdom","gamemodes":["hybrid"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/kings-row.jpg","country_code":"UK"},{"name":"Malevento","location":"Italy","gamemodes":["deathmatch","team-deathmatch"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/malevento.jpg","country_code":"IT"},{"name":"Midtown","location":"New York, United States","gamemodes":["hybrid"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/midtown.jpg","country_code":"US"},{"name":"Necropolis","location":"Egypt","gamemodes":["elimination"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/necropolis.jpg","country_code":"EG"},{"name":"Nepal","location":"Nepal","gamemodes":["control"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/nepal.jpg","country_code":"NP"},{"name":"New Junk City","location":"Central Australia","gamemodes":["flashpoint"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/new-junk-city.jpg","country_code":"AU"},{"name":"New Queen Street","location":"Toronto, Canada","gamemodes":["push"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/new-queen-street.jpg","country_code":"CA"},{"name":"Numbani","location":"Numbani (near Nigeria)","gamemodes":["hybrid"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/numbani.jpg"},{"name":"Oasis","location":"Iraq","gamemodes":["control"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/oasis.jpg","country_code":"IQ"},{"name":"Paraíso","location":"Rio de Janeiro, Brazil","gamemodes":["hybrid"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/paraiso.jpg","country_code":"BR"},{"name":"Paris","location":"Paris, France","gamemodes":["assault"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/paris.jpg","country_code":"FR"},{"name":"Petra","location":"Southern Jordan","gamemodes":["deathmatch","team-deathmatch"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/petra.jpg","country_code":"JO"},{"name":"Place Lacroix","location":"Paris, France","gamemodes":["push"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/place-lacroix.jpg","country_code":"FR"},{"name":"Powder Keg Mine","location":"Deadlock Gorge, Arizona, United States","gamemodes":["payload-race"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/powder-keg-mine.jpg","country_code":"US"},{"name":"Practice Range","location":"Swiss HQ","gamemodes":["practice-range"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/practice-range.jpg","country_code":"CH"},{"name":"Redwood Dam","location":"Gibraltar","gamemodes":["push"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/redwood-dam.jpg","country_code":"GI"},{"name":"Rialto","location":"Venice, Italy","gamemodes":["escort"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/rialto.jpg","country_code":"IT"},{"name":"Route 66","location":"Albuquerque, New Mexico, United States","gamemodes":["escort"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/route-66.jpg","country_code":"US"},{"name":"Runasapi","location":"Peru","gamemodes":["push"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/runasapi.jpg","country_code":"PE"},{"name":"Samoa","location":"Samoa","gamemodes":["control"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/samoa.jpg","country_code":"WS"},{"name":"Shambali Monastery","location":"Nepal","gamemodes":["escort"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/shambali-monastery.jpg","country_code":"NP"},{"name":"Suravasa","location":"India","gamemodes":["flashpoint"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/suravasa.jpg","country_code":"IN"},{"name":"Thames District","location":"London, United Kingdom","gamemodes":["payload-race"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/thames-district.jpg","country_code":"UK"},{"name":"Throne of Anubis","location":"Giza Plateau, Egypt","gamemodes":["clash"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/throne-of-anubis.jpg","country_code":"EG"},{"name":"Volskaya Industries","location":"St. Petersburg, Russia","gamemodes":["assault"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/volskaya.jpg","country_code":"RU"},{"name":"Watchpoint: Gibraltar","location":"Gibraltar","gamemodes":["escort"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/watchpoint-gibraltar.jpg","country_code":"GI"},{"name":"Workshop Chamber","location":"Earth","gamemodes":["workshop"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/workshop-chamber.jpg"},{"name":"Workshop Expanse","location":"Earth","gamemodes":["workshop"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/workshop-expanse.jpg"},{"name":"Workshop Green Screen","location":"Earth","gamemodes":["workshop"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/workshop-green-screen.jpg"},{"name":"Workshop Island","location":"Earth","gamemodes":["workshop"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/workshop-island.jpg"},{"name":"Wuxing University","location":"Chengdu, Sichuan, China","gamemodes":["control"],"screenshot":"https://overfast-api.tekrop.fr/static/maps/wuxing-university.jpg","country_code":"CN"}],"count":57},"meta":{"timestamp":"2026-06-07T16:46:15.717Z","request_id":"890fc068-d136-4c80-9c55-2131f2b84af6"},"status":"ok","message":"Maps retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/roles":{"get":{"operationId":"get_v1_roles","tags":["Game Data"],"summary":"Roles","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":3,"roles":[{"key":"tank","icon":"https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/bltf0889daa1ef606db/6504cff74d2a764cb7973991/Tank.svg","name":"Tank","description":"Tank heroes soak up damage and shatter fortified positions, like closely grouped enemies and narrow chokepoints. If you’re a tank, you lead the charge."},{"key":"damage","icon":"https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/blt05d482c88096959a/6504cff7d9caa1285f64b6bd/Damage.svg","name":"Damage","description":"Damage heroes seek out, engage, and obliterate the enemy with wide-ranging tools, abilities, and play styles. Fearsome but fragile, these heroes require backup to survive."},{"key":"support","icon":"https://blz-contentstack-images.akamaized.net/v3/assets/blt2477dcaf4ebd440c/blt3ccd5df488163b33/6504cff7fc2ae4d7c50445c4/Support.svg","name":"Support","description":"Support heroes empower their allies by healing, shielding, boosting damage, and disabling foes. As a support, you’re the backbone of your team’s survival."}]},"meta":{"timestamp":"2026-06-07T16:46:15.802Z","request_id":"c69bec7f-6e58-478b-af25-b298f9a6bd05"},"status":"ok","message":"Roles retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/player":{"get":{"operationId":"get_v1_player","tags":["Players"],"summary":"Player profile summary","description":"","parameters":[{"name":"player_id","in":"query","required":true,"description":"Player id (e.g. TeKrop-2217)","schema":{"type":"string"},"example":"TeKrop-2217"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"player":{"title":"Data Broker","avatar":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/30e37a0d096d92c18f7c6f9519d483e75d1d8ab5280d672f2553f650f4c050e5.png","namecard":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/f51cfd3cf1a8d7729a09fd0fcf9292aeb80154cd3453cdec08224926d634b499.png","username":"TeKrop","competitive":{"pc":{"season":22,"support":{"tier":4,"division":"silver","rank_icon":"https://static.playoverwatch.com/img/pages/career/icons/rank/Rank_SilverTier-5a6b3c3498.png","role_icon":"https://static.playoverwatch.com/img/pages/career/icons/role/support-0258e13d85.svg#icon","tier_icon":"https://static.playoverwatch.com/img/pages/career/icons/rank/TierDivision_4-0cd0907e1b.png"}}},"endorsement":2,"last_updated_at":1777998881}},"meta":{"timestamp":"2026-06-07T16:46:16.804Z","request_id":"c37b44e9-b376-49e8-8c46-26dc6ca7bf59"},"status":"ok","message":"Player retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/player/stats":{"get":{"operationId":"get_v1_player_stats","tags":["Players"],"summary":"Player career stats","description":"","parameters":[{"name":"player_id","in":"query","required":true,"description":"Player id","schema":{"type":"string"},"example":"TeKrop-2217"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"roles":{"tank":{"kda":2.99,"total":{"damage":43400852,"deaths":36169,"assists":14575,"healing":2112984,"eliminations":93699},"average":{"damage":8393.91,"deaths":7,"assists":2.82,"healing":408.66,"eliminations":18.12},"winrate":52.05,"games_won":3521,"games_lost":3243,"time_played":3102310,"games_played":6764},"damage":{"kda":2.71,"total":{"damage":15327248,"deaths":10822,"assists":88,"healing":395182,"eliminations":29195},"average":{"damage":11289.1,"deaths":7.97,"assists":0.06,"healing":291.07,"eliminations":21.5},"winrate":51.62,"games_won":894,"games_lost":838,"time_played":814622,"games_played":1732},"support":{"kda":3.17,"total":{"damage":18428933,"deaths":24159,"assists":28427,"healing":23531420,"eliminations":48263},"average":{"damage":5476.79,"deaths":7.18,"assists":8.45,"healing":6993.17,"eliminations":14.34},"winrate":50.44,"games_won":2186,"games_lost":2148,"time_played":2018948,"games_played":4334}},"heroes":{"ana":{"kda":2.42,"total":{"damage":3397753,"deaths":7065,"assists":7346,"healing":6605075,"eliminations":9752},"average":{"damage":3515.27,"deaths":7.31,"assists":7.6,"healing":6833.52,"eliminations":10.09},"winrate":46.72,"games_won":577,"games_lost":658,"time_played":579942,"games_played":1235},"dva":{"kda":3.48,"total":{"damage":1790716,"deaths":1204,"assists":0,"healing":194,"eliminations":4193},"average":{"damage":9166.63,"deaths":6.16,"assists":0,"healing":0.99,"eliminations":21.46},"winrate":52.21,"games_won":130,"games_lost":119,"time_played":117211,"games_played":249},"mei":{"kda":2.08,"total":{"damage":93729,"deaths":135,"assists":20,"healing":14229,"eliminations":261},"average":{"damage":5369.24,"deaths":7.73,"assists":1.15,"healing":815.1,"eliminations":14.95},"winrate":45,"games_won":9,"games_lost":11,"time_played":10474,"games_played":20},"ashe":{"kda":2.29,"total":{"damage":13873,"deaths":14,"assists":0,"healing":0,"eliminations":32},"average":{"damage":8761.89,"deaths":8.84,"assists":0,"healing":0,"eliminations":20.21},"winrate":50,"games_won":1,"games_lost":1,"time_played":950,"games_played":2},"echo":{"kda":1,"total":{"damage":482,"deaths":1,"assists":0,"healing":0,"eliminations":1},"average":{"damage":3660.76,"deaths":7.59,"assists":0,"healing":0,"eliminations":7.59},"winrate":0,"games_won":0,"games_lost":0,"time_played":79,"games_played":0},"genji":{"kda":1.48,"total":{"damage":127408,"deaths":184,"assists":0,"healing":0,"eliminations":272},"average":{"damage":7012,"deaths":10.13,"assists":0,"healing":0,"eliminations":14.97},"winrate":42.86,"games_won":9,"games_lost":12,"time_played":10902,"games_played":21},"hanzo":{"kda":2.31,"total":{"damage":851543,"deaths":613,"assists":0,"healing":0,"eliminations":1419},"average":{"damage":10450.09,"deaths":7.52,"assists":0,"healing":0,"eliminations":17.41},"winrate":53.85,"games_won":56,"games_lost":48,"time_played":48892,"games_played":104},"lucio":{"kda":1.74,"total":{"damage":707438,"deaths":1427,"assists":337,"healing":1148563,"eliminations":2142},"average":{"damage":4377.44,"deaths":8.83,"assists":2.09,"healing":7107,"eliminations":13.25},"winrate":49.48,"games_won":96,"games_lost":98,"time_played":96966,"games_played":194},"mercy":{"kda":0.8,"total":{"damage":22032,"deaths":1109,"assists":797,"healing":1096227,"eliminations":94},"average":{"damage":161.79,"deaths":8.14,"assists":5.85,"healing":8050.04,"eliminations":0.69},"winrate":33.71,"games_won":59,"games_lost":116,"time_played":81706,"games_played":175},"moira":{"kda":3.62,"total":{"damage":2461978,"deaths":2515,"assists":0,"healing":3938937,"eliminations":9114},"average":{"damage":5879.94,"deaths":6.01,"assists":0,"healing":9407.35,"eliminations":21.77},"winrate":49.82,"games_won":270,"games_lost":272,"time_played":251225,"games_played":542},"orisa":{"kda":4.53,"total":{"damage":4292289,"deaths":2546,"assists":3821,"healing":46,"eliminations":7712},"average":{"damage":11155.66,"deaths":6.62,"assists":9.93,"healing":0.12,"eliminations":20.04},"winrate":51.06,"games_won":266,"games_lost":255,"time_played":230858,"games_played":521},"sigma":{"kda":4.29,"total":{"damage":470597,"deaths":192,"assists":11,"healing":8,"eliminations":813},"average":{"damage":12681.71,"deaths":5.17,"assists":0.3,"healing":0.22,"eliminations":21.91},"winrate":57.45,"games_won":27,"games_lost":20,"time_played":22265,"games_played":47},"zarya":{"kda":3.74,"total":{"damage":12091149,"deaths":8510,"assists":3513,"healing":115,"eliminations":28286},"average":{"damage":8893.72,"deaths":6.26,"assists":2.58,"healing":0.08,"eliminations":20.81},"winrate":53.59,"games_won":940,"games_lost":814,"time_played":815709,"games_played":1754},"kiriko":{"kda":2.06,"total":{"damage":381277,"deaths":763,"assists":484,"healing":1065328,"eliminations":1087},"average":{"damage":2993.89,"deaths":5.99,"assists":3.8,"healing":8365.25,"eliminations":8.54},"winrate":48.67,"games_won":73,"games_lost":77,"time_played":76411,"games_played":150},"pharah":{"kda":1.73,"total":{"damage":276481,"deaths":279,"assists":0,"healing":0,"eliminations":482},"average":{"damage":8566.41,"deaths":8.64,"assists":0,"healing":0,"eliminations":14.93},"winrate":46.81,"games_won":22,"games_lost":25,"time_played":19365,"games_played":47},"reaper":{"kda":2.82,"total":{"damage":502918,"deaths":331,"assists":0,"healing":52213,"eliminations":933},"average":{"damage":11829.65,"deaths":7.79,"assists":0,"healing":1228.16,"eliminations":21.95},"winrate":40,"games_won":20,"games_lost":30,"time_played":25508,"games_played":50},"sombra":{"kda":2.51,"total":{"damage":33844,"deaths":45,"assists":35,"healing":3495,"eliminations":78},"average":{"damage":5858.74,"deaths":7.79,"assists":6.06,"healing":605.02,"eliminations":13.5},"winrate":28.57,"games_won":2,"games_lost":5,"time_played":3466,"games_played":7},"tracer":{"kda":2.29,"total":{"damage":1060501,"deaths":1185,"assists":0,"healing":0,"eliminations":2715},"average":{"damage":8313.63,"deaths":9.29,"assists":0,"healing":0,"eliminations":21.28},"winrate":41.06,"games_won":62,"games_lost":89,"time_played":76537,"games_played":151},"bastion":{"kda":1.73,"total":{"damage":24830,"deaths":30,"assists":0,"healing":3507,"eliminations":52},"average":{"damage":6910.02,"deaths":8.35,"assists":0,"healing":975.97,"eliminations":14.47},"winrate":75,"games_won":3,"games_lost":1,"time_played":2156,"games_played":4},"cassidy":{"kda":2.9,"total":{"damage":9050429,"deaths":5770,"assists":0,"healing":447,"eliminations":16736},"average":{"damage":12092.82,"deaths":7.71,"assists":0,"healing":0.6,"eliminations":22.36},"winrate":54.24,"games_won":524,"games_lost":442,"time_played":449048,"games_played":966},"junkrat":{"kda":2.03,"total":{"damage":438214,"deaths":310,"assists":33,"healing":0,"eliminations":597},"average":{"damage":12173.17,"deaths":8.61,"assists":0.92,"healing":0,"eliminations":16.58},"winrate":48.89,"games_won":22,"games_lost":23,"time_played":21599,"games_played":45},"roadhog":{"kda":3.75,"total":{"damage":5735989,"deaths":3631,"assists":2781,"healing":2109119,"eliminations":10833},"average":{"damage":10440.05,"deaths":6.61,"assists":5.06,"healing":3838.8,"eliminations":19.72},"winrate":47.47,"games_won":319,"games_lost":353,"time_played":329653,"games_played":672},"sojourn":{"kda":0.84,"total":{"damage":9960,"deaths":19,"assists":0,"healing":0,"eliminations":16},"average":{"damage":6509.8,"deaths":12.42,"assists":0,"healing":0,"eliminations":10.46},"winrate":0,"games_won":0,"games_lost":2,"time_played":918,"games_played":2},"winston":{"kda":2.27,"total":{"damage":2193318,"deaths":3055,"assists":0,"healing":438,"eliminations":6929},"average":{"damage":6062.69,"deaths":8.44,"assists":0,"healing":1.21,"eliminations":19.15},"winrate":45.27,"games_won":201,"games_lost":243,"time_played":217064,"games_played":444},"baptiste":{"kda":2.25,"total":{"damage":3171284,"deaths":3356,"assists":872,"healing":4190409,"eliminations":6683},"average":{"damage":6487.1,"deaths":6.86,"assists":1.78,"healing":8571.8,"eliminations":13.67},"winrate":45.72,"games_won":283,"games_lost":336,"time_played":293316,"games_played":619},"brigitte":{"kda":3.19,"total":{"damage":209942,"deaths":289,"assists":242,"healing":297227,"eliminations":681},"average":{"damage":4850.79,"deaths":6.68,"assists":5.59,"healing":6867.54,"eliminations":15.73},"winrate":52.94,"games_won":27,"games_lost":24,"time_played":25968,"games_played":51},"doomfist":{"kda":1.57,"total":{"damage":106199,"deaths":136,"assists":0,"healing":0,"eliminations":213},"average":{"damage":7816.41,"deaths":10.01,"assists":0,"healing":0,"eliminations":15.68},"winrate":50,"games_won":8,"games_lost":8,"time_played":8152,"games_played":16},"ramattra":{"kda":2.26,"total":{"damage":33975,"deaths":35,"assists":7,"healing":0,"eliminations":72},"average":{"damage":8063.69,"deaths":8.31,"assists":1.66,"healing":0,"eliminations":17.09},"winrate":0,"games_won":0,"games_lost":4,"time_played":2528,"games_played":4},"symmetra":{"kda":1.84,"total":{"damage":57216,"deaths":58,"assists":0,"healing":0,"eliminations":107},"average":{"damage":9108.41,"deaths":9.23,"assists":0,"healing":0,"eliminations":17.03},"winrate":40,"games_won":4,"games_lost":6,"time_played":3769,"games_played":10},"torbjorn":{"kda":3,"total":{"damage":34159,"deaths":23,"assists":0,"healing":0,"eliminations":69},"average":{"damage":8593.46,"deaths":5.79,"assists":0,"healing":0,"eliminations":17.36},"winrate":80,"games_won":4,"games_lost":1,"time_played":2385,"games_played":5},"zenyatta":{"kda":4.85,"total":{"damage":8077229,"deaths":7635,"assists":18349,"healing":5189654,"eliminations":18710},"average":{"damage":7900.6,"deaths":7.47,"assists":17.95,"healing":5076.17,"eliminations":18.3},"winrate":58.55,"games_won":801,"games_lost":567,"time_played":613414,"games_played":1368},"reinhardt":{"kda":2.34,"total":{"damage":16410613,"deaths":16463,"assists":4442,"healing":292,"eliminations":34116},"average":{"damage":7367.01,"deaths":7.39,"assists":1.99,"healing":0.13,"eliminations":15.32},"winrate":53.65,"games_won":1617,"games_lost":1397,"time_played":1336548,"games_played":3014},"soldier-76":{"kda":3.06,"total":{"damage":2632484,"deaths":1684,"assists":0,"healing":321291,"eliminations":5148},"average":{"damage":12316.39,"deaths":7.88,"assists":0,"healing":1503.2,"eliminations":24.09},"winrate":53.45,"games_won":147,"games_lost":128,"time_played":128243,"games_played":275},"widowmaker":{"kda":1.96,"total":{"damage":119177,"deaths":141,"assists":0,"healing":0,"eliminations":277},"average":{"damage":6921.52,"deaths":8.19,"assists":0,"healing":0,"eliminations":16.09},"winrate":39.13,"games_won":9,"games_lost":14,"time_played":10331,"games_played":23},"junker-queen":{"kda":2.4,"total":{"damage":50623,"deaths":35,"assists":0,"healing":2772,"eliminations":84},"average":{"damage":9453.41,"deaths":6.54,"assists":0,"healing":517.65,"eliminations":15.69},"winrate":42.86,"games_won":3,"games_lost":4,"time_played":3213,"games_played":7},"wrecking-ball":{"kda":1.24,"total":{"damage":225384,"deaths":362,"assists":0,"healing":0,"eliminations":448},"average":{"damage":7076.79,"deaths":11.37,"assists":0,"healing":0,"eliminations":14.07},"winrate":27.78,"games_won":10,"games_lost":26,"time_played":19109,"games_played":36}},"general":{"kda":3.01,"total":{"damage":77157033,"deaths":71150,"assists":43090,"healing":26039586,"eliminations":171157},"average":{"damage":7799.05,"deaths":7.19,"assists":4.36,"healing":2632.09,"eliminations":17.3},"winrate":51.45,"games_won":6601,"games_lost":6229,"time_played":5935880,"games_played":12830},"player_id":"TeKrop-2217"},"meta":{"timestamp":"2026-06-07T16:46:17.831Z","request_id":"bd954495-b237-49ee-a8f2-5d779c97917e"},"status":"ok","message":"Stats retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/search":{"get":{"operationId":"get_v1_search","tags":["Players"],"summary":"Search players","description":"","parameters":[{"name":"name","in":"query","required":true,"description":"Player name (BattleTag)","schema":{"type":"string"},"example":"TeKrop"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":1,"query":"TeKrop","total":1,"players":[{"name":"TeKrop","title":"Data Broker","avatar":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/30e37a0d096d92c18f7c6f9519d483e75d1d8ab5280d672f2553f650f4c050e5.png","namecard":"https://d15f34w2p8l1cc.cloudfront.net/overwatch/f51cfd3cf1a8d7729a09fd0fcf9292aeb80154cd3453cdec08224926d634b499.png","player_id":"c65b8798bc61d6ffbba120%7Ccfe9dd77a4382165e2b920bdcc035949","last_updated_at":1777998881}]},"meta":{"timestamp":"2026-06-07T16:46:18.030Z","request_id":"e0e2ef3f-8aba-4797-babb-a22a01713e58"},"status":"ok","message":"Players retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"service":"overwatch-api","endpoints":{"GET /v1/hero":"Hero detail by key (e.g. ana).","GET /v1/maps":"All maps (gamemode= filter).","GET /v1/meta":"This document.","GET /v1/roles":"Roles.","GET /v1/heroes":"All heroes (role= tank|damage|support).","GET /v1/player":"Player profile summary by player_id (e.g. TeKrop-2217).","GET /v1/search":"Search players by name.","GET /v1/gamemodes":"Game modes.","GET /v1/player/stats":"A player's career stats summary."},"description":"Overwatch 2 data via OverFast: heroes and hero detail, maps, game modes and roles, player search, and a player's profile summary and career stats. Real live data, no key."},"meta":{"timestamp":"2026-06-07T16:46:18.128Z","request_id":"cea4c698-a973-4d6f-a7d7-05f4b32c02d2"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":3000,"rps_limit":5,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":650,"monthly_call_quota":52000,"rps_limit":15,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2800,"monthly_call_quota":280000,"rps_limit":30,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":9000,"monthly_call_quota":1200000,"rps_limit":80,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/overwatch-api"}