Channel
This guide describes how to use APIs for creating and deleting channels, modifying channel information, and retrieving channel lists and participants.
Overview
A channel is a conceptual space where chat takes place, and all in-game chats are conducted within channels.
This section describes the channel types and channel behavior supported by the API.
Channel types
The channel types that can be created via API are as follows:
| Channel type | Capacity | Max joined channels | Leave channel on disconnect | Primary use |
PUBLIC | 1 – 5,000 | Up to 10 | O | Open chat, events, etc. |
GROUP | 1 – 500 | Up to 10 | X | Guild, team, party chat |
PRIVATE | 1 – 500 | Up to 10 | X | Friends, private group chat |
ONE_ON_ONE | 2 | Up to 200 | X | 1:1 chat |
PUBLIC channels are created for open chat where unspecified users can participate, and only online users can join. GROUP and PRIVATE channels are created for chatting within specific groups such as guilds, friends, and parties. PRIVATE channels are created for chatting among friends or within a private group, and users must enter a password to join.
How channels work
The basic behavior of channels is as follows:
- There are explicit moments of joining and leaving a channel, and the chat server provides consistent handling at each point.
- When a message is sent to a channel, it is delivered to all users in the channel. (However, messages are not delivered to blocked users.)
- Only channel participants can send messages to a channel. (However, notice messages are an exception.)
The behavior based on channel API usage is as follows:
Creating and deleting channels
- You can create a channel using the Create channel or Create 1:1 channel API.
- Cases where a channel is deleted:
- When the Delete channel API is used
- When the channel owner is not
SYSTEM and the channel has no participants, it is periodically deleted.
- If a channel is deleted while there are still participants, a channel deletion event is sent to the participants.
- You can modify channel information using the Update channel API.
- Modifiable fields: channel name, maximum member count, password, and chat history availability
- Even if the maximum member count is changed to 50 while the channel already has 100 participants, the status of existing participants is not affected.
- 1:1 channel (
ONE_ON_ONE) information cannot be modified.
Create channel API
Creates a new channel.
If playerId is included in the request body parameters, the user with that playerId becomes the channel owner and automatically joins the channel. If playerId is not included, the channel owner is set to SYSTEM.
The following channels are periodically deleted:
- Channels where the owner is not
SYSTEM and there are no participants
Request URL
| Server | URL |
| LIVE | https://api-chat.withhive.com/api/v1/games/{gameIndex}/channel |
| SANDBOX | https://sandbox-api-chat.withhive.com/api/v1/games/{gameIndex}/channel |
| HTTP METHOD | POST |
| CONTENT-TYPE | application/json |
Path parameters
| Field | Description | Type | Required |
| gameIndex | Hive game index | integer | Y |
| Field | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
| Content-Type | Request data type (application/json) | string | Y |
Request body
| Field | Description | Type | Required |
| channelId | Channel ID (Uppercase/lowercase letters, numbers, and some special characters (-, ., _, ~, :) allowed, max 100 characters) | string | Y |
| playerId | Player ID of the channel creator | long | N |
| password | Password (required for PRIVATE channels) (Max 50 characters) | string | N |
| channelName | Channel name (Max 50 characters) | string | Y |
| maxMemberCount | Maximum number of channel participants (Min 2 – Max 5,000) | integer | Y |
| type | Channel type (PRIVATE, PUBLIC, GROUP) | string | Y |
| chatHistoryAllowed | Whether message history is available (Default: false) | boolean | N |
Response body
| Field | Description | Type |
| code | Response result code | integer |
| message | Result message | string |
| data | Response data | object |
Response body > data
| Field | Description | Type |
| channelId | Channel ID | string |
| type | Channel type (PRIVATE, PUBLIC, GROUP) | string |
| gameIndex | Hive game index | integer |
| owner | Channel owner | string |
| channelName | Channel name | string |
| maxMemberCount | Maximum number of channel participants | integer |
| chatHistoryAllowed | Whether message history is available | boolean |
| regTime | Channel creation datetime (based on UTC+0, format: yyyy-MM-dd'T'HH:mm:ss.SSSZ) | string |
| regTimeMillis | Channel creation datetime (UnixTimestamp Millisecond) | long |
Request sample
curl --request POST 'https://api-chat.withhive.com/api/v1/games/1/channel' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ysjs' \
--header 'Content-Type: application/json' \
--data'{
"channelId": "open:12345",
"channelName": "Open Chat Room",
"maxMemberCount": 100,
"type": "PUBLIC",
"chatHistoryAllowed": true
}'
Response sample
{
"code": 0,
"message": "Success.",
"data": {
"channelId": "open:12345",
"type": "PUBLIC",
"gameIndex": 1,
"owner": "SYSTEM",
"channelName": "Open Chat Room",
"chatHistoryAllowed": true,
"maxMemberCount": 100,
"regTime": "2025-07-21T08:39:07.542913300Z",
"regTimeMillis": 1753087147542
}
}
Create 1:1 channel API
Creates a 1:1 channel (ONE_ON_ONE) and joins the users corresponding to playerId and otherPlayerId in the request data.
If a previously created 1:1 channel already exists with the same users, the existing channel is joined instead.
Request URL
| Server | URL |
| LIVE | https://api-chat.withhive.com/api/v1/games/{gameIndex}/channels/1on1 |
| SANDBOX | https://sandbox-api-chat.withhive.com/api/v1/games/{gameIndex}/channels/1on1 |
| HTTP METHOD | POST |
| CONTENT-TYPE | application/json |
Path parameters
| Field | Description | Type | Required |
| gameIndex | Hive game index | integer | Y |
| Field | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
| Content-Type | Request data type (application/json) | string | Y |
Request body
| Field | Description | Type | Required |
| channelId | Channel ID (Uppercase/lowercase letters, numbers, and some special characters (-, ., _, ~, :) allowed, max 100 characters) | string | Y |
| channelName | Channel name (max 50 characters) | string | Y |
| playerId | Player ID | long | Y |
| otherPlayerId | Other player's Player ID | long | Y |
| chatHistoryAllowed | Whether message history is available (Default: false) | boolean | N |
Response body
| Field | Description | Type |
| code | Response result code | integer |
| message | Result message | string |
| data | Response data | object |
Response body > data
| Field | Description | Type |
| channelId | Channel ID | string |
| type | Channel type (ONE_ON_ONE) | string |
| gameIndex | Hive game index | integer |
| owner | Channel owner | string |
| channelName | Channel name | string |
| maxMemberCount | Maximum number of channel participants | integer |
| participants | List of participant playerIds | array |
| chatHistoryAllowed | Whether message history is available | boolean |
| regTime | Channel creation datetime (based on UTC+0, format: yyyy-MM-dd'T'HH:mm:ss.SSSZ) | string |
| regTimeMillis | Channel creation datetime (UnixTimestamp Millisecond) | long |
Request sample
curl --request POST 'https://api-chat.withhive.com/api/v1/games/1/channel/1on1' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ysjs' \
--header 'Content-Type: application/json' \
--data'{
"channelId": "1on1:test",
"channelName": "Test 1:1 Channel",
"playerId": 1000,
"otherPlayerId": 2000,
"chatHistoryAllowed": false
}'
Response sample
{
"code": 0,
"message": "Success.",
"data": {
"channelId": "1on1:test",
"type": "ONE_ON_ONE",
"gameIndex": 1,
"owner": "1000",
"channelName": "Test 1:1 Channel",
"chatHistoryAllowed": false,
"maxMemberCount": 2,
"participants": [1000, 2000],
"regTime": "2025-07-18T09:37:36.697035738Z",
"regTimeMillis": 1752831456697
}
}
Update channel API
Updates a created channel.
Only the following channel types can be updated:
Request URL
| Server | URL |
| LIVE | https://api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId} |
| SANDBOX | https://sandbox-api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId} |
| HTTP METHOD | PATCH |
| CONTENT-TYPE | application/json |
Path parameters
| Field | Description | Type | Required |
| gameIndex | Hive game index | integer | Y |
| channelId | Channel ID | string | Y |
| Field | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
| Content-Type | Request data type (application/json) | string | Y |
Request body
| Field | Description | Type | Required |
| channelName | Channel name (Max 50 characters) | string | N |
| password | Password (required for PRIVATE channels) (Max 50 characters) | string | N |
| maxMemberCount | Maximum number of channel participants | integer | N |
| type | Channel type (PRIVATE, PUBLIC, GROUP) | string | N |
| chatHistoryAllowed | Whether message history is available (Default: false) | boolean | N |
Response body
| Field | Description | Type |
| code | Response result code | integer |
| message | Result message | string |
| data | Response data | object |
Request sample
curl --request PATCH 'https://api-chat.withhive.com/api/v1/games/1/channels/testchannel' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ysjs' \
--header 'Content-Type: application/json' \
--data'{
"channelName": "Open Chat Room",
"maxMemberCount": 100,
"type": "PUBLIC",
"chatHistoryAllowed": true
}'
Response sample
{
"code": 0,
"message": "Success."
}
Delete channel API
Deletes a created channel and sends a channel deletion event to the users in that channel.
Request URL
| Server | URL |
| LIVE | https://api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId} |
| SANDBOX | https://sandbox-api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId} |
| HTTP Method | DELETE |
Path parameters
| Field | Description | Type | Required |
| gameIndex | Hive game index | integer | Y |
| channelId | Channel ID to delete | string | Y |
| Field | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Response body
| Field | Description | Type |
| code | Response result code | integer |
| message | Result message | string |
Request sample
curl --request DELETE 'https://api-chat.withhive.com/api/v1/games/1/channels/open:12345' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ysjs'
Response sample
{
"code": 0,
"message": "Success."
}
Get channel list API
Retrieves the list of created channels. The channel types available for retrieval are as follows:
Request URL
| Server | URL |
| LIVE | https://api-chat.withhive.com/api/v1/games/{gameIndex}/channels |
| SANDBOX | https://sandbox-api-chat.withhive.com/api/v1/games/{gameIndex}/channels |
| HTTP METHOD | GET |
Path parameters
| Field | Description | Type | Required |
| gameIndex | Hive game index | integer | Y |
| Field | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Query parameters
| Field | Description | Type | Required |
| type | Channel type (PRIVATE, PUBLIC, GROUP) | string | N |
| channelId | Retrieve channels starting with the specified channel ID | string | N |
| channelName | Retrieve channels containing the specified channel name | string | N |
| sort | Sort criteria (channelId, channelName, regTime) (Default: regTime) | string | N |
| order | Sort order (ASC, DESC) (Default: DESC) | string | N |
| size | Number of channels per page (Min 1 – Max 10, Default: 10) | integer | N |
| page | Page number to retrieve (Starts from 1, Default: 1) | integer | N |
Response body
| Field | Description | Type |
| code | Response result code | integer |
| message | Result message | string |
| data | Response data | object |
Response body > data
| Field | Description | Type |
| content | Channel list | object array |
| page | Page info | object |
Response body > data > content
| Field | Description | Type |
| channelId | Channel ID | string |
| type | Channel type (PRIVATE, PUBLIC, GROUP) | string |
| gameIndex | Hive game index | integer |
| owner | Player ID of the channel owner | string |
| channelName | Channel name | string |
| memberCount | Current number of channel participants | integer |
| maxMemberCount | Maximum number of channel participants | integer |
| chatHistoryAllowed | Whether message history is available | boolean |
| regTime | Channel creation datetime (based on UTC+0, format: yyyy-MM-dd'T'HH:mm:ss.SSSZ) | string |
| regTimeMillis | Channel creation datetime (UnixTimestamp Millisecond) | long |
Response body > data > page
| Field | Description | Type |
| size | Items per page | integer |
| currentPage | Current page number | integer |
| totalElements | Total number of items | integer |
| totalPages | Total number of pages | integer |
Request sample
curl --request GET 'https://api-chat.withhive.com/api/v1/games/1/channels?type=PUBLIC&sort=regTime&order=DESC&size=10&page=1' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ysjs'
Response sample
{
"code": 0,
"message": "Success.",
"data": {
"content": [
{
"channelId": "open:12345",
"type": "PUBLIC",
"gameIndex": 1,
"owner": "1000",
"channelName": "Open Chat Room",
"memberCount": 2,
"maxMemberCount": 50,
"chatHistoryAllowed": true,
"regTime": "2024-12-30T15:01:01.004Z",
"regTimeMillis": 1731306364351
},
/// ... channel info
],
"page": {
"size": 10,
"currentPage": 1,
"totalElements": 100,
"totalPages": 10
}
}
}
Get channel API
Retrieves detailed information of a created channel.
Request URL
| Server | URL |
| LIVE | https://api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId} |
| SANDBOX | https://sandbox-api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId} |
| HTTP METHOD | GET |
Path parameters
| Field | Description | Type | Required |
| gameIndex | Hive game index | integer | Y |
| channelId | Channel ID to retrieve | string | Y |
| Field | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Response body
| Field | Description | Type |
| code | Response result code | integer |
| message | Result message | string |
| data | Response data | object |
Response body > data
| Field | Description | Type |
| info | Channel info | object |
| members | Member list | object array |
Response body > data > info
| Field | Description | Type |
| channelId | Channel ID | string |
| type | Channel type (PRIVATE, PUBLIC, GROUP, ONE_ON_ONE) | string |
| gameIndex | Hive game index | integer |
| owner | Channel owner | string |
| channelName | Channel name | string |
| memberCount | Current number of channel participants | integer |
| maxMemberCount | Maximum number of channel participants | integer |
| chatHistoryAllowed | Whether message history is available | boolean |
| regTime | Channel creation datetime (based on UTC+0, format: yyyy-MM-dd'T'HH:mm:ss.SSSZ) | string |
| regTimeMillis | Channel creation datetime (UnixTimestamp Millisecond) | long |
Response body > data > members
| Field | Description | Type |
| playerId | Player ID | long |
Request sample
curl --request GET 'https://api-chat.withhive.com/api/v1/games/1/channels/open:12345' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ysjs'
Response sample
{
"code": 0,
"message": "Success.",
"data": {
"info": {
"channelId": "open:12345",
"type": "PUBLIC",
"gameIndex": 1,
"owner": "SYSTEM",
"channelName": "Open Chat Room",
"memberCount": 2,
"maxMemberCount": 50,
"chatHistoryAllowed": true,
"regTime": "2024-12-30T15:01:01.004Z",
"regTimeMillis": 1731306364351
},
"members": [
{
"playerId": 1
},
{
"playerId": 2
}
]
}
}
Get channel members API
Retrieves information about users who have joined a channel.
Request URL
| Server | URL |
| LIVE | https://api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId}/members |
| SANDBOX | https://sandbox-api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId}/members |
| HTTP METHOD | GET |
Path parameters
| Field | Description | Type | Required |
| gameIndex | Hive game index | integer | Y |
| channelId | Channel ID to retrieve | string | Y |
| Field | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
Response body
| Field | Description | Type |
| code | Response result code | integer |
| message | Result message | string |
| data | Response data | object |
Response body > data
| Field | Description | Type |
| members | Channel member list | object array |
Response body > data > members
| Field | Description | Type |
| playerId | Player ID | long |
Request sample
curl --request GET 'https://api-chat.withhive.com/api/v1/games/1/channels/open:12345/members' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ysjs'
Response sample
{
"code": 0,
"message": "Success.",
"data": {
"members": [
{
"playerId": 1
},
{
"playerId": 2
}
]
}
}
Enter channel API
Allows a specific user to join a channel.
Request URL
| Server | URL |
| LIVE | https://api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId}/enter |
| SANDBOX | https://sandbox-api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId}/enter |
| HTTP METHOD | POST |
| CONTENT-TYPE | application/json |
Path parameters
| Field | Description | Type | Required |
| gameIndex | Hive game index | integer | Y |
| channelId | Channel ID | string | Y |
| Field | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
| Content-Type | Request data type (application/json) | string | Y |
Request body
| Field | Description | Type | Required |
| playerId | Player ID of the user to enter | long | Y |
| password | Password (required for PRIVATE channels) | string | N |
Response body
| Field | Description | Type |
| code | Response result code | integer |
| message | Result message | string |
Request sample
curl --request POST 'https://api-chat.withhive.com/api/v1/games/1/channels/guild:12345/enter' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ysjs' \
--header 'Content-Type: application/json' \
--data '{
"playerId": 1001,
"password": "guildPass123"
}'
Response sample
{
"code": 0,
"message": "Success."
}
Exit channel API
Removes a user from a channel.
Even if the channel owner leaves, the channel is maintained. However, channels where the owner is not SYSTEM and there are no participants are periodically deleted.
Request URL
| Server | URL |
| LIVE | https://api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId}/exit |
| SANDBOX | https://sandbox-api-chat.withhive.com/api/v1/games/{gameIndex}/channels/{channelId}/exit |
| HTTP METHOD | POST |
| CONTENT-TYPE | application/json |
Path parameters
| Field | Description | Type | Required |
| gameIndex | Hive game index | integer | Y |
| channelId | Channel ID | string | Y |
| Field | Description | Type | Required |
| Authorization | Authentication token for API calls (Bearer) | string | Y |
| Content-Type | Request data type (application/json) | string | Y |
Request body
| Field | Description | Type | Required |
| playerId | Player ID of the user to exit | long | Y |
Response body
| Field | Description | Type |
| code | Response result code | integer |
| message | Result message | string |
Request sample
curl --request POST 'https://sandbox-api-chat.withhive.com/api/v1/games/1/channels/guild:12345/exit' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNzAyNDU4MTkzLCJqdGkiOiIxMzY2NDk4MjcxIn0.VSwvsTE-tS0sL_e9p9gNvHRkMCbsycSO4ObE4J2ysjs' \
--header 'Content-Type: application/json' \
--data '{
"playerId": 1001
}'
Response sample
{
"code": 0,
"message": "Success."
}