Home Documentation & Help
Steamworks Documentation
Provides the core foundation to initialize and access the Steamworks API.

All of the types listed here are global defines and not associated with any one specific API.


These are global functions which do not require an interface to set up. You can read more about these functions in the Steamworks API Overview.


S_API bool S_CALLTYPE SteamAPI_Init();
Initializes the Steamworks API.

See Initialization and Shutdown for additional information.

Returns: bool
true indicates that all required interfaces have been acquired and are accessible.
false indicates one of the following conditions:
  • The Steam client isn't running. A running Steam client is required to provide implementations of the various Steamworks interfaces.
  • The Steam client couldn't determine the App ID of game. If you're running your application from the executable or debugger directly then you must have a steam_appid.txt in your game directory next to the executable, with your app ID in it and nothing else. Steam will look for this file in the current working directory. If you are running your executable from a different directory you may need to relocate the steam_appid.txt file.
  • Your application is not running under the same OS user context as the Steam client, such as a different user or administration access level.
  • Ensure that you own a license for the App ID on the currently active Steam account. Your game must show up in your Steam library.
  • Your App ID is not completely set up, i.e. in Release State: Unavailable, or it's missing default packages.

int main() { if ( SteamAPI_RestartAppIfNecessary( k_uAppIdInvalid ) ) // Replace with your App ID { return 1; } if ( !SteamAPI_Init() ) { printf( "Fatal Error - Steam must be running to play this game (SteamAPI_Init() failed).\n" ); return 1; } return 0; }


S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory();
Free's the internal Steamworks API memory associated with the calling thread.

Most Steamworks API functions allocate a small amount of thread-local memory for parameter storage, calling this will manually free such memory. This function is called automatically by SteamAPI_RunCallbacks, so a program that only ever accesses the Steamworks API from a single thread never needs to explicitly call this function.


S_API bool S_CALLTYPE SteamAPI_RestartAppIfNecessary( uint32 unOwnAppID );
unOwnAppIDuint32The App ID of this title.

Checks if your executable was launched through Steam and relaunches it through Steam if it wasn't.

See Initialization and Shutdown for additional information.

Returns: bool
If this returns true then it starts the Steam client if required and launches your game again through it, and you should quit your process as soon as possible. This effectively runs steam://run/<AppId> so it may not relaunch the exact executable that called it, as it will always relaunch from the version installed in your Steam library folder.

If it returns false, then your game was launched by the Steam client and no action needs to be taken. One exception is if a steam_appid.txt file is present then this will return false regardless. This allows you to develop and test without launching your game through the Steam client. Make sure to remove the steam_appid.txt file when uploading the game to your Steam depot!

int main() { if ( SteamAPI_RestartAppIfNecessary( k_uAppIdInvalid ) ) // Replace with your App ID { return 1; } if ( !SteamAPI_Init() ) { printf( "Fatal Error - Steam must be running to play this game (SteamAPI_Init() failed).\n" ); return 1; } return 0; }


S_API void S_CALLTYPE SteamAPI_RunCallbacks();
Dispatches callbacks and call results to all of the registered listeners.

It's best to call this at >10Hz, the more time between calls, the more potential latency between receiving events or results from the Steamworks API. Most games call this once per render-frame. All registered listener functions will be invoked during this call, in the callers thread context.

SteamAPI_RunCallbacks is safe to call from multiple threads simultaneously, but if you choose to do this, callback code could be executed on any thread. One alternative is to call SteamAPI_RunCallbacks from the main thread only, and call SteamAPI_ReleaseCurrentThreadMemory regularly on other threads.


S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg );
pchMsgconst char *The message to attach to the minidump. This must be null terminated.

Attaches an arbitrary comment to embed in the minidump.

Some examples that you may want to include are what level the user was playing, how many players on the server, how much memory is free, etc.
This must be called before calling SteamAPI_WriteMiniDump.
NOTE: Only works on 32bit Windows!


S_API void S_CALLTYPE SteamAPI_Shutdown();
Shuts down the Steamworks API, releases pointers and frees memory.

You should call this during process shutdown if possible.

This will not unhook the Steam Overlay from your game as there's no guarantee that your rendering API is done using it.


S_API void S_CALLTYPE SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID );
uStructuredExceptionCodeuint32The structed exception code.
pvExceptionInfovoid*The EXCEPTION_POINTERS containing the actual exception information.
uBuildIDuint32A Build ID to track what version of the app submitted this minidump. This is not the same as a

Writes and uploads a minidump to report crashes.

See Steam Error Reporting for more information.

