Steamworks Documentation
ICheatReportingService Interface
This service allows you to report cheating incidents and ban players from your game using the Game Bans system. It enables two similar workflows for detecting and managing cheating in your game:
  • Gather community reports of cheating and issue bans/suspensions based upon this information.
  • Immediately ban a player with a 2 step process of reporting the cheating and then issuing a ban.

To use this interface you must first opt in to anti-cheat support. When enabling anti-cheat support you may choose a 3rd party to grant access to the ICheatReportingService interface for your application. This can be done from the Anti-Cheat Configuration page in the App Admin panel.

NOTE: This is a Service interface, methods in this interface should be called with the input_json parameter.

For more info on how to use the Steamworks Web API please see the Web API Overview.

ReportPlayerCheating

POST https://partner.steam-api.com/ICheatReportingService/ReportPlayerCheating/v1/
NameTypeRequiredDescription
keystringSteamworks Web API publisher authentication key.
steamiduint64The Steam ID of the user who is being reported for cheating.
appiduint32The App ID for the game.
steamidreporteruint64(Optional) The Steam ID of the user or game server who is reporting the cheating.
appdatauint64(Optional) App specific data about the type of cheating set by developer. (ex 1 = Aimbot, 2 = Wallhack, 3 = Griefing)
heuristicbool(Optional) Extra information about the source of the cheating - was it a heuristic.
detectionbool(Optional) Extra information about the source of the cheating - was it a detection.
playerreportbool(Optional) Extra information about the source of the cheating - was it a player report.
noreportidbool(Optional) Don't return reportid. This should only be passed if you don't intend to issue a ban based on this report.
gamemodeuint32(Optional) Extra information about state of game - was it a specific type of game play or game mode. (0 = generic)
suspicionstarttimeuint32(Optional) Extra information indicating how far back the game thinks is interesting for this user. Unix epoch time (time since Jan 1st, 1970).
severityuint32(Optional) Level of severity of bad action being reported. Scale set by developer.

ReportPlayerCheating is designed to gather community reports of cheating, where one player reports another player within the game.

It is intended for unreliable data from peers in the game ( semi-trusted sources ). The back-end that reports the data should ensure that both parties are authenticated, but the data in itself is treated as hearsay. Optional parameters may be used to encode the type of cheating that is suspected or additional evidence ( an identifier pointing to the match/demo for further review )

NOTE: This call requires a publisher API key to use this method. As such this API MUST be called from a secure server, and can never be used directly by clients!

RequestPlayerGameBan

POST https://partner.steam-api.com/ICheatReportingService/RequestPlayerGameBan/v1/
NameTypeRequiredDescription
keystringSteamworks Web API publisher authentication key.
steamiduint64Steam ID of the user who is reported as cheating.
appiduint32The appid of the game.
reportiduint64The reportid originally used to report cheating.
cheatdescriptionstringText describing cheating infraction.
durationuint32Ban duration requested in seconds. (duration 0 will issue infinite - less than a year is a suspension and not visible on profile)
delaybanboolDelay the ban according to default ban delay rules.
flagsuint32Additional information about the ban request. (Unused)

Requests a game ban on a specific player.

This is designed to be used after the incidents from ReportPlayerCheating have been reviewed and cheating has been confirmed.

NOTE: This call requires a publisher API key to use this method. As such this API MUST be called from a secure server, and can never be used directly by clients!

RemovePlayerGameBan

POST https://partner.steam-api.com/ICheatReportingService/RemovePlayerGameBan/v1/
NameTypeRequiredDescription
keystringSteamworks Web API publisher authentication key.
steamiduint64The Steam ID of the user to remove the game ban on.
appiduint32The App ID of the game.

Remove a game ban on a player.

This is used if a Game ban is determined to be a false positive.

NOTE: This call requires a publisher API key to use this method. As such this API MUST be called from a secure server, and can never be used directly by clients!

GetCheatingReports

GET https://partner.steam-api.com/ICheatReportingService/GetCheatingReports/v1/
NameTypeRequiredDescription
keystringSteamworks Web API publisher authentication key.
appiduint32The App ID for the game.
timeenduint32The end of the time range. Formatted as Unix epoch time (time since Jan 1st, 1970).
timebeginuint32The beginning of the time range. Formatted as Unix epoch time (time since Jan 1st, 1970).
reportidminuint64Minimum reportID to include. (can pass 0 - end of previous report range)
includereportsbool(Optional) Include reports. If false includebans must be true.
includebansbool(Optional) Include ban requests? If false includereports must be true.
steamiduint64(Optional) Query just for this Steam ID.

Get a list of cheating reports submitted for this app.

Used to gather the cheating reports so that they may be reviewed and a determination made.

NOTE: This call requires a publisher API key to use this method. As such this API MUST be called from a secure server, and can never be used directly by clients!

RequestVacStatusForUser

POST https://partner.steam-api.com/ICheatReportingService/RequestVacStatusForUser/v1/
NameTypeRequiredDescription
keystringSteamworks Web API publisher authentication key.
steamiduint64The Steam ID of the user.
appiduint32The App ID of the game the user is playing.
session_iduint64The Session ID that was obtained from the call to StartSecureMultiplayerSession.

Checks a user's VAC ban status and verifies a user's VAC session status. If verification fails, then do not let the user matchmake into a secure game.

This is used before a user enters matchmaking or joins a game. If the player is blocking VAC in some way and VAC can not scan the computer for cheats, it will report success = true and session_verified = false. Checking this webapi will allow you to prevent the user from matchmaking or joining a server and then just getting kicked by VAC a short time later ( with a k_EAuthSessionResponseVACCheckTimedOut result from an authentication callback ). The VAC system may not always have had time to fully determine if the client's system is cooperating, and if so it will report success = false. It is also possible for the player's system to pass the initial check but then fail to respond later, in that case verification will succeed, but a k_EAuthSessionResponseVACCheckTimedOut may follow later.


NOTE: This call requires a publisher API key to use this method. As such this API MUST be called from a secure server, and can never be used directly by clients!

Web API Sessions

NOTE: For games that have integrated Steam Authentication the following API calls should not be used. These games should use the ISteamUser interface P2P or Game Servers setup instead. Access to the following set of calls must be manually enabled by Valve and they are only to be used in games that handle user authentication completely independent of Steam.

StartSecureMultiplayerSession

POST https://partner.steam-api.com/ICheatReportingService/StartSecureMultiplayerSession/v1/
NameTypeRequiredDescription
keystringSteamworks Web API publisher authentication key.
steamiduint64steamid of the user.
appiduint32The App ID of the game.

Tell the VAC servers that a secure multiplayer session has started.

NOTE: This call requires a publisher API key to use this method. As such this API MUST be called from a secure server, and can never be used directly by clients!

EndSecureMultiplayerSession

POST https://partner.steam-api.com/ICheatReportingService/EndSecureMultiplayerSession/v1/
NameTypeRequiredDescription
keystringSteamworks Web API publisher authentication key.
steamiduint64steamid of the user.
appiduint32The App ID of the game.
session_iduint64The Session ID that was obtained from the call to StartSecureMultiplayerSession.

Tell the VAC servers that a secure multiplayer session has ended.

NOTE: This call requires a publisher API key to use this method. As such this API MUST be called from a secure server, and can never be used directly by clients!

Response:
[
{
"name": "success",
"type": "bool",
"description": ""
}
]