The agreementid can be retrieved using [webapi]ISteamMicroTxn/GetUserAgreementInfo[/webapi]. [b]Response:[/b] [list] [*] [code-inline]response[/code-inline] [list] [*] [code-inline]result[/code-inline] - Result of the operation. …
See: [doclink=features/microtransactions/implementation#error_codes][/doclink] [*] [code-inline]errordesc[/code-inline] - Message for error or event. [/list] [/list] [/list] [section=GetUserInfo]GetUserInfo[/section] [code=http]GET https://partner.steam-api.com/ISteamMicroTxn/GetUserInfo/v2/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr] [td][b]key[/b][/td][td]string[/td] [td]✔[/td] [td]Steamworks Web API [url=https://partner.steamgames.com/doc/webapi_overview/auth#publisher-keys]publisher key[/url] with [b]Microtransaction[/b] permissions.…
[b]Return values[/b][table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]results[/b][/td][td]CPartnerFinancials_DetailedSalesResult[/td][td]A repeating field containing detailed sales information[/td][/tr] [tr][td][b]key_request_info[/b][/td][td]CPartnerFinancials_KeyRequestInfo[/td][td]The key request details for this response[/td][/tr] [tr][td][b]package_info[/b][/td][td]CPartnerFinancials_PackageInfo[/td][td]The package id values for the response and their respective names[/td][/tr] [tr][td][b]app_info[/b][/td][td]CPartnerFinancials_AppInfo[/td][td]The app id values for the response and their respective names[/td][/tr] [tr][td][b]bundle_info[/b][/td][td]CPartnerFinancials_BundleInfo[/td][td]The bundle id values for the response and their respective names[/td][/tr] [tr][td][b]discount_info[/b][/td][td]CPartnerFinancials_DiscountInfo[/td][td]The discount details for the response[/td][/tr] [tr][td][b]combined_discount_info[/b][/td][td]CPartnerFinancials_CombinedDiscountInfo[/td][td]The combined discount details for the response[/td][/tr] [tr][td][b]game_item_info[/b][/td][td]CPartnerFinancials_GameItemInfo[/td][td]The app id and game item id values for the response and their respective descriptions and categories[/td][/tr] [tr][td][b]country_info[/b][/td][td]CPartnerFinancials_CountryInfo[/td][td]The country codes, names, and regions from the response[/td][/tr] [tr][td][b]partner_info[/b][/td][td]CPartnerFinancials_PartnerInfo[/td][td]The partner ids and names from the response[/td][/tr] [tr][td][b]max_id[/b][/td][td]int64[/td][td]The largest id returned from this result set. …
Max size - 1024 characters[/td][/tr] [/table] [b]CPartnerFinancials_AppInfo[/b] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]A unique id[/td][/tr] [tr][td][b]app_name[/b][/td][td]string[/td][td]The app name[/td][/tr] [/table] [b]CPartnerFinancials_BundleInfo[/b] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]bundleid[/b][/td][td]uint32[/td][td]A unique id[/td][/tr] [tr][td][b]bundle_name[/b][/td][td]string[/td][td]The bundle name[/td][/tr] [/table] [b]CPartnerFinancials_GameItemInfo[/b] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]game_item_description[/b][/td][td]string[/td][td]The English language description of the in-game item sold. …
[doclink=marketing/upcoming_events/themed_sales/dinos_robots_2027]More info[/doclink]. [/td][/tr] [tr][td]Apr 12 Apr 19[/td][td]Racing Fest[/td] [td][url=https://partner.steamgames.com/optin/sale/racing_2027]Registration details[/url][/td] [td]Games about going [i]fast[/i]. …
[doclink=marketing/upcoming_events/themed_sales/racing_2027]More info[/doclink]. [/td][/tr] [tr][td]Apr 22 Apr 26[/td][td]Witch Fest[/td] [td][url=https://partner.steamgames.com/optin/sale/witch_2027]Registration details[/url][/td] [td]Games that are witchy! …
Provides miscellaneous Web API related functionality through utility methods. For more info on how to use the Steamworks Web API please see the [doclink=webapi_overview][/doclink]. [section=GetServerInfo]GetServerInfo[/section] [code=http]GET https://api.steampowered.com/ISteamWebAPIUtil/GetServerInfo/v1/[/code] This call has no additional parameters. …
v=lU1SFAa3QqM [section]Updated Features for your store page[/section] [callout]Note: These are new features that have been added since the above video was released.[/callout] [subsection]Under "Basic Info" Tab[/subsection] [list][*]Accessibility support on Steam - Helping players find games that feature accessibility support - [url=https://store.steampowered.com/news/group/4145017/view/536595840131663918]More Info[/url] [*] Controller Support for your game - Describe the devices supported by your game - [url=https://store.steampowered.com/news/group/4145017/view/3684558162504860650]More Info[/url] [*] Expanded Social Media Links - More ways for players to find their way to your social media platforms - [url=https://steamcommunity.com/groups/steamworks/announcements/detail/4592070813172257798 ]More Info[/url] [*] Anti-Cheat Declaration - Share anti-cheat information about your game - [url=https://store.steampowered.com/news/group/4145017/view/4547038620960934856]More Info[/url] [/list] [subsection]Under "Description" Tab[/subsection] [list][*]New Visual Editor - See exactly how your game description will look as you work, with a real-time preview of your text, images, and other formatting. - [url=https://steamcommunity.com/groups/steamworks/announcements/detail/7126472323852954169?snr=2___ ]More Info[/url] [*]Changes to Store Page Written Descriptions- [url=https://steamcommunity.com/groups/steamworks/announcements/detail/4201376568915048836]More Info[/url] [list][*]No links to other websites - This means that you cannot use your store page to link to any other website, including social media pages. …
Once all open channels to a user have been closed, the open session to the user will be closed, and any new data from this user will trigger a [apitype]ISteamNetworkingMessages::SteamNetworkingMessagesSessionRequest_t[/apitype] callback [subsection=GetSessionConnectionInfo]GetSessionConnectionInfo[/subsection] [code=cpp]ESteamNetworkingConnectionState GetSessionConnectionInfo( const SteamNetworkingIdentity &identityRemote, SteamNetConnectionInfo_t *pConnectionInfo, SteamNetConnectionRealTimeStatus_t *pQuickStatus );[/code] Returns information about the latest state of a connection, if any, with the given peer. …
[code] struct SteamNetworkingMessagesSessionFailed_t { /// Detailed info about the session that failed. /// SteamNetConnectionInfo_t::m_identityRemote indicates who this session /// was with. SteamNetConnectionInfo_t m_info; }; [/code] …
[subsection]Where Your Game Name is Defined[/subsection] Your game's name is defined in three main locations: [list] [*][b]Store info[/b] - On the "Basic Info" tab under "Edit Store". This name is used within the Steam store, including search results. [*][b]Steamworks Info[/b] - On the "General Application Settings" tab under Steamworks Settings. This name is used within the Steam library and the Steam Community. [*][b]Package Info[/b] - Each store package that sells your game. This is used to present your purchase option shown on your store page and during the checkout process. …
(But the messages are not grouped by connection, so they will not necessarily appear consecutively in the list; they may be interleaved with messages for other connections.) [section=functions_connection_info]Connection info[/section] [subsection=GetConnectionInfo]GetConnectionInfo[/subsection] [code=cpp]bool GetConnectionInfo( HSteamNetConnection hConn, SteamNetConnectionInfo_t *pInfo );[/code] Returns basic information about the high-level state of the connection. …
[subsection=GetFakeIP]GetFakeIP[/subsection] [code=cpp]void GetFakeIP( int idxFirstPort, SteamNetworkingFakeIPResult_t *pInfo );[/code] Return info about the FakeIP and port(s) that we have been assigned, if any. idxFirstPort is currently reserved and must be zero. …
[b]NOTE:[/b] This is a Service interface, methods in this interface should be called with the [code-inline]input_json[/code-inline] parameter. For more info on how to use the Steamworks Web API please see the [doclink=webapi_overview][/doclink]. [section=GetAccountList]GetAccountList[/section] [code=http]GET https://api.steampowered.com/IGameServersService/GetAccountList/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API user authentication key.…
[/td][/tr] [tr][td][b]steamid[/b][/td][td]uint64[/td][td]✔[/td][td]The SteamID of the game server account to delete[/td][/tr] [/table] Deletes a persistent game server account [section=GetAccountPublicInfo]GetAccountPublicInfo[/section] [code=http]GET https://api.steampowered.com/IGameServersService/GetAccountPublicInfo/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API user authentication key.…
Developers should familiarize themselves with all of these devices since the player base uses the full range of devices. If you're interested in finding out more info about the distribution of controllers used with Steam you can find more info in this [url=https://steamcommunity.com/games/593110/announcements/detail/1712946892833213377]blog post[/url] [section=ListDevices]Supported Devices[/section] Steam Input supports all the major controllers that players use with Steam. …
See the primary Steam Workshop interface [webapi]ISteamRemoteStorage[/webapi] for more. For more info on how to use the Steamworks Web API please see the [doclink=webapi_overview][/doclink]. [section=RankedByPublicationOrder]RankedByPublicationOrder[/section] [code=http]POST https://partner.steam-api.com/ISteamPublishedItemSearch/RankedByPublicationOrder/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API publisher authentication key.…
[/td][/tr] [tr][td][b]steamid[/b][/td][td]uint64[/td][td]✔[/td][td]SteamID of user[/td][/tr] [tr][td][b]appid[/b][/td][td]uint64[/td][td]✔[/td][td]appID relevant to all subsequent tags[/td][/tr] [tr][td][b]tagcount[/b][/td][td]uint32[/td][td]✔[/td][td]Number of Tags Specified[/td][/tr] [tr][td][b]usertagcount[/b][/td][td]uint32[/td][td]✔[/td][td]Number of User specific tags requested[/td][/tr] [tr][td][b]hasappadminaccess[/b][/td][td]bool[/td][td][/td][td]Whether the user making the request is an admin for the app and can see private files[/td][/tr] [tr][td][b]fileType[/b][/td][td]uint32[/td][td][/td][td]EPublishedFileInfoMatchingFileType, defaults to k_PFI_MatchingFileType_Items[/td][/tr] [tr][td][b]tag[0][/b][/td][td]string[/td][td][/td][td]Tag to filter result set[/td][/tr] [tr][td][b]usertag[0][/b][/td][td]string[/td][td][/td][td]A user specific tag[/td][/tr] [/table] [b]NOTE:[/b] This call requires a publisher API key to use this method. …
Once they've done so, you should see their event name and the organizer's contact info appear in your Steamworks dashboard. [subsection]2. Set Your Discount (Optional)[/subsection] Consider whether you'd like your game to be on discount during the event. …
[/h4] [b]A:[/b] Please reach out to the event organizer, as they are responsible for where games show up on their event pages. Once your game has been added to a sale page, the contact info for the event organizer should appear in your Steamworks dashboard. If your primary contact for the event isn't available, other people in that contact info link may be able to help. [*][h4]Q: There is an upcoming third party event, or one that's live right now, that I think my game would be a good fit for. …
Example [b]vrpreferences.json[/b]: [code=json] { "steam_frame": { "preferResolution": 2160, "preferMinRefreshRate": 90, "preferHalfFramerate": true, "preferMotionSmoothingMode": "off" } } [/code] This example file suggests: [list] [*]A default resolution of 2160x2160 [*]A default display refresh rate of 90 Hz [*]A default frame throttling to 1/2 (Frame Limit to 45 FPS) [*]A default override to disable Motion Smoothing [/list] To validate that the [b]vrpreferences.json[/b] is picked up by SteamVR, the [b]vrserver.txt[/b] log file can be searched: [code=plain] [Info] - [Settings] Loading app-provided preferences from '/home/steamos/.local/share/Steam/steamapps/common/<game folder>/vrpreferences.json' [/code] Parsing errors will be reported in this log, for example: [code=plain] [Info] - Parsing of JSON file "/home/steamos/.local/share/Steam/steamapps/common/[...]/vrpreferences.json" failed: * Line 5, Column 3 4: "preferMinRefreshRate": 120, 5: } 6: } Missing '}' or object member name Tue Jul 28 2026 11:05:56.126069 [Info] - [Settings] No or invalid application preferences settings at '/home/steamos/.local/share/Steam/steamapps/common/[...]/vrpreferences.json' [/code] To fully validate that all preferences are being picked up, use [b]VR Settings -> Video -> Per-Application Video Settings[/b], press [b]Reset to Default[/b] and check the defaulted settings against the specified preferences.…
[section=friends]Friends, invites, and lobbies[/section] You can find out all the lobbies a user's friends are in with the friends API: [code] int cFriends = SteamFriends()->GetFriendCount( k_EFriendFlagImmediate ); for ( int i = 0; i < cFriends; i++ ) { FriendGameInfo_t friendGameInfo; CSteamID steamIDFriend = SteamFriends()->GetFriendByIndex( i, k_EFriendFlagImmediate ); if ( SteamFriends()->GetFriendGamePlayed( steamIDFriend, &friendGameInfo ) && friendGameInfo.m_steamIDLobby.IsValid() ) { // friendGameInfo.m_steamIDLobby is a valid lobby, you can join it or use RequestLobbyData() get its metadata } } [/code] You can invite a friend to a lobby with [api]ISteamMatchmaking::InviteUserToLobby[/api] That user will receive a chat dialog with a link to join the game. …
Provides access to the Steam News functionality. For more info on how to use the Steamworks Web API please see the [doclink=webapi_overview][/doclink]. [section=GetNewsForApp]GetNewsForApp[/section] [code=http]GET https://api.steampowered.com/ISteamNews/GetNewsForApp/v2/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td]AppID to retrieve news for[/td][/tr] [tr][td][b]maxlength[/b][/td][td]uint32[/td][td][/td][td]Maximum length for the content to return, if this is 0 the full content is returned, if it's less then a blurb is generated to fit.…
[/td][/tr] [tr][td][b]enddate[/b][/td][td]uint32[/td][td][/td][td]Retrieve posts earlier than this date (unix epoch timestamp)[/td][/tr] [tr][td][b]count[/b][/td][td]uint32[/td][td][/td][td]# of posts to retrieve (default 20)[/td][/tr] [tr][td][b]feeds[/b][/td][td]string[/td][td][/td][td]Comma-seperated list of feed names to return news for[/td][/tr] [/table] Get the news for the specified app. Publisher only version that can return info for unreleased games. This method has previous versions which are no longer officially supported. They will continue to be usable but it's highly recommended that you use the latest version. …
A secondary interface to interact with the [doclink=features/inventory/economy][/doclink]. See also: [webapi]IGameInventory[/webapi]. For more info on how to use the Steamworks Web API please see the [doclink=webapi_overview][/doclink]. [section=CanTrade]CanTrade[/section] [code=http]GET https://partner.steam-api.com/ISteamEconomy/CanTrade/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API publisher authentication key.…
As such this API [b]MUST[/b] be called from a secure server, and can never be used directly by clients! [section=GetAssetClassInfo]GetAssetClassInfo[/section] [code=http]GET https://api.steampowered.com/ISteamEconomy/GetAssetClassInfo/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API user authentication key.…
See [doclink=features/microtransactions][/doclink] for more information. For more info on how to use the Steamworks Web API please see the [doclink=webapi_overview][/doclink].…
= -1 ) { printf( "AchievementInfo - name: %s, percent: %f, unlocked: %d", achName, achPercent, achUnlocked ); // Do something like add/update this info in your local achievement object or display it to the user. i = SteamUserStats()->GetNextMostAchievedAchievementInfo( i, achName, ACH_NAME_MAX_LENGTH, achPercent, achUnlocked ); }[/code] [subsection=GetNextMostAchievedAchievementInfo]GetNextMostAchievedAchievementInfo[/subsection] [code=cpp]int GetNextMostAchievedAchievementInfo( int iIteratorPrevious, char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]iIteratorPrevious[/b][/td][td]int[/td][td]Iterator returned from the previous call to this function or from [api]ISteamUserStats::GetMostAchievedAchievementInfo[/api][/td][/tr] [tr][td][b]pchName[/b][/td][td]char *[/td][td]String buffer to return the 'API Name' of the achievement into.…
[subsection]Foveated Rendering[/subsection] SteamVR supports the following recommended OpenXR extensions: [list] [*][url=https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XR_FB_foveation]XR_FB_foveation[/url] [*][url=https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XR_FB_foveation_configuration]XR_FB_foveation_configuration[/url] [*][url=https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XR_FB_foveation_vulkan]XR_FB_foveation_vulkan[/url] [*][url=https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XR_FB_swapchain_update_state]XR_FB_swapchain_update_state[/url] [*][url=https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XR_META_foveation_eye_tracked]XR_META_foveation_eye_tracked[/url] [*][url=https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XR_META_vulkan_swapchain_create_info]XR_META_vulkan_swapchain_create_info[/url] [/list] [subsection]Eye Tracking[/subsection] Our current support for eye tracking uses the [b]XR_EXT_eye_gaze_interaction [/b]OpenXR extension. …
This can be found in the ISteamApp documentation here: [url=https://partner.steamgames.com/doc/api/ISteamApps]https://partner.steamgames.com/doc/api/ISteamApps[/url] [olist] [*][url=https://partner.steamgames.com/doc/api/ISteamApps#GetCurrentBetaName]GetCurrentBetaName[/url] [*][url=https://partner.steamgames.com/doc/api/ISteamApps#GetNumBetas]GetNumBetas[/url] [*][url=https://partner.steamgames.com/doc/api/ISteamApps#GetBetaInfo]GetBetaInfo[/url] [*][url=https://partner.steamgames.com/doc/api/ISteamApps#SetActiveBeta]SetActiveBeta[/url] [/olist] For some example use cases where you may want to use these APIs, please see our blog post: [url=https://store.steampowered.com/news/group/4145017/view/4547039255696769966]New: Steam APIs For Switching Game Versions & Beta Branches[/url]…