Moderation SDK

Report a player

Once the setup is complete, you can report players by using their UAS ID and providing a reason for the report.

Once the player is reported, you can navigate to the Unity Dashboard to review incidents with the attached report information.

If you’re using the Vivox v16.0.0 package or higher, the last 15 minutes of the conversation from the channel that the reporter and the reported were in will be attached to the report.

Below is an example of a report being submitted:

using Unity.Services.Moderation;
using Unity.Services.Moderation.Models;
using Unity.Services.Moderation.Exceptions;

public async void Report(string userId){

// userId should be the UAS id of the reported player
// eg: the currently logged in user id is accessible with
// var MyUserId = AuthenticationService.Instance.PlayerId

 Try {
   await Moderation.Instance.ReportPlayer(
                new Report(userId, new ReportReason(ReportReason.Threat))
   Debug.Log("Report submitted!");
 } catch (ModerationServiceException e){
     if (e.Reason == ModerationServiceExceptionReason.SelfReportError) {
       Debug.Log(“Error: you can’t report yourself”);
     } else {
       Debug.Log($“Error: {e.Reason}”);

Report reason

Reasons are defined by Unity and are available as an array to display in your game:

using Unity.Services.Moderation.Models;

public ListReasons(){

foreach (var reason in ReportReason.PossibleReasons)


The constants for each reason can be found in Moderation > Runtime > Models > ReportReasons.cs.

public const string AimSnapping= "aim snapping";
public const string Boosting= "boosting";
public const string Exploiting= "exploiting";
public const string Hacking= "hacking";
public const string Smurfing= "smurfing";
public const string UnrealisticMovement= "unrealistic movement";
public const string CollusionWithOpponent= "collusion with opponent";
public const string LeftMatch= "left the match";
public const string Inactive= "inactive";
public const string Sabotage= "sabotage";
public const string Spamming= "spamming";
public const string HateSpeech= "hate speech";
public const string PredatoryBehavior= "predatory behavior";
public const string NoiseDisruption= "noise disruption";
public const string Scamming= "scamming";
public const string Ads= "ads";
public const string Threat= "threat";
public const string VerbalAbuse= "verbal abuse";
public const string InappropriatePlayerName= "player name";


Actions are applied through the Dashboard when reviewing incidents.

When an action is applied, and the actioned user logs in, you will receive various error messages from the different UGS packages integrated with the Moderation services. Errors will follow the access control convention described in Error responses. This is the expected behavior.

Some SDKs will provide a mechanism to wrap those errors into exceptions of their own, for example, the Vivox SDK will emit a MintException when a policy is preventing a user from accessing communications.

Below is the supported sanctions error list:

Package nameExceptionUse case a player is Banned, you will receive this exception with an ACCOUNT_DISABLED message in its innerException. the player is prevented from accessing communications channels, this exception will be thrown with a 403 status code.