You can add an optional comment by calling SteamAPI_SetMiniDumpComment before you call this function.
NOTE: This only supports 32bit Windows.

#ifdef _WIN32 #include <Windows.h> void MiniDumpFunction( unsigned int nExceptionCode, EXCEPTION_POINTERS *pException ) { // You can build and set an arbitrary comment to embed in the minidump here, // maybe you want to put what level the user was playing, how many players on the server, // how much memory is free, etc... SteamAPI_SetMiniDumpComment( "Minidump comment: SteamworksExample.exe/n" ); // The 0 here is a build ID, we don't set it SteamAPI_WriteMiniDump( nExceptionCode, pException, 0 ); } int RealMain( HINSTANCE hInstance, LPSTR lpCmdLine, int nCmdShow ) { __debugbreak(); return 0; } int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // All we do here is call the real main function after setting up our se translator // this allows us to catch exceptions and report errors to Steam. // // Note that you must set your compiler flags correctly to enable structured exception // handling in order for this particular setup method to work. if ( IsDebuggerPresent() ) { // We don't want to mask exceptions (or report them to Steam!) when debugging. // If you would like to step through the exception handler, attach a debugger // after running the game outside of the debugger. return RealMain( lpCmdLine, hInstance, nCmdShow ); } _set_se_translator( MiniDumpFunction ); try // this try block allows the SE translator to work { return RealMain( hInstance, lpCmdLine, nCmdShow ); } catch( ... ) { return -1; } } #endif


These are structs which functions in steam_api may return and/or interact with.


The globally unique identifier for Steam Games.


The globally unique identifier for all Steam accounts, Steam groups, Lobbies and Chat rooms.
See EAccountType and EUniverse.


These are enums which are defined for use with steam_api.


Steam account types. This is used internally in CSteamID.

k_EAccountTypeInvalid0Used for invalid Steam IDs.
k_EAccountTypeIndividual1Regular user account.
k_EAccountTypeMultiseat2Multiseat (e.g. cybercafe) account.
k_EAccountTypeGameServer3Persistent (not anonymous) game server account.
k_EAccountTypeAnonGameServer4Anonymous game server account.
k_EAccountTypeContentServer6Valve internal content server account.
k_EAccountTypeClan7Steam Group (clan).
k_EAccountTypeChat8Steam group chat or lobby.
k_EAccountTypeConsoleUser9Fake Steam ID for local PSN account on PS3 or Live account on 360, etc.
k_EAccountTypeAnonUser10Anonymous user account. (Used to create an account or reset a password)
k_EAccountTypeMax11Max of 16 items in this field


Flags that represent the ownership information of an App ID. (Steam Internal usage only)

k_EAppOwnershipFlags_OwnsLicense0x0001Owns a license for this app.
k_EAppOwnershipFlags_FreeLicense0x0002The user has not paid for the app.
k_EAppOwnershipFlags_RegionRestricted0x0004Owns app, but not allowed to play in current region.
k_EAppOwnershipFlags_LowViolence0x0008Only owns a low violence version.
k_EAppOwnershipFlags_InvalidPlatform0x0010App not supported on current platform.
k_EAppOwnershipFlags_SharedLicense0x0020License was shared by an authorized device via Steam Family Sharing.
k_EAppOwnershipFlags_FreeWeekend0x0040Owned by a free weekend licenses.
k_EAppOwnershipFlags_RetailLicense0x0080Has a retail license for game, (CD-Key etc) (Deprecated)
k_EAppOwnershipFlags_LicenseLocked0x0100Shared license is locked (in use) by other user.
k_EAppOwnershipFlags_LicensePending0x0200Owns app, but transaction is still pending. Can't install or play yet.
k_EAppOwnershipFlags_LicenseExpired0x0400Doesn't own app anymore since license expired.
k_EAppOwnershipFlags_LicensePermanent0x0800Permanent license, not borrowed, or guest or freeweekend etc.
k_EAppOwnershipFlags_LicenseRecurring0x1000Recurring license, user is charged periodically.
k_EAppOwnershipFlags_LicenseCanceled0x2000Mark as canceled, but might be still active if recurring.
k_EAppOwnershipFlags_AutoGrant0x4000Ownership is based on any kind of autogrant license.
k_EAppOwnershipFlags_PendingGift0x8000User has pending gift to redeem.
k_EAppOwnershipFlags_RentalNotActivated0x10000Rental hasn't been activated yet.
k_EAppOwnershipFlags_Rental0x20000Is a rental.
k_EAppOwnershipFlags_SiteLicense0x40000Is from a site license


Release state of an App ID. (Steam Internal usage only)

