Ensure the app has Workshop enabled in the Steamworks dashboard under the Community > Workshop section, with file size limits and accepted content types configured.
In game code, call ISteamUGC::CreateItem with the app ID and the EWorkshopFileType (typically k_EWorkshopFileTypeCommunity) to get an UGC update handle.
Use the update handle to set item metadata: call SetItemTitle, SetItemDescription, SetItemContent (path to content folder), SetItemPreview (path to preview image), and SetItemVisibility.
Submit the item by calling SubmitItemUpdate with the handle and an optional change note string; this initiates an async upload and returns a SteamAPICall_t handle.
Register a call result for SubmitItemUpdate_t to receive completion status and the published file ID; handle the result to confirm success or surface errors.
Direct the player to the item's Workshop page using the published file ID so they can manage visibility, add tags, or update the item in future sessions.
Known gotchas
Content folders must not exceed the Workshop file size limit set in the dashboard; exceeding it causes the upload to fail with a size error at submission time.
ISteamUGC operations are asynchronous; blocking the main thread waiting for results will cause the Steam overlay and callback system to stall.
Players must accept the Steam Subscriber Agreement before any Workshop upload completes; check the m_bUserNeedsToAcceptWorkshopLegalAgreement flag in the result callback.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp