The billing agreement status will just be for the current renewal status. For example, if the user has paid for 1 month, and then cancels after 1 day, the current status show canceled. In general, you should not use this API to determine if the user has renewed their subscription. …
See: [doclink=features/microtransactions/implementation#status_values][/doclink] [*] [code-inline]currency[/code-inline] - ISO 4217 currency code. [*] [code-inline]time[/code-inline] - Time of transaction (RFC 3339 UTC formatted like: [b]2010-01-01T00:00:00Z[/b]) [*] [code-inline]country[/code-inline] - ISO 3166-1-alpha-2 country code. [*] [code-inline]usstate[/code-inline] - US State, or the state, province, territory for some countries. [*] [code-inline]items[/code-inline] [list] [*] [code-inline]itemid[/code-inline] - Game ID number of item. [*] [code-inline]qty[/code-inline] - Quantity of this item. [*] [code-inline]amount[/code-inline] - Total cost to user minus VAT (in cents). (199 = 1.99) [*] [code-inline]vat[/code-inline] - Total VAT or tax (in cents). (19 = .19) [*] [code-inline]itemstatus[/code-inline] - Status of items within the order. …
Order does not matter. Duplicates are treated as additional quantity. [*] total - is the expected total cost of the cart. Checkout will fail if this does not match. Format is upper-case currency type (USD, EUR, GBP, etc) followed by numeric total. [*] sandbox - is 1 or 0. …
[/list] Sample PHP to generate "auth" value: [code=php] define( 'SECRET_ITEMCART_KEY', '11111111111111111111111111111111' ); $appid = '234560'; $cartstring = '1001,1006*2'; $totalstring = 'USD499'; $sandbox = '0'; // or '1' $returnurl = 'http://mystore.com/checkout.php?fromsteam=1&cartid=BA13522FE31&result=[RESULT]&orderid=[ORDERID]&steamid=[STEAMID]&name=[USERNAME]&cc=[CURRENCY]&auth=[AUTH]'; $auth = hash_hmac( "sha1", "$appid\n$cartstring\n$totalstring\n$sandbox\n$returnurl", SECRET_ITEMCART_KEY ); [/code] Sample PHP to validate return URL: [code=php] hash_hmac( "sha1", str_replace( $_GET['AUTH'], "", $_SERVER["REQUEST_URI"] ), SECRET_ITEMCART_KEY ) === $_GET['AUTH'] [/code] The authentication code in the sample HTML form is computed as if the Itemcart secret key is all ones (32 characters long). …
[/td][/tr] [tr][td][b]siteid[/b][/td][td]uint64[/td][td][/td][td]Site ID to see; zero for all sites[/td][/tr] [/table] Get total playtime amounts for all games over a period of time; for one or all sites. The response has the following structure: [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]sites[/b][/td][td]see below[/td][td]A list of site details[/td][/tr] [tr][td][b]game_names[/b][/td][td]see below[/td][td]Mapped list of game names.…
[/td][/tr] [tr][td][b]playtime_seconds[/b][/td][td]uint32[/td][td]total playtime for this game and license type, in seconds, for the requested period.[/td][/tr] [/table] …
[b]Response:[/b] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]query_summary[/b][/td][td]{message}[/td][td]Totals for the query. [code-inline]num_reviews[/code-inline] is the number of reviews on this page. The score fields ([code-inline]review_score[/code-inline], [code-inline]review_score_desc[/code-inline], [code-inline]total_positive[/code-inline], [code-inline]total_negative[/code-inline], [code-inline]total_reviews[/code-inline]) are only returned on the first page, and only when [code-inline]review_type[/code-inline] is k_EUserReviewsReviewType_All.…
Can be wider than [code-inline]day_range[/code-inline] when the requested range had no reviews; 0 means no limit.[/td][/tr] [tr][td][b]total_matching[/b][/td][td]uint32[/td][td]Total number of reviews that match the query.[/td][/tr] [/table] Each entry in [code-inline]reviews[/code-inline]: [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]recommendationid[/b][/td][td]uint64[/td][td]Unique ID of the review.…
[subsection]Tracked Visits[/subsection] Three types of visits are tracked for UTM Analytics: [list][*]Total Visits: The total number of visits to your product page that had a UTM code attached to the URL. [*]Trusted Visits: A subset of Total Visits that excludes bot traffic and search crawlers. [*]Tracked Visits: The total number of visits to your product page for which users were also logged in. …
This can be difficult to prevent because the UTM report does not: [list][*]Reveal which purchases belong to which UTM parameters, only the total number of purchases for each unique set of UTM parameters [*]Adjust totals for refunds occurring 4 days or later after the UTM visit. …
[/td][/tr] [tr][td][b]publishedfileid[/b][/td][td]uint64[/td][td]✔[/td][td][/td][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td][/td][/tr] [tr][td][b]add_tags[/b][/td][td]string[][/td][td][/td][td]Tags to add. Example usage: add_tags[0]='yourtag1', add_tags[1]='yourtag2', etc.[/td][/tr] [tr][td][b]remove_tags[/b][/td][td]string[][/td][td][/td][td]Tags to remove. Example usage: remove_tags[0]='tag_to_remove1', remove_tags[1]='tag_to_remove2', etc.…
[/td][/tr] [tr=k_PFI_MatchingFileType_Collections][td][b]k_PFI_MatchingFileType_Collections[/b][/td][td]1[/td][td]A collection of Workshop items.[/td][/tr] [tr=k_PFI_MatchingFileType_Art][td][b]k_PFI_MatchingFileType_Art[/b][/td][td]2[/td][td]Artwork.…
[/td][/tr] [tr][td][b]appid[/b][/td][td]uint32[/td][td]✔[/td][td]AppID that we're getting global stats for[/td][/tr] [tr][td][b]count[/b][/td][td]uint32[/td][td]✔[/td][td]Number of stats get data for[/td][/tr] [tr][td][b]name[0][/b][/td][td]string[/td][td]✔[/td][td]Names of stat to get data for[/td][/tr] [tr][td][b]startdate[/b][/td][td]uint32[/td][td][/td][td]Start date for daily totals (unix epoch timestamp)[/td][/tr] [tr][td][b]enddate[/b][/td][td]uint32[/td][td][/td][td]End date for daily totals (unix epoch timestamp)[/td][/tr] [/table] Retrieves the global stats percentages for the specified app. …
[section=GetNumberOfCurrentPlayers]GetNumberOfCurrentPlayers[/section] [code=http]GET https://partner.steam-api.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1/[/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 that we're getting user count for[/td][/tr] [/table] Gets the total number of players currently active in the specified app on Steam. …
. [*][b]On its own dedicated calendar page[/b], where it shows [b]eight weeks[/b] of releases. [/list] [docimg=frontpagecalendar1.png]frontpagecalendar1.png[/docimg] [i]The Personal Calendar on the Steam Store front page.[/i] [docimg=standalonecalendar1.png]standalonecalendar1.png[/docimg] [i]The dedicated Personal Calendar page.…
More wishlists increase the likelihood of appearing, but featuring is personalized for each player rather than based on total wishlist counts. [b]Q. Can someone at Valve manually add my game to the calendar?[/b] A. No. The calendar is not hand-curated. …
[/td][/tr] [tr][td][b]punBytesTotal[/b][/td][td][apitype]steam_api::uint64[/apitype] *[/td][td]Returns the total size of the download in bytes.[/td][/tr] [/table] Gets the download progress for optional DLC. …
param1=value1;param2=value2;param3=value3;[/code-inline] while the game is already running. The new params can be queried with [api]ISteamApps::GetLaunchCommandLine[/api] and [api]ISteamApps::GetLaunchQueryParam[/api]. …
This can be done by setting the environment variable ENABLE_VULKAN_RENDERDOC_CAPTURE=1. You can do this in Steam by clicking the app's gear icon and editing the command line to be: [code]ENABLE_VULKAN_RENDERDOC_CAPTURE=1 %command%[/code] If the capture button is disabled or not working and you see the API listed as Not Presenting you may need to add EnableFrameEndMarkers=1 to your launch options as well (before %command%). [code]ENABLE_VULKAN_RENDERDOC_CAPTURE=1 EnableFrameEndMarkers=1 %command%[/code] [section]Additional Performance Tools[/section] Additional developer tools for evaluating performance can found here: https://gitlab.steamos.cloud/frame-public/frame-developer-tools [section]Tracking Errors[/section] If you run into serious tracking issues please let us know. …
[section=GetTradeHistory]GetTradeHistory[/section] [code=http]GET https://api.steampowered.com/IEconService/GetTradeHistory/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=GetTradeOffers]GetTradeOffers[/section] [code=http]GET https://api.steampowered.com/IEconService/GetTradeOffers/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.…
[/list] [*] If desired, the progress of the upload can be tracked using [api]ISteamUGC::GetItemUpdateProgress[/api] [list] [*] [apitype]ISteamUGC::EItemUpdateStatus[/apitype] defines the upload and update progress. [*] [code-inline]punBytesProcessed[/code-inline] and [code-inline]punBytesTotal[/code-inline] can be used to provide input for a user interface control such as a progress bar to indicate progress of the upload. [*] [code-inline]punBytesTotal[/code-inline] may update during the upload process based upon the stage of the item update. …
[list] [*] [api]ISteamUGC::GetNumSubscribedItems[/api] - Gets the total number of items the current user is subscribed to for the game or application. [*] [api]ISteamUGC::GetSubscribedItems[/api] - Gets a list of all of the items the current user is subscribed to for the current game. …
Max size - 64 characters[/td][/tr] [tr][td]✔[/td][td][b]country_code[/b][/td][td]string[/td][td]✔[/td][td]✔[/td][td]✔[/td][td]The ISO 3166-1 alpha-2 country code where the item was purchased. Max size - 8 characters[/td][/tr] [tr][td]✔[/td][td][b]base_price[/b][/td][td]uint64[/td][td]✔[/td][td][/td][td][/td][td]The base price, in local currency cents.…
Wishlisting data does not have the same "wait for settlement" behavior as financial data (credit card payments etc.), therefore it is unnecessary to query prior dates more than once after dates have closed. For example: - On June 1st, it would be good practice to query May 31st and June 1st data. - On June 2nd, it would be good practice to query June 1st and June 2nd, but re-querying May 31st should not provide any new or changed data. …
We've added that here: [subsection]The most recent day is excluded[/subsection] Wishlist data is updated daily for the previous date (ie. as of March 2nd, you can see all of the data up to March 1st) [subsection]Regional Wishlisting Data[/subsection] You can see a breakdown of wishlist numbers by region or country in the "Regional sales report" page for each app. …
This indicates the platform that players have explicitly set in their Steam preferences. This will almost always be a subset of total wishlists, as not every player has selected a specific platform. You can find your own platform preferences here: https://store.steampowered.com/account/preferences/ [docimg=platformPreferences.png]platformPreferences.png[/docimg] [subsection]Definitions[/subsection] In the CSV download of the wishlist data, there is a column for "DateLocal" and "MonthCohort". …
Certain inputs can be mapped to "mouse regions", which send mouse input to the game, but map the input's total range of movement 1:1 with screen space, which means e.g. that touching a specific location on, say, a touch pad, will always put the cursor at the same place on the screen. …
For a rectangular mouse region, it should map 1:1 with the screen's boundaries. For a circular region at this size, it will extend the circle far enough past in both directions to contain the entire size of the screen, with clamping applied at the edges. …
[/td][/tr] [tr][td][b]punBytesDownloaded[/b][/td][td][apitype]steam_api::uint64[/apitype] *[/td][td]Returns the current bytes downloaded.[/td][/tr] [tr][td][b]punBytesTotal[/b][/td][td][apitype]steam_api::uint64[/apitype] *[/td][td]Returns the total bytes. This is only valid after the download has started.…
[/td][/tr] [tr][td][b]punBytesProcessed[/b][/td][td][apitype]steam_api::uint64[/apitype] *[/td][td]Returns the current number of bytes uploaded.[/td][/tr] [tr][td][b]punBytesTotal[/b][/td][td][apitype]steam_api::uint64[/apitype] *[/td][td]Returns the total number of bytes that will be uploaded.[/td][/tr] [/table] Gets the progress of an item update. …
[subsection=global_stats]Global Stats[/subsection] Stats can be marked as aggregated on the admin page to tell Steam to keep a global total of all users' values for the stat. This can be used to get data on total money in the economy, total kills, favorite weapons, favorite maps, and which team tends to do better. …
When a new value is uploaded, the global value will change no more than the max change value. This limits how quickly a cheater can influence the global totals. To access the global totals, call [api]ISteamUserStats::RequestGlobalStats[/api] and then [api]ISteamUserStats::GetGlobalStat[/api] for each global stat. …
However, the maximum number of Release State Override (beta) keys you can request for this purpose is generally 2,500 total. [u]You should not promise more than 2,500 [b]Release State Override (beta) keys[/b] for your game during your crowdfunding campaign[/u]. …
Release State Override (beta) keys are generally limited to 2,500 total. [list][*]If you’d like to run a larger-scale beta test ahead of your game’s launch, please use the Steam Playtest feature. You can request Steam Keys for your playtest app.…
[/list] Games that do not have these profile customization options do not count towards Game Collector or Achievement Collector totals. Steam automatically enables profile customization features as games reach certain player and sales metrics that give confidence that a reasonable number of customers that are engaged with your game. …
[/b] Our confidence metric is based on sales and player engagement figures. We do not include data from user reviews, wishlists, total playtime, or any other judgment of the "quality" of the game. We're simply looking for a broad player base. [h4]Q. Does this affect my game's visibility on Steam?…
US revenue share is the portion of your payment that was earned on sales made in the US (the portion you will be paid is total less any withholding that is applicable). The US share is relevant to foreign partners where we need to withhold taxes based on information provided during the tax interview. …
The Additional Revenue Share system has no way of knowing which app is more important in this case. If your app has recorded significant revenue since October 1st, 2018 (>$1,000,000 USD) please reach out to the Steam Finance team and we will update the reporting relationship for this package manually. …