k_EAppReleaseState_Unknown0Unknown, required appinfo or license info is missing.
k_EAppReleaseState_Unavailable1Even if user 'just' owns it, can see game at all.
k_EAppReleaseState_Prerelease2Can be purchased and is visible in games list, nothing else. Common appInfo section released.
k_EAppReleaseState_PreloadOnly3Owners can preload app, not play it. AppInfo fully released.
k_EAppReleaseState_Released4Owners can download and play app.


App ID type, more info is available on Types of Applications (Steam Internal usage only)

k_EAppType_Invalid0x000Unknown / invalid.
k_EAppType_Game0x001Playable game, default type.
k_EAppType_Application0x002Software application.
k_EAppType_Tool0x004SDKs, editors & dedicated servers.
k_EAppType_Demo0x008Game demo.
k_EAppType_Media_DEPRECATED0x010Legacy - was used for game trailers, which are now just videos on the web.
k_EAppType_DLC0x020Downloadable Content.
k_EAppType_Guide0x040Game guide, PDF etc
k_EAppType_Driver0x080Hardware driver updater (ATI, Razor etc.)
k_EAppType_Config0x100Hidden app used to config Steam features (backpack, sales, etc.)
k_EAppType_Hardware0x200S hardware device (Steam Machine, Steam Controller, Steam Link, etc.)
k_EAppType_Franchise0x400A hub for collections of multiple apps, eg films, series, games.
k_EAppType_Video0x800A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc.)
k_EAppType_Plugin0x1000Plug-in types for other Apps.
k_EAppType_Music0x2000Music files.
k_EAppType_Series0x4000Container app for video series.
k_EAppType_Shortcut0x40000000Just a shortcut, client side only.
k_EAppType_DepotOnly0x80000000Placeholder since depots and apps share the same namespace.


Callback return values for the ValidateAuthTicketResponse_t callback which is posted as a response to ISteamUser::BeginAuthSession and ISteamGameServer::BeginAuthSession.

k_EAuthSessionResponseOK0Steam has verified the user is online, the ticket is valid and ticket has not been reused.
k_EAuthSessionResponseUserNotConnectedToSteam1The user in question is not connected to steam.
k_EAuthSessionResponseNoLicenseOrExpired2The user doesn't have a license for this App ID or the ticket has expired.
k_EAuthSessionResponseVACBanned3The user is VAC banned for this game.
k_EAuthSessionResponseLoggedInElseWhere4The user account has logged in elsewhere and the session containing the game instance has been disconnected.
k_EAuthSessionResponseVACCheckTimedOut5VAC has been unable to perform anti-cheat checks on this user.
k_EAuthSessionResponseAuthTicketCanceled6The ticket has been canceled by the issuer.
k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed7This ticket has already been used, it is not valid.
k_EAuthSessionResponseAuthTicketInvalid8This ticket is not from a user instance currently connected to steam.
k_EAuthSessionResponsePublisherIssuedBan9The user is banned for this game. The ban came via the web api and not VAC.


Results returned from ISteamUser::BeginAuthSession and ISteamGameServer::BeginAuthSession.

k_EBeginAuthSessionResultOK0Ticket is valid for this game and this Steam ID.
k_EBeginAuthSessionResultInvalidTicket1The ticket is invalid.
k_EBeginAuthSessionResultDuplicateRequest2A ticket has already been submitted for this Steam ID.
k_EBeginAuthSessionResultInvalidVersion3Ticket is from an incompatible interface version.
k_EBeginAuthSessionResultGameMismatch4Ticket is not for this game.
k_EBeginAuthSessionResultExpiredTicket5Ticket has expired.


Broadcast upload result from BroadcastUploadStop_t.

k_EBroadcastUploadResultNone0Broadcast state unknown.
k_EBroadcastUploadResultOK1Broadcast was good, no problems.
k_EBroadcastUploadResultInitFailed2Broadcast init failed.
k_EBroadcastUploadResultFrameFailed3Broadcast frame upload failed.
k_EBroadcastUploadResultTimeout4Broadcast upload timed out.
k_EBroadcastUploadResultBandwidthExceeded5Broadcast send too much data.
k_EBroadcastUploadResultLowFPS6Broadcast FPS is too low.
k_EBroadcastUploadResultMissingKeyFrames7Broadcast sending not enough key frames.
k_EBroadcastUploadResultNoConnection8Broadcast client failed to connect to relay.
k_EBroadcastUploadResultRelayFailed9Relay dropped the upload.
k_EBroadcastUploadResultSettingsChanged10The client changed broadcast settings.
k_EBroadcastUploadResultMissingAudio11Client failed to send audio data.
k_EBroadcastUploadResultTooFarBehind12Clients was too slow uploading.
k_EBroadcastUploadResultTranscodeBehind13Server failed to keep up with transcode.


