# Linking an Experience

To fully utilize **Sentinel**’s moderation tools, you’ll need to link your Roblox experiences to your Workspace. This enables seamless moderation across your games and Discord server. Follow these steps to link a game and bind the necessary API key.

## Step 1: Link Your Roblox Experience

To begin linking a game (place) to your **Workspace**, use the following command in your Discord server where the bot is active:

```
/addplace {placeid} {placename}
```

* Replace `placeid` with your game's Place ID (Not the universe or experience Id, the id you see on the games page as a player).
* Replace `placename` with the name of your game.

### For example:

```
/addplace 1234567890 Pet Simulator X
```

This command adds your Roblox game under your Workspace for global moderation and analytics.

## Step 2: Create and Bind an Open Cloud API Key

Next, you need to create a **Roblox Open Cloud API (OCAPI)** key for the group or Roblox profile that owns the game. This key is required to enable communication between Sentinel and your game for features like publishing messages.

{% hint style="warning" %}
API key has to be under the Group that owns the game; if a group does not own the experience then the owner of the game must make the key!
{% endhint %}

1. Log in to your **Roblox** account and create an **Open Cloud API** key.
2. Ensure that the key has the following permissions:
   * **messaging-service: publish**
   * **user-restrictions: write & read**
3. Set the **accepted IP addresses** field to:

   ```
   0.0.0.0/0
   ```
4. Set the Expiration date as: **No Expiration**

Once you’ve created the key, bind it to your experience by running the following command in Discord:

```
/bindapikey {placeid} {key}
```

* Replace `{placeid}` with the ID of the place you are binding the API key to.
* Replace `{key}` with the API key you generated.

Additionally you can set the Global API Key (we call it the G-API Key or GAK) using the same key.

```
/bindgapikey {key}
```

{% hint style="warning" %}
The **Global API Key** is **not** used for managing bans. Instead, it is specifically designated for:

* **Ranking API** (Scope: `groups:write`) – This key is used to modify group ranks and requires the appropriate permissions.

To manage bans, you must assign a separate **API Key per experience**. This per-experience API Key must include the `user-restrictions` scope, allowing the bot to utilize **Roblox's BanAsync API** for handling bans effectively. Experiences can share the same API key if they are owned by the same API key owner.
{% endhint %}

### For example:

```
/bindapikey 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ
```

## Step 3: Key Security and Storage

{% hint style="danger" %}
Rest assured, your API key is stored securely within **Sentinel**. We use **AES-256 encryption** (**Military Grade**) to protect your key, meaning **no one can access it** without the proper decryption key. Not even **Sentinel** employees have access to production secrets—only **Metatable**, the CEO, holds the necessary credentials to decrypt the sensitive information. This ensures that your key is safe from abuse or protentional leaks.
{% endhint %}

## That’s It!

Once the key is bound, your experience will be fully linked to your **Workspace**, allowing you to leverage Sentinel’s advanced moderation tools. Enjoy seamless integration and powerful control over your Roblox and Discord communities.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sentineldocs.metatable.dev/getting-started/getting-started-with-sentinel/linking-an-experience.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
