# Manage chat room block list (/en/api-reference/api-ref/im/chatroom-management/manage-chatroom-blocklist)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

A chat room blocklist refers to a list of users that can neither see nor receive chat room messages. Chat provides a complete set of blocklist management methods, including adding users to the blocklist and removing them from it, as well as retrieving the members on the blocklist.

This page shows how to manage a chat room blocklist by calling the Chat RESTful APIs. Before calling the following methods, ensure that you understand the call frequency limit described in [Limitations](../limitations).

## Common parameters [#common-parameters]

The following table lists common request and response parameters of the Chat RESTful APIs:

### Request parameters [#request-parameters]

| Parameter     | Type   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                          | Required |
| :------------ | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- |
| `host`        | String | The domain name assigned by the Chat service to access RESTful APIs. For how to get the domain name, see [Get the information of your project](/en/realtime-media/im/get-started/enable#get-the-information-of-the-agora-chat-project).                                                                                                                                                                                                              | Yes      |
| `app_id`      | String | The unique identifier automatically assigned to each project by Agora                                                                                                                                                                                                                                                                                                                                                                                | Yes      |
| `username`    | String | The unique login account of the user. The user ID must be 64 characters or less and cannot be empty. The following character sets are supported:* 26 lowercase English letters (a-z)
* 10 numbers (0-9)
* "\_", "-", "."<CalloutContainer type="info">
  <CalloutDescription>
    Do not use any of the 26 uppercase English letters (A-Z). Ensure that each `username` under the same App ID is unique.
  </CalloutDescription>
</CalloutContainer> | Yes      |
| `chatroom_id` | String | The chat room ID. The unique chat room identifier assigned to each chat room by the Chat. You can get the chat room ID from the response body in [Retrieve the basic information of all chat rooms](manage-chatrooms#retrieving-basic-information-of-all-chat-rooms).                                                                                                                                                                                | Yes      |

### Response parameters [#response-parameters]

| Parameter         | Type   | Description                                                                                          |
| :---------------- | :----- | :--------------------------------------------------------------------------------------------------- |
| `action`          | String | The request method.                                                                                  |
| `organization`    | String | The unique identifier assigned to each company (organization) by the Chat service.                   |
| `application`     | String | A unique internal ID assigned to each app by the Chat service. You can safely ignore this parameter. |
| `applicationName` | String | The unique identifier assigned to each app by the Chat service .                                     |
| `uri`             | String | The request URI.                                                                                     |
| `entities `       | JSON   | The response entity.                                                                                 |
| `data`            | JSON   | The details of the response.                                                                         |
| `timestamp`       | Number | The Unix timestamp (ms) when the user is registered.                                                 |
| `duration`        | Number | The time duration (ms) from sending the HTTP request to receiving the response.                      |
| `chatroomid`      | String | The unique identifier of the chat room.                                                              |

## Authorization [#authorization]

Chat RESTful APIs require Bearer HTTP authentication. Every time an HTTP request is sent, the following `Authorization` field must be filled in the request header:

```html
Authorization: Bearer ${YourAppToken}
```

In order to improve the security of the project, Agora uses a token (dynamic key) to authenticate users before they log in to the chat system. Chat RESTful APIs only support authenticating users using app tokens. For details, see [Authentication using App Token](/en/realtime-media/im/build/secure-access-and-authentication/authentication).

## Retrieving the chat room blocklist [#retrieving-the-chat-room-blocklist]

Retrieves the blocklist of the specified chat room.

For each App Key, the call frequency limit of this method is 100 per second.

### HTTP request [#http-request]

```html
GET https://{host}/app-id/{app_id}/chatrooms/{chatroom_id}/blocks/users
```

#### Path parameter [#path-parameter]

For the parameters and detailed descriptions, see [Common parameters](#param).

#### Request header [#request-header]

| Parameter       | Type   | Required | Description                                                                                                                                                                                      |
| :-------------- | :----- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Content-Type`  | String | Yes      | `application/json`                                                                                                                                                                               |
| `Authorization` | String | Yes      | The authentication token of the user or administrator, in the format of `Bearer ${token}`, where `Bearer` is a fixed character, followed by an English space, and then the obtained token value. |

### HTTP response [#http-response]

#### Response body [#response-body]

If the returned HTTP status code is `200`, the request succeeds, and the `data` field in the response body contains the following parameters.

| Parameter | Type   | Description                                      |
| :-------- | :----- | :----------------------------------------------- |
| `data`    | Array  | The user IDs in the chat group blocklist.        |
| `count`   | Number | The number of users in the chat group blocklist. |

For other fields and descriptions, see [Common parameters](#param).

If the returned HTTP status code is not 200, the request fails. You can refer to [Status code](#code) for possible causes.

### Example [#example]

#### Request example [#request-example]

```bash
curl -X GET -H 'Accept: application/json' -H 'Authorization: Bearer ' 'http://XXXX/app-id/XXXX/chatrooms/XXXX/blocks/users'
```

#### Response example [#response-example]

```json
{
  "action": "get",
  "application": "8be024f0-XXXX-XXXX-b697-5d598d5f8402",
  "uri": "http://XXXX/app-id/XXXX/chatrooms/XXXX/blocks/users",
  "entities": [],
  "data": [
    "user2",
    "user3"
  ],
  "timestamp": 1543466293681,
  "duration": 0,
  "organization": "XXXX",
  "applicationName": "XXXX",
  "count": 2
}
```

## Adding a user to the chat room blocklist [#adding-a-user-to-the-chat-room-blocklist]

Adds the specified user to the chat room blocklist. Once added to the chat room blocklist, users can no longer join the chat room. They can neither send nor receive messages in the chat room.

You cannot add the chat room owner to the chat room blocklist.

For each App Key, the call frequency limit of this method is 100 per second.

### HTTP request [#http-request-1]

```html
POST https://{host}/app-id/{app_id}/chatrooms/{chatroom_id}/blocks/users/{username}
```

#### Path parameter [#path-parameter-1]

For other fields and descriptions, see [Common parameters](#param).

#### Request header [#request-header-1]

| Parameter       | Type   | Required | Description                                                                                                                                                                                      |
| :-------------- | :----- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Content-Type`  | String | Yes      | `application/json`                                                                                                                                                                               |
| `Authorization` | String | Yes      | The authentication token of the user or administrator, in the format of `Bearer ${token}`, where `Bearer` is a fixed character, followed by an English space, and then the obtained token value. |

### HTTP response [#http-response-1]

#### Response body [#response-body-1]

If the returned HTTP status code is `200`, the request succeeds, and the data field in the response body contains the following parameters.

| Parameter | Type    | Description                                                                                  |
| :-------- | :------ | :------------------------------------------------------------------------------------------- |
| `result`  | Boolean | Whether the user is successfully added to the chat room blocklist. `true`: Yes. `false`: No. |
| `user`    | String  | The username added to the chat room blocklist.                                               |

For the parameters and detailed descriptions, see [Common parameters](#param).

If the returned HTTP status code is not `200`, the request fails. You can refer to [Status code](../http-status-codes) for possible causes.

### Example [#example-1]

#### Request example [#request-example-1]

```bash
curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer YWMt7CoyjusbEeixOi3iod4eDAAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnJlhJIwBPGgCqtjiyVnR209iyr8kNbhJhhanNQDdP9CMmpK2G-NIUOQ' 'http://XXXX/app-id/XXXX/chatrooms/XXXX/blocks/users/user1'
```

#### Response example [#response-example-1]

```json
{
  "action": "post",
  "application": "8be024f0-XXXX-XXXX-b697-5d598d5f8402",
  "uri": "http://XXXX/app-id/XXXX/chatrooms/XXXX/blocks/users/user1",
  "entities": [],
  "data": {
    "result": true,
    "action": "add_blocks",
    "user": "user1",
    "chatroomid": "XXXX"
  },
  "timestamp": 1542539577124,
  "duration": 27,
  "organization": "XXXX",
  "applicationName": "XXXX"
}
```

## Adding multiple users to the chat room blocklist [#adding-multiple-users-to-the-chat-room-blocklist]

Adds multiple users to the chat room blocklist. Once added to the chat room blocklist, users can no longer join the chat room. They can neither send nor receive messages in the chat room.

You can add a maximum of 60 users to the chat room blocklist each time. You cannot add the chat room owner to the chat room blocklist.

For each App Key, the call frequency limit of this method is 100 per second.

### HTTP request [#http-request-2]

```html
POST https://{host}/app-id/{app_id}/chatrooms/{chatroom_id}/blocks/users
```

#### Path parameter [#path-parameter-2]

For the parameters and detailed descriptions, see [Common parameters](#param).                                          |

#### Request header [#request-header-2]

| Parameter       | Type   | Required | Description                                                                                                                                                                                      |
| :-------------- | :----- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Content-Type`  | String | Yes      | `application/json`                                                                                                                                                                               |
| `Authorization` | String | Yes      | The authentication token of the user or administrator, in the format of `Bearer ${token}`, where `Bearer` is a fixed character, followed by an English space, and then the obtained token value. |

#### Request body [#request-body]

| Parameter   | Type  | Description                                                                                                                        |
| :---------- | :---- | :--------------------------------------------------------------------------------------------------------------------------------- |
| `usernames` | Array | The array of usernames to be added to the chat room blocklist. You can specify a maximum of 60 usernames, separated by commas (,). |

### HTTP response [#http-response-2]

#### Response body [#response-body-2]

If the returned HTTP status code is `200`, the request succeeds, and the data field in the response body contains the following parameters.

| Parameter | Type    | Description                                                                                    |
| :-------- | :------ | :--------------------------------------------------------------------------------------------- |
| `result`  | Boolean | Whether the users are successfully added to the chat room blocklist. `true`: Yes. `false`: No. |
| `reason`  | String  | The reason why the users fail to be added to the chat room blocklist.                          |
| `user`    | String  | The usernames added to the chat room blocklist.                                                |

For the parameters and detailed descriptions, see [Common parameters](#param).

If the returned HTTP status code is not `200`, the request fails. You can refer to [Status code](../http-status-codes) for possible causes.

### Example [#example-2]

#### Request example [#request-example-2]

```bash
curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer YWMt7CoyjusbEeixOi3iod4eDAAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnJlhJIwBPGgCqtjiyVnR209iyr8kNbhJhhanNQDdP9CMmpK2G-NIUOQ' -d '{  
   "usernames": [  
     "user3","user4"  
   ]  
 }' 'http://XXXX/app-id/XXXX/chatrooms/XXXX/blocks/users'
```

#### Response example [#response-example-2]

```json
{
  "action": "post",
  "application": "8be024f0-XXXX-XXXX-b697-5d598d5f8402",
  "uri": "http://XXXX/app-id/XXXX/chatrooms/XXXX/blocks/users",
  "entities": [],
  "data": [
    {
      "result": false,
      "action": "add_blocks",
      "reason": "user: user3 doesn't exist in chatroom: XXXX",
      "user": "user3",
      "chatroomid": "XXXX"
    },
    {
      "result": true,
      "action": "add_blocks",
      "user": "user4",
      "chatroomid": "XXXX"
    }
  ],
  "timestamp": 1542540095540,
  "duration": 16,
  "organization": "XXXX",
  "applicationName": "XXXX"
}
```

## Removing a user from the chat room blocklist [#removing-a-user-from-the-chat-room-blocklist]

Removes the specified user from the chat room blocklist. To add a user that is in the blocklist back to the chat room, you need to remove that user from the blocklist first.

For each App Key, the call frequency limit of this method is 100 per second.

### HTTP request [#http-request-3]

```html
DELETE https://{host}/app-id/{app_id}/chatrooms/{chatroom_id}/blocks/users/{username}
```

#### Path parameter [#path-parameter-3]

For the parameters and detailed descriptions, see [Common parameters](#param).

#### Request header [#request-header-3]

| Parameter       | Type   | Required | Description                                                                                                                                                                                      |
| :-------------- | :----- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Content-Type`  | String | Yes      | `application/json`                                                                                                                                                                               |
| `Authorization` | String | Yes      | The authentication token of the user or administrator, in the format of `Bearer ${token}`, where `Bearer` is a fixed character, followed by an English space, and then the obtained token value. |

### HTTP response [#http-response-3]

#### Response body [#response-body-3]

If the returned HTTP status code is `200`, the request succeeds, and the data field in the response body contains the following parameters.

| Parameter | Type    | Description                                                                                      |
| :-------- | :------ | :----------------------------------------------------------------------------------------------- |
| `result`  | Boolean | Whether the user is successfully removed from the chat room blocklist. `true`: Yes. `false`: No. |
| `user`    | String  | The username removed from the chat room blocklist.                                               |

For the parameters and detailed descriptions, see [Common parameters](#param).

If the returned HTTP status code is not `200`, the request fails. You can refer to [Status code](../http-status-codes) for possible causes.

### Example [#example-3]

#### Request example [#request-example-3]

```bash
curl -X DELETE -H 'Accept: application/json' -H 'Authorization: Bearer YWMt7CoyjusbEeixOi3iod4eDAAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnJlhJIwBPGgCqtjiyVnR209iyr8kNbhJhhanNQDdP9CMmpK2G-NIUOQ' 'http://XXXX/app-id/XXXX/chatrooms/XXXX/blocks/users/user1'
```

#### Response example [#response-example-3]

```json
{
  "action": "delete",
  "application": "8be024f0-XXXX-XXXX-b697-5d598d5f8402",
  "uri": "http://XXXX/app-id/XXXX/chatrooms/XXXX/blocks/users/user1",
  "entities": [],
  "data": {
    "result": true,
    "action": "remove_blocks",
    "user": "user1",
    "chatroomid": "XXXX"
  },
  "timestamp": 1542540470679,
  "duration": 45,
  "organization": "XXXX",
  "applicationName": "XXXX"
}
```

## Removing multiple users from the chat room blocklist [#removing-multiple-users-from-the-chat-room-blocklist]

Removes the specified users from the chat room blocklist. To add users that are in the blocklist back to the chat room, you need to remove these users from the blocklist first. You can remove a maximum of 60 users from the chat room blocklist each time.

For each App Key, the call frequency limit of this method is 100 per second.

### HTTP request [#http-request-4]

```html
DELETE https://{host}/app-id/{app_id}/chatrooms/{chatroom_id}/blocks/users/{usernames}
```

#### Path parameter [#path-parameter-4]

For the parameters and detailed descriptions, see [Common parameters](#param).

#### Request header [#request-header-4]

| Parameter       | Type   | Required | Description                                                                                                                                                                                      |
| :-------------- | :----- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Content-Type`  | String | Yes      | `application/json`                                                                                                                                                                               |
| `Authorization` | String | Yes      | The authentication token of the user or administrator, in the format of `Bearer ${token}`, where `Bearer` is a fixed character, followed by an English space, and then the obtained token value. |

#### Request body [#request-body-1]

If the returned HTTP status code is `200`, the request succeeds, and the data field in the response body contains the following parameters.

| Parameter  | Type   | Required | Description                                                                                                                   |
| :--------- | :----- | :------- | :---------------------------------------------------------------------------------------------------------------------------- |
| `username` | String | Yes      | The usernames to be removed from the chat room blocklist. You can specify a maximum of 60 usernames, separated by commas (,). |

### HTTP response [#http-response-4]

#### Response body [#response-body-4]

If the returned HTTP status code is `200`, the request succeeds, and the data field in the response body contains the following parameters.

| Parameter | Type    | Description                                                                                        |
| :-------- | :------ | :------------------------------------------------------------------------------------------------- |
| `result`  | Boolean | Whether the users are successfully removed from the chat room blocklist. `true`: Yes. `false`: No. |
| `user`    | String  | The usernames removed from the chat room blocklist.                                                |

For the parameters and detailed descriptions, see [Common parameters](#param).

If the returned HTTP status code is not `200`, the request fails. You can refer to [Status code](../http-status-codes) for possible causes.

### Example [#example-4]

#### Request example [#request-example-4]

```bash
curl -X DELETE -H 'Accept: application/json' -H 'Authorization: Bearer YWMt7CoyjusbEeixOi3iod4eDAAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnJlhJIwBPGgCqtjiyVnR209iyr8kNbhJhhanNQDdP9CMmpK2G-NIUOQ' 'http://XXXX/app-id/XXXX/chatrooms/XXXX/blocks/users/user1%2Cuser2'
```

#### Response example [#response-example-4]

```json
{
  "action": "delete",
  "application": "8be024f0-XXXX-XXXX-b697-5d598d5f8402",
  "uri": "http://XXXX/app-id/XXXX/chatrooms/XXXX/blocks/users/user1%2Cuser2",
  "entities": [],
  "data": [
    {
      "result": true,
      "action": "remove_blocks",
      "user": "user1",
      "chatroomid": "XXXX" 
    },
    {
      "result": true,
      "action": "remove_blocks",
      "user": "user2",
      "chatroomid": "XXXX"
    }
  ],
  "timestamp": 1542541014655,
  "duration": 29,
  "organization": "XXXX",
  "applicationName": "XXXX"
}
```

## Status codes [#status-codes]

For details, see [HTTP Status Code](../http-status-codes).