Chat Entry Types.

Returned by ISteamFriends::GetFriendMessage, ISteamFriends::GetClanChatMessage and ISteamMatchmaking::GetLobbyChatEntry.

k_EChatEntryTypeChatMsg1Normal text message from another user.
k_EChatEntryTypeTyping2The other user is typing, not used in multi-user chat.
k_EChatEntryTypeInviteGame3Invite from other user into that users current game.
k_EChatEntryTypeEmote4Text emote message (Deprecated, should be treated as ChatMsg).
k_EChatEntryTypeLeftConversation6A user has left the conversation (closed the chat window).
k_EChatEntryTypeEntered7User has entered the conversation, used in multi-user chat and group chat.
k_EChatEntryTypeWasKicked8User was kicked (Data: Steam ID of the user performing the kick).
k_EChatEntryTypeWasBanned9User was banned (Data: Steam ID of the user performing the ban).
k_EChatEntryTypeDisconnected10User disconnected.
k_EChatEntryTypeHistoricalChat11A chat message from user's chat history or offline message.
k_EChatEntryTypeLinkBlocked14A link was removed by the chat filter.


Chat Room Enter Responses.

k_EChatRoomEnterResponseDoesntExist2Chat doesn't exist (probably closed).
k_EChatRoomEnterResponseNotAllowed3General Denied - You don't have the permissions needed to join the chat.
k_EChatRoomEnterResponseFull4Chat room has reached its maximum size.
k_EChatRoomEnterResponseError5Unexpected Error.
k_EChatRoomEnterResponseBanned6You are banned from this chat room and may not join.
k_EChatRoomEnterResponseLimited7Joining this chat is not allowed because you are a limited user (no value on account).
k_EChatRoomEnterResponseClanDisabled8Attempt to join a clan chat when the clan is locked or disabled.
k_EChatRoomEnterResponseCommunityBan9Attempt to join a chat when the user has a community lock on their account.
k_EChatRoomEnterResponseMemberBlockedYou10Join failed - a user that is in the chat has blocked you from joining.
k_EChatRoomEnterResponseYouBlockedMember11Join failed - you have blocked a user that is already in the chat.


Special flags for Chat accounts - they go in the top 8 bits of the Steam ID's "instance", leaving 12 for the actual instances

k_EChatAccountInstanceMask0x00000FFFTop 8 bits are flags.
k_EChatInstanceFlagClan( k_unSteamAccountInstanceMask + 1 ) >> 1The Steam ID is for a Steam group.
k_EChatInstanceFlagLobby( k_unSteamAccountInstanceMask + 1 ) >> 2The Steam ID is for a Lobby.
k_EChatInstanceFlagMMSLobby( k_unSteamAccountInstanceMask + 1 ) >> 3The Steam ID is for a MMS Lobby.


Result values when a client failed to join or has been kicked from a game server. Obtained from GSClientDeny_t and GSClientKick_t.

k_EDenyInvalidVersion1The client and server are not the same version.
k_EDenyNotLoggedOn3The client is not logged on.
k_EDenyNoLicense4The client does not have a license to play this game.
k_EDenyCheater5The client is VAC banned.
k_EDenyLoggedInElseWhere6The client is logged in elsewhere.
k_EDenySteamConnectionLost11The server lost connection to steam.
k_EDenySteamConnectionError12The server had a general error connecting to Steam.
k_EDenySteamResponseTimedOut13The server timed out connecting to Steam.
k_EDenySteamValidationStalled14The client has not authed with Steam yet.
k_EDenySteamOwnerLeftGuestUser15The owner of the shared game has left, called for each guest of the owner.


Used to describe the type of CGameID.

k_EGameIDTypeApp0The Game ID is a regular steam app.
k_EGameIDTypeGameMod1The Game ID is a mod.
k_EGameIDTypeShortcut2The game ID is a shortcut.
k_EGameIDTypeP2P3The game ID is a P2P file.


Codes for well defined launch options, corresponds to "Launch Type" in the applications Launch Options which can be found on the General Installation Settings page.

There is a special function BIsVRLaunchOptionType, to check a the type is any of the VR launch options.

