Steam 创意工坊 Web API:查询、权限与服务端操作
Steam 创意工坊 Web API 让开发者通过 HTTP 查询项目和管理应用相关内容。本页面向游戏后台及运营工具开发者,整理官方接口的请求方式、常用参数和权限,帮助选择公共查询或受保护的发行商操作。
请求格式与密钥边界
Steam Web API 以 https://api.steampowered.com/<接口>/<方法>/v<版本>/ 组织公共接口。使用 TLS,POST 使用 URL 编码的 application/x-www-form-urlencoded 正文,文本使用 UTF-8;数组通常用 count 与带索引的参数表示。每个方法的密钥和访问限制可能不同,公开主机并不意味着所有方法无需认证。
受信任的发行商后台使用 https://partner.steam-api.com;该主机即使访问通常无需密钥的方法也要求发行商密钥。发行商密钥只能保存在安全服务器,不应放入游戏客户端、浏览器脚本或公开日志。公开方法、用户密钥及发行商密钥的要求以各方法说明为准。Web API 概览说明了请求、认证与主机区别。
名称以 Service 结尾的接口支持将参数放在 input_json JSON 数据块中,并对该值进行 URL 编码;key 和 format 仍是独立参数,GET 与 POST 均支持。官方概览也说明服务接口可用常规参数传递,但复杂参数可能需要 JSON。某些方法的 {message} 结构在所提供的官方页面中未展开,集成时应查阅当前接口定义,不能仅凭字段名推测结构。
用游标查询项目
IPublishedFileService/QueryFiles 使用 GET,官方页面列出用户验证密钥、查询类型、创建者与消费应用 ID、标签、搜索词及文件类型等参数。文档对部分字段同时标为必需和可选,实际接入时应以当前接口及响应验证要求。
深度分页优先用 cursor:首次传 *,再从响应读取 next_cursor 作为下一次请求的游标;使用游标后 page 被忽略。page 的官方页面上限为 1000。按需求设置 numperpage、requiredtags、excludedtags、match_all_tags、search_text 和 language;return_tags、return_previews、return_children、return_metadata 等选择返回内容。required_kv_tags 标记为 {message},本页不假定它的内部格式。
Web API 的 query_type 使用 EPublishedFileQueryType,filetype 使用 EPublishedFileInfoMatchingFileType;响应中的 file_type 使用另一套 EWorkshopFileType。不要把 SDK 的 EUGCQuery 或 EUGCMatchingUGCType 数值直接用于 Web API:例如 Web 的 RankedByTotalUniqueSubscriptions 为 9,而 SDK 对应名称的值为 12。详见 Web API 枚举和 SDK 枚举。
ISteamRemoteStorage Web API
| 方法 | HTTP 与权限 | 用途及关键参数 |
|---|---|---|
| GetCollectionDetails | POST,公共主机;页面未列密钥 | 传 collectioncount 和 publishedfileids[0] 等合集 ID,获取合集详情。 |
| GetPublishedFileDetails | POST,公共主机;页面未列密钥 | 传 itemcount 与已发布文件 ID 数组,获取项目详情。 |
| GetUGCFileDetails | GET,用户密钥 | 传 ugcid、appid,可选 steamid 限定所有者。 |
| EnumerateUserSubscribedFiles | POST,发行商密钥 | 根据 steamid、appid 和可选 listtype 获取用户订阅。 |
| SubscribePublishedFile / UnsubscribePublishedFile | POST,发行商密钥 | 传 steamid、appid 和 publishedfileid,分别添加或移除订阅。 |
| SetUGCUsedByGC | POST,发行商密钥 | 传 steamid、ugcid、appid 和 used 标记使用状态。 |
项目管理与发行商服务
IPublishedFileService 是服务接口。以下管理方法需要发行商密钥及安全服务器:
| 方法 | HTTP | 用途及关键参数 |
|---|---|---|
| Delete | GET | 删除 appid 下的 publishedfileid。页面参数表写用户密钥,但正文明确要求发行商密钥;应按较严格要求处理,并在操作前确认目标。 |
| SetDeveloperMetadata | POST | 按 appid 和 publishedfileid 设置 metadata。 |
| UpdateTags | POST | 按项目设置 add_tags 和 remove_tags 数组;未明确移除的既有标签保留。 |
| UpdateBanStatus | POST | 修改项目 banned 状态和仅管理员可见的 reason。 |
| UpdateIncompatibleStatus | POST | 修改项目 incompatible 状态;项目从社区中心及个人资料隐藏,但直接链接仍可访问。 |
| UpdateAppUGCBan | POST | 按 steamid 和 appid 更新用户 UGC 限制;expiration_time=0 表示移除,原因向用户显示。 |
IWorkshopService 同样是服务接口,以下均要求发行商密钥:
| 方法 | HTTP | 用途及关键参数 |
|---|---|---|
| SetItemPaymentRules | POST | 传 appid、gameitemid 和项目及参与者数据设置支付规则;validate_only 可只验证不保存。两个 {message} 的结构需查当前接口定义。 |
| GetFinalizedContributors | GET | 按 appid 和 gameitemid 获取贡献者名单。 |
| GetItemDailyRevenue | GET | 传 appid、item_id、date_start 与 date_end 获取收入;起始时间包含,结束时间不包含。 |
| PopulateItemDescriptions | POST | 传 appid 与 languages 填入描述;languages 为未展开的 {message}。 |
合作伙伴搜索和投票信息
以下接口均为 POST,使用发行商密钥并仅从安全服务器调用。搜索接口的 startidx 从 0 开始,count 为请求数量,标签使用计数及数组参数;可选 hasappadminaccess 表示请求用户是否具备查看私密文件的应用管理员权限。
| 方法 | 用途 |
|---|---|
| RankedByPublicationOrder | 按发布日期搜索,使用 steamid、appid、起始索引、数量及标签。 |
| RankedByTrend | 按趋势搜索;days 的官方范围为 1–7 天。 |
| RankedByVote | 按投票搜索,支持同类分页与标签条件。 |
| ResultSetSummary | 按用户、应用及标签条件获取结果集摘要。 |
| ItemVoteSummary | 按 steamid、appid、count 和项目 ID 数组读取项目投票摘要。 |
| UserVoteSummary | 按 steamid、count 和项目 ID 数组读取用户投票摘要。 |