Every request returns readonly DTOs — immutable objects with typed, public properties.
Timestamps are always DateTimeImmutable. A nullable property (?) means Steam omitted
the field, never that decoding failed; where an absent field would be ambiguous the SDK
raises a domain exception instead.
AppNews
Section titled “AppNews”Returned by GetNewsForAppRequest.
| Property | Type | Notes |
|---|---|---|
appId |
int |
The app ID you asked for. |
items |
list<NewsItem> |
The page, newest first, capped by count. |
total |
int |
Items matching the filters up to endDate, ignoring count. |
Each NewsItem carries:
| Property | Type | Notes |
|---|---|---|
id |
string |
Steam’s gid, unique per item. |
title |
string |
Headline. |
url |
string |
Link to the post. |
isExternalUrl |
bool |
Steam’s own flag; false for posts hosted on the Steam store. |
author |
?string |
Byline; null when the feed names none. |
contents |
string |
Body in the feed’s own markup, BBCode or HTML, or a flattened excerpt with maxLength. |
feedLabel |
string |
Display name of the feed, such as Community Announcements. |
feedName |
string |
The name feeds filters on, such as tf2_blog. |
isCommunityAnnouncement |
bool |
Whether the post is an announcement from the game’s Steam community hub. |
publishedAt |
DateTimeImmutable |
Publication time. |
appId |
int |
The app the post belongs to: the base game for a DLC, or another app sharing the feed. |
tags |
list<string> |
Tags on the post, such as patchnotes; empty when it has none. |
AppVersionCheck
Section titled “AppVersionCheck”Returned by UpToDateCheckRequest.
| Property | Type | Notes |
|---|---|---|
isUpToDate |
bool |
Whether the version is at least the one Steam requires. |
isListable |
bool |
Steam’s version_is_listable, reported separately but so far always equal to isUpToDate. |
requiredVersion |
?int |
The version Steam requires; null when up to date. |
message |
?string |
The game’s own notice for an outdated server, free text; null when up to date. |
CommunityBadgeQuest
Section titled “CommunityBadgeQuest”Returned by GetCommunityBadgeProgressRequest.
| Property | Type | Notes |
|---|---|---|
questId |
int |
Steam’s quest ID; no public schema maps it to a name. |
completed |
bool |
Whether the account finished this quest. |
Friend
Section titled “Friend”Returned by GetFriendListRequest.
| Property | Type | Notes |
|---|---|---|
steamId |
SteamId |
The friend’s 64-bit ID. |
relationship |
FriendRelationship |
Relationship to the queried user. |
friendSince |
DateTimeImmutable |
When the friendship was formed. |
GameSchema
Section titled “GameSchema”Returned by GetSchemaForGameRequest.
| Property | Type | Notes |
|---|---|---|
gameName |
?string |
Game title. Null when Steam sends it blank or leaves it out. |
gameVersion |
?string |
Steam’s own version counter for the schema. |
stats |
list<SchemaStat> |
Every stat the game publishes. |
achievements |
list<SchemaAchievement> |
Every achievement the game publishes. |
Each SchemaAchievement carries:
| Property | Type | Notes |
|---|---|---|
apiName |
string |
Stable API identifier, same one PlayerAchievement carries. |
name |
string |
Display name, localised by language. |
description |
?string |
Localised description. Steam omits it on some achievements, hidden ones especially. |
hidden |
bool |
Steam keeps the achievement secret until it is unlocked. |
icon |
string |
Icon shown once unlocked. |
iconGray |
string |
Icon shown while locked. |
SchemaStat has apiName (string), name (?string, null for the many stats Steam
ships unlabelled) and defaultValue (int|float).
GameServer
Section titled “GameServer”Returned by GetServersAtAddressRequest.
| Property | Type | Notes |
|---|---|---|
address |
string |
IP and query port, as ip:queryport. |
steamId |
SteamId |
The game server’s own 64-bit ID, not a player’s. |
appId |
int |
The game the server runs. |
gameDir |
string |
The game’s mod directory, such as tf or rust. |
region |
ServerRegion |
Where the server lists itself. |
isSecure |
bool |
Whether the server is VAC-secured. |
isLan |
bool |
Whether the server is LAN-only. |
gamePort |
int |
Port players connect to, which can differ from the query port. |
spectatorPort |
?int |
SourceTV port; null when Steam reports 0, as it does with SourceTV off. |
GlobalAchievement
Section titled “GlobalAchievement”Returned by GetGlobalAchievementPercentagesForAppRequest.
| Property | Type | Notes |
|---|---|---|
apiName |
string |
Stable API identifier, same one PlayerAchievement carries. |
percent |
float |
Share of owners who unlocked it. Steam sends it as a string. |
OwnedGame
Section titled “OwnedGame”Returned by GetOwnedGamesRequest.
| Property | Type | Notes |
|---|---|---|
appId |
int |
Steam app ID. |
playtimeForever |
int |
Total playtime, in minutes. |
playtimeTwoWeeks |
?int |
Playtime in the last two weeks, in minutes. |
name |
?string |
Game title (only with includeAppInfo). |
imgIconUrl |
?string |
Icon hash (only with includeAppInfo). |
hasCommunityVisibleStats |
bool |
Game exposes community stats. |
PlayerAchievements
Section titled “PlayerAchievements”Returned by GetPlayerAchievementsRequest.
| Property | Type | Notes |
|---|---|---|
steamId |
SteamId |
The player’s 64-bit ID. |
gameName |
string |
Game title. |
achievements |
list<PlayerAchievement> |
Per-achievement state. |
Each PlayerAchievement carries:
| Property | Type | Notes |
|---|---|---|
apiName |
string |
Stable API identifier. |
achieved |
bool |
Whether it is unlocked. |
unlockedAt |
?DateTimeImmutable |
Unlock time, null if locked. |
name |
?string |
Display name (needs language). |
description |
?string |
Description (needs language). |
PlayerBadges
Section titled “PlayerBadges”Returned by GetBadgesRequest.
| Property | Type | Notes |
|---|---|---|
badges |
list<Badge> |
Every badge the account has earned. |
playerXp |
int |
Total experience on the account. |
playerLevel |
int |
Steam community level. |
xpNeededToLevelUp |
int |
Experience still missing for the next level. |
xpNeededForCurrentLevel |
int |
Experience the current level started at. |
Each Badge carries:
| Property | Type | Notes |
|---|---|---|
badgeId |
int |
Steam’s badge ID, unique only together with appId. |
appId |
?int |
App the badge belongs to, null outside trading cards. |
level |
int |
Badge level. |
completedAt |
DateTimeImmutable |
When the badge was earned. |
xp |
int |
Experience the badge contributes to playerXp. |
communityItemId |
?string |
Community item ID, null outside trading cards. |
borderColor |
?int |
Steam’s border code, null outside trading cards. |
scarcity |
int |
How many accounts hold this badge. |
PlayerBan
Section titled “PlayerBan”Returned by GetPlayerBansRequest.
| Property | Type | Notes |
|---|---|---|
steamId |
SteamId |
The player’s 64-bit ID. |
isCommunityBanned |
bool |
Banned from Steam Community. |
isVacBanned |
bool |
Has an active VAC ban. |
numberOfVacBans |
int |
Total VAC bans on record. |
numberOfGameBans |
int |
Total developer-issued game bans. |
daysSinceLastBan |
int |
Days since the most recent ban. |
economyBan |
EconomyBan |
Trade/market ban status. |
PlayerSummary
Section titled “PlayerSummary”Returned by GetPlayerSummariesRequest.
| Property | Type | Notes |
|---|---|---|
steamId |
SteamId |
The player’s 64-bit ID. |
personaName |
string |
Current display name. |
profileUrl |
string |
Public profile URL. |
avatarUrl |
string |
32×32 avatar. |
avatarMediumUrl |
string |
64×64 avatar. |
avatarFullUrl |
string |
184×184 avatar. |
avatarHash |
string |
Avatar content hash. |
communityVisibility |
CommunityVisibility |
Whether the profile is visible to you. |
hasCommunityProfile |
bool |
Player has set up a community profile. |
commentPermission |
CommentPermission |
Who may comment on the profile. |
personaState |
PersonaState |
Online / away / offline, etc. |
realName |
?string |
Real name, if shared. |
primaryClanId |
?string |
Primary group ID, if any. |
timeCreated |
?DateTimeImmutable |
Account creation time, if exposed. |
lastLogOff |
?DateTimeImmutable |
Last logout, if exposed. |
gameId |
?string |
App ID currently being played. |
gameExtraInfo |
?string |
Title of the game being played. |
gameServerIp |
?string |
Game server address, if in-game. |
countryCode |
?string |
ISO country code, if shared. |
stateCode |
?string |
State/region code, if shared. |
cityId |
?int |
Steam city ID, if shared. |
RecentlyPlayedGames
Section titled “RecentlyPlayedGames”Returned by GetRecentlyPlayedGamesRequest.
| Property | Type | Notes |
|---|---|---|
totalCount |
int |
Unique games played in the last two weeks, ignoring count. |
games |
list<RecentlyPlayedGame> |
Per-game playtime, capped by count. |
Each RecentlyPlayedGame carries:
| Property | Type | Notes |
|---|---|---|
appId |
int |
Steam app ID. |
name |
string |
Game title. |
playtimeTwoWeeks |
int |
Playtime in the last two weeks, in minutes. |
playtimeForever |
int |
Total playtime, in minutes. |
imgIconUrl |
string |
Icon hash. |
playtimeWindowsForever |
int |
Total playtime on Windows, in minutes. |
playtimeMacForever |
int |
Total playtime on macOS, in minutes. |
playtimeLinuxForever |
int |
Total playtime on Linux, in minutes. |
playtimeDeckForever |
int |
Total playtime on Steam Deck, in minutes. |
SdrConfig
Section titled “SdrConfig”Returned by GetSdrConfigRequest.
| Property | Type | Notes |
|---|---|---|
revision |
int |
Valve’s revision of the network map, the same for every app ID. |
pointsOfPresence |
array<string, SdrPointOfPresence> |
Keyed by each point of presence’s code. |
Each SdrPointOfPresence carries:
| Property | Type | Notes |
|---|---|---|
code |
string |
Valve’s short code, such as waw or bom2. |
description |
string |
Location, and the hosting provider where it is not Valve. |
latitude |
float |
As Valve sends it. |
longitude |
float |
As Valve sends it. |
aliases |
list<string> |
Other codes that name the same point of presence. |
relays |
list<SdrRelay> |
Empty for a point of presence that only routes. |
SdrRelay has ipv4 (string), and minPort and maxPort (int), the ends of the port
range it answers on.
UserGroup
Section titled “UserGroup”Returned by GetUserGroupListRequest.
| Property | Type | Notes |
|---|---|---|
gid |
string |
Steam group ID. |
UserStats
Section titled “UserStats”Returned by GetUserStatsForGameRequest.
| Property | Type | Notes |
|---|---|---|
steamId |
SteamId |
The player’s 64-bit ID. |
gameName |
string |
Game title. |
stats |
list<UserStat> |
Numeric stats. |
achievements |
list<UserStatAchievement> |
Achievement flags. |
UserStat has name (string) and value (int|float). UserStatAchievement
has name (string) and achieved (bool).
WebApiInterface
Section titled “WebApiInterface”Returned by GetSupportedApiListRequest.
| Property | Type | Notes |
|---|---|---|
name |
string |
As Steam sends it; a game’s own interface carries the app ID, as in IGCVersion_440. |
methods |
list<WebApiMethod> |
Each version of a method is its own entry. |
Each WebApiMethod carries:
| Property | Type | Notes |
|---|---|---|
name |
string |
Method name, such as GetPlayerSummaries. |
version |
int |
The vN in the method’s path. |
httpMethod |
string |
GET or POST, as Steam sends it. |
description |
?string |
null where Steam has none. |
parameters |
list<WebApiParameter> |
Empty for a method that takes none. |
Each WebApiParameter carries:
| Property | Type | Notes |
|---|---|---|
name |
string |
As Steam sends it, array notation such as publishedfileids[0] included. |
type |
string |
Steam’s type name, such as uint64, {enum} or {message}. |
isOptional |
bool |
Whether Steam marks the parameter optional. |
description |
?string |
null where Steam has none, or sends it empty. |
Five of these mirror Steam’s wire values; CommentPermission and EconomyBan do not,
and those are the two worth reading before you match on them.
CommentPermission
Section titled “CommentPermission”Backed by string — Everyone ('everyone'), Nobody ('nobody'), FriendsOnly
('friends_only'). Steam sends commentpermission as an integer and omits it
entirely for the friends-only case, so these backing values are the SDK’s own vocabulary
rather than the wire values. Use fromApiValue() to map from a raw payload.
CommunityVisibility
Section titled “CommunityVisibility”Backed by int — Hidden (1), FriendsOnly (2), Visible (3). Steam’s own
communityvisibilitystate codes; Valve documents only 1 and 3, but 2 comes back for
profiles set to friends only.
EconomyBan
Section titled “EconomyBan”Backed by string — None ('none'), Probation ('probation'), Banned
('banned'), Unknown ('unknown'). Steam documents only none and probation before
trailing off with “and so forth” — banned is observed on live accounts but
undocumented, so the value set is provably open.
FriendRelationship
Section titled “FriendRelationship”Backed by string — All ('all'), Friend ('friend'). The values Steam accepts on
the relationship query parameter.
Language
Section titled “Language”Backed by string, using Steam’s codes for the l query parameter. They are not ISO
codes, so five cases are named for the language and backed by Valve’s spelling of it:
| Case | Value |
|---|---|
ChineseSimplified |
'schinese' |
ChineseTraditional |
'tchinese' |
Korean |
'koreana' |
PortugueseBrazil |
'brazilian' |
SpanishLatinAmerican |
'latam' |
The other twenty-five back onto their own name lowercased: Arabic, Bulgarian, Czech,
Danish, Dutch, English, Finnish, French, German, Greek, Hungarian,
Indonesian, Italian, Japanese, Norwegian, Polish, Portuguese, Romanian,
Russian, Spanish, Swedish, Thai, Turkish, Ukrainian, Vietnamese.
Set one per call, or once on SteamConfig.
PersonaState
Section titled “PersonaState”Backed by int, using Steam’s own personastate codes.
| Case | Value |
|---|---|
Offline |
0 |
Online |
1 |
Busy |
2 |
Away |
3 |
Snooze |
4 |
LookingToTrade |
5 |
LookingToPlay |
6 |
ServerRegion
Section titled “ServerRegion”Backed by int, using Steam’s region codes, which a game server sets with sv_region.
| Case | Value |
|---|---|
World |
-1 |
UsEast |
0 |
UsWest |
1 |
SouthAmerica |
2 |
Europe |
3 |
Asia |
4 |
Australia |
5 |
MiddleEast |
6 |
Africa |
7 |