# CS2.SPACE API > REST API for Counter-Strike 2 and Dota 2 player data: Steam profiles and stats, Faceit, Leetify, parsed inventories with USD prices, and CS2 rank/badge images. Base URL: https://cs2.space Authentication: send your API key in the `x-api-key` header. Get a free key at https://cs2.space/dashboard. Responses are JSON. Player IDs can be a SteamID64 (17 digits) or a custom profile URL name. Full machine-readable spec: https://cs2.space/openapi.json Human docs: https://cs2.space/docs ## Guides - [CS2 player stats API](https://cs2.space/cs2-stats-api): Get Counter-Strike 2 player stats with one REST call: Steam profile, bans, level and lifetime CS2 stats, Faceit Elo and skill level, Leetify ratings, Premier rank and medals. Free tier. - [CS2 inventory API with floats and prices](https://cs2.space/cs2-inventory-api): Fetch any public Counter-Strike 2 inventory as clean JSON: every skin with category, rarity, exterior, exact float and pattern seed, stickers, inspect link and live USD price. - [Dota 2 inventory API with prices](https://cs2.space/dota2-inventory-api): Fetch any public Dota 2 inventory as clean JSON: each item's hero, slot, type, rarity, quality, tradability and live USD price, with totals per hero and rarity. - [SteamID converter API](https://cs2.space/steamid-api): Convert a Steam custom profile URL or SteamID64 to SteamID64, Steam32, Steam2 (STEAM_0:X:Y) and Steam3 ([U:1:X]) with one API call, plus name and avatar. - [Full API reference](https://cs2.space/docs): every endpoint, parameter, error and real response. - [OpenAPI 3.1 spec](https://cs2.space/openapi.json): for generating typed clients or importing into Postman. ## Plans and limits - FREE: 500 requests per month, 60 per minute. Steam profile data, SteamID conversion and rank images. - PRO: 10,000 requests per month, 600 per minute. Everything: adds Faceit, Leetify, and CS2 and Dota 2 inventories with prices. - DEVELOPER: 100,000 requests per month, 3,060 per minute. Everything: adds Faceit, Leetify, and CS2 and Dota 2 inventories with prices. - Limits count across all API keys on your account. - Monthly usage resets 30 days after it last reset. - Assets under /api/assets and /api/health don't need a key and don't count towards your quota. ## Endpoints ### GET /api/profile/{id} Player profile. Everything about a player in one call: Steam profile, bans, level, owned games, CS2 lifetime stats, friends, friend code, Game Coordinator data (commendations, profile rank, badges), CS2 inventory summary, Faceit and Leetify. Requires `x-api-key` (any plan). Parameters: - `id` (path, string, required): SteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS). - `include` (query, string, optional, one of dota2): Extra data to add. dota2 adds a dota2Inventory field: the player's Dota 2 inventory, most valuable items first, with totals for the whole inventory (same shape as the Dota 2 inventory endpoint). PRO and DEVELOPER plans. - `dota2Limit` (query, string, optional, default 200): With include=dota2: how many items to return, as a number or all. Large inventories with all can be several MB. - FREE keys get Steam profile data only: faceit, leetify and steam.inventory are null and a _notice field explains how to upgrade. - faceit is null when the player has no Faceit account; leetify is null when they have no Leetify profile. - steam.stats is a list of {name, value} pairs from Steam's CS2 stats (total_kills, total_wins, ...). - Badge imageUrl values are full links you can use directly in an . - Profile data is cached for up to 3 hours; inventory prices are always current. Example: ```bash curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/profile/ChetCS" ``` Example response (long arrays shortened to one entry): ```json { "steamId": "76561197963540638", "steam": { "player": { "steamid": "76561197963540638", "personaname": "Chet", "profileurl": "https://steamcommunity.com/id/ChetCS/", "avatarfull": "https://avatars.steamstatic.com/7eff590c73206f7f0bb6bfbbf9fd3f3e46c95826_full.jpg", "timecreated": 1072291152, "communityvisibilitystate": 3 }, "bans": { "SteamId": "76561197963540638", "CommunityBanned": false, "VACBanned": false, "NumberOfVACBans": 0, "DaysSinceLastBan": 0, "NumberOfGameBans": 0, "EconomyBan": "none" }, "level": 70, "games": [ { "appid": 10, "playtime_forever": 45104 } ], "stats": [ { "name": "total_kills", "value": 99648 }, { "name": "total_deaths", "value": 81581 }, { "name": "total_time_played", "value": 5582556 } ], "friends": [ { "steamid": "76561190000000000", "relationship": "friend", "friend_since": 1550022592 } ], "friendCode": "AYR6T-HGDA", "gc": { "commendations": { "friendly": 118, "teacher": 82, "leader": 80 }, "playerLevel": 18, "playerCurXp": 327683388, "badges": [ { "name": "Premier Season Four Medal", "image": "/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png", "rarity": "Extraordinary", "imageUrl": "https://cs2.space/api/assets/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png" } ], "featuredBadge": { "name": "Premier Season Four Medal", "image": "/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png", "rarity": "Extraordinary", "imageUrl": "https://cs2.space/api/assets/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png" } }, "coinsAndPins": [ { "name": "Premier Season Four Medal", "image": "https://community.cloudflare.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGJWk3ka5VeTr0M-gJnSZ9hll5oL541z1fg70n4Xv8x0P0PGhYapSdKXdWzLGkOt15-QxHi_ql0ly5DmHnN-hJC2RPVJxWcB4QbZY4Riwk4HjNfSiuVKLPsh8JA" } ], "inventory": { "summary": { "totalCount": 505, "tradableCount": 473, "totalValue": 1530.62, "totalValueFormatted": "$1,530.62" }, "pagination": { "total": 505, "limit": 200, "offset": 0, "hasMore": true } } }, "faceit": { "player_id": "3699c7a1-7ee1-4c2d-bcca-49fdb2071a4e", "nickname": "aimbotthot1", "country": "us", "faceit_url": "https://www.faceit.com/{lang}/players/aimbotthot1", "games": { "cs2": { "region": "NA", "skill_level": 4, "faceit_elo": 1018, "game_player_id": "76561197963540638" } } }, "leetify": { "name": "Chet", "steam64_id": "76561197963540638", "first_match_date": "2020-08-01T22:09:58.000Z", "total_matches": 2265, "winrate": 0.3, "rating": { "aim": 48.4047, "positioning": 52.3922, "utility": 38.4005, "clutch": 0.0672, "opening": -0.0084, "ct_leetify": -0.0103, "t_leetify": -0.0054 }, "ranks": { "leetify": -0.77, "premier": 15960, "faceit": null, "faceit_elo": null, "wingman": 7, "renown": null, "competitive": [ { "map_name": "de_dust2", "rank": 10 } ] }, "stats": { "accuracy_head": 26.7328, "reaction_time_ms": 595.9576, "preaim": 10.765, "spray_accuracy": 24.8483 }, "recent_matches": [ { "id": "ba2a8847-0c8c-4be7-97e2-69d9dd67e733", "finished_at": "2026-09-30T21:10:47.000Z", "data_source": "matchmaking", "outcome": "win", "map_name": "de_cache", "score": [ 13, 2 ], "leetify_rating": 0.0279, "rank": 15960 } ] } } ``` ### GET /api/steamid/{id} Resolve a SteamID. Converts a custom profile URL name or SteamID64 into every SteamID format, plus name and avatar. Requires `x-api-key` (any plan). Parameters: - `id` (path, string, required): SteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS). Example: ```bash curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/steamid/ChetCS" ``` Example response (long arrays shortened to one entry): ```json { "steam32": 3274910, "steam64": "76561197963540638", "steam2": "STEAM_0:0:1637455", "steam3": "[U:1:3274910]", "profile_url": "https://steamcommunity.com/id/ChetCS/", "avatar": "https://avatars.steamstatic.com/7eff590c73206f7f0bb6bfbbf9fd3f3e46c95826_full.jpg", "name": "Chet" } ``` ### GET /api/inventory/{id} CS2 inventory. A player's Counter-Strike 2 inventory, parsed: category, rarity, exterior, exact float and pattern seed, stickers, StatTrak/Souvenir, trade lock, working inspect link and USD price for every item. Requires `x-api-key` on a PRO or DEVELOPER plan (FREE keys get 403 with code PLAN_UPGRADE_REQUIRED). Parameters: - `id` (path, string, required): SteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS). - `category` (query, string, optional, one of knives, gloves, rifles, sniper_rifles, pistols, smgs, shotguns, machineguns, cases, stickers, agents, music_kits, pins_coins, patches, graffiti, other): Only return one category. - `sort` (query, string, optional, one of price_desc, price_asc, name_asc): Sort order. Default is Steam's inventory order. - `limit` (query, integer, optional, default 100): Items per page, 1 to 1000. - `offset` (query, integer, optional, default 0): Number of items to skip. - `fresh` (query, boolean, optional, default false): PRO and DEVELOPER keys only: skip the 30 minute cache and fetch from Steam. - Prices are USD market prices, refreshed every 15 minutes. Items with no active market have price: null. - Doppler-style items whose phase isn't exposed are valued at the cheapest phase. - summary always describes the whole inventory; pagination.total counts items after the category filter. - Inventories are cached for 30 minutes (cached and cachedAt tell you when the data is from). Example: ```bash curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/inventory/76561198074762801?category=knives&sort=price_desc&limit=1" ``` Example response (long arrays shortened to one entry): ```json { "steamId": "76561198074762801", "steamInventoryUrl": "https://steamcommunity.com/profiles/76561198074762801/inventory/", "summary": { "totalCount": 474, "tradableCount": 433, "statTrakCount": 33, "souvenirCount": 12, "totalValue": 42995.38, "totalValueFormatted": "$42,995.38", "categoryCounts": { "smgs": 16, "gloves": 5, "cases": 5, "knives": 14, "rifles": 18, "pins_coins": 82, "pistols": 96, "other": 11, "stickers": 187, "sniper_rifles": 15, "shotguns": 7, "music_kits": 13, "agents": 5 }, "rarityCounts": { "Mil-Spec Grade": 88, "Extraordinary": 54, "Base Grade": 10, "Covert": 24, "Restricted": 24, "Classified": 18, "Industrial Grade": 10, "High Grade": 185, "Remarkable": 39, "Exotic": 10, "Consumer Grade": 3, "Master": 3, "Stock": 4, "Exceptional": 2 } }, "items": [ { "assetId": "41918635414", "classId": "7993042582", "instanceId": "188530139", "amount": 1, "name": "★ Butterfly Knife | Fade", "marketName": "★ Butterfly Knife | Fade (Factory New)", "marketHashName": "★ Butterfly Knife | Fade (Factory New)", "type": "★ Covert Knife", "category": "knives", "rarity": { "name": "Covert", "color": "#eb4b4b" }, "exterior": "Factory New", "weapon": "Butterfly Knife", "itemSet": "The Breakout Collection", "iconUrl": "https://community.cloudflare.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1w...", "iconUrlLarge": null, "isStatTrak": false, "isSouvenir": false, "tradable": true, "marketable": true, "tradableAfter": null, "inspectLink": "steam://run/730//+csgo_econ_action_preview%20A7B7311C09333BA6BF24A387818FA197A49F7E127145A4E732A2CF27A5D7AF184F3356", "floatValue": 0.013037406839430332, "paintSeed": 661, "steamInventoryUrl": "https://steamcommunity.com/profiles/76561198074762801/inventory/#730_2_41918635414", "nameTag": null, "stickers": [], "price": { "amount": 2566.68, "formatted": "$2566.68", "currency": "USD" } } ], "pagination": { "total": 14, "limit": 1, "offset": 0, "hasMore": true }, "cached": true, "cachedAt": "2026-10-02T03:00:44.103Z", "stale": false } ``` ### GET /api/inventory/{id}/summary CS2 inventory summary. Totals only: item count, tradable/StatTrak/Souvenir counts, total USD value, and counts per category and rarity. Requires `x-api-key` on a PRO or DEVELOPER plan (FREE keys get 403 with code PLAN_UPGRADE_REQUIRED). Parameters: - `id` (path, string, required): SteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS). - `fresh` (query, boolean, optional, default false): PRO and DEVELOPER keys only: skip the 30 minute cache and fetch from Steam. Example: ```bash curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/inventory/76561198074762801/summary" ``` Example response (long arrays shortened to one entry): ```json { "steamId": "76561198074762801", "summary": { "totalCount": 474, "tradableCount": 433, "statTrakCount": 33, "souvenirCount": 12, "totalValue": 42995.38, "totalValueFormatted": "$42,995.38", "categoryCounts": { "smgs": 16, "gloves": 5, "cases": 5, "knives": 14, "rifles": 18, "pins_coins": 82, "pistols": 96, "other": 11, "stickers": 187, "sniper_rifles": 15, "shotguns": 7, "music_kits": 13, "agents": 5 }, "rarityCounts": { "Mil-Spec Grade": 88, "Extraordinary": 54, "Base Grade": 10, "Covert": 24, "Restricted": 24, "Classified": 18, "Industrial Grade": 10, "High Grade": 185, "Remarkable": 39, "Exotic": 10, "Consumer Grade": 3, "Master": 3, "Stock": 4, "Exceptional": 2 } }, "cached": true } ``` ### GET /api/inventory/{id}/raw CS2 inventory (raw Steam data). The unparsed inventory payload (assets, descriptions, asset_properties) with every page combined, for when you want the original fields. Requires `x-api-key` on a PRO or DEVELOPER plan (FREE keys get 403 with code PLAN_UPGRADE_REQUIRED). Parameters: - `id` (path, string, required): SteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS). - Cached for 30 minutes. Example: ```bash curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/inventory/76561198074762801/raw" ``` Example response (long arrays shortened to one entry): ```json { "success": 1, "assets": [ { "appid": 730, "contextid": "2", "assetid": "53419434826", "classid": "188530159", "instanceid": "188530139", "amount": "1" } ], "descriptions": [ { "appid": 730, "classid": "188530159", "instanceid": "188530139", "name": "MP7 | Skulls", "market_name": "MP7 | Skulls (Minimal Wear)", "market_hash_name": "MP7 | Skulls (Minimal Wear)", "type": "Mil-Spec Grade SMG", "tradable": 1, "marketable": 1, "icon_url": "i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60...", "tags": [ { "category": "Type", "internal_name": "CSGO_Type_SMG", "localized_category_name": "Type", "localized_tag_name": "SMG" }, { "category": "Weapon", "internal_name": "weapon_mp7", "localized_category_name": "Weapon", "localized_tag_name": "MP7" } ] } ], "asset_properties": [ { "appid": 730, "contextid": "2", "assetid": "53419434826", "asset_properties": [ { "propertyid": 1, "int_value": "996", "name": "Pattern Template" }, { "propertyid": 2, "float_value": "0.118721641600131989", "name": "Wear Rating" }, { "propertyid": 6, "string_value": "2636ECE089A6E1273E07062D0E2516221EF3EEEAC92566C2214E63562E725EC76B", "name": "Item Certificate" } ] } ], "total_inventory_count": 474 } ``` ### GET /api/dota2/inventory/{id} Dota 2 inventory. A player's Dota 2 inventory, parsed: hero, slot, type, rarity, quality, tradability and USD price for every item. Requires `x-api-key` on a PRO or DEVELOPER plan (FREE keys get 403 with code PLAN_UPGRADE_REQUIRED). Parameters: - `id` (path, string, required): SteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS). - `hero` (query, string, optional): Only items for this hero, e.g. Juggernaut (case-insensitive). - `category` (query, string, optional): Only items of this type, e.g. Wearable, Courier, Ward, Bundle, Treasure (case-insensitive). - `sort` (query, string, optional, one of price_desc, price_asc, name_asc): Sort order. Default is Steam's inventory order. - `limit` (query, integer, optional, default 100): Items per page, 1 to 1000. - `offset` (query, integer, optional, default 0): Number of items to skip. - `fresh` (query, boolean, optional, default false): PRO and DEVELOPER keys only: skip the 30 minute cache and fetch from Steam. - Prices are USD market prices, refreshed every 15 minutes. Items with no active market have price: null. - Inventories are cached for 30 minutes. Example: ```bash curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/dota2/inventory/76561198001497299?sort=price_desc&limit=1" ``` Example response (long arrays shortened to one entry): ```json { "steamId": "76561198001497299", "game": "dota2", "steamInventoryUrl": "https://steamcommunity.com/profiles/76561198001497299/inventory/#570", "summary": { "totalCount": 2115, "tradableCount": 1406, "categoryCounts": { "Wearable": 1665, "Cursor Pack": 9, "Loading Screen": 162, "HUD Skin": 12, "Bundle": 47, "Taunt": 43, "Announcer": 15, "Courier": 28, "Tool": 47, "Pennant": 1, "Ward": 13, "Gem / Rune": 9, "League": 3, "Player Card": 9, "Misc": 14, "Music": 8, "Terrain": 2, "Treasure": 21, "Roshan": 1, "Sticker Capsule": 4, "Emoticon Tool": 1, "Versus Screen": 1 }, "rarityCounts": { "Mythical": 323, "Common": 636, "Uncommon": 462, "Rare": 522, "Immortal": 143, "Legendary": 28, "Arcana": 1 }, "heroCounts": { "Shadow Fiend": 4, "Medusa": 8, "Other": 361, "Rubick": 21, "Dragon Knight": 45, "Axe": 26, "Doom": 25, "Batrider": 18, "Necrophos": 16, "Spectre": 15, "Sven": 28, "Alchemist": 26, "Crystal Maiden": 18, "Night Stalker": 18, "Drow Ranger": 32, "Earthshaker": 23, "Juggernaut": 56, "Mirana": 24, "Morphling": 21, "Phantom Lancer": 16, "Puck": 17, "Pudge": 33, "Razor": 13, "Sand King": 11, "Storm Spirit": 15, "Windranger": 43, "Kunkka": 41, "Lina": 7, "Shadow Shaman": 7, "Tidehunter": 33, "Witch Doctor": 22, "Riki": 14, "Sniper": 17, "Warlock": 16, "Beastmaster": 19, "Queen of Pain": 12, "Faceless Void": 6, "Wraith King": 26, "Death Prophet": 31, "Phantom Assassin": 22, "Templar Assassin": 25, "Luna": 26, "Nature's Prophet": 61, "Clinkz": 17, "Omniknight": 27, "Enchantress": 10, "Broodmother": 19, "Bounty Hunter": 41, "Weaver": 14, "Ursa": 16, "Spirit Breaker": 30, "Invoker": 26, "Silencer": 19, "Outworld Destroyer": 11, "Lycan": 6, "Brewmaster": 14, "Lone Druid": 17, "Chaos Knight": 15, "Nyx Assassin": 22, "Naga Siren": 16, "Keeper of the Light": 15, "Slark": 14, "Centaur Warrunner": 22, "Magnus": 29, "Bristleback": 7, "Tusk": 16, "Skywrath Mage": 18, "Abaddon": 11, "Lich": 13, "Venomancer": 13, "Tiny": 2, "Tinker": 2, "Pugna": 8, "Legion Commander": 23, "Timbersaw": 25, "Vengeful Spirit": 14, "Gyrocopter": 15, "Ogre Magi": 7, "Leshrac": 9, "Ember Spirit": 31, "Earth Spirit": 10, "Clockwerk": 11, "Dark Seer": 10, "Elder Titan": 3, "Techies": 2, "Dazzle": 9, "Lion": 18, "Anti-Mage": 8, "Chen": 4, "Troll Warlord": 5, "Meepo": 3, "Disruptor": 14, "Bloodseeker": 16, "Monkey King": 3, "Slardar": 4, "Lifestealer": 9, "Huskar": 11, "Zeus": 5, "Shadow Demon": 1, "Pangolier": 4, "Enigma": 5, "Bane": 2, "Void Spirit": 1, "Ancient Apparition": 2, "Undying": 5, "Mars": 1, "Grimstroke": 1, "Underlord": 1, "Phoenix": 2, "Viper": 2, "Arc Warden": 4, "Jakiro": 5, "Winter Wyvern": 1, "Treant Protector": 1 }, "totalValue": 343.07, "totalValueFormatted": "$343.07" }, "items": [ { "assetId": "25929845931", "classId": "5047971957", "instanceId": "2781217946", "amount": 1, "name": "Feast of Abscession", "marketName": "Feast of Abscession", "marketHashName": "Feast of Abscession", "type": "Arcana Wearable", "category": "Wearable", "hero": "Pudge", "slot": "Hero Base", "rarity": { "name": "Arcana", "color": "#ADE55C" }, "quality": { "name": "Standard", "color": "#D2D2D2" }, "iconUrl": "https://community.cloudflare.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1w...", "iconUrlLarge": null, "tradable": false, "marketable": false, "steamInventoryUrl": "https://steamcommunity.com/profiles/76561198001497299/inventory/#570_2_25929845931", "price": { "amount": 19.15, "formatted": "$19.15", "currency": "USD" } } ], "pagination": { "total": 2115, "limit": 1, "offset": 0, "hasMore": true }, "cached": false, "cachedAt": "2026-10-02T03:17:45.136Z", "stale": false } ``` ### GET /api/dota2/inventory/{id}/summary Dota 2 inventory summary. Totals only: item count, tradable count, total USD value, and counts per type, rarity and hero. Requires `x-api-key` on a PRO or DEVELOPER plan (FREE keys get 403 with code PLAN_UPGRADE_REQUIRED). Parameters: - `id` (path, string, required): SteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS). - `fresh` (query, boolean, optional, default false): PRO and DEVELOPER keys only: skip the 30 minute cache and fetch from Steam. Example: ```bash curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/dota2/inventory/76561198001497299/summary" ``` Example response (long arrays shortened to one entry): ```json { "steamId": "76561198001497299", "game": "dota2", "summary": { "totalCount": 2115, "tradableCount": 1406, "categoryCounts": { "Wearable": 1665, "Cursor Pack": 9, "Loading Screen": 162, "HUD Skin": 12, "Bundle": 47, "Taunt": 43, "Announcer": 15, "Courier": 28, "Tool": 47, "Pennant": 1, "Ward": 13, "Gem / Rune": 9, "League": 3, "Player Card": 9, "Misc": 14, "Music": 8, "Terrain": 2, "Treasure": 21, "Roshan": 1, "Sticker Capsule": 4, "Emoticon Tool": 1, "Versus Screen": 1 }, "rarityCounts": { "Mythical": 323, "Common": 636, "Uncommon": 462, "Rare": 522, "Immortal": 143, "Legendary": 28, "Arcana": 1 }, "heroCounts": { "Shadow Fiend": 4, "Medusa": 8, "Other": 361, "Rubick": 21, "Dragon Knight": 45, "Axe": 26, "Doom": 25, "Batrider": 18, "Necrophos": 16, "Spectre": 15, "Sven": 28, "Alchemist": 26, "Crystal Maiden": 18, "Night Stalker": 18, "Drow Ranger": 32, "Earthshaker": 23, "Juggernaut": 56, "Mirana": 24, "Morphling": 21, "Phantom Lancer": 16, "Puck": 17, "Pudge": 33, "Razor": 13, "Sand King": 11, "Storm Spirit": 15, "Windranger": 43, "Kunkka": 41, "Lina": 7, "Shadow Shaman": 7, "Tidehunter": 33, "Witch Doctor": 22, "Riki": 14, "Sniper": 17, "Warlock": 16, "Beastmaster": 19, "Queen of Pain": 12, "Faceless Void": 6, "Wraith King": 26, "Death Prophet": 31, "Phantom Assassin": 22, "Templar Assassin": 25, "Luna": 26, "Nature's Prophet": 61, "Clinkz": 17, "Omniknight": 27, "Enchantress": 10, "Broodmother": 19, "Bounty Hunter": 41, "Weaver": 14, "Ursa": 16, "Spirit Breaker": 30, "Invoker": 26, "Silencer": 19, "Outworld Destroyer": 11, "Lycan": 6, "Brewmaster": 14, "Lone Druid": 17, "Chaos Knight": 15, "Nyx Assassin": 22, "Naga Siren": 16, "Keeper of the Light": 15, "Slark": 14, "Centaur Warrunner": 22, "Magnus": 29, "Bristleback": 7, "Tusk": 16, "Skywrath Mage": 18, "Abaddon": 11, "Lich": 13, "Venomancer": 13, "Tiny": 2, "Tinker": 2, "Pugna": 8, "Legion Commander": 23, "Timbersaw": 25, "Vengeful Spirit": 14, "Gyrocopter": 15, "Ogre Magi": 7, "Leshrac": 9, "Ember Spirit": 31, "Earth Spirit": 10, "Clockwerk": 11, "Dark Seer": 10, "Elder Titan": 3, "Techies": 2, "Dazzle": 9, "Lion": 18, "Anti-Mage": 8, "Chen": 4, "Troll Warlord": 5, "Meepo": 3, "Disruptor": 14, "Bloodseeker": 16, "Monkey King": 3, "Slardar": 4, "Lifestealer": 9, "Huskar": 11, "Zeus": 5, "Shadow Demon": 1, "Pangolier": 4, "Enigma": 5, "Bane": 2, "Void Spirit": 1, "Ancient Apparition": 2, "Undying": 5, "Mars": 1, "Grimstroke": 1, "Underlord": 1, "Phoenix": 2, "Viper": 2, "Arc Warden": 4, "Jakiro": 5, "Winter Wyvern": 1, "Treant Protector": 1 }, "totalValue": 343.07, "totalValueFormatted": "$343.07" }, "cached": true } ``` ### GET /api/assets/premier/{rating}.svg Premier rating badge. An SVG of the CS2 Premier rating badge for any rating, in the right colour tier. Free to use, no API key needed. No API key needed. Parameters: - `rating` (path, integer, required): Premier rating, e.g. 15235. - Hundreds more static images (ranks, Faceit levels, maps, weapons, medals) are listed in the asset browser at the bottom of the docs. Example: ```bash curl "https://cs2.space/api/assets/premier/15235.svg" ``` ### GET /api/health API status. Whether the API and its dependencies are up. No API key needed. No API key needed. Example: ```bash curl "https://cs2.space/api/health" ``` Example response (long arrays shortened to one entry): ```json { "status": "ok", "services": { "cache": "up", "steamCoordinator": "up" } } ``` ## Errors Errors return JSON with an `error` message and sometimes a `code`. - 400: Invalid parameter, e.g. a non-numeric Premier rating. - 401: No API key was sent. - 403: Invalid API key, the player's inventory is private (code INVENTORY_PRIVATE), or the endpoint needs a PRO or DEVELOPER plan (code PLAN_UPGRADE_REQUIRED). - 404: The SteamID or profile name doesn't match a player. - 429: Rate limit or monthly quota exceeded, or Steam is rate limiting inventory requests (code STEAM_RATE_LIMIT). Retry later. - 500: Something went wrong on our side. - 502: Steam failed to return the inventory. Retry shortly.