k_ELaunchOptionType_Default1Runs the app in default mode.
k_ELaunchOptionType_SafeMode2Runs the game in safe mode.
k_ELaunchOptionType_Multiplayer3Runs the game in multiplayer mode.
k_ELaunchOptionType_Config4Runs config tool for this game.
k_ELaunchOptionType_OpenVR5Runs game in VR mode using OpenVR.
k_ELaunchOptionType_Server6Runs dedicated server for this game.
k_ELaunchOptionType_Editor7Runs game editor.
k_ELaunchOptionType_Manual8Shows game manual.
k_ELaunchOptionType_Benchmark9Runs game benchmark.
k_ELaunchOptionType_Option110Generic run option, uses description field for game name.
k_ELaunchOptionType_Option211Generic run option, uses description field for game name.
k_ELaunchOptionType_Option312Generic run option, uses description field for game name.
k_ELaunchOptionType_OculusVR13Runs game in VR mode using the Oculus SDK.
k_ELaunchOptionType_OpenVROverlay14Runs an OpenVR dashboard overlay.
k_ELaunchOptionType_OSVR15Runs game in VR mode using the OSVR SDK.
k_ELaunchOptionType_Dialog1000Show launch options dialog.


Internal Steam marketing message flags that change how a client should handle them.

k_EMarketingMessageFlagsHighPriority1 << 0
k_EMarketingMessageFlagsPlatformWindows1 << 1
k_EMarketingMessageFlagsPlatformMac1 << 2
k_EMarketingMessageFlagsPlatformLinux1 << 3
k_EMarketingMessageFlagsPlatformRestrictions=aggregate flags


Possible positions to have the overlay show notifications in. Used with ISteamUtils::SetOverlayNotificationPosition.

k_EPositionTopLeft0Top left corner.
k_EPositionTopRight1Top right corner.
k_EPositionBottomLeft2Bottom left corner.
k_EPositionBottomRight3Bottom right corner.


Steam error result codes.

These are frequently returned by functions, callbacks, and call results from both the Steamworks API and the Web API. An API may return arbitrary EResult codes, refer to the documentation for that API function or callback to see what it could return and what they mean in the context of that API call.
This is similar to Win32's HRESULT type or POSIXs errno.

