Workshop Item Data

Like what you're seeing?

Support us as a GitHub Sponsor and get instant access to all our assets, exclusive tools and assets, escalated support and issue tracking and our gratitude. These articles are made possible by our GitHub Sponsors ... become a sponsor today!


using HeathenEngineering.SteamworksIntegration;
public struct WorkshopItemData
A helper tool that allows you to pre-define all of the typical fields of a Steam User Generated Content item (aka a Workshop Item) for quick and easy creation or update. see the method for details.


Used with the User Generated Content interface for 1 line creation of workshop items.

Fields and Attributes

Published File Id

public PublishedFileId_t? publishedFileId
The published file ID is to be updated. This can be null and would be in the case of a create, if you are however updating an item this should be populated with the ID of the file to be updated
Note the ? at the end of the data type, this is a C# feature and indicates that this is a "Nullable" attribute e.g. Nullable<PublishedFileId_t> in this case.

App Id

public AppData appId
The consume and creating app ID of the item.


public string title
The title of the item.


public string description
The description of the item.


public DirectoryInfo content
The folder where the content is located is used when creating and updating an item.


public FileInfo preview
The file to be used as the preview image should be a .jpg or .png file and its size must be smaller than that defined in the app's remote storage settings.


public string metadata
The metadata associated with the file if any.


public string[] tags
The set of tags associated or to be associated with the item.


public ERemoteStoragePublishedFileVisibility visibility
The visibility setting to apply to the file when created or updated.

Is Valid

public bool IsValid => get;
Returns true if all required fields are set and conform to Valve's basic requirements.
  • App ID is set to a valid app
  • title is not null or empty
  • title length is less than the max allowed by Valve (8000)
  • description is not null or empty
  • description length is less than the max allowed by Valve (8000)
  • metadata if populated length is less than the max allowed by Valve (5000)
  • preview is not null and file exists
  • content is not null and folder exists
  • no tag length is greater than 255



public bool Create(Action<WorkshopItemDataCreateStatus> callback = null)
public bool Create(WorkshopItemPreviewFile[] additionalPreviews,
string[] additionalYouTubeIds,
WorkshopItemKeyValueTag[] additionalKeyValueTags,
Action<WorkshopItemDataCreateStatus> callback = null)
Creates a workshop item with the fields defined in the structure, optionally with additional preview images, videos and key value tags.


public bool Update(Action<WorkshopItemDataUpdateStatus> callback = null)
public bool Update(WorkshopItemPreviewFile[] additionalPreviews,
string[] additionalYouTubeIds,
WorkshopItemKeyValueTag[] additionalKeyValueTags,
Action<WorkshopItemDataUpdateStatus> callback = null)
Assuming the publishedFileId is a valid file that the user owns this will update that file


public static void Get(PublishedFileId_t file, Action<WorkshopItem> callback)
Gets the WorkshopItem for the indicated file.

Get Subscribed

public static void GetSubscribed(bool withLongDescription,
bool withMetadata,
bool withKeyValueTags,
bool withAdditionalPreviews,
uint withPlayTimeStatsInDays,
Action<List<WorkshopItem>> callback)
Gets the subscribed items with the additional arguments requested.