# ModerationService

Roblox Engine API class from Roblox Studio 0.744.0.7441077 (version-7aaa6838d36c4448).

- Inherits from, nearest first: [Instance](https://rapi.sleaze.dev/classes/Instance.md), [Object](https://rapi.sleaze.dev/classes/Object.md)
- Tags: Not creatable, Not replicated, Service
- Memory category: Instances
- HTML page: https://rapi.sleaze.dev/classes/ModerationService/
- Roblox documentation: https://create.roblox.com/docs/reference/engine/classes/ModerationService

Server-side service for submitting player captures to content moderation review and receiving the results asynchronously.

## Methods

### BindReviewableContentEventProcessor

```luau
ModerationService:BindReviewableContentEventProcessor(priority: number, callback: (...any) -> ...any): RBXScriptConnection
```

- Tags: Capabilities: Consequences

Registers a server-side processor, ordered by `priority`, that is invoked for each moderation review event on reviewable content.

Parameters:

- `priority`: Determines the order in which this processor is invoked relative to other bound processors.
- `callback`: The function invoked for each reviewable-content event. It receives a table describing the event and should return `true` to acknowledge the event or `false` to leave it for redelivery.

Returns: A connection that can be disconnected to unregister the processor.

### BindViolationProcessor

```luau
ModerationService:BindViolationProcessor(priority: number, callback: (...any) -> ...any): RBXScriptConnection
```

- Tags: Capabilities: Consequences

### CreateReviewableContentAsync

```luau
ModerationService:CreateReviewableContentAsync(config: { [string]: any }): string
```

- Tags: Yields, Capabilities: Consequences

Registers user-generated captures for moderation review and triggers the owning clients to upload them, returning the reviewable-content ID.

Parameters:

- `config`: A table of parameters describing the content to review, including an optional `Id`, an optional `Ref`, and a [`Content`](https://rapi.sleaze.dev/index/types/Content.md) list of image or video items.

Returns: The ID of the created reviewable content.

### CreateReviewableContentKey

```luau
ModerationService:CreateReviewableContentKey(content: Content): string
```

- Tags: Capabilities: Consequences

Returns an opaque key that identifies a screenshot or video capture for use with [`CreateReviewableContentAsync()`](https://rapi.sleaze.dev/classes/ModerationService.md).

Parameters:

- `content`: A [`Content`](https://rapi.sleaze.dev/index/types/Content.md) referring to a screenshot or video capture (a temporary URI from [`CaptureService:CaptureScreenshot()`](https://rapi.sleaze.dev/classes/CaptureService.md), a [`ScreenshotCapture`](https://rapi.sleaze.dev/classes/ScreenshotCapture.md), or a [`VideoCapture`](https://rapi.sleaze.dev/classes/VideoCapture.md)).

Returns: An opaque content key identifying the capture.

### InternalRequestReviewableContentReviewAsync

```luau
ModerationService:InternalRequestReviewableContentReviewAsync(config: { [string]: any })
```

- Tags: Yields, Capabilities: Consequences + InternalTest

### MockViolationCallbackAsync

```luau
ModerationService:MockViolationCallbackAsync(report: { [string]: any })
```

- Tags: Capabilities: Consequences

## Events

### TriggeredCaptureUpload

```luau
ModerationService.TriggeredCaptureUpload: RBXScriptSignal<(config: { [string]: any })>
```

- Tags: Hidden, Roblox engine security, Capabilities: Consequences

## Inherited members

- From [Instance](https://rapi.sleaze.dev/classes/Instance.md): `Archivable`, `archivable`, `Attributes`, `AttributesReplicate`, `AttributesSerialize`, `HistoryId`, `Name`, `Parent`, `PredictionMode`, `PropertyStatusStudio`, `RobloxLocked`, `SerializedOverrides`, `SourceAssetId`, `Tags`, `UniqueId`, `numExpectedDirectChildren`, `DataCost`, `Capabilities`, `DefinesCapabilities`, `IsInSandbox`, `Sandboxed`, `AddTag`, `ClearAllChildren`, `Clone`, `Destroy`, `FindFirstAncestor`, `FindFirstAncestorOfClass`, `FindFirstAncestorWhichIsA`, `FindFirstChild`, `FindFirstChildOfClass`, `FindFirstChildWhichIsA`, `FindFirstDescendant`, `GetActor`, `GetAttribute`, `GetAttributeChangedSignal`, `GetAttributes`, `GetChildren`, `GetDebugId`, `GetDescendants`, `GetFullName`, `GetStyled`, `GetStyledPropertyChangedSignal`, `GetTags`, `HasTag`, `IsAncestorOf`, `IsDescendantOf`, `IsPropertyModified`, `QueryDescendants`, `RemoveTag`, `ResetPropertyToDefault`, `SetAttribute`, `WaitForChild`, `Remove`, `children`, `clone`, `destroy`, `findFirstChild`, `getChildren`, `isDescendantOf`, `remove`, `AncestryChanged`, `AttributeChanged`, `ChildAdded`, `ChildRemoved`, `DescendantAdded`, `DescendantRemoving`, `Destroying`, `StyledPropertiesChanged`, `childAdded`
- From [Object](https://rapi.sleaze.dev/classes/Object.md): `ClassName`, `className`, `GetPropertyChangedSignal`, `IsA`, `isA`, `Changed`