k_EResultFail2Generic failure.
k_EResultNoConnection3Your Steam client doesn't have a connection to the back-end.
k_EResultInvalidPassword5Password/ticket is invalid.
k_EResultLoggedInElsewhere6The user is logged in elsewhere.
k_EResultInvalidProtocolVer7Protocol version is incorrect.
k_EResultInvalidParam8A parameter is incorrect.
k_EResultFileNotFound9File was not found.
k_EResultBusy10Called method is busy - action not taken.
k_EResultInvalidState11Called object was in an invalid state.
k_EResultInvalidName12The name was invalid.
k_EResultInvalidEmail13The email was invalid.
k_EResultDuplicateName14The name is not unique.
k_EResultAccessDenied15Access is denied.
k_EResultTimeout16Operation timed out.
k_EResultBanned17The user is VAC2 banned.
k_EResultAccountNotFound18Account not found.
k_EResultInvalidSteamID19The Steam ID was invalid.
k_EResultServiceUnavailable20The requested service is currently unavailable.
k_EResultNotLoggedOn21The user is not logged on.
k_EResultPending22Request is pending, it may be in process or waiting on third party.
k_EResultEncryptionFailure23Encryption or Decryption failed.
k_EResultInsufficientPrivilege24Insufficient privilege.
k_EResultLimitExceeded25Too much of a good thing.
k_EResultRevoked26Access has been revoked (used for revoked guest passes.)
k_EResultExpired27License/Guest pass the user is trying to access is expired.
k_EResultAlreadyRedeemed28Guest pass has already been redeemed by account, cannot be used again.
k_EResultDuplicateRequest29The request is a duplicate and the action has already occurred in the past, ignored this time.
k_EResultAlreadyOwned30All the games in this guest pass redemption request are already owned by the user.
k_EResultIPNotFound31IP address not found.
k_EResultPersistFailed32Failed to write change to the data store.
k_EResultLockingFailed33Failed to acquire access lock for this operation.
k_EResultLogonSessionReplaced34The logon session has been replaced.
k_EResultConnectFailed35Failed to connect.
k_EResultHandshakeFailed36The authentication handshake has failed.
k_EResultIOFailure37There has been a genic IO failure.
k_EResultRemoteDisconnect38The remote server has disconnected.
k_EResultShoppingCartNotFound39Failed to find the shopping cart requested.
k_EResultBlocked40A user blocked the action.
k_EResultIgnored41The target is ignoring sender.
k_EResultNoMatch42Nothing matching the request found.
k_EResultAccountDisabled43The account is disabled.
k_EResultServiceReadOnly44This service is not accepting content changes right now.
k_EResultAccountNotFeatured45Account doesn't have value, so this feature isn't available.
k_EResultAdministratorOK46Allowed to take this action, but only because requester is admin.
k_EResultContentVersion47A Version mismatch in content transmitted within the Steam protocol.
k_EResultTryAnotherCM48The current CM can't service the user making a request, user should try another.
k_EResultPasswordRequiredToKickSession49You are already logged in elsewhere, this cached credential login has failed.
k_EResultAlreadyLoggedInElsewhere50The user is logged in elsewhere. (Use k_EResultLoggedInElsewhere instead!)
k_EResultSuspended51Long running operation has suspended/paused. (eg. content download.)
k_EResultCancelled52Operation has been canceled, typically by user. (eg. a content download.)
k_EResultDataCorruption53Operation canceled because data is ill formed or unrecoverable.
k_EResultDiskFull54Operation canceled - not enough disk space.
k_EResultRemoteCallFailed55The remote or IPC call has failed.
k_EResultPasswordUnset56Password could not be verified as it's unset server side.
k_EResultExternalAccountUnlinked57External account (PSN, Facebook...) is not linked to a Steam account.
k_EResultPSNTicketInvalid58PSN ticket was invalid.
k_EResultExternalAccountAlreadyLinked59External account (PSN, Facebook...) is already linked to some other account, must explicitly request to replace/delete the link first.
k_EResultRemoteFileConflict60The sync cannot resume due to a conflict between the local and remote files.
k_EResultIllegalPassword61The requested new password is not allowed.
k_EResultSameAsPreviousValue62New value is the same as the old one. This is used for secret question and answer.
k_EResultAccountLogonDenied63Account login denied due to 2nd factor authentication failure.
k_EResultCannotUseOldPassword64The requested new password is not legal.
k_EResultInvalidLoginAuthCode65Account login denied due to auth code invalid.
k_EResultAccountLogonDeniedNoMail66Account login denied due to 2nd factor auth failure - and no mail has been sent.
k_EResultHardwareNotCapableOfIPT67The users hardware does not support Intel's Identity Protection Technology (IPT).
k_EResultIPTInitError68Intel's Identity Protection Technology (IPT) has failed to initialize.
k_EResultParentalControlRestricted69Operation failed due to parental control restrictions for current user.
k_EResultFacebookQueryError70Facebook query returned an error.
k_EResultExpiredLoginAuthCode71Account login denied due to an expired auth code.
k_EResultIPLoginRestrictionFailed72The login failed due to an IP resriction.
k_EResultAccountLockedDown73The current users account is currently locked for use. This is likely due to a hijacking and pending ownership verification.
k_EResultAccountLogonDeniedVerifiedEmailRequired74The logon failed because the accounts email is not verified.
k_EResultNoMatchingURL75There is no URL matching the provided values.
k_EResultBadResponse76Bad Response due to a Parse failure, missing field, etc.
k_EResultRequirePasswordReEntry77The user cannot complete the action until they re-enter their password.
k_EResultValueOutOfRange78The value entered is outside the acceptable range.
k_EResultUnexpectedError79Something happened that we didn't expect to ever happen.
k_EResultDisabled80The requested service has been configured to be unavailable.
k_EResultInvalidCEGSubmission81The files submitted to the CEG server are not valid.
k_EResultRestrictedDevice82The device being used is not allowed to perform this action.
k_EResultRegionLocked83The action could not be complete because it is region restricted.
k_EResultRateLimitExceeded84Temporary rate limit exceeded, try again later, different from k_EResultLimitExceeded which may be permanent.
k_EResultAccountLoginDeniedNeedTwoFactor85Need two-factor code to login.
k_EResultItemDeleted86The thing we're trying to access has been deleted.
k_EResultAccountLoginDeniedThrottle87Login attempt failed, try to throttle response to possible attacker.
k_EResultTwoFactorCodeMismatch88Two factor authentication (Steam Guard) code is incorrect.
k_EResultTwoFactorActivationCodeMismatch89The activation code for two-factor authentication (Steam Guard) didn't match.
k_EResultAccountAssociatedToMultiplePartners90The current account has been associated with multiple partners.
k_EResultNotModified91The data has not been modified.
k_EResultNoMobileDevice92The account does not have a mobile device associated with it.
k_EResultTimeNotSynced93The time presented is out of range or tolerance.
k_EResultSmsCodeFailed94SMS code failure - no match, none pending, etc.
k_EResultAccountLimitExceeded95Too many accounts access this resource.
k_EResultAccountActivityLimitExceeded96Too many changes to this account.
k_EResultPhoneActivityLimitExceeded97Too many changes to this phone.
k_EResultRefundToWallet98Cannot refund to payment method, must use wallet.
k_EResultEmailSendFailure99Cannot send an email.
k_EResultNotSettled100Can't perform operation until payment has settled.
k_EResultNeedCaptcha101The user needs to provide a valid captcha.
k_EResultGSLTDenied102A game server login token owned by this token's owner has been banned.
k_EResultGSOwnerDenied103Game server owner is denied for some other reason such as account locked, community ban, vac ban, missing phone, etc.
k_EResultInvalidItemType104The type of thing we were requested to act on is invalid.
k_EResultIPBanned105The IP address has been banned from taking this action.
k_EResultGSLTExpired106This Game Server Login Token (GSLT) has expired from disuse; it can be reset for use.
k_EResultInsufficientFunds107user doesn't have enough wallet funds to complete the action
k_EResultTooManyPending108There are too many of this thing pending already


