" under "Create A New Application" on the Steamworks landing page. [section=types_of_applications]Types of Applications[/section] The following are the different types of applications that you can create on Steam. …
[table] [tr] [td][b]Game[/b][/td] [td]All games, including VR and non-VR titles, will be under this application type.[/td] [/tr] [tr] [td][b]Software[/b][/td] [td]Products such as Audio Production, Design & Illustration, and Photo Editing will be under this application type.…
[/td][/tr] [tr][td][b]max_members[/b][/td][td]int32[/td][td]✔[/td][td]Maximum number of members for this lobby.[/td][/tr] [tr][td][b]lobby_type[/b][/td][td]int32[/td][td]✔[/td][td][apitype]ISteamMatchmaking::ELobbyType[/apitype] - The type and visibility of this lobby.[/td][/tr] [tr][td][b]lobby_name[/b][/td][td]string[/td][td][/td][td]Unique lobby name if lobby_type = 4. …
[/td][/tr] [/table] Structure of the [code-inline]lobby_metadata[/code-inline] property: [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key_name[/b][/td][td]string[/td][td][/td][td]Key name[/td][/tr] [tr][td][b]key_value[/b][/td][td]string[/td][td][/td][td]Key value[/td][/tr] [/table] When using the CreateLobby WebAPI, you'll probably want to set lobby_type to 4 (k_ELobbyTypePrivateUnique). …
[/td][/tr] [tr][td][b]eLeaderboardSortMethod[/b][/td][td][apitype]ISteamUserStats::ELeaderboardSortMethod[/apitype][/td][td]The sort order of the new leaderboard if it's created.[/td][/tr] [tr][td][b]eLeaderboardDisplayType[/b][/td][td][apitype]ISteamUserStats::ELeaderboardDisplayType[/apitype][/td][td]The display type (used by the Steam Community web site) of the new leaderboard if it's created.…
[/td][/tr] [/table] Returns the display type of a leaderboard handle. [b]Returns:[/b] [apitype]ISteamUserStats::ELeaderboardDisplayType[/apitype] The display type of the leaderboard. …
[subsection=RetrieveMessage]RetrieveMessage[/subsection] [code=cpp]EGCResults RetrieveMessage( uint32 *punMsgType, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]punMsgType[/b][/td][td][apitype]steam_api::uint32[/apitype] *[/td][td][/td][/tr] [tr][td][b]pubDest[/b][/td][td]void *[/td][td][/td][/tr] [tr][td][b]cubDest[/b][/td][td][apitype]steam_api::uint32[/apitype][/td][td][/td][/tr] [tr][td][b]pcubMsgSize[/b][/td][td][apitype]steam_api::uint32[/apitype] *[/td][td][/td][/tr] [/table] Fills the provided buffer with the first message in the queue and returns k_EGCResultOK or returns k_EGCResultNoMessage if there is no message waiting. pcubMsgSize is filled with the message size. …
[b]Returns:[/b] [apitype]ISteamGameCoordinator::EGCResults[/apitype] [subsection=SendMessage]SendMessage[/subsection] [code=cpp]EGCResults SendMessage( uint32 unMsgType, const void *pubData, uint32 cubData );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]unMsgType[/b][/td][td][apitype]steam_api::uint32[/apitype][/td][td][/td][/tr] [tr][td][b]pubData[/b][/td][td]const void *[/td][td][/td][/tr] [tr][td][b]cubData[/b][/td][td][apitype]steam_api::uint32[/apitype][/td][td][/td][/tr] [/table] Sends a message to the Game Coordinator. …
In the case of bundles, we describe the type and quantity of the contained items. In a generator or playtimegenerator, we describe the types of the possible item to be generated, and the relative weight of each type. …
[code] itemdefid: 600 name: Common generator type: generator bundle: 601;602;603;604;605 itemdefid: 700 name: Special generator type: generator bundle: 701;702;703;704;705 itemdefid: 800 name: Master generator type: generator bundle: 600x9;700x1[/code] [/list] Note that - as in the last example - bundle and generator definitions can be chained. …
[subsection=GetFriendMessage]GetFriendMessage[/subsection] [code=cpp]int GetFriendMessage( CSteamID steamIDFriend, int iMessageID, void *pvData, int cubData, EChatEntryType *peChatEntryType );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]steamIDFriend[/b][/td][td][apitype]steam_api::CSteamID[/apitype][/td][td]The Steam ID of the friend that sent this message.…
[/td][/tr] [tr][td][b]cubData[/b][/td][td]int[/td][td]The size of [code-inline]pvData[/code-inline].[/td][/tr] [tr][td][b]peChatEntryType[/b][/td][td][apitype]steam_api::EChatEntryType[/apitype] *[/td][td]Returns the type of chat entry that was received.[/td][/tr] [/table] Gets the data from a Steam friends message. …
ref=5199-TOKV-4426]Supported Controller Database[/url]. [b]Returns:[/b] [apitype]ISteamController::ESteamInputType[/apitype] [b]Example:[/b] [code=cpp] ESteamInputType inputType = SteamController()->GetInputTypeForHandle(controller1Handle); switch(inputType) { case k_ESteamInputType_Unknown: printf("unknown\n!…
You can use GetControllerForGamepadIndex to get this handle[/td][/tr] [tr][td][b]eDestinationInputType[/b][/td][td][apitype]ESteamInputType[/apitype][/td][td]The controller type you want to translate to. Steam will pick the closest type from your SDK version if k_ESteamInputType_Unknown is used[/td][/tr] [tr][td][b]eSourceOrigin[/b][/td][td]EControllerActionOrigin[/td][td]This is the button you want to translate[/td][/tr] [/table] [b]Returns:[/b] EControllerActionOrigin Get the equivalent origin for a given controller type or the closest controller type that existed in the SDK you built into your game if eDestinationInputType is k_ESteamInputType_Unknown. …
[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.…
[section=ResetLoginToken]ResetLoginToken[/section] [code=http]POST https://api.steampowered.com/IGameServersService/ResetLoginToken/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.…
[b]Example:[/b] [code=cpp]P2PSessionState_t p2pSessionState; SteamNetworking()->GetP2PSessionState( steamIDremote, &p2pSessionState );[/code] [subsection=GetSocketConnectionType]GetSocketConnectionType[/subsection] [code=cpp]ESNetSocketConnectionType GetSocketConnectionType( SNetSocket_t hSocket );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]hSocket[/b][/td][td][apitype]ISteamNetworking::SNetSocket_t[/apitype][/td][td][/td][/tr] [/table] Returns true to describe how the socket ended up connecting. …
[/td][/tr] [tr=k_EP2PSessionErrorMax][td][b]k_EP2PSessionErrorMax[/b][/td][td]5[/td][td]Unused.[/td][/tr] [/table] [subsection=ESNetSocketConnectionType]ESNetSocketConnectionType[/subsection] Describes how the socket is currently connected. Only used by the old networking API. [table] [tr][th]Name[/th][th]Value[/th][th]Description[/th][/tr] [tr=k_ESNetSocketConnectionTypeNotConnected][td][b]k_ESNetSocketConnectionTypeNotConnected[/b][/td][td]0[/td][td][/td][/tr] [tr=k_ESNetSocketConnectionTypeUDP][td][b]k_ESNetSocketConnectionTypeUDP[/b][/td][td]1[/td][td][/td][/tr] [tr=k_ESNetSocketConnectionTypeUDPRelay][td][b]k_ESNetSocketConnectionTypeUDPRelay[/b][/td][td]2[/td][td][/td][/tr] [/table] [subsection=ESNetSocketState]ESNetSocketState[/subsection] Connection progress indicators, used by [api]ISteamNetworking::CreateP2PConnectionSocket[/api]. …
[/td][/tr] [tr][td][b]pszPreviewFile[/b][/td][td]const char *[/td][td]Absolute path to the local image.[/td][/tr] [tr][td][b]type[/b][/td][td][apitype]ISteamUGC::EItemPreviewType[/apitype][/td][td]The type of this preview.[/td][/tr] [/table] Adds an additional preview file for the item. …
[/td][/tr] [tr][td][b]eFileType[/b][/td][td][apitype]ISteamRemoteStorage::EWorkshopFileType[/apitype][/td][td]The type of UGC to create.[/td][/tr] [/table] Creates a new workshop item with no content attached yet. …
[code] itemdefid: 500 type: tag_generator name: Tag Generator Paint tag_generator_name: paint_color tag_generator_values: red:33;blue:33;green:33;gold:1 itemdefid: 100 type: tag_tool name: Random Paint Can tag_generators: 500 tags_to_remove_on_tool_use: paint_color [/code] Then when a user applies the "Random Paint Can" tool to their "Hat" using the [api]ISteamInventory::ExchangeItems[/api] call, they have a 33% chance to get either "red," "green," or "blue" and a 1% chance to get "gold.…
Here's an example of an item that keeps track of kills on a rocket launcher. [code] itemdefid: 100 type: item name: Rocket Launcher itemdefid: 200 type: tag_tool name: Kill Stat Tracker tags: stat_tracker:kills tags_to_remove_on_tool_use: stat_tracker:kills [/code] Using the Steamworks API you can have the client update properties on the Rocket Launcher for the dynamic property "kills.…
[table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]unBrowserHandle[/b][/td][td][apitype]ISteamHTMLSurface::HHTMLBrowser[/apitype][/td][td]The handle of the surface that is navigating.…
[/td][/tr] [tr][td][b]pchTarget[/b][/td][td]const char *[/td][td]The html link target type (i.e _blank, _self, _parent, _top ).[/td][/tr] [tr][td][b]pchPostData[/b][/td][td]const char *[/td][td]Any posted data for the request.…
[/list] [h4]Steam Overlay / Big Picture web browser:[/h4] [list] [*] Same as Standard Web Browser with no initial sign-in step; user cannot change account [/list] [h4]In-game web browser with Steamworks API authentication cookie:[/h4] [list] [*] If wallet currency does not match, immediate redirect to return url with result code indicating mismatch [*] Web page displays notice to use the Steam Overlay to authorize the purchase [*] Steam Overlay will activate automatically with a purchase/cancel dialog box [*] Overlay closes, flow continues as Standard Web Browser after user selects Purchase or Cancel [/list] [subsection]Example HTML[/subsection] [code] <form action="https://store.steampowered.com/itemcart/checkout" method="post"> <input type="hidden" name="appid" value="234560"> <input type="hidden" name="cart" value="1001,1006*2"> <input type="hidden" name="total" value="USD499"> <input type="hidden" name="sandbox" value="0"> <input type="hidden" name="return" value="http://mystore.com/checkout.php?fromsteam=1&cartid=BA13522FE31&result=[RESULT]&orderid=[ORDERID]&steamid=[STEAMID]&name=[USERNAME]&cc=[CURRENCY]&auth=[AUTH]"> <input type="hidden" name="auth" value="9a38954f503bf38a16024a9ae9328e8fa780f5be"> <input type="hidden" name="lang" value="en"> <input type="image" src="checkout.png" alt="Checkout"> </form> [/code] [list] [*] appid - is your App ID number. [*] cart - is item definition index numbers separated by commas, with optional xN or *N quantity suffix. …
[list] [*] The specified stat exists in App Admin on the Steamworks website, and the changes are published. [*] [api]ISteamGameServerStats::RequestUserStats[/api] has completed and successfully returned its callback. [*] The type passed to this function must match the type listed in the App Admin panel of the Steamworks website. [/list] [subsection=RequestUserStats]RequestUserStats[/subsection] [code=cpp]SteamAPICall_t RequestUserStats( CSteamID steamIDUser );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]steamIDUser[/b][/td][td][apitype]steam_api::CSteamID[/apitype][/td][td]The Steam ID of the user to request the stats for.…
[list] [*] The specified stat exists in App Admin on the Steamworks website, and the changes are published. [*] [api]ISteamGameServerStats::RequestUserStats[/api] has completed and successfully returned its callback for the specified user. [*] The type passed to this function must match the type listed in the App Admin panel of the Steamworks website. [*] The stat must be allowed to be set by game server. …
[/td][/tr] [/tr] [/table] AddItem is used to add new items directly in a user's inventory. For each itemdef, an instance of that type is created and added to the target account. Items of type 'bundle' or 'generator' are unpacked at the time they are added. The response message provides information about the item or items that were actually inserted in the inventory. …
[/td][/tr] [/table] Structure of the [code-inline]updates[/code-inline] property: [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]itemid[/b][/td][td]uint64[/td][td]✔[/td][td]The id of the item being modified.…
[/td][/tr] [/table] Here's a description of the various activation types: [table] [tr][th]Activation Type[/th][th]Description[/th][/tr] [tr][td]Regular Press[/td][td]Regular Press Activator is the default type. …
[/td][/tr] [/table] These settings are specific to certain activation types: [table] [tr][th]Name[/th][th]Values[/th][th]Activation Type[/th][th]Description[/th][/tr] [tr][td]Interruptable[/td][td]Off, On[/td][td]Regular Press, Release Press[/td][td]Interruptable activators can be paused or stopped by other activators. …
Individual fields for CPartnerFinancials_SalesResult will only be filled for relevant line_item_type and package_sale_type values, demarcated below via the Package, MicroTxn, and CD-Key columns. [b][u]How to determine a CPartnerFinancials_SalesResult Category[/u][/b] [b]Package:[/b] line_item_type = "Package" and package_sale_type = "Steam" [b]MicroTxn:[/b] line_item_type = "MicroTxn" [b]CD-Key:[/b] line_item_type = "Package" and package_sale_type = "Retail" [b][u]Identifying Fields[/u][/b] Each CPartnerFinancials_DetailedSalesResult entry has within it a set of identifying fields (eg. packageid, appid, country_code, etc.) in addition to aggregated values (eg. gross_units_sold, gross_units_returned, gross_sales_usd etc.) …
Equivalent to "ItemID" from the old CSV feed.[/td][/tr] [tr][td]✔[/td][td][b]package_sale_type[/b][/td][td]string[/td][td]✔[/td][td][/td][td]✔[/td][td]The type of redemption, Steam sale or Retail key. Max size - 64 characters.…
[table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]m_nAppID[/b][/td][td][apitype]steam_api::AppId_t[/apitype][/td][td]App ID of the DLC that was installed.…
[table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]m_unAppID[/b][/td][td][apitype]steam_api::AppId_t[/apitype][/td][td]AppID that is in a timed trial.…
[section=EnumerateUserSubscribedFiles]EnumerateUserSubscribedFiles[/section] [code=http]POST https://partner.steam-api.com/ISteamRemoteStorage/EnumerateUserSubscribedFiles/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.…
[section=SubscribePublishedFile]SubscribePublishedFile[/section] [code=http]POST https://partner.steam-api.com/ISteamRemoteStorage/SubscribePublishedFile/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.…
[subsection=BReleaseSteamPipe]BReleaseSteamPipe[/subsection] [code=cpp]bool BReleaseSteamPipe( HSteamPipe hSteamPipe );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]hSteamPipe[/b][/td][td][apitype]ISteamClient::HSteamPipe[/apitype][/td][td]The pipe to release.…
[subsection=CreateLocalUser]CreateLocalUser[/subsection] [code=cpp]HSteamUser CreateLocalUser( HSteamPipe *phSteamPipe, EAccountType eAccountType );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]phSteamPipe[/b][/td][td][apitype]ISteamClient::HSteamPipe[/apitype] *[/td][td][/td][/tr] [tr][td][b]eAccountType[/b][/td][td][apitype]steam_api::EAccountType[/apitype][/td][td][/td][/tr] [/table] Create a Steam user that won't be shared with anyone else. …