Fields used internally to store user stats.

k_ESteamUserStatTypeINT132-bit int stat.
k_ESteamUserStatTypeFLOAT232-bit float stat.
k_ESteamUserStatTypeAVGRATE3Read as FLOAT, set with count / session length.
k_ESteamUserStatTypeACHIEVEMENTS4Standard user achievement.
k_ESteamUserStatTypeMAX6Total number of user stat types, used for sanity checks.


Steam universes. Each universe is a self-contained Steam instance.

k_EUniversePublic1The standard public universe.
k_EUniverseBeta2Beta universe used inside Valve.
k_EUniverseInternal3Internal universe used inside Valve.
k_EUniverseDev4Dev universe used inside Valve.
k_EUniverseMax5Total number of universes, used for sanity checks.


Result of ISteamUser::UserHasLicenseForApp.

k_EUserHasLicenseResultHasLicense0The user has a license for specified app.
k_EUserHasLicenseResultDoesNotHaveLicense1The user does not have a license for the specified app.
k_EUserHasLicenseResultNoAuth2The user has not been authenticated.


Results for use with the Steam Voice functions.

k_EVoiceResultOK0The call has completed successfully.
k_EVoiceResultNotInitialized1The Steam Voice interface has not been initialized.
k_EVoiceResultNotRecording2Steam Voice is not currently recording.
k_EVoiceResultNoData3There is no voice data available.
k_EVoiceResultBufferTooSmall4The provided buffer is too small to receive the data.
k_EVoiceResultDataCorrupted5The voice data has been corrupted.
k_EVoiceResultRestricted6The user is chat restricted.


Code points for VR HMD vendors and models. Use the special functions BIsOculusHMD and BIsViveHMD to check for a specific brand.

k_eEVRHMDType_None-1Unknown vendor and model.
k_eEVRHMDType_Unknown0Unknown vendor and model.
k_eEVRHMDType_HTC_Dev1Original HTC dev kits.
k_eEVRHMDType_HTC_VivePre2HTC Vive Pre dev kits.
k_eEVRHMDType_HTC_Vive3HTC Vive Consumer Release.
k_eEVRHMDType_HTC_Unknown20Unknown HTC HMD.
k_eEVRHMDType_Oculus_DK121Oculus Rift Development Kit 1.
k_eEVRHMDType_Oculus_DK222Oculus Rift Development Kit 2
k_eEVRHMDType_Oculus_Rift23Oculus Rift Consumer Version 1.
k_eEVRHMDType_Oculus_Unknown40Unknown Oculus HMD.


These are typedefs which are defined for use with steam_api.

NameBase typeDescription
AccountID_tuint32This is used internally in CSteamID to represent a specific user account without caring about what steam universe it's in.
AppId_tuint32Unique identifier for an app. For more information see the Applications documentation.
AssetClassId_tuint64Only used internally in Steam.
BREAKPAD_HANDLEvoid *Used by the internal Steam crash handler interfaces to reference particular installed crash handlers.
BundleId_tuint32Unique identifier for a bundle. (Only used internally in Steam.)
CellID_tuint32Only used internally in Steam.
DepotId_tuint32Unique identifier for a depot.
GID_tuint64Only used internally in Steam.
HAuthTicketuint32Handle to an user authentication ticket. Return type of ISteamUser::GetAuthSessionTicket.
int16shortSteam's version of a 16-bit integer, equivalent to int16_t.
int32intSteam's version of a 32-bit integer, equivalent to int32_t.
int64long longSteam's version of a 64-bit integer, equivalent to int64_t.
int8signed charSteam's version of a 8-bit integer, equivalent to int8_t.
intpint/long longSteam's version of a signed type that can hold a pointer, equivalent to intptr_t. (Only used internally in Steam.)
JobID_tuint64Only used internally in Steam.
lint64long intOnly used internally in Steam.
ManifestId_tuint64Only used internally in Steam.
PackageId_tuint32Only used internally in Steam.
PartnerId_tuint32Only used internally in Steam.
PhysicalItemId_tuint32Only used internally in Steam.
RTime32uint32Steam's version of Unix epoch time. It offers 1 second resolution starting from the epoch, 1970-01-01 00:00:00 +0000 (UTC)
SteamAPICall_tuint64Unique handle to a Steam API call.
If a function returns one of these you must track its status by using the Call Result system.
TxnID_tGID_tOnly used internally in Steam.
uint16unsigned shortSteam's version of a 16-bit unsigned integer, equivalent to uint16_t.
uint32unsigned intSteam's version of a 32-bit unsigned integer, equivalent to uint32_t.
uint64unsigned long longSteam's version of a 64-bit unsigned integer, equivalent to uint64_t.
uint8unsigned charSteam's version of a 8-bit unsigned integer, equivalent to uint8_t.
uintpunsigned int/unsigned long longSteam's version of an unsigned type that can hold a pointer, equivalent to uintptr_t. (Only used internally in Steam.)
ulint64unsigned long intOnly used internally in Steam.


These are constants which are defined for use with steam_api.

k_cchGameExtraInfoMaxint64The maximum size (in UTF-8 bytes, including the null terminator) of the pchExtraInfo parameter of ISteamUser::TrackAppUsageEvent.
k_cubSaltSizeint8Only used internally in Steam.
k_GIDNilGID_t0xffffffffffffffffullOnly used internally in Steam.
k_HAuthTicketInvalidHAuthTicket0An invalid user authentication ticket.
k_JobIDNilJobID_t0xffffffffffffffffullOnly used internally in Steam.
k_steamIDLanModeGSintCSteamID(This Steam ID comes from a user game connection to an sv_lan GS
k_steamIDNilintCSteamID()Generic invalid CSteamID.
k_steamIDNonSteamGSintCSteamID(This Steam ID can come from a user game connection to a GS that isn't using the steam authentication system but still
wants to support the "Join Game" option in the friends list
k_steamIDNotInitYetGSintCSteamID(This Steam ID can come from a user game connection to a GS that has just booted but hasnt yet even initialized
its steam3 component and started logging on.
k_steamIDOutofDateGSintCSteamID(This Steam ID comes from a user game connection to an out of date GS that hasnt implemented the protocol to provide its Steam ID
k_TxnIDNilGID_tk_GIDNilOnly used internally in Steam.
k_TxnIDUnknownGID_t0Only used internally in Steam.
k_uAPICallInvalidSteamAPICall_t0x0An Invalid Steam API Call handle.
k_uAppIdInvalidAppId_t0x0An Invalid App ID.
k_uBundleIdInvalidBundleId_t0Only used internally in Steam.
k_uCellIDInvalidCellID_t0xFFFFFFFFOnly used internally in Steam.
k_uDepotIdInvalidDepotId_t0x0An Invalid Depot ID.
k_ulAssetClassIdInvalidAssetClassId_t0x0Only used internally in Steam.
k_uManifestIdInvalidManifestId_t0Only used internally in Steam.
k_unSteamAccountIDMaskunsigned int0xFFFFFFFFUsed in CSteamID to mask out the AccountID_t.
k_unSteamAccountInstanceMaskunsigned int0x000FFFFFUsed in CSteamID to mask out the account instance.
k_unSteamUserConsoleInstanceunsigned int2Used by CSteamID to identify users logged in from a console.
k_unSteamUserDesktopInstanceunsigned int1Used by CSteamID to identify users logged in from the desktop client.
k_unSteamUserWebInstanceunsigned int4Used by CSteamID to identify users logged in from the web.
k_uPackageIdFreeSubPackageId_t0x0Only used internally in Steam.
k_uPackageIdInvalidPackageId_t0xFFFFFFFFOnly used internally in Steam.
k_uPartnerIdInvalidPartnerId_t0Only used internally in Steam.
k_uPhysicalItemIdInvalidPhysicalItemId_t0x0Only used internally in Steam.
QUERY_PORT_ERRORint0xFFFEWe were unable to get the query port for this server.
Constants used for query ports.
We haven't asked the GS for this query port's actual value yet.