Chat
- OpenAPI Version:
3.1.1 - API Version:
2
The Zoom Chat APIs let developers programmatically interact with Zoom Chat features. They enable messaging integration into applications and automate workflows within Zoom Chat.
Servers
- URL:
https://api.zoom.us/v2
Operations
List channel mention groups
- Method:
GET - Path:
/chat/channels/{channelId}/mention_group - Tags: Chat Channel Mention Group
Returns a list of all the mention groups in a channel. The maximum number of mention groups in a channel is 20.
Scopes: chat_channel:read,chat_channel:read:admin
Granular Scopes: team_chat:read:mention_group,team_chat:read:mention_group:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 The mention group base information.
Content-Type: application/json
-
mention_group_list(required)array— The information about the mention groups. The maximum number of mention groups in a channel is **20**.Items:
-
mention_group_id(required)string— The mention group's ID. -
mention_group_name(required)string— The mention group's name. -
mention_group_descriptionstring— The mention group's desciption.
-
Example:
{
"mention_group_list": [
{
"mention_group_id": "a031772aba44466fbc534e4535a70e4e",
"mention_group_name": "Test mention group name",
"mention_group_description": "Test mention group description"
}
]
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to list the mention groups in the channel. <br> **Error Code:** `200` <br> Not allowed on a group chat. <br> **Error Code:** `200` <br> Not allowed on an archived channel. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Create a channel mention group
- Method:
POST - Path:
/chat/channels/{channelId}/mention_group - Tags: Chat Channel Mention Group
Creates a channel mention group. A channel can have a maximum of 20 mention groups. The caller must be an admin or owner of the channel.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:write:mention_group:admin,team_chat:write:mention_group
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
identifiers(required)array— The user ID or member ID of the member you want to add to the mention group. You can add a maximum of 20 users each time. It allows `memberId` or `userId`.Items:
string -
mention_group_name(required)string— The mention group's name. -
mention_group_descriptionstring— The mention group's description.
Example:
{
"mention_group_name": "ChatTeam",
"mention_group_description": "Description",
"identifiers": [
"R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
]
}
Responses
Status: 201 **Status Code**: `201` Mention group created.
Content-Type: application/json
-
mention_group_id(required)string— The created mention group's ID.
Example:
{
"mention_group_id": "a031772aba44466fbc534e4535a70e4e"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter: identifiers. <br> **Error Code:** `200` <br> Duplicate mention group name <br> **Error Code:** `5506` <br> Exceeded the limit of adding mention group. The maximum number of mention group in a channel is 20 <br> **Error Code:** `300` <br> Invalid parameter: mention_group_name. <br> **Error Code:** `5301` <br> Request to create a mention group failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to create the channel mention group. <br> **Error Code:** `200` <br> The user(s) do not have permission to access the channel. {0} <br> **Error Code:** `200` <br> Not allowed on a group chat. <br> **Error Code:** `200` <br> Not allowed on an archived channel. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete a channel mention group
- Method:
DELETE - Path:
/chat/channels/{channelId}/mention_group/{mentionGroupId} - Tags: Chat Channel Mention Group
Removes a mention group in a channel. The caller must be the channel's admin or owner.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:delete:mention_group,team_chat:delete:mention_group:admin
Rate Limit Label: MEDIUM
Responses
Status: 204 **HTTP Status Code:** `204` Channel mention group deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to delete a mention group failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to delete the mention group. <br> **Error Code:** `200` <br> Not allowed on a group chat. <br> **Error Code:** `200` <br> Not allowed on an archived channel. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5508` <br> The mention group doesn't exist. <br> **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Update a channel mention group information
- Method:
PATCH - Path:
/chat/channels/{channelId}/mention_group/{mentionGroupId} - Tags: Chat Channel Mention Group
Updates a mention group's information. The caller must be the channel's admin or owner.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:update:mention_group,team_chat:update:mention_group:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
mention_group_descriptionstring— The mention group's description. If the property is missing, this field will not be updated. If the description is empty string, will remove the previous description. -
mention_group_namestring— The mention group's name. If name value is missing or empty string, this field will not be updated.
Example:
{
"mention_group_name": "ChatTeam",
"mention_group_description": "Description"
}
Responses
Status: 204 **Status Code:** `204`Channel mention group updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Duplicate mention group name. <br> **Error Code:** `5301` <br> Request to update a mention group failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to update the mention group info. <br> **Error Code:** `200` <br> Not allowed on a group chat. <br> **Error Code:** `200` <br> Not allowed on an archived channel. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5508` <br> The mention group doesn't exist. <br> **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List the members of a mention group
- Method:
GET - Path:
/chat/channels/{channelId}/mention_group/{mentionGroupId}/members - Tags: Chat Channel Mention Group
Returns a list of the members in the mention group. The maximum number of members in a mention group is 100.
Scopes: chat_channel:read,chat_channel:write:admin,chat_channel:read:member
Granular Scopes: team_chat:read:mention_group,team_chat:read:mention_group:admin
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:** `200` List of channel mention group members.
Content-Type: application/json
-
has_more(required)boolean— Whether more data exists. -
mention_group_id(required)string— The mention group ID. -
page_size(required)integer— The number of records returned within a single API call. -
membersarray— The members in a mention group. The maximum number of **members** in a mention group is **100**.Items:
-
disaplay_namestring— The member's display name. -
emailstring— The member's email address. If the member does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
first_namestring— The member's first name. If the member does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
is_externalboolean— Whether it is an external member. -
last_namestring— The member's last name. If the member does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
member_idstring— The channel member's member ID. -
user_idstring— The member's user ID. If the member does not belong to the same account as the current, this field will be empty.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.
Example:
{
"mention_group_id": "a031772aba44466fbc534e4535a70e4e",
"members": [
{
"user_id": "6dfgdfgdg444447b0egga",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"email": "[email protected]",
"first_name": "Jill",
"last_name": "Chill",
"disaplay_name": "Jill Chill",
"is_external": true
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 20,
"has_more": false
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to list mention group members failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `300` <br> The next page token is either invalid or has expired. <br> **Error Code:** `200` <br> Not allowed on a group chat. <br> **Error Code:** `200` <br> Not allowed on an archived channel. <br> **Error Code:** `200` <br> No permission to access the channel <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5508` <br> The mention group doesn't exist. <br> **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Add channel members to a mention group
- Method:
POST - Path:
/chat/channels/{channelId}/mention_group/{mentionGroupId}/members - Tags: Chat Channel Mention Group
Adds the channel members to a mention group. The maximum of a mention group members is 100. The caller must be the admin or owner of the channel.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:update:mention_group,team_chat:update:mention_group:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
identifiers(required)array— The user ID or member ID of the member you want to add to the mention group. You can add a maximum of 20 users each time. It allows `memberId` or `userId`.Items:
string
Example:
{
"identifiers": [
"zqmgs2tmspguoqcxyahsya"
]
}
Responses
Status: 201 **HTTP Status Code:** `201` Members added to the mention group.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5511` <br> The member(s) exist in the mention group. {0} <br> **Error Code:** `300` <br> Invalid parameter: identifiers. <br> **Error Code:** `5301` <br> Request to add members to the mention group failed. <br> **Error Code:** `5507` <br> Exceeded the limit of adding member(s) to a mention group. The maximum number of members in mention group is 100. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> The user(s) do not have permission to access the channel. {0} <br> **Error Code:** `200` <br> Not allowed on a group chat. <br> **Error Code:** `200` <br> Not allowed on an archived channel. <br> **Error Code:** `200` <br> No permission to add members to channel mention group. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5508` <br> The mention group doesn't exist. <br> **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Remove channel mention group members
- Method:
DELETE - Path:
/chat/channels/{channelId}/mention_group/{mentionGroupId}/members - Tags: Chat Channel Mention Group
Removes a mention group in channel. The caller must be the channel's admin or owner.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:update:mention_group,team_chat:update:mention_group:admin
Rate Limit Label: LIGHT
Responses
Status: 204 **HTTP Status Code:** `204` Mention group members removed.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5510` <br> The member(s) do not exist in the mention group. {0} <br> **Error Code:** `5301` <br> Request to remove members from the mention group failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Not allowed on a group chat. <br> **Error Code:** `200` <br> Not allowed on an archived channel. <br> **Error Code:** `200` <br> No permission to remove members to channel mention group. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5508` <br> The mention group doesn't exist. <br> **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List channel activity logs
- Method:
GET - Path:
/chat/activities/channels - Tags: Chat Channels
Returns a list of a channel's activity logs. Date range need be less or equal to 3 days.
Scopes: chat_channel:read:admin
Granular Scopes: team_chat:read:list_channel_activity_logs:admin
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:** `200` List of channel activity logs successfully returned.
Content-Type: application/json
-
channel_activity_logs(required)array— The activity logs channel.Items:
-
activity_timestamp(required)integer, format:int64— The timestamp of the activity log date. -
activity_type(required)string, possible values:"membership"— The activity log type. -
channel_id(required)string— The channel's unique identifier. -
operator(required)object— The user who made this activity.-
display_namestring— The user's display name. -
member_idstring— The user's member ID. -
user_idstring— The user's ID. If the user belongs to an external account, `user_id` is set to an empty string.
-
-
membersobject— Includes member join or leave status and member list.-
member_listarray— An array of a channel members activity.Items:
-
display_namestring— The user's display name. -
member_idstring— The user's member ID. -
user_idstring— The user's ID. If the user belongs to an external account, `user_id` will be set to an empty string.
-
-
member_statusstring, possible values:"joined", "left"— The member's joined or left status.
-
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger— The number of records returned within a single API call.
Example:
{
"channel_activity_logs": [
{
"channel_id": "825c9e31f1064c73b394c5e4557d3447",
"activity_type": "membership",
"activity_timestamp": 1581370790388,
"operator": {
"display_name": "John Doe",
"user_id": "37oirnidtk6ije2tsfazbq",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK"
},
"members": {
"member_status": "join",
"member_list": [
{
"display_name": "John Doe",
"user_id": "37oirnidtk6ije2tsfazbq",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK"
}
]
}
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 15
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Channel Id can't be empty or not exist. <br> **Error Code:** `300` <br> Channel activity log date not valid. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access channel activity logs <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5306` <br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Perform operations on channels
- Method:
PATCH - Path:
/chat/channels/events - Tags: Chat Channels
Performs different operations on channels.
Operations include archive and unarchive. It supports batch operations.
Scopes: chat_channel:write:admin,chat_channel:write
Granular Scopes: team_chat:update:archive_channels,team_chat:update:archive_channels:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
channel_ids(required)array— The IDs of channels to be archived or unarchived.Items:
string— The channel's unique identifier. -
method(required)string, possible values:"archive", "unarchive"— The method to perform: * `archive` — Archive the channels. * `unarchive` — Unarchive the channels.
Example:
{
"method": "archive",
"channel_ids": [
"825c9e31f1064c73b394c5e4557d3447"
]
}
Responses
Status: 200 **Status Code**: `200` Perform operations on channels returned.
Content-Type: application/json
-
failed_channelsarray— The failed channels array.Items:
-
channel_idstring— The failed channel ID. -
error_codestring— 200: Unauthorized request. You do not have permission to perform operation on this channel. 3214: Archiving/unarchiving the default channel is not allowed. 3205: This channel has already been archived. 3213: This channel has not been archived. 3215: CMC with recurring meeting can't be archived. 4130: Channel does not exist. -
reasonstring— The specific reason for the error.
-
Example:
{
"failed_channels": [
{
"channel_id": "b8f5e83164ca4e6b8d8abb527c7c35db",
"reason": "No Permission",
"error_code": "The error code number"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter. <br> **Error Code:** `4130` <br> Channel does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get a channel
- Method:
GET - Path:
/chat/channels/{channelId} - Tags: Chat Channels
Returns information about a specific channel.
Zoom chat channels allow users to communicate through chat in private or public groups.
The Get a channel API retrieves the channel information of other account users.
Scopes: chat_channel:read,chat_channel:write,chat_channel:read:admin,chat_channel:write:admin
Granular Scopes: team_chat:read:channel,team_chat:read:channel:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Channel returned.
Content-Type: application/json
-
channel_settingsobject— The settings of the [chat channel](https://support.zoom.us/hc/en-us/articles/200912909-Getting-Started-With-Channels-Group-Messaging-).-
add_member_permissionsinteger, possible values:1, 2— This field indicates who can add new channel members: * `1` - All channel members can add new members. * `2` - Only channel owners and administrators can add new members. **Note:** Only the channel owner can modify this setting. **Note:** This setting is always set to 1 and not editable for channel types 3, 4 and 5. -
allow_to_add_external_usersinteger, possible values:0, 1, 2, 3— Whether external users can be added to the channel: * `0` — External user cannot be added to the channel. * `1` — All chat channel members can add external users to the channel. * `2` — Only members within your organization can add external users to the channel. * `3` - Only channel owners and administrators can add external users to the channel. **Note:** This setting is always set to 1 for channel type 4. -
designated_posting_membersarray— The user IDs or member IDs of the channel's member to whom the posting permission was designated. `posting_permissions` must be `3` to have posting members.Items:
-
member_idstring— The member id of the designated channel member who has posting permission. -
user_idstring— The user ID of the designated channel member who has posting permission. If the member does not belong to the same account as the current, this field will be empty.
-
-
mention_all_permissionsinteger, possible values:1, 2, 3— This field indicates who can use @all: * `1` - Everyone can use @all. * `2` - Only channel owners and administrators can use @all. * `3` - Nobody can use @all. **Note:** Only the channel owner can modify this setting. -
new_members_can_see_previous_messages_filesboolean— Whether new channel members can view messages and files previously posted in the channel. -
posting_permissionsinteger, possible values:1, 2, 3— The channel members' posting permissions: * `1` — All chat channel members can post to the channel. * `2` — Only the channel owner and administrators can post to the channel. * `3` — Only the channel owner, administrators and certain members can post to the channel.
-
-
channel_urlstring— The URL of the Zoom Chat channel. -
idstring— The channel's ID. -
jidstring— The [Jabber ID (JID)](https://en.wikipedia.org/wiki/JID_(Jabber)) to access the account. -
namestring— The channel name. -
typeinteger, possible values:0, 1, 2, 3, 4, 5— The channel's type: * `0` — An unknown channel type. * `1` — A private channel. Members must be invited to join this channel. * `2` — A private channel with members that belong to a Zoom account. All members of this channel are from the same organization and must be invited to join. * `3` — A public channel. Anyone can search for and join this channel. * `4` — An instant channel. This type of channel is created by adding members to a new chat. * `5` — A public channel. Anyone can join this channel and invite members from other Zoom accounts.
Example:
{
"channel_settings": {
"add_member_permissions": 2,
"new_members_can_see_previous_messages_files": true,
"posting_permissions": 3,
"mention_all_permissions": 1,
"allow_to_add_external_users": 2,
"designated_posting_members": [
{
"member_id": "b8b03c9ed5114ed59e4833cc6cb4921b",
"user_id": "xvenagdyr6yonp8fhpky0w"
}
]
},
"id": "cabc1234567defghijkl01234",
"jid": "[email protected]",
"name": "Developers",
"type": 2,
"channel_url": "https://zoom.us/launch/chat/v2/eyJzaWQiOiIyY2RkZjNyNjU3YTY0ODUzOWVhOThkODFhNjRiODE2YkBjb25mZXJlbmNlLnhtcHBkZXYuem9vbS51cyJ1"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to access this user's channel information. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete a channel
- Method:
DELETE - Path:
/chat/channels/{channelId} - Tags: Chat Channels
Deletes a specific channel. Zoom chat channels allow users to communicate via chat in private or public groups.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:delete:channel,team_chat:delete:channel:admin
Rate Limit Label: MEDIUM
Responses
Status: 204 **HTTP Status Code:** `204` Channel deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to delete this user's channel.<br> <br> **Error Code:** `5301` <br> Request to delete a channel failed. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Update a channel
- Method:
PATCH - Path:
/chat/channels/{channelId} - Tags: Chat Channels
Update the name, type, and settings of a specific channel you own or administer.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:update:channel,team_chat:update:channel:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
channel_settingsobject— The settings of the [chat channel](https://support.zoom.us/hc/en-us/articles/200912909-Getting-Started-With-Channels-Group-Messaging-).-
add_member_permissionsinteger, possible values:1, 2— This field indicates who can add new channel members: * `1` - All channel members can add new members. * `2` - Only channel owners and administrators can add new members. **Note:** Only the channel owner can modify this setting. **Note:** This setting is always set to 1 and not editable for channel types 3, 4 and 5. -
designated_posting_membersarray— The user IDs or member IDs of the channel's member to whom the posting permission was designated. You must select `3` for `posting_permissions` in the API request.Items:
One of:
-
user_idstring— The user ID.
-
member_idstring— The member ID.
-
-
mention_all_permissionsinteger, possible values:1, 2, 3— This field indicates who can use @all: * `1` - Everyone can use @all. * `2` - Only channel owners and administrators can use @all. * `3` - Nobody can use @all. **Note:** Only the channel owner can modify this setting. -
new_members_can_see_previous_messages_filesboolean— Whether new channel members can view messages and files previously posted in the channel. -
posting_permissionsinteger, possible values:1, 2, 3— The channel members' posting permissions: * `1` — All chat channel members can post to the channel. * `2` — Only channel owners and administrators can post to the channel. * `3` — Only channel owners, administrators, and certain members can post to the channel.
-
-
namestring— A new name for the channel. -
typeinteger, possible values:1, 2, 3, 5— The type of change channel. For example, a change from public channel 5 to private 1, or a change from public 3 to private 2, vice versa, and so on. The channel's type: * `1` — A private channel. Members must be invited to join this channel. * `2` — A private channel with members that belong to a Zoom account. All members of this channel are from the same organization and must be invited to join. * `3` — A public channel. Anyone can search for and join this channel. * `5` — A public channel. Anyone can join this channel and invite members from other Zoom accounts.
Example:
{
"name": "Developers Channel",
"channel_settings": {
"add_member_permissions": 2,
"new_members_can_see_previous_messages_files": true,
"posting_permissions": 3,
"mention_all_permissions": 1,
"designated_posting_members": [
{
"user_id": "alsjdflasjfasjfas"
}
]
},
"type": 1
}
Responses
Status: 204 **Status Code:** `204` Channel updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The channel name already exists. <br> **Error Code:** `5301` <br> Request to update a channel failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to update a channel for this user.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List channel members
- Method:
GET - Path:
/chat/channels/{channelId}/members - Tags: Chat Channels
Lists all members of a channel.
Scopes: chat_channel:read,chat_channel:write,chat_channel:read:admin,chat_channel:write:admin
Granular Scopes: team_chat:read:list_members,team_chat:read:list_members:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` List of channel members returned.
Content-Type: application/json
-
membersarray— The members in a channel.Items:
-
emailstring, format:email— The member's email address. If the member does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
first_namestring— The member's first name. If the member does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
idstring— The member's user ID. If the member does not belong to the same account as the current, this field will be empty. -
is_externalboolean— Whether it is an external member. -
last_namestring— The member's last name. If the member does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
member_idstring— The channel member's member ID. -
namestring— The user's display name. -
rolestring, possible values:"admin", "owner", "member"— The role of the member. The value can be one of these: `owner`, `admin`, `member`.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger— The number of records returned within a single API call. -
total_recordsinteger— The total number of records returned.
Example:
{
"members": [
{
"email": "[email protected]",
"first_name": "Jill",
"id": "6dfgdfgdg444447b0egga",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"last_name": "Chill",
"name": "Jill Chill",
"role": "admin",
"is_external": true
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 10,
"total_records": 1
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission to access the channel members.<br> <br> **Error Code:** `300` <br> The next page token is either invalid or has expired. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Invite channel members
- Method:
POST - Path:
/chat/channels/{channelId}/members - Tags: Chat Channels
Invites members that are in a user's contact list to a channel.
A channel can have one or multiple members.
Five is the maximum number of members you can add at once with this API.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:write:members,team_chat:write:members:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
membersarray— The channel members. You can invite up to five members with a single API call.Items:
-
email(required)string, format:email— The member's email address.
-
Example:
{
"members": [
{
"email": "[email protected]"
}
]
}
Responses
Status: 201 **HTTP Status Code:** `201` Members invited to the channel.
Content-Type: application/json
-
added_atstring, format:date-time— The date and time when the members are added to the channel. -
idsstring— The comma-separated user IDs of the members added to the channel. User IDs of those who are not from the same account will be omitted from the list. -
member_idsstring— The comma-separated member IDs of the members added to the channel.
Example:
{
"added_at": "2020-02-10T21:39:50Z",
"ids": "D40dy5L7SJiSTayIvRV9Lw,KT6h5SfCSm6YNjZo7i8few",
"member_ids": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ,R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to invite channel members failed.<br> <br> **Error Code:** `200` <br> Unauthorized request. You do not have permission to invite channel members. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Batch remove members from a channel
- Method:
DELETE - Path:
/chat/channels/{channelId}/members - Tags: Chat Channels
Removes multiple members from a chat channel in a batch. A channel can have one or many members.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:delete:batch_members,team_chat:delete:batch_members:admin
Rate Limit Label: MEDIUM
Responses
Status: 204 **HTTP Status Code:** `204` **No Content** Members removed.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission to remove channel members.<br> <br> **Error Code:** `5301` <br> Unable to remove channel member.<br> <br> **Error Code:** `300` <br> You can not remove yourself.<br> <br> **Error Code:** `300` <br> The maximum number of members that can be removed at a time is 20. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List channel members (Groups)
- Method:
GET - Path:
/chat/channels/{channelId}/members/groups - Tags: Chat Channels
Returns a list of channel member groups.
Scopes: chat_channel:read:admin,chat_channel:write:admin
Granular Scopes: team_chat:read:list_groups:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` List of channel member groups returned.
Content-Type: application/json
-
channel_id(required)string— The channel's unique identifier. -
groups(required)array— The member groups in a channel.Items:
-
group_id(required)string— The member group's ID. -
group_name(required)string— The member group's name.
-
Example:
{
"groups": [
{
"group_id": "03dydv46RWKsMzUOdFGdeA",
"group_name": "Your Group"
}
],
"channel_id": "825c9e31f1064c73b394c5e4557d3447"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Channel id should not be empty <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to access the channel member groups. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5306` <br> Channel does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Invite channel members (Groups)
- Method:
POST - Path:
/chat/channels/{channelId}/members/groups - Tags: Chat Channels
Adds members and groups to a channel.
Scopes: chat_channel:write:admin
Granular Scopes: team_chat:write:groups:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
groupsarray— The channel member groups.Items:
-
group_id(required)string— The member group's id.
-
Example:
{
"groups": [
{
"group_id": "03dydv46RWKsMzUOdFGdeA"
}
]
}
Responses
Status: 201 **HTTP Status Code:** `201` Member groups added to the channel.
Content-Type: application/json
-
added_at(required)string— The date and time when the member groups are added to the channel. -
groups(required)array— The member groups added to the channel.Items:
-
group_id(required)string— The member group's ID. -
group_name(required)string— The member group's name.
-
Example:
{
"added_at": "2020-02-10T21:39:50Z",
"groups": [
{
"group_id": "03dydv46RWKsMzUOdFGdeA",
"group_name": "Your Group"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Unable to add member groups to the channel as chat permissions have been disabled. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to add channel member groups. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5306` <br> Channel does not exist. <br> **Error Code:** `4130` <br> Groups do not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Remove a member (group)
- Method:
DELETE - Path:
/chat/channels/{channelId}/members/groups/{groupId} - Tags: Chat Channels
Removes a group from a chat channel.
Scopes: chat_channel:write:admin
Granular Scopes: team_chat:delete:group:admin
Rate Limit Label: MEDIUM
Responses
Status: 204 **HTTP Status Code:** `204` **No Content** member group removed.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Channel id or Group id should not be empty <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to remove channel member groups on this user's behalf.<br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5306` <br> Channel does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Join a channel
- Method:
POST - Path:
/chat/channels/{channelId}/members/me - Tags: Chat Channels
Joins a channel that is open for anyone in the same organization to join. A channel can have one or more members. You cannot use this API to join private channels that only allow invited members to be a part of them.
Note: This API only supports user-managed OAuth-app.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:write:member
Rate Limit Label: MEDIUM
Responses
Status: 201 **HTTP Status Code:** `201` Successfully joined the channel.
Content-Type: application/json
-
added_atstring, format:date-time— The date and time when a user joined the channel. -
idstring— The user ID of the user who joined the public channel. -
member_idstring— The member ID of the user who joined the public channel.
Example:
{
"added_at": "2020-02-10T21:39:50Z",
"id": "v4iyWT1LTfy8QvPG4GTvdg",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> The request to join the channel failed. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Leave a channel
- Method:
DELETE - Path:
/chat/channels/{channelId}/members/me - Tags: Chat Channels
Leaves a specific channel.
If you're no longer interested in being a member of an existing channel, you can leave the channel at any time. After leaving the channel, you can no longer access information from that channel.
Note: This API only supports user-managed OAuth app
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:delete:member,team_chat:delete:member:admin
Rate Limit Label: MEDIUM
Responses
Status: 204 **HTTP Status Code:** `204` Left channel successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to leave the channel failed. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Remove a member
- Method:
DELETE - Path:
/chat/channels/{channelId}/members/{identifier} - Tags: Chat Channels
Removes a member from a chat channel. A channel can have one or many members.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:delete:member,team_chat:delete:member:admin
Rate Limit Label: MEDIUM
Responses
Status: 204 **HTTP Status Code:** `204` **No Content** Member removed.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to remove channel members on this user's behalf.<br> <br> **Error Code:** `5301` <br> Unable to remove channel member. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List user's channels
- Method:
GET - Path:
/chat/users/{userId}/channels - Tags: Chat Channels
Generates a list of user's chat channels. For user-level apps, pass the me value instead of the userId parameter.Zoom chat channels allow users to communicate through chat in private or public groups.
Scopes: chat_channel:read,chat_channel:write,chat_channel:read:admin,chat_channel:write:admin
Granular Scopes: team_chat:read:list_user_channels,team_chat:read:list_user_channels:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **Status Code**: `200` User's channels returned.
Content-Type: application/json
All of:
-
channelsarray— The information about the chat channels.Items:
All of:
-
channel_settingsobject— The settings of the [chat channel](https://support.zoom.us/hc/en-us/articles/200912909-Getting-Started-With-Channels-Group-Messaging-).-
add_member_permissionsinteger, possible values:1, 2— This field indicates who can add new channel members: * `1` - All channel members can add new members. * `2` - Only channel owners and administrators can add new members. **Note:** Only the channel owner can modify this setting. **Note:** This setting is always set to 1 and not editable for channel types 3, 4 and 5. -
allow_to_add_external_usersinteger, possible values:0, 1, 2, 3— Whether external users can be added to the channel: * `0` — External user cannot be added to the channel. * `1` — All chat channel members can add external users to the channel. * `2` — Only members within your organization can add external users to the channel. * `3` - Only channel owners and administrators can add external users to the channel. **Note:** This setting is always set to 1 for channel type 4. -
mention_all_permissionsinteger, possible values:1, 2, 3— This field indicates who can use @all: * `1` - Everyone can use @all. * `2` - Only channel owners and administrators can use @all. * `3` - Nobody can use @all. **Note:** Only the channel owner can modify this setting. -
new_members_can_see_previous_messages_filesboolean— Whether new channel members can view messages and files previously posted in the channel. -
posting_permissionsinteger, possible values:1, 2, 3— The channel members' posting permissions: * `1` — All chat channel members can post to the channel. * `2` — Only channel owners and administrators can post to the channel. * `3` — Only the channel owner, administrators, and certain members can post to the channel.
-
-
channel_urlstring— The URL of the Zoom Chat channel. -
idstring— The channel's ID. -
jidstring— The [Jabber ID (JID)](https://en.wikipedia.org/wiki/JID_(Jabber)) to access the account. -
namestring— The channel name. -
typeinteger, possible values:0, 1, 2, 3, 4, 5— The channel's type: * `0` — An unknown channel type. * `1` — A private channel. Members must be invited to join this channel. * `2` — A private channel with members that belong to a Zoom account. All members of this channel are from the same organization and must be invited to join. * `3` — A public channel. Anyone can search for and join this channel. * `4` — An instant channel. Adding members to a new chat creates this type of channel. * `5` — A public channel. Anyone can join this channel and invite members from other Zoom accounts.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token is returned when the available results exceed the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger— The number of records returned per page in a single API call. -
total_recordsinteger— The total number of records found.
Example:
{
"channels": [
{
"channel_settings": {
"add_member_permissions": 2,
"new_members_can_see_previous_messages_files": true,
"posting_permissions": 3,
"mention_all_permissions": 1,
"allow_to_add_external_users": 2
},
"id": "cabc1234567defghijkl01234",
"jid": "[email protected]",
"name": "Developers",
"type": 2,
"channel_url": "https://zoom.us/launch/chat/v2/eyJzaWQiOiIyY2RkZjNyNjU3YTY0ODUzOWVhOThkODFhNjRiODE2YkBjb25mZXJlbmNlLnhtcHBkZXYuem9vbS51cyJ1"
}
],
"next_page_token": "qUEQqB1V0HVhJmwKFQrGOD",
"page_size": 10,
"total_records": 2
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is either invalid or has expired. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Create a channel
- Method:
POST - Path:
/chat/users/{userId}/channels - Tags: Chat Channels
Creates a channel for a user.
For user-level apps, pass the me value instead of the userId parameter. Zoom chat channels allow users to communicate through chat in private or public groups.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:write:user_channel,team_chat:write:user_channel:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
channel_settingsobject— The settings of the [chat channel](https://support.zoom.us/hc/en-us/articles/200912909-Getting-Started-With-Channels-Group-Messaging-).-
add_member_permissionsinteger, possible values:1, 2, default:1— This field indicates who can add new channel members: * `1` - All channel members can add new members. * `2` - Only channel owners and administrators can add new members. **Note:** Only the channel owner can modify this setting. **Note:** This setting is always set to 1 and is not editable for channel types 3, 4 and 5. -
mention_all_permissionsinteger, possible values:1, 2, 3, default:1— This field indicates who can use @all: * `1` - Everyone can use @all. * `2` - Only channel owner and administrators can use @all. * `3` - Nobody can use @all. **Note:** Only the channel owner can modify this setting. -
new_members_can_see_previous_messages_filesboolean, default:true— Whether new channel members can view messages and files previously posted in the channel. -
posting_permissionsinteger, possible values:1, 2, 3, default:1— The channel members' posting permissions: * `1` — All chat channel members can post to the channel. * `2` — Only the channel owner and administrators can post to the channel. * `3` — Only the channel owner, administrators and certain members can post to the channel.
-
-
membersarray— The member(s) to include in the channel. You can add a maximum of 20 members to the channel at once with this API.Items:
-
email(required)string, format:email— The member's email address.
-
-
namestring— The name of the channel. -
shared_spaceobject— The shared space infomation, if the channel is created in a shared space. If provided, channel type must be private (`1` or `2`).-
space_id(required)string— The shared space ID. -
space_channel_typestring, possible values:"private", "public_for_members", default:"private"— The shared space channel type. * `private` - Only invited members can be added. Members do not have to join the shared space. * `public_for_members` - Everyone in the shared ppace can join.
-
-
typeinteger, possible values:1, 2, 3, 4— The type of the channel. The value can be one of the following: `1`: Private channel. In this type of channel, members must be invited to join a channel. `2`: Private channel with members that belong to one Zoom account. Members in this channel should be invited and the members should be from the same organization. `3`: Public channel. Anyone can search for this channel and join the channel. `4`: Group chat. This is an instant channel you create by adding members to a new chat.
Example:
{
"channel_settings": {
"add_member_permissions": 2,
"new_members_can_see_previous_messages_files": true,
"posting_permissions": 3,
"mention_all_permissions": 1
},
"members": [
{
"email": "[email protected]"
}
],
"name": "Developers",
"type": 2,
"shared_space": {
"space_id": "8609fdea87b44e2f8e0",
"space_channel_type": "private"
}
}
Responses
Status: 201 **Status Code**: `201` Channel created.
Content-Type: application/json
-
channel_urlstring— The URL of the Zoom Chat channel. -
idstring— The channel's unique identifier. -
jidstring— The channel JID. -
namestring— The channel name. -
typeinteger, possible values:1, 2, 3, 4— The type of the channel. The value can be one of the following: `1`: Private channel. In this type of channel, members must be invited to join a channel. `2`: Private channel with members that belong to one Zoom account. Members in this channel should be invited and the members should be from the same organization. `3`: Public channel. Anyone can search for this channel and join the channel. `4`: Group chat. This is an instant channel which you can create by adding members to a new chat.
Example:
{
"id": "825c9e31f1064c73b394c5e4557d3447",
"jid": "[email protected]",
"name": "Developers",
"type": 2,
"channel_url": "https://zoom.us/launch/chat/v2/eyJzaWQiOiIyY2RkZjNyNjU3YTY0ODUzOWVhOThkODFhNjRiODE2YkBjb25mZXJlbmNlLnhtcHBkZXYuem9vbS51cyJ1"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to create a channel failed. <br> **Error Code:** `300` <br> The channel name already exists. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId. <br> **Error Code:** `5407` <br> Shared space does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Batch delete channels
- Method:
DELETE - Path:
/chat/users/{userId}/channels - Tags: Chat Channels (Account-level)
Delete channels in batches. For user-level apps, pass the me value instead of the userId parameter.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:delete:channels,team_chat:delete:channels:admin
Rate Limit Label: LIGHT
Responses
Status: 202 **HTTP Status Code:** `202` <br> Request successful.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4300` <br> `channel_ids` cannot be empty. <br> **Error Code:** `4301` <br> The size of `channel_ids` cannot exceed 50. <br> **Error Code:** `4302` <br> Request to delete channels failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `4100` <br> Unauthorized request. You do not have permission to delete channel: $channelId. <br> **Error Code:** `4101` <br> Unauthorized request. You do not have permission to delete this user's channel. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4400` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List account's public channels
- Method:
GET - Path:
/chat/channels - Tags: Chat Channels (Account-level)
Lists public chat channels that the account's users create.
Note: This API only supports account-level apps. The user calling this API must have a role that has the View or Edit permission for the Chat Channels feature.
Scopes: chat_channel:read:admin,chat_channel:write:admin
Granular Scopes: team_chat:read:list_channels:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **Status Code**: `200` Account's public channels returned.
Content-Type: application/json
All of:
-
channelsarray— The information about the chat channels.Items:
All of:
-
channel_settingsobject— The settings of the [chat channel](https://support.zoom.us/hc/en-us/articles/200912909-Getting-Started-With-Channels-Group-Messaging-).-
add_member_permissionsinteger, possible values:1, 2— This field indicates who can add new channel members: * `1` - All channel members can add new members. * `2` - Only channel owners and administrators can add new members. **Note:** Only the channel owner can modify this setting. **Note:** This setting is always set to 1 and not editable for channel types 3, 4 and 5. -
allow_to_add_external_usersinteger, possible values:0, 1, 2, 3— Whether external users can be added to the channel: * `0` — External user cannot be added to the channel. * `1` — All chat channel members can add external users to the channel. * `2` — Only members within your organization can add external users to the channel. * `3` - Only channel owners and administrators can add external users to the channel. **Note:** This setting is always set to 1 for channel type 4. -
mention_all_permissionsinteger, possible values:1, 2, 3— This field indicates who can use @all: * `1` - Everyone can use @all. * `2` - Only channel owners and administrators can use @all. * `3` - Nobody can use @all. **Note:** Only the channel owner can modify this setting. -
new_members_can_see_previous_messages_filesboolean— Whether new channel members can view messages and files previously posted in the channel. -
posting_permissionsinteger, possible values:1, 2, 3— The channel members' posting permissions: * `1` — All chat channel members can post to the channel. * `2` — Only the channel owner and administrators can post to the channel. * `3` — Only channel owners, administrators, and certain members can post to the channel.
-
-
channel_urlstring— The URL of the Zoom Chat channel. -
idstring— The channel's ID. -
jidstring— The [Jabber ID (JID)](https://en.wikipedia.org/wiki/JID_(Jabber)) that accesses the account. -
namestring— The channel name. -
typeinteger, possible values:0, 1, 2, 3, 4, 5— The channel's type: * `0` — An unknown channel type. * `1` — A private channel. Members must be invited to join this channel. * `2` — A private channel with members that belong to a Zoom account. All members of this channel are from the same organization and must be invited to join. * `3` — A public channel. Anyone can search for and join this channel. * `4` — An instant channel. Adding members to a new chat creates this type of channel. * `5` — A public channel. Anyone can join this channel and invite members from other Zoom accounts.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns when the available results exceed the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger— The number of records returned per page in a single API call. -
total_recordsinteger— The total number of records found.
Example:
{
"channels": [
{
"channel_settings": {
"add_member_permissions": 2,
"new_members_can_see_previous_messages_files": true,
"posting_permissions": 3,
"mention_all_permissions": 1,
"allow_to_add_external_users": 2
},
"id": "cabc1234567defghijkl01234",
"jid": "[email protected]",
"name": "Developers",
"type": 2,
"channel_url": "https://zoom.us/launch/chat/v2/eyJzaWQiOiIyY2RkZjNyNjU3YTY0ODUzOWVhOThkODFhNjRiODE2YkBjb25mZXJlbmNlLnhtcHBkZXYuem9vbS51cyJ1"
}
],
"next_page_token": "qUEQqB1V0HVhJmwKFQrGOD",
"page_size": 10,
"total_records": 2
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is either invalid or has expired. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Search user's or account's channels
- Method:
POST - Path:
/chat/channels/search - Tags: Chat Channels (Account-level)
Searches user's or account's chat channels.
Scopes: chat_channel:read,chat_channel:write,chat_channel:read:admin,chat_channel:write:admin
Granular Scopes: team_chat:write:search_channels,team_chat:write:search_channels:admin
Rate Limit Label: RESOURCE-INTENSIVE
Request Body
Content-Type: application/json
-
haystack(required)string, possible values:"user_joined", "public", "all"— The collection of channels in which search is performed. **user_joined** - All channels that the user is a member of, include internal and external channels. When selected, no more than one page of result will be returned. For account-level apps, the user calling this API to search another user joined channels must have a [role](https://support.zoom.us/hc/en-us/articles/115001078646-Using-role-management) that has the **View** permission for the **Chat Channels** feature. **public** - All account's public channels. **all** - All account's channels. The user calling this API to search all account's channels must have a [role](https://support.zoom.us/hc/en-us/articles/115001078646-Using-role-management) that has the **View** permission for the **Chat Channels** feature. -
needle(required)object— Search target. -
include_archivedboolean, default:false— Whether to return the archived channels. -
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger, default:10— The number of records returned from a single API call. -
user_idstring— The user's unique identifier. It's required for account-level apps to search user joined channels. Otherwise it should be omitted.
Example:
{
"user_id": "v4iyWT1LTfy8QvPG4GTvdg",
"page_size": 12,
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"needle": {
"search_type": "by_channel_name",
"keywords": [
"spring"
]
},
"haystack": "user_joined",
"include_archived": false
}
Responses
Status: 200 **Status Code**: `200` Channel search result returned.
Content-Type: application/json
-
channels(required)array— The information about the chat channels.Items:
-
channel_url(required)string— The URL of the Zoom Chat channel. -
id(required)string— The channel's ID. -
member_count(required)integer— The total number of members in the channel. -
name(required)string— The channel name. -
type(required)integer, possible values:0, 1, 2, 3, 4, 5— The channel's type: * `0` — An unknown channel type. * `1` — A private channel. Members must be invited to join this channel. * `2` — A private channel with members that belong to a Zoom account. All members of this channel are from the same organization and must be invited to join. * `3` — A public channel. Anyone can search for and join this channel. * `4` — An instant channel. Adding members to a new chat creates this type of channel. * `5` — A public channel. Anyone can join this channel and invite members from other Zoom accounts.
-
-
page_size(required)integer— The number of records returned in a single API call. -
next_page_tokenstring— The next page token paginates through a large set of results. A next page token is returned when the available results exceed the current page size. The expiration period for this token is 15 minutes.
Example:
{
"channels": [
{
"id": "cabc1234567defghijkl01234",
"name": "Developers",
"type": 2,
"channel_url": "https://zoom.us/launch/chat/v2/eyJzaWQiOiIyY2RkZjNyNjU3YTY0ODUzOWVhOThkODFhNjRiODE2YkBjb25mZXJlbmNlLnhtcHBkZXYuem9vbS51cyJ1",
"member_count": 12
}
],
"next_page_token": "qUEQqB1V0HVhJmwKFQrGOD",
"page_size": 10
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is either invalid or has expired. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to access user's channels. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List channel activity logs
- Method:
GET - Path:
/chat/channels/{channelId}/activities - Tags: Chat Channels (Account-level)
Returns a list of a channel's activity logs.
Scopes: chat_channel:read:admin
Granular Scopes: team_chat:read:list_channel_activity_logs:admin
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:** `200` List of channel activity logs successfully returned.
Content-Type: application/json
-
channel_activity_logs(required)array— The activity logs channel.Items:
-
activity_timestamp(required)integer, format:int64— The timestamp of the activity log date. -
activity_type(required)string, possible values:"membership"— The activity log type. -
operator(required)object— The user who made this activity.-
display_namestring— The user's display name. -
member_idstring— The user's member ID. -
user_idstring— The user's ID. If the user belongs to an external account, `user_id` is set to an empty string.
-
-
membersobject— Includes member join or leave status and member list.-
member_listarray— An array of a channel members activity.Items:
-
display_namestring— The user's display name. -
member_idstring— The user's member ID. -
user_idstring— The user's ID. If the user belongs to an external account, `user_id` will be set to an empty string.
-
-
member_statusstring, possible values:"joined", "left"— The member's joined or left status.
-
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger— The number of records returned within a single API call.
Example:
{
"channel_activity_logs": [
{
"activity_type": "membership",
"activity_timestamp": 1581370790388,
"operator": {
"display_name": "John Doe",
"user_id": "37oirnidtk6ije2tsfazbq",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK"
},
"members": {
"member_status": "join",
"member_list": [
{
"display_name": "John Doe",
"user_id": "37oirnidtk6ije2tsfazbq",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK"
}
]
}
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 15
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Channel Id can't be empty or not exist. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access channel activity logs <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5306` <br> Channel does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get retention policy of a channel
- Method:
GET - Path:
/chat/channels/{channelId}/retention - Tags: Chat Channels (Account-level)
Returns the retention policy of a channel.
Note: This API only supports account-level apps. The user calling this API must have a role that has the View or Edit permission for the Chat Channels feature.
Scopes: chat_channel:read:admin,chat_channel:write:admin
Granular Scopes: team_chat:read:retention:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Channel retention policy returned.
Content-Type: application/json
-
channel_id(required)string— The channel's unique identifier. -
cloud_retention(required)object— The cloud retention policy of the channel.-
enable_custom_retention(required)boolean— The custom retention policy is enabled on the channel. -
retention_period(required)string— The retention period of the channel. 'y' - year, 'm' - month, 'd' - day.
-
Example:
{
"channel_id": "825c9e31f1064c73b394c5e4557d3447",
"cloud_retention": {
"enable_custom_retention": true,
"retention_period": "7y"
}
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4300` <br> channel id cannot be empty. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to access channel retention policy. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Channel does not exist: `$channelId`. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Update retention policy of a channel
- Method:
PATCH - Path:
/chat/channels/{channelId}/retention - Tags: Chat Channels (Account-level)
Updates the retention policy of a channel.
Note: This API only supports account-level apps. The user calling this API must have a role that has the Edit permission for the Chat Channels feature.
Scopes: chat_channel:write:admin
Granular Scopes: team_chat:update:retention:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
cloud_retention(required)object— The cloud retention policy of the channel.-
enable_custom_retention(required)boolean— This field enables custom retention policy of the channel. If set to `true`, `retention_period` is required. -
retention_periodstring— The custom retention period of the channel. 'y' - year, 'm' - month, 'd' - day. - If set by day, accepted range is `1d` through `90d`. - If set by month, accepted range is `1m` through `120m`. - If set by year, accepted range is `1y` through `10y`.
-
Example:
{
"cloud_retention": {
"enable_custom_retention": true,
"retention_period": "30m"
}
}
Responses
Status: 204 **HTTP Status Code:** `204` Channel retention policy is updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to update channel retention policy. <br> **Error Code:** `5301` <br> Unable to update channel retention policy. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Channel does not exist: `$channelId`. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get a channel
- Method:
GET - Path:
/chat/users/{userId}/channels/{channelId} - Tags: Chat Channels (Account-level)
Returns information about a specific channel. For user-level apps, pass the me value instead of the userId parameter.
Zoom chat channels allow users to communicate through chat in private or public groups.
Scopes: chat_channel:read,chat_channel:write,chat_channel:read:admin,chat_channel:write:admin
Granular Scopes: team_chat:read:user_channel,team_chat:read:user_channel:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Channel returned.
Content-Type: application/json
-
channel_settingsobject— The settings of the [chat channel](https://support.zoom.us/hc/en-us/articles/200912909-Getting-Started-With-Channels-Group-Messaging-).-
add_member_permissionsinteger, possible values:1, 2— This field indicates who can add new channel members: * `1` - All channel members can add new members. * `2` - Only channel owners and administrators can add new members. **Note:** Only channel owners can modify this setting. **Note:** This setting is always set to 1 and not editable for channel types 3, 4 and 5. -
allow_to_add_external_usersinteger, possible values:0, 1, 2, 3— Whether external users can be added to the channel: * `0` — External users cannot be added to the channel. * `1` — All chat channel members can add external users to the channel. * `2` — Only members within your organization can add external users to the channel. * `3` - Only channel owners and administrators can add external users to the channel. **Note:** This setting is always set to 1 for channel type 4. -
designated_posting_membersarray— The user IDs or member IDs of the channel's member to whom the posting permission was designated. `posting_permissions` must be `3` to have posting members.Items:
-
member_idstring— The member ID of the designated channel member who has posting permission. -
user_idstring— The user ID of the designated channel member who has posting permission. If the member does not belong to the same account as the current, this field will be empty.
-
-
mention_all_permissionsinteger, possible values:1, 2, 3— This field indicates who can use @all: * `1` - Everyone can use @all. * `2` - Only channel owners and administrators can use @all. * `3` - Nobody can use @all. **Note:** Only channel owners can modify this setting. -
new_members_can_see_previous_messages_filesboolean— Whether new channel members can view messages and files previously posted in the channel. -
posting_permissionsinteger, possible values:1, 2, 3— The channel members' posting permissions: * `1` — All chat channel members can post to the channel. * `2` — Only channel owners and administrators can post to the channel. * `3` — Only channel owners, administrators, and certain members can post to the channel.
-
-
channel_urlstring— The URL of the Zoom Chat channel. -
idstring— The channel's ID. -
jidstring— The [Jabber ID (JID)](https://en.wikipedia.org/wiki/JID_(Jabber)) that accesses the account. -
namestring— The channel name. -
typeinteger, possible values:0, 1, 2, 3, 4, 5— The channel's type: * `0` — An unknown channel type. * `1` — A private channel. Members must be invited to join this channel. * `2` — A private channel with members that belong to a Zoom account. All members of this channel are from the same organization and must be invited to join. * `3` — A public channel. Anyone can search for and join this channel. * `4` — An instant channel. This type of channel is created by adding members to a new chat. * `5` — A public channel. Anyone can join this channel and invite members from other Zoom accounts.
Example:
{
"channel_settings": {
"add_member_permissions": 2,
"new_members_can_see_previous_messages_files": true,
"posting_permissions": 3,
"mention_all_permissions": 1,
"allow_to_add_external_users": 2,
"designated_posting_members": [
{
"member_id": "b8b03c9ed5114ed59e4833cc6cb4921b",
"user_id": "xvenagdyr6yonp8fhpky0w"
}
]
},
"id": "cabc1234567defghijkl01234",
"jid": "[email protected]",
"name": "Developers",
"type": 2,
"channel_url": "https://zoom.us/launch/chat/v2/eyJzaWQiOiIyY2RkZjNyNjU3YTY0ODUzOWVhOThkODFhNjRiODE2YkBjb25mZXJlbmNlLnhtcHBkZXYuem9vbS51cyJ1"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to access this user's channel information. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete a channel
- Method:
DELETE - Path:
/chat/users/{userId}/channels/{channelId} - Tags: Chat Channels (Account-level)
Deletes a specific channel. For user-level apps, pass the me value instead of the userId parameter.
Zoom chat channels allow users to communicate via chat in private or public groups.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:delete:user_channel,team_chat:delete:user_channel:admin
Rate Limit Label: MEDIUM
Responses
Status: 204 **HTTP Status Code:** `204` Channel deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to delete this user's channel.<br> <br> **Error Code:** `5301` <br> Request to delete a channel failed. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Update a channel
- Method:
PATCH - Path:
/chat/users/{userId}/channels/{channelId} - Tags: Chat Channels (Account-level)
Updates the name, type, and settings of a specific channel that the user owns or administers. For user-level apps, pass the me value instead of the userId parameter.
Zoom chat channels allow users to communicate through chat in private or public channels.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:update:user_channel,team_chat:update:user_channel:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
channel_settingsobject— The settings of the [chat channel](https://support.zoom.us/hc/en-us/articles/200912909-Getting-Started-With-Channels-Group-Messaging-).-
add_member_permissionsinteger, possible values:1, 2— This field indicates who can add new channel members: * `1` - All channel members can add new members. * `2` - Only channel owners and administrators can add new members. **Note:** Only the channel owner can modify this setting. **Note:** This setting is always set to 1 and not editable for channel types 3, 4 and 5. -
designated_posting_membersarray— The user IDs or member IDs of the channel's member to whom the posting permission was designated. You must select `3` for `posting_permissions` in the API request.Items:
One of:
-
user_idstring— The user ID.
-
member_idstring— The member ID.
-
-
mention_all_permissionsinteger, possible values:1, 2, 3— This field indicates who can use @all: * `1` - Everyone can use @all. * `2` - Only channel owners and administrators can use @all. * `3` - Nobody can use @all. **Note:** Only the channel owner can modify this setting. -
new_members_can_see_previous_messages_filesboolean— Whether new channel members can view messages and files previously posted in the channel. -
posting_permissionsinteger, possible values:1, 2, 3— The channel members' posting permissions: * `1` — All chat channel members can post to the channel. * `2` — Only channel owners and administrators can post to the channel. * `3` — Only channel owners, administrators, and certain members can post to the channel.
-
-
namestring— A new name for the channel. -
typeinteger, possible values:1, 2, 3, 5— This field changes the channel type. For example, public channel 5 to private 1, public 3 to private 2, vice versa, and so on. The channel's type: * `1` — A private channel. Members must be invited to join this channel. * `2` — A private channel with members that belong to a Zoom account. All members of this channel are from the same organization and must be invited to join. * `3` — A public channel. Anyone can search and join this channel. * `5` — A public channel. Anyone can join this channel and invite members from other Zoom accounts.
Example:
{
"name": "Developers Chat",
"channel_settings": {
"add_member_permissions": 2,
"new_members_can_see_previous_messages_files": true,
"posting_permissions": 3,
"mention_all_permissions": 1,
"designated_posting_members": [
{
"user_id": "alsjdflasjfasjfas"
}
]
},
"type": 1
}
Responses
Status: 204 **Status Code:** `204` Channel updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The channel name already exists. <br> **Error Code:** `5301` <br> Request to update a channel failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to update a channel for this user.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List channel administrators
- Method:
GET - Path:
/chat/users/{userId}/channels/{channelId}/admins - Tags: Chat Channels (Account-level)
Lists all administrators of a channel. For user-level apps, pass the me value instead of the userId parameter.
Scopes: chat_channel:read,chat_channel:read:admin
Granular Scopes: team_chat:read:list_administrators:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` List of channel administrators returned.
Content-Type: application/json
-
adminsarray— The channel administrator.Items:
-
emailstring, format:email— The administrator's email address. If the administrator does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
first_namestring— The administrator's first name. If the admin does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
idstring— The administrator's user ID. If the admin does not belong to the same account as the current user, this field will be empty. -
is_externalboolean— The current administrator is external to the userId's account. -
last_namestring— The administrator's last name. If the admin does not belong to the same account as the current useror is not the current user's contact, this field will be empty. -
member_idstring— The channel administrator's member ID. -
namestring— The administrator's display name. -
rolestring, possible values:"admin", "owner"— The role of the administrator. The value can be one of these: `owner`, `admin`.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger— The number of records returned within a single API call.
Example:
{
"admins": [
{
"email": "[email protected]",
"first_name": "Jill",
"id": "v4iyWT1LTfy8QvPG4GTvdg",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"role": "admin",
"last_name": "Chill",
"name": "Jill Chill",
"is_external": false
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 10
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to list channel's administrators on this user's behalf.<br> <br> **Error Code:** `300` <br> The next page token is either invalid or has expired. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Promote channel members to administrators
- Method:
POST - Path:
/chat/users/{userId}/channels/{channelId}/admins - Tags: Chat Channels (Account-level)
Promotes members to an administrator role in a channel.
For user-level apps, pass the me value instead of the userId parameter.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:write:administrator:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
adminsarray— The channel administrators. You can promote up to 10 members in a single API call.Items:
One of:
-
email(required)string, format:email— The admin's email address.
-
member_id(required)string— The admin's member ID.
-
Example:
{
"admins": [
{
"email": "[email protected]"
}
]
}
Responses
Status: 201 **HTTP Status Code:** `201` Promoted member(s) to administrator(s) of the channel.
Content-Type: application/json
-
added_atstring, format:date-time— The date and time when the members are promoted to administrator(s) in the channel. -
idsstring— A comma-separated user IDs of the administrators. The user IDs of those who are not from the same account will be omitted from the list. -
member_idsstring— The member IDs of the administrators.
Example:
{
"added_at": "2020-02-10T21:39:50Z",
"ids": "D40dy5L7SJiSTayIvRV9Lw,KT6h5SfCSm6YNjZo7i8few",
"member_ids": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ,R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to promote member(s) as channel administrator(s) failed.<br> <br> **Error Code:** `200` <br> Unauthorized request. You do not have permission to promote member as channel administrator on this user's behalf. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Batch demote channel administrators
- Method:
DELETE - Path:
/chat/users/{userId}/channels/{channelId}/admins - Tags: Chat Channels (Account-level)
Demotes administrators in a channel in batch. For user-level apps, pass the me value instead of the userId parameter.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:delete:batch_administrators:admin
Rate Limit Label: MEDIUM
Responses
Status: 204 **HTTP Status Code:** `204` **No Content** Demoted administrators to members.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission to demote channel administrators.<br> <br> **Error Code:** `5301` <br> Unable to demote channel administrator.<br> <br> **Error Code:** `300` <br> The maximum number of administrators that can be demoted at a time is 10. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List channel members
- Method:
GET - Path:
/chat/users/{userId}/channels/{channelId}/members - Tags: Chat Channels (Account-level)
Returns a list of all members of a channel. For user-level apps, pass the me value instead of the userId parameter.
Scopes: chat_channel:read,chat_channel:write,chat_channel:read:admin,chat_channel:write:admin
Granular Scopes: team_chat:read:list_members,team_chat:read:list_members:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` List of channel members returned.
Content-Type: application/json
-
membersarray— The members in a channel.Items:
-
emailstring, format:email— The member's email address. If the member does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
first_namestring— The member's first name. If the member does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
idstring— The member's user ID. If the member does not belong to the same account as the current user, this field will be empty. -
is_externalboolean— Whether it is an external member. -
last_namestring— The member's last name. If the member does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
member_idstring— The channel member's member ID. -
namestring— The user's display name. -
rolestring, possible values:"admin", "owner", "member"— The role of the member. The value can be one of these: `owner`, `admin`, `member`.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger, default:30— The number of records returned with a single API call. -
total_recordsinteger— The total number of records returned.
Example:
{
"members": [
{
"email": "[email protected]",
"first_name": "Jill",
"id": "v4iyWT1LTfy8QvPG4GTvdg",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"last_name": "Chill",
"name": "Jill Chill",
"role": "admin",
"is_external": true
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 50,
"total_records": 100
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to view channel members on this user's behalf.<br> <br> **Error Code:** `300` <br> The next page token is either invalid or has expired. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Invite channel members
- Method:
POST - Path:
/chat/users/{userId}/channels/{channelId}/members - Tags: Chat Channels (Account-level)
Invites members that are in a user's contact list to a channel. For user-level apps, pass the me value instead of the userId parameter.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:write:members,team_chat:write:members:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
membersarray— The members of a chat channel. You can invite up to 20 members with a single API call. To invite external users, an email should be sent. You can send up to 100 emails a day. The call to invite external users fails when the number of sent emails exceeds the limit.Items:
-
email(required)string, format:email— The email address of the member.
-
Example:
{
"members": [
{
"email": "[email protected]"
}
]
}
Responses
Status: 201 **HTTP Status Code:** `201` Members invited to the channel.
Content-Type: application/json
-
added_atstring, format:date-time— The date and time when the member(s) are added to the channel. -
idsstring— The comma-separated user IDs of the members added to the channel. The user IDs of those who are not from the same account will be omitted from the list. -
member_idsstring— The comma-separated member IDs of the members added to the channel.
Example:
{
"added_at": "2020-02-10T21:39:50Z",
"ids": "D40dy5L7SJiSTayIvRV9Lw,KT6h5SfCSm6YNjZo7i8few",
"member_ids": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ,R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to invite channel members failed.<br> <br> **Error Code:** `200` <br> Unauthorized request. You do not have permission to invite channel members on this user's behalf. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Batch remove members from a user's channel
- Method:
DELETE - Path:
/chat/users/{userId}/channels/{channelId}/members - Tags: Chat Channels (Account-level)
Removes multiple members from a user's chat channel in a batch. A chat channel can have one or many members.
Scopes: chat_channel:write:admin,chat_channel:write
Granular Scopes: team_chat:delete:member:admin
Rate Limit Label: MEDIUM
Responses
Status: 204 **HTTP Status Code:** `204` **No Content** Members removed.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission to remove channel members.<br> <br> **Error Code:** `5301` <br> Unable to remove channel member.<br> <br> **Error Code:** `300` <br> You can not remove the current user himself.<br> <br> **Error Code:** `300` <br> The maximum number of members that can be removed at a time is 20. <br> **Error Code:** `403` <br> Authenticated user has not permitted access to the targeted resource. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Remove a member
- Method:
DELETE - Path:
/chat/users/{userId}/channels/{channelId}/members/{identifier} - Tags: Chat Channels (Account-level)
Removes a member from a chat channel. A channel can have one or many members. For user-level apps, pass the me value instead of the userId parameter.
Scopes: chat_channel:write,chat_channel:write:admin
Granular Scopes: team_chat:delete:member:admin
Rate Limit Label: Medium
Responses
Status: 204 **HTTP Status Code:** `204` **No Content** Member removed.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to remove channel members on this user's behalf.<br> **Error Code:** `5301` <br> Unable to remove channel member.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List custom emojis
- Method:
GET - Path:
/chat/emoji - Tags: Chat Emoji
Queries the custom emojis list.
Scopes: chat:read:admin,chat:read,chat:write:admin,chat:write
Granular Scopes: team_chat:read:list_custom_emojis,team_chat:read:list_custom_emojis:admin
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:**`200` The list of emojis returned.
Content-Type: application/json
-
emojis(required)array— The list of emojis.Items:
-
date_added(required)string— The date when this emoji was added. -
file_id(required)string— The ID of this custom emoji. -
member_id(required)string— The member ID. -
name(required)string— The emoji name. -
user_email(required)string— The email of the user who added the custom emoji. -
user_id(required)string— The user ID that added this emoji. -
user_name(required)string— The name of the user who added the custom emoji.
-
-
page_size(required)integer— The number of records returned within a single API call. -
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
search_keystring— The query string for emoji name.
Example:
{
"emojis": [
{
"file_id": "bKgNq133RoS5TMg99QfZJA",
"name": "Hello",
"user_id": "v4iyWT1LTfy8QvPG4GTvdg",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"user_name": "Jack liu",
"user_email": "[email protected]",
"date_added": "2020-02-10T21:39:50Z"
}
],
"next_page_token": "32.0,-9223372036854775808,1704438757798,so6Q0cltRtiHe7w_5lM39Q",
"page_size": 10,
"search_key": "hello"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Account has not enabled the custom emojis feature. Contact Zoom Support for details. <br> **Error Code:** `5333` <br> Invalid parameter: search_key. The minimum length is 3 characters, the maximum length is 256 characters. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Add a custom emoji
- Method:
POST - Path:
/chat/emoji/files - Tags: Chat Emoji
Add a custom emoji.
Note:
- The base URL for this API's is
https://fileapi.zoom.us/v2. - The rate limit of this API is 20 requests per second per API or 2000 requests per second per IP address.
- The caller must support HTTP 30x redirects.
- All files are sent as common files except
png,jpg,jpegandgif - The caller must retain the authorization header when redirected to a different hostname.
Scopes: chat:write,chat:write:admin
Granular Scopes: team_chat:write:custom_emoji,team_chat:write:custom_emoji:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: multipart/form-data
-
file(required)string— The upload file in binary format. You can only send a maximum of 256KB. Only supports jpg, png, gif and jpeg. -
name(required)string— The name of the emoji to be added. Allowed characters: letters, numbers, underscores. The maximum length is 100.
Example:
{
"name": "happy",
"file": ""
}
Responses
Status: 201 **Status Code:** `201` Add this custom emoji successfully.
Content-Type: application/json
-
file_id(required)string— The file ID. -
name(required)string— The emoji name.
Example:
{
"file_id": "9c5408f87660a840167674acd7d",
"name": "happy"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter, the possible reasons: 1. Allowed characters: letters, numbers, underscores 2. The maximum size of file is 256KB. <br> **Error Code:** `400` <br> Invalid file type. Only support jpg,png,gif,jpeg. <br> **Error Code:** `500` <br> Add this custom emoji failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `40090` <br> User has no permission to add custom emoji. Contact Zoom Support for details. <br>
Status: 409 **HTTP Status Code:** `409` <br> Conflict **Error Code:** `30010` <br> Duplicate custom emoji name. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete a custom emoji
- Method:
DELETE - Path:
/chat/emoji/{fileId} - Tags: Chat Emoji
Delete a custom emoji by fileId.
Scopes: chat:write,chat:write:admin
Granular Scopes: team_chat:delete:custom_emoji,team_chat:delete:custom_emoji:admin
Rate Limit Label: LIGHT
Responses
Status: 204 **Status Code:** `204` Delete an emoji successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4600` <br> Delete this custom emoji failed. <br> **Error Code:** `300` <br> Account has not enabled the custom emojis feature. Contact Zoom Support for details. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to delete custom emojis. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5404` <br> This custom emoji does not exist: '${fileId}'. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get file info
- Method:
GET - Path:
/chat/files/{fileId} - Tags: Chat Files
Returns information about the chat file.
Scopes: chat:read
Granular Scopes: team_chat:read:file,team_chat:read:file:admin
Rate Limit Label: LIGHT
Responses
Status: 200 Returns the chat file's response.
Content-Type: application/json
-
created_time(required)number— The created time of the file. -
digest(required)string— The chat file's digest that uses SHA-256. -
download_url(required)string— The file downloadable URL. -
file_id(required)string— The chat file's unique ID. -
file_name(required)string— The chat file's name. -
length(required)number— The chat file's length by bytes. -
modified_time(required)number— The modified time of the file. -
OS_file_type(required)string— The file's extension type. -
public_urlstring— (DEPRECATED) The public URL of the file, if the file's public URL has been enabled.
Example:
{
"file_id": "LDG2jzoOS2aV4wkyLMaryg",
"file_name": "fdaiul_IM.txt",
"OS_file_type": "txt",
"length": 36,
"digest": "0a6066b576b65730c88dfdf17a24c22c962975420b84a760d181ccc524a2cb80",
"created_time": 1705472166417,
"modified_time": 1705472166417,
"download_url": "https://zoomdev.us/file/download/wR3p30efRtauNrQbyGHkMg?archive=revision&filename=748F23F1-3728-49C9-8742-CE7AD77BBFAA.opus&jwt=eyJhbGciOiJFUzI1NiIsImsiOiJLSzQxYXo3LyJ9.eyJhdWQiOiJ6ZnMiLCJoZGlnIjpmYWxzZSwiaXNzIjoiZmlsZSIsImlpYyI6ImRldiIsImV4cCI6MTczMzQ2MDY4OSwib3JpIjoid2ViIiwiaWF0IjoxNzMzMzc0Mjg5LCJkaWciOiIzOGVlMTU0ODE2OTk5NDNiNmRjYmRjMzllNGE2NmQxMDI1MzJkMDY1YjE3NmYwNmQzZmYxMTJlMjhiN2JkZGEzIn0.KiCS4-dCg_5BTUjBgpPHBgPhnKCfozDaDQWGz5rOw2bd9ndStYCgN6qXW6vPZYMLeIzR1VNuEY0o0AV8PG8A7Q",
"public_url": "https://file.zoomdev.us/DSIdNwh5TsiR_ChEC_7nlw/MS4zLu6KX-djd-McseQyDf_L6ZZIFR4vuvr8M34OcKfBq8bx/Book1%200630.xlsx?business=im_public_url"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `300` <br> Access token is required. <br> **Error Code:** `100` <br> Invalid Access token. <br> **Error Code:** `401` <br> Service access not permitted. <br> **Error Code:** `106` <br> Access token is expired <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> Operation not permitted. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `404` <br> Resource not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete a chat file
- Method:
DELETE - Path:
/chat/files/{fileId} - Tags: Chat Files
Deletes a chat file.
Scopes: chat:write
Granular Scopes: team_chat:delete:file,team_chat:delete:file:admin
Rate Limit Label: LIGHT
Responses
Status: 204 **HTTP Status Code:** `204`: file deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `300` <br> Access token is required. <br> **Error Code:** `100` <br> Invalid Access token. <br> **Error Code:** `401` <br> Service access not permitted. <br> **Error Code:** `106` <br> Access token is expired <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> Operation not permitted. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `404` <br> Resource not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Upload a chat file
- Method:
POST - Path:
/chat/users/{userId}/files - Tags: Chat Files
Uploads a file to chat.
Note:
- The base URL for this API's is
https://file.zoom.us/v2/. - The rate limit of this API is 20 requests per second per API or 2000 requests per second per IP address.
- The caller must support HTTP 30x redirects.
- All files are sent as common files except
png,jpg,jpegandgif - Zoom Cloud Storage will store the files sent through this API. If you do not use Zoom Cloud Storage, Zoom Cloud will temporarily store these files for 7 days.
- The caller must retain the authorization header when redirected to a different hostname.
- After upload a file, the default behavior will show the file in personal chat message.
For an account-level OAuth app, this API can only be used on behalf of a user who is assigned with a role that has the Edit permission for Chat Messages.
Scopes: chat_message:write,chat_message:write:admin
Granular Scopes: team_chat:write:files,team_chat:write:files:admin
Request Body
Content-Type: multipart/form-data
-
filestring— The upload file, in binary format. You can only send a maximum of 1GB files for images and all other file types.
Example:
{
"file": ""
}
Responses
Status: 201 **Status Code:** `201` File successfully uploaded.
Content-Type: application/json
-
idstring— The file ID.
Example:
{
"id": "9c5408f87660a840167674acd7d"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `124` <br> Invalid access token. <br> **Error Code:** `300` <br> Maximum file size exceeded: ${maxSize} <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Send a chat file
- Method:
POST - Path:
/chat/users/{userId}/messages/files - Tags: Chat Files
Sends a file on Zoom to either an individual user in your contact list or a channel of which you are a member.
Note:
- The base URL for this API is
https://file.zoom.us/v2/. - The rate limit of this API is 20 requests per second per API or 2000 requests per second per IP address.
- The caller must support HTTP 30x redirects.
- All files are sent as common files except
png,jpg,jpegandgif - Zoom Cloud Storage will store the files sent through this API. If you do not use Zoom Cloud Storage, Zoom Cloud will temporarily store these files for 7 days.
- The caller must retain the authorization header when redirected to a different hostname.
For user-level apps, pass the me value instead of the userId parameter.
For an account-level OAuth app, this API can only be used on behalf of a user who is assigned with a role that has the Edit permission for Chat Messages.
Scopes: chat_message:write,chat_message:write:admin
Granular Scopes: team_chat:write:message_files,team_chat:write:message_files:admin
Request Body
Content-Type: multipart/form-data
-
files(required)array— A list of the chat files to send, in binary format. * This field only supports one file. * You can only send a maximum of 16 megabytes for images and 20 megabytes for all other file types.Items:
string -
reply_main_message_idstring— The reply message's ID. This field only returns if the message is a reply message. -
to_channelstring— The channel ID of the channel to which to send the chat file. -
to_contactstring— The user ID or member ID of the contact to whom you want to send the chat file.
Example:
{
"files": [
""
],
"reply_main_message_id": "8cfaf567-bf5a-4acc-b4f2-88b3d371aca5",
"to_channel": "825c9e31f1064c73b394c5e4557d3447",
"to_contact": "za7AvP7o9AxypYwpaKYsOJ2K3VwXBZn4JtxgPGk8Lf7_1w"
}
Responses
Status: 201 **Status Code:** `201` File sent.
Content-Type: application/json
-
idstring— The message ID.
Example:
{
"id": "ex1233578gdfjkh"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Message sending failed. **Error Code:** `5402` <br> This only supports replies to a main message. **Error Code:** `124` <br> Invalid access token. **Error Code:** `300` <br> Maximum file size exceeded: ${maxSize}
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $to_contact.<br> **Error Code:** `4130` <br> Channel does not exist: $to_channel.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Perform operations on the message of channel
- Method:
PATCH - Path:
/chat/channel/message/events - Tags: Chat Messages
Performs different operations, such as pin or unpin, on the message of channel.
Scopes: chat:write
Granular Scopes: team_chat:update:pin_message
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
channel_id(required)string— The channel's unique identifier. -
message_id(required)string— The unique identifier of the message. -
method(required)string, possible values:"pin", "unpin"— The method to perform: * `pin` — Pin a message of channel. * `unpin` — Unpin a message of channel.
Example:
{
"method": "pin",
"message_id": "8cfaf567-bf5a-4acc-b4f2-88b3d371aca5",
"channel_id": "825c9e31f1064c73b394c5e4557d3447"
}
Responses
Status: 204 **Status Code:** `204` Perform operation on the message of channel successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Perform operations on the message of channel failed. <br> **Error Code:** `5401` <br> Message does not exist: `$message_id`. <br> **Error Code:** `300` <br> Invalid parameter: params. <br> **Error Code:** `4130` <br> Channel does not exist: `$channel_id`. <br> **Error Code:** `3216` <br> This message has already been pinned: `$message_id`. <br> **Error Code:** `3217` <br> This message has not been pinned: `$message_id`. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to perform operations on the message of channel. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List pinned history messages of channel
- Method:
GET - Path:
/chat/channels/{channelId}/pinned - Tags: Chat Messages
Returns a list of pinned history messages of channel.
Scopes: chat:read,chat:read:admin,chat:write
Granular Scopes: team_chat:read:list_pinned_messages
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:** `200` List of pinned history messages returned.
Content-Type: application/json
-
channel_id(required)string— The channel's unique identifier. -
messages(required)array— The pinned history messages of the channel.Items:
-
currently_pinned(required)boolean— A true value denotes the current pinned message. -
message(required)string— The message content. -
message_id(required)string— The message's unique identifier. -
message_timestamp(required)integer, format:int64— The timestamp of the message. -
pinned_by_external_user(required)boolean— If the value is true, an external user pinned the message. -
pinned_time(required)string— The time of when the message was pinned. -
pinner_member_id(required)string— The member ID of the user who pinned this message. -
pinner_user_id(required)string— The user ID of the user who pinned the message. If the pinnner is an external user, the result is empty.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns when the available results exceed the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger— The number of records returned per page in a single API call.
Example:
{
"messages": [
{
"message_id": "61ACBF3A-8B70-445D-85B2-8EF489F225D",
"message_timestamp": 1661997628249,
"pinner_user_id": "nldhyzxwqwkwgwdlgry2rq",
"pinner_member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ",
"pinned_time": "2020-02-10T21:39:50Z",
"currently_pinned": false,
"message": "hello, world!",
"pinned_by_external_user": false
}
],
"next_page_token": "1707034615202",
"channel_id": "825c9e31f1064c73b394c5e4557d3447",
"page_size": 10
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Must provide the parameter: channel_id. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to query pinned history messages of this channel. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Channel does not exist: '$channel_id'. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get a forwarded message
- Method:
GET - Path:
/chat/forwarded_message/{forwardId} - Tags: Chat Messages
Returns a chat message previously sent to a contact or a channel. For user-level apps, pass the me value instead of the userId parameter.
You must provide one of the following query parameters:
to_contact— The email address of the Zoom contact to whom you sent the message.to_channel— The ID of the Zoom channel where you sent the message.
Scopes: chat_message:read,chat_message:read:admin,chat_message:write,chat_message:write:admin
Granular Scopes: team_chat:read:user_message,team_chat:read:user_message:admin
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:** `200` <br> Message successfully returned.
Content-Type: application/json
-
at_itemsarrayItems:
-
at_contactstring— The contact's user ID. This field will be empty if the user ID does not belong to the same account as the current user. -
at_contact_member_idstring— The member ID of the contact. This field is returned if the value of the at_type field is set to 1. -
at_typeinteger, possible values:1, 2— The type of mention. 1: Contact. 2: Channel. -
end_positioninteger— The end position of the mention in the message string. -
start_positioninteger— The start position of the mention ('@') in the message string.
-
-
bot_messageobject— The chatbot's message in JSON format. For more information, see [Send, edit, and delete messages](https://developers.zoom.us/docs/team-chat-apps/send-edit-and-delete-messages/) in the Team Chat apps documentation. -
date_timestring, format:date-time— The date and time when the message was sent. -
download_urlstring— The file's download URL. -
file_idstring— The file's ID. -
file_namestring— The file's name. -
file_sizeinteger— The file size in bytes. -
filesarray— The information about the chat file.Items:
-
download_urlstring— The chat file's download URL. -
file_idstring— The chat file's unique ID. -
file_namestring— The chat file's name and extension. -
file_sizeinteger— The chat file's size in bytes.
-
-
idstring— The unique identifier of the forwarded message. -
interactive_cardsarray— The information about the chat interactive card.Items:
-
card_idstring— The chat interactive card's unique ID. -
card_jsonstring— The JSON string for the interactive card.
-
-
messagestring— The message content. -
message_typestring, possible values:"plain_text_message", "jpg_image_file", "audio_file", "video_file", "png_image_file", "gif_file", "giphy_file", "code_snippet", "file_and_text", "others"— The common type of messages that indicates which type of file to include: plain_text_message, jpg_image_file, audio_file, video_file, png_image_file, gif_file, giphy_file, code_snippet, file_and_text, or others. -
reactionsarray— A list of emoji reactions.Items:
-
emojistring— The emoji's Unicode value in UTF-32 format. -
member_idsarray— A list of user member IDs that replied to this message with this emoji.Items:
string -
total_countinteger— The emoji's total usage count. -
user_idsarray— A list of user IDs from the same account that replied to this message with this emoji. User IDs of those who are not from the same account will be omitted from the list.Items:
string
-
-
reply_main_message_idstring— The unique ID of the main message in the thread. The API only returns this value if the message is a reply message. -
reply_main_message_timestampinteger, format:int64— The timestamp when the main message in the thread was sent. This field only returns if the message is a reply message. -
rich_textarray— The [rich text formatting](https://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages) information.Items:
-
end_positioninteger— The end position of the rich text in the message string. -
format_attrstring— The attribute values of a specific format type. FontSize: 's' for small, 'm' for medium, or 'l' for large font sizes. FontColor and BackgroundColor: only supports RGB values (e.g., 'FFC0CB'). LeftIndent: a positive pixel length. Paragraph: 'h1' for heading 1, 'h2' for heading 2, or 'h3' for heading 3. AddLink: must be a valid URL with an 'http' or 'https' prefix (e.g., 'https://example.com'). -
format_typestring, possible values:"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"— The type of rich text format. -
start_positioninteger— The start position of the rich text in the message string.
-
-
send_member_idstring— The message sender's member ID. -
senderstring— The message sender's email address. If the sender does not belong to the same account as the current user or is not the current user's contact, this field is empty. -
sender_display_namestring— The message sender's display name. -
timestampinteger, format:int64— The message's timestamp.
Example:
{
"bot_message": {},
"date_time": "2020-02-10T21:39:50Z",
"download_url": "https://example.com/file/download/xt0aNj_DRtqRn041pIfpSQ?filename=Screenshot%202022-03-01%20at%20144337.png&jwt=eyJhbGciOiJIUzI1NiJ9.eyJkaWciOiJkOTllM2QwMjRjNmFiODNiMTNlNjVjYzM3NjJlYjc4ODMwMDE4YTNjNzNiNjc3ZWE3MzNlZDEzMTgxMTE3MzNkIiwiaXNzIjoiY3Jvc3NmaWxlIiwiYXVkIjoiZmlsZSIsImV4cCI6MTY0NjIwMzQ4MX0.7SF4L-xY-mqXgRD-NCzJOIu5nkuy33eKksif2m75Y38",
"file_id": "XDCDSJNVCDS",
"file_name": "Screenshot 2022-03-01 at 144337.png",
"file_size": 89,
"rich_text": [
{
"start_position": 0,
"end_position": 5,
"format_type": "Paragraph",
"format_attr": "h1"
}
],
"files": [
{
"download_url": "https://zoom.us/file/download/xBvggqyjQUal6TecwMlYwQ?filename=example.jpg&jwt=eyJhbGciOiJIUzI1NiJ9.eyJkaWciOiI3Yzg5YzBhYjIzYmZmMjdjNzE3NTQ4YzdjMTc0Njk3MWYzYjNmNjFjMzU5OTliNjE1ZjdjMWJmMzc5YTJiZThlIiwiYXVkIjoiZmlsZSIsImlzcyI6ImNyb3NzZmlsZSIsImV4cCI6MTY0ODI2NDY5N30.2fQxw3F1cEhvFJmnE2zPOdkHnPeZUktv_P0M--e-Tg8",
"file_id": "xBvggqyjQUal6TecwMlYwQ",
"file_name": "example.jpg",
"file_size": 3966
}
],
"id": "6dfgdfgdg444447b0egga",
"message": "Hello.",
"message_type": "code_snippet",
"reactions": [
{
"emoji": "U+1F600",
"total_count": 1,
"user_ids": [
"v4iyWT1LTfy8QvPG4GTvdg"
],
"member_ids": [
"R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
]
}
],
"reply_main_message_id": "DE159sdhmf---dasfC7EBFE73",
"reply_main_message_timestamp": 1581370790388,
"sender": "[email protected]",
"send_member_id": "v4iyWT1LTfy8QvPG4GTvdgLTfy8QvG4GTWT1LTfy8QvPG4vPG4",
"sender_display_name": "Tom",
"timestamp": 1581370790388,
"at_items": [
{
"at_contact": "MO6johaFRIOlYivs3NnyvA",
"at_contact_member_id": "R4aF9Oj0fVM2hhezJTEmSKj0fVM2JTEaF9Oj0fVMj0fF9OF9O",
"at_type": 2,
"end_position": 8,
"start_position": 0
}
],
"interactive_cards": [
{
"card_id": "xBvggqyjQUal6TecwMlYwQ",
"card_json": "{ \"content\": { \"settings\": { \"default_sidebar_color\": \"#0E72ED\", \"is_split_sidebar\": false } } }"
}
]
}
List bookmarks
- Method:
GET - Path:
/chat/messages/bookmarks - Tags: Chat Messages
Returns the bookmarks for a given channel, 1:1 conversation, or across all of the sessions
Scopes: chat_message:read,chat_message:write
Granular Scopes: team_chat:read:list_bookmarks
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:**`200`<br>List of bookmarked messages returned.
Content-Type: application/json
-
bookmarks(required)array— The information about the user's bookmarks.Items:
One of:
-
channel_id(required)string— The channel ID of the chat session. -
channel_name(required)string— The name of the channel -
is_sent_by_user(required)boolean— This field returns `true` if the user sends the bookmarked message. -
message(required)string— The message content. -
message_id(required)string— The message ID, which is the message's unique identifier. You can use the [**Get a message**](/docs/api/rest/reference/chat/methods/#operation/getChatMessage) API to fetch additional details about the message. -
message_timestamp(required)integer, format:int64— The message sent time. -
sender_display_name(required)string— The message sender's display name. -
sender_member_id(required)string— The message sender's member ID. -
sender_user_id(required)string— The sender's user ID. It omits the user ID who is not from the same account. -
reply_main_message_idstring— The main message's unique ID. The API only returns this value if the bookmarked message is a reply or thread message. -
reply_main_message_timestampinteger, format:int64— The main message's timestamp. The API only returns this value if the bookmarked message is a reply or thread message.
-
is_sent_by_user(required)boolean— This field returns `true` if the user sends a bookmarked message. -
message(required)string— The message content. -
message_id(required)string— The message ID, which is the message's unique identifier. You can use the [**Get a message**](/docs/api/rest/reference/chat/methods/#operation/getChatMessage) API to fetch additional details about the message. -
message_timestamp(required)integer, format:int64— The message sent time. -
peer_contact_member_id(required)string— The member ID of the peer contact of the conversation. -
peer_contact_name(required)string— The name of the peer contact of the conversation. -
peer_contact_user_id(required)string— The user ID of the peer contact of the conversation. It omits the user ID who is not from the same account. -
reply_main_message_idstring— The main message's unique ID. The API only returns this value if the bookmarked message is a reply or thread message. -
reply_main_message_timestampinteger, format:int64— The main message's timestamp. The API only returns this value if the bookmarked message is a reply or thread message.
-
-
page_size(required)integer— The number of records returned within a single API call. -
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
Example:
{
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 10,
"bookmarks": [
{
"channel_id": "ayxzxi9ttyau5lskqorl1w3rtl1y5ssri",
"channel_name": "xBvggqyjQUal6TecwMlYwQ",
"message": "Hello",
"message_id": "EAB58B01-B35F-4F97-BA69-F9650F54679A",
"message_timestamp": 1703307811000,
"sender_user_id": "v4iyWT1LTfy8QvPG4GTvdg",
"sender_member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2he",
"sender_display_name": "Jane Smith",
"is_sent_by_user": false,
"reply_main_message_id": "7FDDE92B-042F-429E-B3F3-3A63838C417F",
"reply_main_message_timestamp": 1705010505067
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is invalid or expired. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to access this user's chat bookmarks. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Add or remove a bookmark
- Method:
PATCH - Path:
/chat/messages/bookmarks - Tags: Chat Messages
Adds a bookmark to a message or removes the bookmark from a message.
Scopes: chat_message:write
Granular Scopes: team_chat:update:bookmark
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
action(required)string, possible values:"add_bookmark", "remove_bookmark"— This field specifies an action for this request. The value can be one of the following: `add_bookmark`: Add a new bookmark. `remove_bookmark`: Remove an existing bookmark. -
to_channelstring— The channel ID where the message was sent. <br> You must provide this parameter or the `to_contact` parameter in the API request. You can retrieve the channel ID using the [**List user's channels**](https://developers.zoom.us/docs/api/rest/reference/chat/methods/#operation/getChannels) API. -
to_contactobject— The email address, user ID, or member ID of the contact to whom the message was sent. <br>You must provide either a `to_contact` or `to_channel` parameter in the API request.
Example:
{
"action": "add_bookmark",
"to_channel": "825c9e31f1064c73b394c5e4557d3447",
"to_contact": "[email protected]"
}
Responses
Status: 204 **HTTP Status Code:** `204` Bookmark added/removed successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> <br> Must provide either $to_contact or $to_channel parameter. <br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $to_contact or $userId. <br> **Error Code:** `4130` <br> Channel does not exist: $to_channel. <br> **Error Code:** `5401` <br> Message does not exist: $messageId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List scheduled messages
- Method:
GET - Path:
/chat/messages/schedule - Tags: Chat Messages
Returns a list of scheduled messages.
Scopes: chat_message:read,chat_message:write
Granular Scopes: team_chat:read:list_scheduled_messages
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:**`200` List of scheduled messages.
Content-Type: application/json
-
messages(required)array— The scheduled messages.Items:
-
create_date(required)string, format:date-time— The date when the draft was created. -
draft_id(required)string— The draft ID. -
message(required)string— The message content. -
scheduled_time(required)string, format:date-time— The date when will send the message. -
at_itemsarrayItems:
-
at_contact(required)string— The contact's user ID. This field will be empty if the user ID does not belong to the same account as the current user. -
at_contact_member_id(required)string— The member ID of the contact. This field is returned if the value of `at_type` field is set to 1. -
at_type(required)integer, possible values:1, 2— The type of mention. `1`: Contact. * `2`: Channel. -
end_position(required)integer— The end position of the mention. Example message: "@Shrijana How are you?" In this case, the end position of the mention "@Shrijana" is 8. Hence, the value of this field will be 8. -
start_position(required)integer— The start position of the mention("@") in the message string. For example if you want to include the mention at the beginning of the message, the value for this field will be 0. Example message: "@Shrijana How are you?"
-
-
download_urlstring— The file's download URL. -
file_idstring— The file's ID. -
file_namestring— The file's name. -
file_sizeinteger— The file size. -
filesarray— The information about the chat file.Items:
-
download_url(required)string— The chat file's download URL. -
file_id(required)string— The chat file's unique ID. -
file_name(required)string— The chat file's name and extension. -
file_size(required)integer— The chat file's size in bytes.
-
-
reply_main_message_idstring— The unique ID of the main message in the thread. The API only returns this value if the message is a reply message. -
reply_main_message_timestampnumber, format:int64— The timestamp when the main message in the thread was sent. This field only returns if the message is a reply message. -
rich_textarray— The [rich text formatting](https://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages) information.Items:
-
end_position(required)integer— The end position of the rich text. -
format_attr(required)string— The attribute values of a specific `format_type`: 1.`FontSize`: `s` for small, `m` for medium, or `l` for large font sizes. 2.`FontColor` and `BackgroundColor`: only supports RGB values. For example: `FFC0CB` 3.`LeftIndent`: a positive pixel length. 4.`Paragraph`: `h1` for heading 1, `h2` for heading 2, or `h3` for heading 3. 5.`AddLink`: must be a valid URL with an `http` or `https` prefix. For example: `https://example.com` -
format_type(required)string, possible values:"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"— The type of rich text format. -
start_position(required)integer— The start position of the rich text in the message string.
-
-
-
page_size(required)integer— The number of records returned with a single API call. -
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
to_channelstring— The channel's unique identifier. -
to_contactstring— The email address, user ID, or member ID of a chat contact with whom the user communicated.
Example:
{
"to_channel": "qrstuvwxyz67890",
"to_contact": "[email protected]",
"page_size": 10,
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"messages": [
{
"draft_id": "2d712699-62f3-4114-9fbf-29d40664eb09",
"create_date": "2020-02-10T21:39:50Z",
"scheduled_time": "2020-02-10T21:39:50Z",
"download_url": "https://example.com/file/download/xt0aNj_DRtqRn041pIfpSQ?filename=Screenshot%202022-03-01%20at%20144337.png&jwt=eyJhbGciOiJIUzI1NiJ9.eyJkaWciOiJkOTllM2QwMjRjNmFiODNiMTNlNjVjYzM3NjJlYjc4ODMwMDE4YTNjNzNiNjc3ZWE3MzNlZDEzMTgxMTE3MzNkIiwiaXNzIjoiY3Jvc3NmaWxlIiwiYXVkIjoiZmlsZSIsImV4cCI6MTY0NjIwMzQ4MX0.7SF4L-xY-mqXgRD-NCzJOIu5nkuy33eKksif2m75Y38",
"file_id": "XDCDSJNVCDS",
"file_name": "Screenshot 2022-03-01 at 144337.png",
"file_size": 89,
"rich_text": [
{
"start_position": 0,
"end_position": 5,
"format_type": "Paragraph",
"format_attr": "h1"
}
],
"files": [
{
"download_url": "https://zoom.us/file/download/xBvggqyjQUal6TecwMlYwQ?filename=example.jpg&jwt=eyJhbGciOiJIUzI1NiJ9.eyJkaWciOiI3Yzg5YzBhYjIzYmZmMjdjNzE3NTQ4YzdjMTc0Njk3MWYzYjNmNjFjMzU5OTliNjE1ZjdjMWJmMzc5YTJiZThlIiwiYXVkIjoiZmlsZSIsImlzcyI6ImNyb3NzZmlsZSIsImV4cCI6MTY0ODI2NDY5N30.2fQxw3F1cEhvFJmnE2zPOdkHnPeZUktv_P0M--e-Tg8",
"file_id": "xBvggqyjQUal6TecwMlYwQ",
"file_name": "example.jpg",
"file_size": 3966
}
],
"message": "hello!",
"reply_main_message_id": "d3be6ca7-3a0b-44fb-a429-4d6b30ac64a6",
"reply_main_message_timestamp": 1581370790388,
"at_items": [
{
"at_contact": "MO6johaFRIOlYivs3NnyvA",
"at_contact_member_id": "R4aF9Oj0fVM2hhezJTEmSKj0fVM2JTEaF9Oj0fVMj0fF9OF9O",
"at_type": 2,
"end_position": 8,
"start_position": 0
}
]
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter: '$params' <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $to_contact. <br> **Error Code:** `4130` <br> Channel does not exist: $to_channel. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete a scheduled message
- Method:
DELETE - Path:
/chat/messages/schedule/{draftId} - Tags: Chat Messages
Deletes a scheduled message.
Scopes: chat_message:write
Granular Scopes: team_chat:delete:scheduled_message
Rate Limit Label: LIGHT
Responses
Status: 204 **HTTP Status Code:** `204` Delete this schedule message successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5404` <br> Invalid draft id: $draft_id. <br> **Error Code:** `5301` <br> Request to delete the scheduled message failed. <br> **Error Code:** `300` <br> Must provide either to_contact or to_channel parameter. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List user's chat messages
- Method:
GET - Path:
/chat/users/{userId}/messages - Tags: Chat Messages
Returns a list of chat messages and shared files between a user and an individual contact, or a chat channel. For user-level apps, pass the me value instead of the userId parameter.
Note: For an account-level OAuth app, this API can only be used on behalf of a user assigned to a role with the Edit permission for Chat Messages.
Scopes: chat_message:read,chat_message:write,chat_message:read:admin,chat_message:write:admin
Granular Scopes: team_chat:read:list_user_messages,team_chat:read:list_user_messages:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:**`200` The list of chat messages returned.
Content-Type: application/json
-
datestring, format:date— The date to query. -
fromstring, format:date-time— The queried start date. The API only returns this value if you call the `from` query parameter. -
messagesarray— The information about the received messages and files.Items:
-
at_itemsarrayItems:
-
at_contactstring— The contact's user ID. This field is empty if the contact does not belong to the same account as the current user. -
at_contact_member_idstring— The contact's member ID. -
at_typeinteger, possible values:1, 2— The type of mention. `1`: Contact. * `2`: Channel. -
end_positioninteger— The end position of the mention. Example message: "@Shrijana How are you?" In this case, the end position of the mention "@Shrijana" is 8. Hence, the value of this field is 8. -
start_positioninteger— The start position of the mention("@") in the message string. For example if you want to include the mention at the beginning of the message, the value for this field is 0. Example message: "@Shrijana How are you?"
-
-
bot_messageobject— The chatbot's message in JSON format. For more information, read the [Chatbots: Send, Edit, and Delete Messages](https://marketplace.zoom.us/docs/guides/chatbots/send-edit-and-delete-messages) documentation. -
date_timestring, format:date-time— The date and time when the message was sent. -
download_urlstring— The first file's download URL. -
file_idstring— The first file's unique ID. -
file_namestring— The first file's name. -
file_sizeinteger— The first file's size, in bytes. -
filesarray— The information about all the chat files (if there are multiple files).Items:
-
download_urlstring— The chat file's download URL. -
file_idstring— The chat file's unique ID. -
file_namestring— The chat file's name and file extension. -
file_sizeinteger— The chat file's size, in bytes.
-
-
idstring— The message ID, which is the message's unique identifier. -
interactive_cardsarray— The information about the chat interactive card.Items:
-
card_idstring— The chat interactive card's unique ID. -
card_jsonstring— The JSON string for the interactive card.
-
-
messagestring— The message content. -
message_typestring, possible values:"plain_text_message", "jpg_image_file", "audio_file", "video_file", "png_image_file", "gif_file", "giphy_file", "code_snippet", "file_and_text", "others"— The common type of messages that indicates which type of file to include. plain_text_message. jpg_image_file. audio_file. video_file. png_image_file. gif_file. giphy_file. code_snippet. file_and_text. others. -
reactionsarray— A list of emoji reactions.Items:
-
emojistring— The emoji's unicode value, in `UTF-32` format. -
sendersarray— Users that reacted to this message with this emoji.Items:
-
member_idstring— The user member ID that reacted to this message with this emoji. -
user_idstring— This field is the user ID from the same account that reacted to this message with this emoji. It omits the user ID who is not from the same account.
-
-
total_countinteger— The emoji's total usage count.
-
-
reply_main_message_idstring— The unique identifier of a reply. This field returns if the message is a reply message. -
reply_main_message_timestampinteger, format:int64— The timestamp of when the reply message was sent. This field returns if the message is a reply message. -
rich_textarray— The [rich text formatting](https://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages) information.Items:
-
end_positioninteger— The end position of the rich text. -
format_attrstring— The attribute values of a specific `format_type`: 1.`FontSize`: `s` for small, `m` for medium, or `l` for large font sizes. 2.`FontColor` and `BackgroundColor`: only supports RGB values. For example: `FFC0CB` 3.`LeftIndent`: a positive pixel length. 4.`Paragraph`: `h1` for heading 1, `h2` for heading 2, or `h3` for heading 3. 5.`AddLink`: must be a valid URL with an `http` or `https` prefix. For example: `https://example.com` -
format_typestring, possible values:"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"— The type of rich text format. -
start_positioninteger— The start position of the rich text in the message string.
-
-
send_member_idstring— The message sender's member ID. -
senderstring— The message sender's email address. If the sender does not belong to the same account as the current user or is not the current user's contact, this field is empty. -
sender_display_namestring— The message sender's display name. -
statusstring, possible values:"Deleted", "Edited", "Normal"— This field indicates whether a message is an original message(unedited), an edited message, or a deleted message. This field only returns if you set the value of `for include_deleted_and_edited_message` query parameter to `true`. -
timestampinteger, format:int64— The timestamp of the message.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger, default:10— The number of records returned within a single API call. -
tostring, format:date-time— The queried end date. The API only returns this value if you call the `to` query parameter.
Example:
{
"date": "2020-03-01",
"from": "2020-02-10T21:39:50Z",
"messages": [
{
"bot_message": {},
"date_time": "2020-02-10T21:39:50Z",
"files": [
{
"download_url": "https://zoom.us/file/download/xBvggqyjQUal6TecwMlYwQ?filename=example.jpg&jwt=eyJhbGciOiJIUzI1NiJ9.eyJkaWciOiI3Yzg5YzBhYjIzYmZmMjdjNzE3NTQ4YzdjMTc0Njk3MWYzYjNmNjFjMzU5OTliNjE1ZjdjMWJmMzc5YTJiZThlIiwiYXVkIjoiZmlsZSIsImlzcyI6ImNyb3NzZmlsZSIsImV4cCI6MTY0ODI2NDY5N30.2fQxw3F1cEhvFJmnE2zPOdkHnPeZUktv_P0M--e-Tg8",
"file_id": "xBvggqyjQUal6TecwMlYwQ",
"file_name": "example.jpg",
"file_size": 3966
}
],
"rich_text": [
{
"start_position": 0,
"end_position": 5,
"format_type": "Paragraph",
"format_attr": "h1"
}
],
"download_url": "https://zoom.us/file/download/xBvggqyjQUal6TecwMlYwQ?filename=example.jpg&jwt=eyJhbGciOiJIUzI1NiJ9.eyJkaWciOiI3Yzg5YzBhYjIzYmZmMjdjNzE3NTQ4YzdjMTc0Njk3MWYzYjNmNjFjMzU5OTliNjE1ZjdjMWJmMzc5YTJiZThlIiwiYXVkIjoiZmlsZSIsImlzcyI6ImNyb3NzZmlsZSIsImV4cCI6MTY0ODI2NDY5N30.2fQxw3F1cEhvFJmnE2zPOdkHnPeZUktv_P0M--e-Tg8",
"file_id": "xBvggqyjQUal6TecwMlYwQ",
"file_name": "example.jpg",
"file_size": 3966,
"id": "EAB58B01-B35F-4F97-BA69-F9650F54679A",
"message": "hello, world!",
"message_type": "code_snippet",
"reactions": [
{
"emoji": "U+1F600",
"total_count": 1,
"senders": [
{
"user_id": "v4iyWT1LTfy8QvPG4GTvdg",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
}
]
}
],
"reply_main_message_id": "27ED2949-6457-417C-83EA-72515DAF00BD",
"reply_main_message_timestamp": 1581370790388,
"sender": "[email protected]",
"send_member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"sender_display_name": "Tom",
"status": "Edited",
"timestamp": 1581370790388,
"at_items": [
{
"at_contact": "v4iyWT1LTfy8QvPG4GTvdg",
"at_contact_member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"at_type": 2,
"end_position": 8,
"start_position": 0
}
],
"interactive_cards": [
{
"card_id": "xBvggqyjQUal6TecwMlYwQ",
"card_json": "{ \"content\": { \"settings\": { \"default_sidebar_color\": \"#0E72ED\", \"is_split_sidebar\": false } } }"
}
]
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 10,
"to": "2020-04-01T21:39:50Z"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to access this user's chat messages.<br> <br> **Error Code:** `300` <br> The next page token is invalid or expired.<br> <br> **Error Code:** `300` <br> Must provide either contact or channel parameter.<br> <br> **Error Code:** `300` <br> Only provide past chat messages in recent 6 months.<br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $to_contact.<br> <br> **Error Code:** `4130` <br> Channel does not exist: $to_channel. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Send a chat message
- Method:
POST - Path:
/chat/users/{userId}/messages - Tags: Chat Messages
Sends chat messages to a user in your contact list or to a channel of which you are a member.
For user-level apps, pass the me value instead of the userId parameter.
- To send a message to a contact, provide the contact's email address in the
to_contactfield. - To send a message to a channel, provide the channel's ID in the
to_channelparameter.
Scopes: chat_message:write,chat_message:write:admin
Granular Scopes: team_chat:write:user_message,team_chat:write:user_message:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
message(required)string— The message to be sent. -
at_itemsarray— The [chat mentions](https://support.zoom.us/hc/en-us/articles/360037567431-Using-chat-mentions-and-slash-commands) object. Use this object to include mentions in the message that will be sent to a channel.Items:
-
at_contactobject— This field is required if the value of `at_type` field is set to 1. -
at_typeinteger, possible values:1, 2— The type of mention. You can use one of the following values: * `1`: Mention a contact. * `2`: Mention "all" to notify everyone in the channel. -
end_positioninteger— The end position of the mention. Example message: "@Shrijana How are you?" In this case, the end position of the mention "@Shrijana" is 8. Hence, the value of this field will be 8. -
start_positioninteger— The start position of the mention("@") in the message string. For example if you want to include the mention at the beginning of the message, the value for this field will be 0. Example message: "@Shrijana How are you?"
-
-
file_idsarray— A list of the file IDs to send. This field only accepts a maximum of six file IDs.Items:
string -
interactive_cardsarray— A list of the interactive card to send. The app calling this API must be the app to which the card belongs, otherwise the card cannot be sent. This field only accepts a maximum of five interactive cards to send.Items:
-
card_jsonstring— The JSON string for the interactive card. Only successfully created cards will be sent. Failure to create a card will result in message delivery failure.
-
-
reply_main_message_idstring— The unique ID of the main message in the thread. This field is required if the message is a reply message. -
rich_textarray— The [rich text formatting](https://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages) object. Use this object to include rich text in the message that will be sent. Use `\n` as newline char.Items:
-
end_positioninteger— The end position of the rich text. Example message: "Hello" In this case, we only want to bold the first character and its end position is 1. Hence, the value of this field will be 1. -
format_attrstring— This field is required if the value of the `format_type` field is listed below: 1.`FontSize` value: `s` for small, `m` for medium, or `l` for large font size. 2.`FontColor` and `BackgroundColor` value: only supports RGB value. For example: `FFC0CB` 3.`LeftIndent` value: a positive pixel length. 4.`Paragraph` value: `h1` for Heading 1, `h2` for Heading 2, or `h3` for Heading 3. 5.`AddLink` value: must be a valid URL, with an `http` or `https` prefix. For example: `https://example.com` -
format_typestring, possible values:"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"— The type of rich text. There is some special logic which is the same as on the Zoom client. 1. `AddLink`'s position can not cross multi lines. 2. A `BulletedList` will clear the formatting of a `NumberedList`, `Quote`, or `LeftIndent` after it. 3. Likewise, a `NumberedList` will clear the formatting of a `BulletedList`, `Quote`, or `LeftIndent` after it. 4. Only `AddLink`, `NumberedList` and `BulletedList` can apply to a message which already applied a `Quote`. 5. A `Quote` will clear the formatting of all styles after it except `AddLink`, `NumberedList`, `BulletedList`, or `Italic`. 6. An `AddLink` will clear the formatting of `BackgroundColor`, `FontColor`, or `Underline` after it. 7. `BackgroundColor`, `FontColor` and `Underline` can not apply to a message which already applied `AddLink`. 8. `BulletedList`, `NumberedList`, `LeftIndent`, `Paragraph`, and `Quote` will automatically expand to apply to the whole line. -
start_positioninteger— The start position of the rich text in the message string. For example if you want to bold the first character at the beginning of the message, the value for this field will be 0. Example message: "Hello"
-
-
scheduled_timestring, format:date-time— The scheduled time to send the message in yyyy-MM-dd'T'HH:mm:ss'Z' format. It must be more than 30 minutes from now and within 180 days. -
to_channelstring— The channel ID of the channel where you would like to send a message. Channel Message Rate Limits: • Within 1 second: up to 10 messages allowed; exceeded requests will be blocked for 10 seconds • Within 10 seconds: up to 30 messages allowed; exceeded requests will be blocked for 30 seconds • Within 100 seconds: up to 60 messages allowed; exceeded requests will be blocked for 60 seconds • Within 1000 seconds: up to 450 messages allowed; exceeded requests will be blocked for 300 seconds If any time window limit is exceeded, message sending for the Channel is temporarily blocked. Message sending automatically resumes after the block period ends. -
to_contactobject— The email address, user ID, or member ID of the person you wish to send a message.
Example:
{
"at_items": [
{
"at_contact": "[email protected]",
"at_type": 2,
"end_position": 8,
"start_position": 0
}
],
"rich_text": [
{
"start_position": 0,
"end_position": 1,
"format_type": "Paragraph",
"format_attr": "h1"
}
],
"message": "Hello",
"file_ids": [
"M87v-bbmRGKCtl8nGNggvA"
],
"reply_main_message_id": "{27ED2949-6457-417C-83EA-72515DAF00BD}",
"to_channel": "825c9e31f1064c73b394c5e4557d3447",
"to_contact": "[email protected]",
"interactive_cards": [
{
"card_json": "{ \"content\": { \"settings\": { \"default_sidebar_color\": \"#0E72ED\", \"is_split_sidebar\": false } } }"
}
],
"scheduled_time": "2020-02-10T21:39:50Z"
}
Responses
Status: 201 **Status Code:** `201` Message sent.
Content-Type: application/json
-
idstring— The unique identifier of the message or draft. If the `scheduled_time` is not empty, then it's the draft ID.
Example:
{
"id": "8cfaf567-bf5a-4acc-b4f2-88b3d371aca5"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Message sending failed.<br> <br> **Error Code:** `5402` <br> This only supports replies to a main message.<br> <br> **Error Code:** `5403` <br> Account settings do not allow files to be sent. <br> **Error Code:** `300` <br> Invalid parameter: send_time. The time requirement is more than 30 minutes from now and within 180 days. <br> **Error Code:** `5405` <br> Failed to create interactive card. <br> **Error Code:** `5418` <br> The user can not chat with others. <br> **Error Code:** `5419` <br> Can not send message to an E2E channel. <br> **Error Code:** `5420` <br> Can not send message to an archived channel. <br> **Error Code:** `5421` <br> Can not send message to a blocked contact. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $to_contact.<br> <br> **Error Code:** `4130` <br> Channel does not exist: $to_channel.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get a message
- Method:
GET - Path:
/chat/users/{userId}/messages/{messageId} - Tags: Chat Messages
Returns a chat message previously sent to a contact or a channel. For user-level apps, pass the me value instead of the userId parameter.
You must provide one of the following query parameters:
to_contact— The email address of the Zoom contact to whom you sent the message.to_channel— The ID of the Zoom channel where you sent the message.
Scopes: chat_message:read,chat_message:read:admin,chat_message:write,chat_message:write:admin
Granular Scopes: team_chat:read:user_message,team_chat:read:user_message:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Message successfully returned.
Content-Type: application/json
-
at_itemsarrayItems:
-
at_contactstring— The contact's user ID. This field will be empty if the user ID does not belong to the same account as the current user. -
at_contact_member_idstring— The member ID of the contact. This field is returned if the value of `at_type` field is set to 1. -
at_typeinteger, possible values:1, 2— The type of mention. `1`: Contact. * `2`: Channel. -
end_positioninteger— The end position of the mention. Example message: "@Shrijana How are you?" In this case, the end position of the mention "@Shrijana" is 8. Hence, the value of this field will be 8. -
start_positioninteger— The start position of the mention("@") in the message string. For example if you want to include the mention at the beginning of the message, the value for this field will be 0. Example message: "@Shrijana How are you?"
-
-
bot_messageobject— The chatbot's message in JSON format. For more information, see [Send, edit, and delete messages](https://developers.zoom.us/docs/team-chat-apps/send-edit-and-delete-messages/) in the *Team Chat apps* documentation. -
date_timestring, format:date-time— The date and time when the message was sent. -
download_urlstring— The file's download URL. -
file_idstring— The file's ID. -
file_namestring— The file's name. -
file_sizeinteger— The file size. -
filesarray— The information about the chat file.Items:
-
download_urlstring— The chat file's download URL. -
file_idstring— The chat file's unique ID. -
file_namestring— The chat file's name and extension. -
file_sizeinteger— The chat file's size in bytes.
-
-
idstring— The message ID. -
interactive_cardsarray— The information about the chat interactive card.Items:
-
card_idstring— The chat interactive card's unique ID. -
card_jsonstring— The JSON string for the interactive card.
-
-
messagestring— The message content. -
message_typestring, possible values:"plain_text_message", "jpg_image_file", "audio_file", "video_file", "png_image_file", "gif_file", "giphy_file", "code_snippet", "file_and_text", "others"— The common type of messages that indicates which type of file to include. plain_text_message. jpg_image_file. audio_file. video_file. png_image_file. gif_file. giphy_file. code_snippet. file_and_text. others. -
message_urlstring— The URL of the message. -
reactionsarray— A list of emoji reactions.Items:
-
emojistring— The emoji's unicode value in `UTF-32` format. -
member_idsarray— A list of user member IDs that replied to this message with this emoji.Items:
string -
total_countinteger— The emoji's total usage count. -
user_idsarray— A list of user IDs from the same account, that replied to this message with this emoji. user IDs of those who are not from the same account will be omitted from the list.Items:
string
-
-
reply_main_message_idstring— The unique ID of the main message in the thread. The API only returns this value if the message is a reply message. -
reply_main_message_timestampinteger, format:int64— The timestamp when the main message in the thread was sent. This field only returns if the message is a reply message. -
rich_textarray— The [rich text formatting](https://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages) information.Items:
-
end_positioninteger— The end position of the rich text. -
format_attrstring— The attribute values of a specific `format_type`: 1.`FontSize`: `s` for small, `m` for medium, or `l` for large font sizes. 2.`FontColor` and `BackgroundColor`: only supports RGB values. For example: `FFC0CB` 3.`LeftIndent`: a positive pixel length. 4.`Paragraph`: `h1` for heading 1, `h2` for heading 2, or `h3` for heading 3. 5.`AddLink`: must be a valid URL with an `http` or `https` prefix. For example: `https://example.com` -
format_typestring, possible values:"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"— The type of rich text format. -
start_positioninteger— The start position of the rich text in the message string.
-
-
send_member_idstring— The message sender's member ID. -
senderstring— The message sender's email address. If the sender does not belong to the same account as the current user or is not the current user's contact, this field is empty. -
sender_display_namestring— The message sender's display name. -
timestampinteger, format:int64— The message's timestamp.
Example:
{
"bot_message": {},
"date_time": "2020-02-10T21:39:50Z",
"download_url": "https://example.com/file/download/xt0aNj_DRtqRn041pIfpSQ?filename=Screenshot%202022-03-01%20at%20144337.png&jwt=eyJhbGciOiJIUzI1NiJ9.eyJkaWciOiJkOTllM2QwMjRjNmFiODNiMTNlNjVjYzM3NjJlYjc4ODMwMDE4YTNjNzNiNjc3ZWE3MzNlZDEzMTgxMTE3MzNkIiwiaXNzIjoiY3Jvc3NmaWxlIiwiYXVkIjoiZmlsZSIsImV4cCI6MTY0NjIwMzQ4MX0.7SF4L-xY-mqXgRD-NCzJOIu5nkuy33eKksif2m75Y38",
"file_id": "XDCDSJNVCDS",
"file_name": "Screenshot 2022-03-01 at 144337.png",
"file_size": 89,
"rich_text": [
{
"start_position": 0,
"end_position": 5,
"format_type": "Paragraph",
"format_attr": "h1"
}
],
"files": [
{
"download_url": "https://zoom.us/file/download/xBvggqyjQUal6TecwMlYwQ?filename=example.jpg&jwt=eyJhbGciOiJIUzI1NiJ9.eyJkaWciOiI3Yzg5YzBhYjIzYmZmMjdjNzE3NTQ4YzdjMTc0Njk3MWYzYjNmNjFjMzU5OTliNjE1ZjdjMWJmMzc5YTJiZThlIiwiYXVkIjoiZmlsZSIsImlzcyI6ImNyb3NzZmlsZSIsImV4cCI6MTY0ODI2NDY5N30.2fQxw3F1cEhvFJmnE2zPOdkHnPeZUktv_P0M--e-Tg8",
"file_id": "xBvggqyjQUal6TecwMlYwQ",
"file_name": "example.jpg",
"file_size": 3966
}
],
"id": "6dfgdfgdg444447b0egga",
"message": "Hello.",
"message_type": "code_snippet",
"reactions": [
{
"emoji": "U+1F600",
"total_count": 1,
"user_ids": [
"v4iyWT1LTfy8QvPG4GTvdg"
],
"member_ids": [
"R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
]
}
],
"reply_main_message_id": "DE159sdhmf---dasfC7EBFE73",
"reply_main_message_timestamp": 1581370790388,
"sender": "[email protected]",
"send_member_id": "v4iyWT1LTfy8QvPG4GTvdgLTfy8QvG4GTWT1LTfy8QvPG4vPG4",
"sender_display_name": "Tom",
"timestamp": 1581370790388,
"message_url": "https://zoom.us/launch/chat/v2/eyJtaWQiOiI3NTkyNTY3RS1DQjA2LTQ1MDYtQjA5NC1FNDdGMTU0OUQzNkMiLCJzaWQi",
"at_items": [
{
"at_contact": "MO6johaFRIOlYivs3NnyvA",
"at_contact_member_id": "R4aF9Oj0fVM2hhezJTEmSKj0fVM2JTEaF9Oj0fVMj0fF9OF9O",
"at_type": 2,
"end_position": 8,
"start_position": 0
}
],
"interactive_cards": [
{
"card_id": "xBvggqyjQUal6TecwMlYwQ",
"card_json": "{ \"content\": { \"settings\": { \"default_sidebar_color\": \"#0E72ED\", \"is_split_sidebar\": false } } }"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> * The provided "to_contact" or "to_channel" parameter is invalid. <br> **Error Code:** `300` <br> * Channel does not exist: $messageId * Must provide either "contact" or "channel" parameter. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $to_contact <br> **Error Code:** `4130` <br> Channel does not exist: $to_channel <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Update a message
- Method:
PUT - Path:
/chat/users/{userId}/messages/{messageId} - Tags: Chat Messages
Edits a chat message that you previously sent to either a contact or a channel in Zoom.
It provides the ID of the message as the value of the messageId parameter. You can get the ID from the List User's Chat Messages API. Additionally, as a query parameter, you must provide either the contact's email address of the contact or the Channel ID of the channel where the message was sent.
For user-level apps, pass the me value instead of the userId parameter.
Note: For an account-level OAuth app, you can only use this API on behalf of a user who is assigned with a role that has the Edit permission for Chat Messages.
Scopes: chat_message:write,chat_message:write:admin
Granular Scopes: team_chat:update:user_message,team_chat:update:user_message:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
file_idsarray— A list of the file IDs to update. This field only accepts a maximum of six file IDs. If this field is empty, the files in the message will be cleared.Items:
string -
interactive_cardsarray— A list of the interactive cards to update. The app calling this API must be the app to which the card belongs, otherwise the card cannot be created. This field only accepts a maximum of five interactive cards. If this field is empty, the interactive card in the message will be cleared.Items:
One of:
-
card_idstring— The chat interactive card's unique ID. This ID only supports the `card_id` from the original message and cannot be used across different messages.
-
card_jsonstring— The JSON string for the interactive card. Only successfully created cards will be sent. Failure to create a card will result in message delivery failure.
-
-
messagestring— The edited message. -
to_channelstring— The channel ID where you sent the message. You must provide either this parameter or the `to_contact` parameter in the API request. -
to_contactobject— The email address, user ID, or member ID of the contact to whom the message was sent. You must provide either this parameter or the `to_channel` parameter in the API request.
Example:
{
"message": "Hello there.",
"to_channel": "825c9e31f1064c73b394c5e4557d3447",
"to_contact": "[email protected]",
"file_ids": [
"M87v-bbmRGKCtl8nGNggvA"
],
"interactive_cards": [
{
"card_id": "xBvggqyjQUal6TecwMlYwQ"
}
]
}
Responses
Status: 204 **HTTP Status Code:** `204` Message updated successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Only the sender of this message can make updates.<br> <br> **Error Code:** `300` <br> Message does not exist: $messageId. <br> Must provide either contact or channel parameter.<br> <br> **Error Code:** `300` <br> A plain text message that is sent without any files is not allowed to update with the file. <br> **Error Code:** `5404` <br> File does not exist: $file_ids. <br> **Error Code:** `5045` <br> Failed to create interactive card. <br> **Error Code:** `5046` <br> Interactive Cards does not exist: `$interactive_cards.card_id`. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $to_contact.<br> <br> **Error Code:** `4130` <br> Channel does not exist: $to_channel.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete a message
- Method:
DELETE - Path:
/chat/users/{userId}/messages/{messageId} - Tags: Chat Messages
Deletes a chat message previously sent to a contact or a channel. For user-level apps, pass the me value instead of the userId parameter.
For an account-level OAuth app, this API can only be used on behalf of a user who is assigned with a role that has the Edit permission for Chat Messages.
Scopes: chat_message:write,chat_message:write:admin
Granular Scopes: team_chat:delete:user_message,team_chat:delete:user_message:admin
Rate Limit Label: Medium
Responses
Status: 204 **HTTP Status Code:** `204` Message deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> * The contact or the channel parameter provided is invalid. * Only the sender of this message can make updates. **Error Code:** `300` <br> * Channel does not exist: $messageId * You must provide the "to_contact" or the "to_channel" query parameter.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $to_contact **Error Code:** `4130` <br> Channel does not exist: $to_channel
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
React to a chat message
- Method:
PATCH - Path:
/chat/users/{userId}/messages/{messageId}/emoji_reactions - Tags: Chat Messages
Adds or removes an emoji to a chat message.
For an account-level OAuth app, this API can only be used on behalf of a user who is assigned with a role that has the Edit permission for Chat Messages.
Scopes: chat_message:write,chat_message:write:admin
Granular Scopes: team_chat:update:message_emoji,team_chat:update:message_emoji:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
actionstring, possible values:"add", "remove"— The action to perform with the message: * `add` — Add an emoji reaction. * `remove` — Remove an emoji reaction. -
custom_emojiboolean— If set to true, you will need to provide the `custom_emoji_id` field. -
custom_emoji_idstring— The custom emoji file's ID where you react the message. To get a custom emoji ID, use the [**List custom emojis**](https://developers.zoom.us/docs/api/team-chat/#tag/chat-emoji/GET/chat/emoji) API. -
emojistring— The emoji's unicode value, in `UTF-32` format. For more information, read the [Emojipedia](https://emojipedia.org/emoji-modifier-sequence/) documentation. -
to_channelstring— The channel's ID where you sent the message. You must provide either the `to_contact` or the `to_channel` parameter in the API request. To get a channel's ID, use the [**List user's channels**](/docs/api-reference/chat/methods#operation/getChannels) API. -
to_contactobject— The email address or user ID or member ID of the contact to whom the message was sent. You must provide either the `to_contact` or the `to_channel` parameter in the API request. To get a channel's ID, use the [**List user's channels**](/docs/api-reference/chat/methods#operation/getChannels) API.
Example:
{
"action": "remove",
"emoji": "U+1F600",
"to_channel": "825c9e31f1064c73b394c5e4557d3447",
"to_contact": "[email protected]",
"custom_emoji": false,
"custom_emoji_id": "mvaVolafRwSU2-9ag2b8pA"
}
Responses
Status: 204 **HTTP Status Code:** `204` Message reacted successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Message does not exist: $messageId <br> Must provide either contact or channel parameter. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $to_contact.<br> <br> **Error Code:** `4130` <br> Channel does not exist: $to_channel. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Mark message read or unread
- Method:
PATCH - Path:
/chat/users/{userId}/messages/{messageId}/status - Tags: Chat Messages
Marks a chat message as read or unread. For user-level apps, pass the me value instead of the userId parameter.
Note:
For an account-level OAuth app, this API can only be used on behalf of a user assigned to a role with the "Edit" permission for Chat Messages.
Scopes: chat_message:write,chat_message:write:admin
Granular Scopes: team_chat:update:message_status,team_chat:update:message_status:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
actionstring, possible values:"read", "unread"— The values include `read` or `unread`. -
timestampinteger— The marking message's timestamp. -
to_channelstring— The channel ID of the channel where you sent the message. You must provide either a `to_contact` or `to_channel` parameter in the API request. You can retrieve the Channel ID using the [**List user's channels**](/docs/api-reference/chat/methods#operation/getChannels) API. -
to_contactobject— The email address or user ID or member ID of the contact to whom the message was sent. You must provide either a `to_contact` or `to_channel` parameter in the API request.
Example:
{
"action": "read",
"timestamp": 1581370790388,
"to_channel": "825c9e31f1064c73b394c5e4557d3447",
"to_contact": "[email protected]"
}
Responses
Status: 204 **HTTP Status Code:** `204` Message marked successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Message does not exist: $messageId <br> Must provide either contact or channel parameter. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $to_contact.<br> <br> **Error Code:** `4130` <br> Channel does not exist: $to_channel. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Retrieve a thread
- Method:
GET - Path:
/chat/users/{userId}/messages/{messageId}/thread - Tags: Chat Messages
Retrieves all messages under a thread. For user-level apps, pass the me value instead of the userId parameter.
Scopes: chat_message:read,chat_message:read:admin
Granular Scopes: team_chat:read:thread_message,team_chat:read:thread_message:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 The results of the retrieved information.
Content-Type: application/json
-
total(required)integer— The total number of replies. -
messagesarray— The message's array.Items:
-
is_reply(required)boolean— This message is a main message or a reply. -
message(required)string— The message content. -
msg_id(required)string— The unique ID of the message. -
timestamp(required)integer, format:int64— The timestamp of this message. -
at_itemsarray— The @ (at) itemsItems:
-
at_contactstring— The contact's user ID. This field is empty if the contact does not belong to the same account as the current user. -
at_contact_member_idstring— The contact's member ID. -
at_typeinteger, possible values:1, 2— The type of mention. `1`: Contact. * `2`: Channel. -
end_positioninteger— The end position of the mention. Example message: "@Shrijana How are you?" In this case, the end position of the mention "@Shrijana" is 8. Hence, the value of this field is 8. -
start_positioninteger— The start position of the mention("@") in the message string. For example if you want to include the mention at the beginning of the message, the value for this field is 0. Example message: "@Shrijana How are you?"
-
-
bot_messageobject— The chatbot's message in JSON format. For more information, see [Send, edit, and delete messages](https://developers.zoom.us/docs/team-chat-apps/send-edit-and-delete-messages/) in the *Team Chat apps* documentation. -
filesarray— The file's array.Items:
-
download_urlstring— The file's download URL. -
file_idstring— The file's unique ID. -
file_namestring— The file's name and file extension. -
file_sizeinteger— The file's size in bytes.
-
-
interactive_cardsarray— The information about the chat interactive card.Items:
-
card_idstring— The chat interactive card's unique ID. -
card_jsonstring— The JSON string for the interactive card.
-
-
is_followedboolean— Whether the user has followed this main message. This field only exists when the message is a main message -
last_reply_timeinteger, format:int64— The last reply's timestamp. This field only exists when the message is a main message. -
message_typestring, possible values:"plain_text_message", "jpg_image_file", "audio_file", "video_file", "png_image_file", "gif_file", "giphy_file", "code_snippet", "file_and_text", "others"— The common type of messages that indicates which type of file to include. plain_text_message. jpg_image_file. audio_file. video_file. png_image_file. gif_file. giphy_file. code_snippet. file_and_text. others. -
reactionsarray— A list of emoji reactions.Items:
-
countinteger— The number of this emoji. -
emoji_idstring— The emoji's unicode value in UTF-32 format. -
is_senderboolean— Whether the user has sent this emoji.
-
-
rich_textarray— The [rich text formatting](https://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages) information.Items:
-
end_positioninteger— The end position of the rich text. -
format_attrstring— The attribute values of a specific `format_type`: 1.`FontSize`: `s` for small, `m` for medium, or `l` for large font sizes. 2.`FontColor` and `BackgroundColor`: only supports RGB values. For example: `FFC0CB` 3.`LeftIndent`: a positive pixel length. 4.`Paragraph`: `h1` for heading 1, `h2` for heading 2, or `h3` for heading 3. 5.`AddLink`: must be a valid URL with an `http` or `https` prefix. For example: `https://example.com` -
format_typestring, possible values:"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"— The type of rich text format. -
start_positioninteger— The start position of the rich text in the message string.
-
-
sender_display_namestring— The message sender's display name. -
sender_emailstring— The message sender's email address. This field is empty if the sender does not belong to the same account as the current user or is not the current user's contact. -
sender_member_idstring— The message sender's member ID. -
sender_user_idstring— The message sender's user ID. This field is empty if the sender does not belong to the same account as the current user or is not the current user's contact.
-
Example:
{
"total": 5,
"messages": [
{
"msg_id": "{90111042-D5E4-7BB5-0F91-B0C9879A30B4}",
"message": "Hello",
"is_reply": true,
"timestamp": 1705051497817,
"reactions": [
{
"emoji_id": "U+1F600",
"count": 2,
"is_sender": true
}
],
"last_reply_time": 1705051497817,
"is_followed": true,
"files": [
{
"file_id": "yXvggqyjCUal6TecwMlYwQ",
"file_name": "example.jpg",
"file_size": 3988,
"download_url": "https://example.com/file/download/xBvggvyjQUal6TecwMlYwQ?filename=example.jpg&jwt=eyJhbGciOiJIUzI1NiJ9.eyJkaWciOiI3Yzg5YzBhYjIzYmZmMjdjNzE3NTQ4YzdjMTc0Njk3MWYzYjNmNjFjMzU5OTliNjE1ZjdjMWJmMzc5YTJiZThlIiwiYXVkIjoiZmlsZSIsImlzcyI6ImNyb3NzZmlsZSIsImV4cCI6MTY0ODI2NDY5N30.2fQxw3F1cEhvFJmnE2zPOdkHnbeZUktv_P0M--e-Tg8"
}
],
"sender_user_id": "6dfgdfgdg444447b0egga",
"sender_email": "[email protected]",
"sender_member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"sender_display_name": "Tom",
"rich_text": [
{
"start_position": 0,
"end_position": 5,
"format_type": "Paragraph",
"format_attr": "h1"
}
],
"at_items": [
{
"at_contact": "v4iyWT1LTfy8QvPG4GTvdg",
"at_contact_member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"at_type": 2,
"end_position": 8,
"start_position": 0
}
],
"bot_message": {},
"interactive_cards": [
{
"card_id": "xBvggqyjQUal6TecwMlYwQ",
"card_json": "{ \"content\": { \"settings\": { \"default_sidebar_color\": \"#0E72ED\", \"is_split_sidebar\": false } } }"
}
],
"message_type": "code_snippet"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4231` <br> The 'limit' cannot exceed 100. <br> **Error Code:** `4232` <br> The `sort` can only be passed `asc` or `desc`. <br> **Error Code:** `4233` <br> The `from` cannot be blank. <br> **Error Code:** `4234` <br> The `to_channel` cannot be blank. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> Authenticated user has not permitted access to the targeted resource. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Channel does not exist: $to_channel. <br> **Error Code:** `1001` <br> User does not exist: $userId. <br> **Error Code:** `4131` <br> Message does not exist: $messageId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Migrate channel members
- Method:
POST - Path:
/chat/migration/channels/{channelId}/members - Tags: Chat Migration
Adds a maximum of 20 members to a migrated chat channel.
Note: The use of this endpoint is locked. We make it available upon request on a case by case basis. To unlock this endpoint, contact Zoom Support.
Scopes: chat_migration:write:admin
Granular Scopes: team_chat:write:migrate_channel_members:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
members(required)array— The members to be added to the migrated channel.Items:
-
identifier(required)string— The user ID, member ID, or email of the member. -
rolestring, possible values:"member", "admin", default:"member"— The role of the channel member or admin
-
Example:
{
"members": [
{
"identifier": "qwwHGx5jSU2E1X46SLfGoA",
"role": "admin"
}
]
}
Responses
Status: 204 **HTTP Status Code**: `204` **No Content** Members are added to the migrated channel.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to add members to the migrated channel failed. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `7010` <br> Missing Authorization header. * Invalid Authorization token. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access this channel. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Migrate chat message reactions
- Method:
POST - Path:
/chat/migration/emoji_reactions - Tags: Chat Migration
Adds emoji reactions to a migrated chat message.
Note: The use of this endpoint is locked. We make it available upon request on a case by case basis. To unlock this endpoint, contact Zoom Support.
Scopes: chat_migration:write:admin
Granular Scopes: team_chat:write:migrate_chat_message_reactions:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
reactions(required)array— You can migrate up to five different user's emojis at a time.Items:
-
emojis(required)array— The property list of emojis. A list of users' emoji reactions to the message.Items:
-
emoji(required)string— The UTF-32 format emoji reaction value. -
user_identifier(required)array— The users who set emoji reactions.Items:
string— The user ID, member ID, or email of the user who sets the emoji reactions.
-
-
message_id(required)string, format:int64— The message ID to which the reaction is being added. -
message_timestamp(required)integer, format:int64— The timestamp of migrated messages on which emoji reactions are added. -
to_channelstring— The channel's ID where you sent the message. You must provide either the `to_contact` or the `to_channel` parameter in the API request. To get a channel's ID, use the [**List user's channels**](/docs/api-reference/chat/methods#operation/getChannels) API. -
to_contactobject— The email address, user ID, or member ID of the contact to whom the message was sent. You must provide either the `to_contact` or the `to_channel` parameter in the API request. To get a channel's ID, use the [**List user's channels**](/docs/api-reference/chat/methods#operation/getChannels) API.
-
Example:
{
"reactions": [
{
"message_id": "1679113305154",
"message_timestamp": 1679113305154,
"to_channel": "825c9e31f1064c73b394c5e4557d3447",
"to_contact": "[email protected]",
"emojis": [
{
"emoji": "+U1F400",
"user_identifier": [
"649ad5f12f804cfea7dd7b1c1bb4c337"
]
}
]
}
]
}
Responses
Status: 204 **HTTP Status Code**: `204` **No Content** Emoji reactions have been successfully added.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to add emoji reactions failed. <br> **Error Code:** `5401` <br> Message does not exist: $message_timestamp. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `7010` <br> Missing Authorization header. * Invalid Authorization token. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access this channel or contact. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId. <br> **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get migrated Zoom channel IDs
- Method:
GET - Path:
/chat/migration/mappings/channels - Tags: Chat Migration
Returns Zoom channel IDs by their corresponding migrated channel IDs. Currently, the API only returns mappings for conversations migrated with the Team Chat Migration app.
Scopes: chat_migration:read:admin
Granular Scopes: team_chat:read:migrated_channels:admin
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Responses
Status: 200 **Status Code**: `200` Zoom Channel mappings returned
Content-Type: application/json
-
mappingsarray— The array of mapping objects.Items:
-
origin_channel_idstring— The provided origin channel ID. -
zm_channel_idstring— The corresponding Zoom channel ID.
-
-
mappings_foundinteger— The amount of channel mappings found. -
mappings_not_foundinteger— The amount of channel mappings not found.
Example:
{
"mappings_found": 15,
"mappings_not_found": 5,
"mappings": [
{
"origin_channel_id": "C04JDD2C6TE",
"zm_channel_id": "8fec3fee90c3454ea5ad6be26f9b88f8"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission to access Team Chat Channels.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5801` <br> Migrated team ID does not exist. <br> **Error Code:** `1001` <br> User does not exist: $identifier. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Get migrated Zoom user IDs
- Method:
GET - Path:
/chat/migration/mappings/users - Tags: Chat Migration
Returns Zoom user IDs by their corresponding migrated user IDs. Currently, the API only returns mappings for users migrated with the Team Chat Migration app.
Scopes: chat_migration:read:admin
Granular Scopes: team_chat:read:migrated_users:admin
Rate Limit Label: LIGHT
Responses
Status: 200 **Status Code**: `200` Zoom user mappings returned
Content-Type: application/json
-
mappingsarray— The array of mapping objects.Items:
-
origin_user_idstring— The provided origin user ID. -
zm_user_idstring— The corresponding Zoom user ID.
-
-
mappings_foundinteger— The amount of user mappings found. -
mappings_not_foundinteger— The amount of user mappings not found.
Example:
{
"mappings_found": 15,
"mappings_not_found": 5,
"mappings": [
{
"origin_user_id": "U04JDD2C6TE",
"zm_user_id": "mXzBVHPhSlKFoIk5NJOamA"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission to access Team Chat users.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $identifier. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Migrate chat messages
- Method:
POST - Path:
/chat/migration/messages - Tags: Chat Migration
Adds a maximum of 20 messages to migrated 1:1 conversations or channels.
Note: The use of this endpoint is locked. We make it available upon request on a case by case basis. To unlock this endpoint, contact Zoom Support.
Scopes: chat_migration:write:admin
Granular Scopes: team_chat:write:migrate_chat_messages:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
messages(required)array— The messages to be migrated. You can migrate up to 20 messages at a time.Items:
-
message(required)string— The message content. -
message_timestamp(required)integer, format:int64— The message timestamp is the number of milliseconds that have elapsed since January 1, 1970 (midnight UTC), not counting leap seconds. **Warning**: It must be unique per chat session. -
sender(required)string— The user ID, member ID, or email address of the message sender. -
file_idsarray— A list of the file IDs to send. This field only accepts a maximum of six file IDs. (`fileId` must be the sender who upload the file.)Items:
string -
reply_main_message_idstring— The unique ID of the main message in the thread. This field is required if the message is a reply message without the parent message in the same API call. -
reply_main_message_timestampinteger, format:int64— The time (epoch time in milliseconds) at which the first or main message in the thread was originally sent. This field will be used to map when sending a parent message and thread message at the same API call. -
to_channelstring— The channel ID of the channel where you would like to send a message. -
to_contactobject— The email address, user ID, or member ID of the person you wish to send a message.
-
Example:
{
"messages": [
{
"message_timestamp": 1709830520000,
"sender": "649ad5f12f804cfea7dd7b1c1bb4c337",
"to_channel": "825c9e31f1064c73b394c5e4557d3447",
"to_contact": "[email protected]",
"message": "Hello",
"file_ids": [
"M87v-bbmRGKCtl8nGNggvA"
],
"reply_main_message_id": "27ED2949-6457-417C-83EA-72515DAF00BD",
"reply_main_message_timestamp": 1709312120000
}
]
}
Responses
Status: 201 **Status Code:** `201` Message sent.
Content-Type: application/json
-
idsarray— A list of unique identifiers of the `message_id`.Items:
string— The unique identifier of the message.
Example:
{
"ids": [
"8cfaf567-bf5a-4acc-b4f2-88b3d371aca5"
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to add messages failed. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `7010` <br> Missing Authorization header. * Invalid Authorization token. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access this channel or contact. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist. <br> **Error Code:** `4130` <br> Channel does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Migrate a chat channel
- Method:
POST - Path:
/chat/migration/users/{identifier}/channels - Tags: Chat Migration
Migrates a chat channel.
Note: The use of this endpoint is locked. We make it available upon request on a case by case basis. To unlock this endpoint, contact Zoom Support.
Scopes: chat_migration:write:admin
Granular Scopes: team_chat:write:migrate_a_chat_channel:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
created_time(required)string, format:date-time— The creation date and time of the migrated channel. -
members(required)array— The list of members of the channel being migrated. The maximum number of members is 20. The channel owner should not be included.Items:
-
identifier(required)string— The user ID, member ID, or email of the channel member. -
rolestring, possible values:"admin", "member", default:"member"— The role of the channel member: `admin` or `member`.
-
-
name(required)string— The name of the channel being migrated. -
type(required)integer, possible values:2, 3, 4— The type of the channel being migrated. 2: Private channel. Members belong to a Zoom account. Members in this channel should be invited and be from the same organization. 3: Public channel. Anyone can search for this channel and join the channel. 4: Group chat. An instant channel that can be created by adding members to a new chat.
Example:
{
"members": [
{
"identifier": "xyzHGx5jSU2E1X46SLfBbq",
"role": "admin"
}
],
"type": 2,
"name": "Developers",
"created_time": "2023-02-13T15:23:14.541Z"
}
Responses
Status: 201 **Status Code**: `201` **Created** The chat channel has been successfully migrated.
Content-Type: application/json
-
id(required)string— The channel's unique identifier.
Example:
{
"id": "649ad5f12f804cfea7dd7b1c1bb4c337"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to migrate a channel failed. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `7010` <br> Missing Authorization header. * Invalid Authorization token. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access this channel. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $identifier. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Migrate 1:1 conversation or channel operations
- Method:
POST - Path:
/chat/migration/users/{identifier}/events - Tags: Chat Migration
Performs operations on migrated 1:1 conversations or channels. For now, the only supported operation is to star 1:1 conversations or channels.
Note: By default, the use of this endpoint is locked. We make it available upon request on a case by case basis. To unlock this endpoint, contact Zoom Support.
Scopes: chat_migration:write:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
method(required)string, possible values:"star"— The operation method to perform. Currently the only supported operation method is `star`. * `star` — Star the chat sessions. -
params(required)array— The list of chat sessions on which operations to be performed. Currently you can only list one session.Items:
-
target_id(required)string— The chat channel's ID, the contact user's ID, the contact user's member ID, or the contact user's email. -
target_type(required)string, possible values:"channel", "contact"— The type of operation. * `channel` — Perform operations on a channel. When using `channel`, the `target_id` refers to chat channel's ID. * `contact` — Perform operations on a contact. When using `contact`, the `target_id` refers to the contact user's ID, member ID or email.
-
Example:
{
"method": "star",
"params": [
{
"target_id": "825c9e31f1064c73b394c5e4557d3447",
"target_type": "channel"
}
]
}
Responses
Status: 204 **HTTP Status Code**: `204` **No Content** Sessions have been successfully starred.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to star sessions failed. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `7010` <br> Missing Authorization header. * Invalid Authorization token. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access this channel. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $identifier. <br> **Error Code:** `4130` <br> Channel does not exist: $channelId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Create a reminder message
- Method:
POST - Path:
/chat/messages/{messageId}/reminder - Tags: Chat Reminder
Creates a reminder for a person or a chat channel.
You must provide one of the following query parameters: to_contact — The email address of the Zoom contact to whom you want to set the reminder. to_channel — The ID of the Zoom channel where you set the reminder.
Scopes: chat_message:write
Granular Scopes: team_chat:write:reminder
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
delay_secondsinteger— This field enables you to delay a notification reminder by seconds. For example, if the user calls this API to add a reminder at 2024-01-15T09:28:30Z , and the `delay_seconds` is set as 300 seconds, then the user will receive the notification at 2024-01-15T09:33:30Z. Only one parameter needs to be passed in `remind_time` and `delay_seconds`. -
remind_timestring, format:date-time— The message reminder time in yyyy-MM-dd'T'HH:mm:ss'Z' format to remind the user. It should be greater than the current time, and no later than 90 days later. Only one parameter needs to be passed in `remind_time` and `delay_seconds`. -
reminder_notestring— The note of the reminder. -
to_channelstring— The ID of the Zoom channel where you set the reminder. -
to_contactstring— The email address of the Zoom contact to whom you set the reminder.
Example:
{
"to_contact": "[email protected]",
"to_channel": "cd102f7602c6428db0a273e632eb020B",
"remind_time": "2024-02-10T21:39:50Z",
"delay_seconds": 1800,
"reminder_note": "Reminder Note"
}
Responses
Status: 204 **HTTP Status Code:** `204` <br> Created successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4100` <br> The provided `to_contact` or `to_channel` parameter is invalid. <br> **Error Code:** `4101` <br> `delay_seconds` can only be between 300 and 7776000. <br> **Error Code:** `4102` <br> One parameter from `to_contact` and `to_channel` must be passed. <br> **Error Code:** `4103` <br> One parameter from `remind_time` and `delay_seconds` must be passed. <br> **Error Code:** `4104` <br> `messageId` cannot be blank. <br> **Error Code:** `4105` <br> `remind_time` should be greater than the current time, and the latest is 90 days later. <br> **Error Code:** `4106` <br> The `remind_time` must follow the format: yyyy-MM-dd'T'HH:mm:ss'Z'. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4200` <br> Message does not exist: $messageId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete a reminder for a message
- Method:
DELETE - Path:
/chat/messages/{messageId}/reminder - Tags: Chat Reminder
Deletes a reminder. You must provide one of the following query parameters:
to_contact— The email address of the Zoom contact that you want to delete the reminder.to_channel— The ID of the Zoom channel where you want to delete the reminder.
Scopes: chat_message:write
Granular Scopes: team_chat:delete:reminder
Rate Limit Label: LIGHT
Responses
Status: 204 **HTTP Status Code:** `204` <br> Request successful.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4100` <br> The provided "to_contact" or "to_channel" parameter is invalid. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4200` <br> Message does not exist: $messageId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List reminders
- Method:
GET - Path:
/chat/reminder - Tags: Chat Reminder
Returns a list reminders for a person or a chat channel.
Scopes: chat_message:read
Granular Scopes: team_chat:read:list_reminders
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:**`200` The list of reminders returned.
Content-Type: application/json
-
next_page_token(required)string— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. When querying to the last page, next_page_token will be "". -
reminders(required)array— The reminder list.Items:
-
content(required)string— The content of the message to be reminded. -
create_time(required)string, format:date-time— The time when the reminder was created. -
message_id(required)string— The unique ID of the message. -
message_timestamp(required)integer, format:int64— The timestamp of the message. -
remind_time(required)string, format:date-time— The reminder's notification time. -
reminder_note(required)string— The note of the reminder. -
main_message_idstring— The unique ID of the main message. This field will only be returned if the message is not the main message. -
main_message_timestampinteger, format:int64— The timestamp of the main message. This field will only be returned if the message is not the main message.
-
Example:
{
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"reminders": [
{
"reminder_note": "Hello",
"content": "Good",
"message_timestamp": 1707182642932,
"create_time": "2024-02-10T21:39:50Z",
"remind_time": "2024-02-10T21:39:50Z",
"message_id": "8cfaf567-bf5a-4acc-b4f2-88b3d371aca5",
"main_message_id": "8cfaf567-bf5a-4acc-b4f2-88b3d371aca5",
"main_message_timestamp": 1707182642932
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4100` <br> The provided "to_contact" or "to_channel" parameter is invalid. <br> **Error Code:** `4101` <br> The `page_size` parameter is illegal. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Star or unstar a channel or contact user
- Method:
PATCH - Path:
/chat/users/{userId}/events - Tags: Chat Sessions
Stars or unstars a contact or channel user. For user-level apps, pass the me value instead of the userId parameter.
Scopes: chat_event:write:admin,chat_event:write
Granular Scopes: team_chat:update:chat_control,team_chat:update:chat_control:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
method(required)string, possible values:"star", "unstar"— The method to perform: * `star` — Star the contact or channel. * `unstar` — Unstar the contact or channel. -
params(required)object-
target_id(required)string— The chat channel's ID, the contact user's ID, or the channel member's member ID. -
target_type(required)string, possible values:"channel", "contact"— The type of operation. * `channel` — Perform operations on a channel. When using `channel`, the `target_id` refers to chat channel's ID. * `contact` — Perform operations on a contact. When using `contact`, the `target_id` refers to the contact user's ID or the contact user's member ID.
-
Example:
{
"method": "star",
"params": {
"target_id": "825c9e31f1064c73b394c5e4557d3447",
"target_type": "channel"
}
}
Responses
Status: 204 **HTTP Status Code:** `204` Star/Unstar executed successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Unauthorized request. You do not have permission to access this user's channel information. <br> <br> **Error Code:** `5301` <br> Star/Unstar execution failed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Channel does not exist: $target_id. <br> <br> **Error Code:** `1001` <br> User does not exist: $target_id or $userId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List a user's chat sessions
- Method:
GET - Path:
/chat/users/{userId}/sessions - Tags: Chat Sessions
Retrieves a user's chat sessions. For user-level apps, pass the me value instead of the userId parameter.
Note: For an account-level OAuth app, you can only use this API on behalf of a user who is assigned a role that has the View or Edit permission for Chat Messages.
Scopes: chat_message:read,chat_message:read:admin
Granular Scopes: team_chat:read:list_user_sessions,team_chat:read:list_user_sessions:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:**`200` The list of chat sessions returned.
Content-Type: application/json
One of:
-
from(required)string, format:date-time— The queried start date. -
next_page_token(required)string— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_size(required)integer— The number of records returned within a single API call. -
sessions(required)array— The information about the user's chat sessions.Items:
-
last_message_sent_time(required)string, format:date-time— The date and time when the last message was sent in the session. -
name(required)string— The name of the session if the chat session type is `groupchat`. It can also be the peer contact email address if the chat session type is `1:1`. -
type(required)string— The chat session type: `groupchat` or `1:1`. -
channel_idstring— The channel ID of the chat session if the chat session type is `groupchat`. -
peer_contact_emailstring, format:email— The email address of the peer contact of the conversation if the chat session type is `1:1`. -
peer_contact_member_idstring— The member ID of the peer contact of the conversation if the chat session type is `1:1`. -
peer_contact_user_idstring— The user ID of the peer contact of the conversation if the chat session type is `1:1`.<br> If the user ID does not belong to the same account as the current user, this field is empty.
-
-
to(required)string, format:date-time— The queried end date.
-
next_page_token(required)string— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_size(required)integer— The number of records returned within a single API call. -
sessions(required)array— The information about the user's starred chat sessions.Items:
-
name(required)string— The name of the session if the chat session type is `groupchat`. It's also the peer contact email address if the chat session type is `1:1`. -
type(required)string— The chat session type: `groupchat` or `1:1`. -
channel_idstring— The channel ID of the chat session if the chat session type is `groupchat`. -
peer_contact_emailstring, format:email— The email address of the peer contact of the conversation if the chat session type is `1:1`. -
peer_contact_member_idstring— The member ID of the peer contact of the conversation if the chat session type is `1:1`. -
peer_contact_user_idstring— The user ID of the peer contact of the conversation if the chat session type is `1:1`.<br> If the user ID does not belong to the same account as the current user, this field is empty.
-
Example:
{
"from": "2020-02-10T21:39:50Z",
"to": "2020-02-11T21:39:50Z",
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 10,
"sessions": [
{
"channel_id": "ayxzxi9ttyau5lskqorl1w3rtl1y5ssri",
"last_message_sent_time": "2022-09-10T21:39:50Z",
"name": "xBvggqyjQUal6TecwMlYwQ",
"type": "1:1",
"peer_contact_email": "[email protected]",
"peer_contact_user_id": "v4iyWT1LTfy8QvPG4GTvdg",
"peer_contact_member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is invalid or expired.<br> <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to access this user's chat sessions.<br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId.<br> Unknown session type. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List user's contacts
- Method:
GET - Path:
/chat/users/me/contacts - Tags: Contacts
Lists all the contacts of a Zoom user. Zoom categorizes contacts into company contacts and external contacts. You must specify the contact type in the type query parameter. If you do not specify, by default, the type is set as company contact. A user under an organization's Zoom account has internal users listed under company contacts in the Zoom Client. A Zoom user can also add another Zoom user as a contact.
Note: This API only supports user-managed OAuth app.
Scopes: chat_contact:read
Granular Scopes: team_chat:read:list_contacts
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` List of user's contacts returned.
Content-Type: application/json
-
contactsarray— The contacts object.Items:
-
emailstring, format:email— Contact's email address. -
first_namestring— Contact's first name. -
idstring— The contact's user ID. If the user ID does not belong to the same account as the current user, this field will be empty. -
last_namestring— Contact's last name. -
member_idstring— The contact's member ID.
-
-
next_page_tokenstring— The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger, default:10— The number of records returned with a single API call.
Example:
{
"contacts": [
{
"email": "[email protected]",
"first_name": "Jill",
"id": "v4iyWT1LTfy8QvPG4GTvdg",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"last_name": "Chill"
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 10
}
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get user's contact details
- Method:
GET - Path:
/chat/users/me/contacts/{identifier} - Tags: Contacts
Returns information on a specific contact of the Zoom user.
A user under an organization's Zoom account has internal users listed under Company Contacts in the Zoom Client.
A Zoom user can also add another Zoom user as a contact.
Note: This API only supports user-managed OAuth app.
Scopes: chat_contact:read
Granular Scopes: team_chat:read:contact
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Contact information returned.
Content-Type: application/json
-
direct_numbersarray— A list of direct numbers assigned to the contact.Items:
string -
emailstring, format:email— The contact's email address. -
extension_numberstring— The extension number of the contact. -
first_namestring— The contact's first name -
idstring— The contact's user ID. If the user ID does not belong to the same account as the current user, this field will be empty. -
last_namestring— The contact's last name. -
member_idstring— The contact's member ID. -
phone_numberstring— The phone number of the contact. -
phone_numbersarrayItems:
-
codestring— The phone number's country code. For example, the country code for phone numbers in the United States is `+1`. -
countrystring— The phone number's [country ID](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). For example, if the phone number provided in the `number` field is a Brazil-based number, the value is `BR`. -
labelstring, possible values:"Mobile", "Office", "Home", "Fax"— The phone number's label: * `Mobile` * `Office` * `Home` * `Fax` -
numberstring— The user's phone number. -
verifiedboolean— Whether Zoom has verified the phone number.
-
-
presence_statusstring, possible values:"Do_Not_Disturb", "Away", "Available", "Offline", "In_A_Meeting", "In_A_Call", "In_A_Calendar_Event", "Presenting", "Out_of_Office", "Busy"— The contact's presence status in the Zoom Chat client. The status can be one of the following: `Do_Not_Disturb` `Away` `Available` `Offline` `In_A_Meeting` `In_A_Call` `In_A_Calendar_Event` `Presenting` `Out_of_Office` `Busy`
Example:
{
"direct_numbers": [
"111111"
],
"email": "[email protected]",
"extension_number": "31",
"first_name": "Jill",
"id": "v4iyWT1LTfy8QvPG4GTvdg",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"last_name": "Chill",
"phone_number": "5550100",
"phone_numbers": [
{
"code": "+1",
"country": "US",
"label": "Mobile",
"number": "5550100",
"verified": true
}
],
"presence_status": "Available"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to get the presence status of the chat contact failed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $contactId <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Search company contacts
- Method:
GET - Path:
/contacts - Tags: Contacts
A user under an organization's Zoom account has internal users listed under Company Contacts in the Zoom Client. Use this API to search users that are in the company contacts of a Zoom account. Using the search_key query parameter, provide either first name, last name or the email address of the user that you would like to search for. Optionally, set query_presence_status to true in order to include the presence status of a contact.
Scopes: contact:read:admin,contact:read
Granular Scopes: contact:read:list_contacts,contact:read:list_contacts:admin
Rate Limit Label: Medium
Responses
Status: 200 **HTTP Status Code:** `200` Contact returned successfully.
Content-Type: application/json
-
contactsarrayItems:
-
activitystring, possible values:"Active", "Inactive", "Unknown"— The contact's activity status in Zoom client. This field only returns if the `contact_types` field is `4` (call queue): * `Active` * `Inactive` * `Unknown` -
contact_typeinteger, possible values:1, 2, 3, 4, 5, 6, 7, 8— The user's contact type: * `1` — A Zoom user. * `2` — An auto receptionist. * `3` — A common area phone. * `4` — A call queue. * `5` — A shared line group. * `6` — A shared global directory. * `7` — A shared office contact. * `8` — A ZOOM Room. -
deptstring— Department of the contact as provided in the user's Zoom profile. -
direct_numbersarray— Direct Number(s) of a user who has Zoom Phone license assigned.Items:
string -
display_namestring— The contact's display name. -
emailstring— Email address of the contact. -
extension_numberstring— Extension Number of a user who has Zoom Phone license assigned. -
first_namestring— First name of the contact. -
idstring— The contact's user ID. If the user ID does not belong to the same account as the current user, this field will be empty. -
im_group_idstring— Unique Identifier of the [IM directory group](https://support.zoom.us/hc/en-us/articles/203749815-IM-Management) in which the user has been added. An IM Directory group is not the same as a channel. IM Directory allows administrators to assign users in their account to groups that display within the Contacts list on Zoom clients. -
im_group_namestring— Name of the [IM directory group](https://support.zoom.us/hc/en-us/articles/203749815-IM-Management) in which the user has been added. An IM Directory group is not the same as a channel. IM Directory allows administrators to assign users in their account to groups that display within the Contacts list on Zoom clients. -
job_titlestring— Department of the user as provided in the user's Zoom profile. -
last_namestring— Last name of the contact. -
locationstring— Location of the user as provided in the user's Zoom profile. -
member_idstring— Member ID of the contact. -
phone_numberstring— Phone number of the user. -
phone_numbersarrayItems:
-
codestring— The phone number's country code. For example, for United States phone numbers, this will be a `+1` value. -
countrystring— The phone number's [country ID](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). For example, if the phone number provided in the `number` field is a Brazil-based number, this will be the `BR` value. -
labelstring, possible values:"Mobile", "Office", "Home", "Fax"— The phone number's label: * `Mobile` * `Office` * `Home` * `Fax` -
numberstring— The user's phone number. -
verifiedboolean— Whether Zoom has verified the phone number.
-
-
presence_statusstring, possible values:"Do_Not_Disturb", "Away", "Available", "Offline"— Presence status of the contact in Zoom Client. The value of this field can be one of the following: `Do_Not_Disturb` `away` `Available` `Offline` -
sip_phone_numberstring— SIP Phone number of the user. Returned only if user has SIP phone enabled. -
sip_uristring— The contact's SIP (Session Initiation Protocol) URI. -
user_statusstring, possible values:"active", "inactive"— The user's status: * `active` — An active user. * `inactive` — A deactivated user. This field only returns if the `contact_types` field is `1` (Zoom user)
-
-
next_page_tokenstring— The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger— The number of records returned with a single API call. Default value is `1`.
Example:
{
"contacts": [
{
"contact_type": 1,
"dept": "Developer",
"direct_numbers": [
"+1111111"
],
"email": "[email protected]",
"extension_number": "31",
"display_name": "Jill Chill",
"first_name": "Jill",
"id": "v4iyWT1LTfy8QvPG4GTvdg",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"im_group_id": "8jUIm-825c9e31f1064c73b394c5e4557d3447",
"im_group_name": "Developers",
"job_title": "Developer",
"last_name": "Chill",
"location": "San Jose",
"phone_number": "5550100",
"phone_numbers": [
{
"code": "+1",
"country": "US",
"label": "Mobile",
"number": "5550100",
"verified": true
}
],
"presence_status": "Available",
"user_status": "active",
"activity": "Active",
"sip_phone_number": "11111111",
"sip_uri": "example.com"
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 10
}
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Send IM messages
- Method:
POST - Path:
/im/users/me/chat/messages - Tags: IM Chat
Sends the chat message to a user.
Note: This API only supports OAuth 2.0.
Scopes: imchat:write
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
messagestring— The IM message content.
Example:
{
"message": "hello, world!"
}
Responses
Status: 201 **HTTP Status Code:** `201` Message Sent.
Content-Type: application/json
-
idstring, format:uuid— The IM message UUID.
Example:
{
"id": "7caca3b3-5156-4496-9ec4-7f92e3ca83f2"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter: channel/chat_user. <br> **Error Code:** `5301` <br> Message sending failed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List IM directory groups
- Method:
GET - Path:
/im/groups - Tags: IM Groups
Lists IM directory groups.
Scopes: imgroup:read:admin,imgroup:write:admin
Granular Scopes: contact_group:read:list_groups:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` List of groups returned.
Content-Type: application/json
All of:
-
total_recordsinteger— The total number of records returned.
-
groupsarray— The list of group objects.Items:
All of:
-
idstring— The IM group ID.
All of:
-
namestring— The group name. -
total_membersinteger— The total number of members in this group.
-
search_by_accountboolean— The members can search for others under same account. -
search_by_domainboolean— The members can search for others in the same email domain. -
search_by_ma_accountboolean— The members can search for others under same master account - including all sub accounts. -
typestring, possible values:"normal", "shared", "restricted", default:"normal"— The IM group types: `normal` - Only members can see the other members in the group. Other people can search for members in the group. `shared` - Everyone in the account can see the group and members. `restricted` - No one except group members can see the group or search for other group members.
-
Example:
{
"total_records": 200,
"groups": [
{
"id": "MIuNMURBTkuwfZ20jteRJg",
"name": "Developers",
"total_members": 200,
"search_by_account": true,
"search_by_domain": true,
"search_by_ma_account": true,
"type": "normal"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Only available for Paid account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> IM group does not exist: {groupId}. <br>
Status: 410 **HTTP Status Code:** `410` <br> Gone **Error Code:** `4137` <br> The IM Group APIs are no longer available. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Create an IM directory group
- Method:
POST - Path:
/im/groups - Tags: IM Groups
Create an IM directory group under your account.
Scopes: imgroup:write:admin
Granular Scopes: contact_group:write:group:admin
Rate Limit Label: Light
Request Body
Content-Type: application/json
-
namestring— Group name: must be unique to one account. -
search_by_accountboolean— Members can search for others under same account. -
search_by_domainboolean— Members can search for others in the same email domain. -
search_by_ma_accountboolean— Members can search for others under same master account, including all sub accounts. -
typestring, possible values:"normal", "shared", "restricted", default:"normal"— IM Group types: `normal` - Only members can see automatically see the other members of this group. Other people can search for members within this group. `shared` - Everyone under an account can see the group members automatically. `restricted` - Nobody can see the group or search for members except the members in the group.
Example:
{
"name": "Developers",
"search_by_account": true,
"search_by_domain": true,
"search_by_ma_account": true,
"type": "normal"
}
Responses
Status: 200 **Error Code:** `200` Only available for paid account:{accountId}.
Status: 201 **HTTP Status Code:** `201` IM Group created.
Content-Type: application/json
-
idstring— Group ID. -
namestring— Group name. -
search_by_accountboolean— Members can search for others under same account. -
search_by_domainboolean— Members can search for others in the same email domain. -
search_by_ma_accountboolean— Members can search for others under same master account, including all sub accounts. -
total_membersinteger— Group member count.
Example:
{
"id": "MIuNMURBTkuwfZ20jteRJg",
"name": "Developers",
"search_by_account": true,
"search_by_domain": true,
"search_by_ma_account": true,
"total_members": 200
}
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Group does not exist:{groupId}.
Status: 409 **HTTP Status Code:** `409` <br> Conflict **Error Code:** `4132` <br> Group name {groupName} is already in use.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Retrieve an IM directory group
- Method:
GET - Path:
/im/groups/{groupId} - Tags: IM Groups
Retrieves an IM directory group under your account.
Scopes: imgroup:read:admin
Scopes: imgroup:read:admin,imgroup:write:admin
Granular Scopes: contact_group:read:group:admin
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:** `200` IM group object returned.
Content-Type: application/json
All of:
-
idstring— The group ID.
All of:
-
namestring— The group name. -
total_membersinteger— The total number of members in this group.
-
search_by_accountboolean— Members can search for others under same account. -
search_by_domainboolean— Members can search for others in the same email domain. -
search_by_ma_accountboolean— Members can search for others under same master account - including all sub accounts. -
typestring, possible values:"normal", "shared", "restricted", default:"normal"— IM Group types: `normal` - Only members can see the other members in the group. Other people can search for members in the group. `shared` - Everyone in the account can see the group and members. `restricted` - No one except group members can see the group or search for other group members.
Example:
{
"id": "MIuNMURBTkuwfZ20jteRJg",
"name": "Developers",
"total_members": 200,
"search_by_account": true,
"search_by_domain": true,
"search_by_ma_account": true,
"type": "normal"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Only available for Paid account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> IM group does not exist: :{groupId}. <br>
Status: 410 **HTTP Status Code:** `410` <br> Gone **Error Code:** `4137` <br> The IM Group APIs are no longer available. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete an IM directory group
- Method:
DELETE - Path:
/im/groups/{groupId} - Tags: IM Groups
Deletes an IM directory group under your account.
Scopes: imgroup:write:admin
Scopes: imgroup:write:admin
Granular Scopes: contact_group:delete:group:admin
Rate Limit Label: LIGHT
Responses
Status: 204 **HTTP Status Code:** `204` IM group deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Only available for Paid account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> IM group does not exist: {groupId}. <br>
Status: 410 **HTTP Status Code:** `410` <br> Gone **Error Code:** `4137` <br> The IM Group APIs are no longer available. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Update an IM directory group
- Method:
PATCH - Path:
/im/groups/{groupId} - Tags: IM Groups
Updates an IM directory group under your account.
Scopes: imgroup:write:admin
Granular Scopes: contact_group:update:group:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
namestring— The group name. It must be unique to one account. -
search_by_accountboolean— Members can search for others under same account. -
search_by_domainboolean— Members can search for others in the same email domain. -
search_by_ma_accountboolean— Members can search for others under same master account, including all sub accounts. -
typestring, possible values:"normal", "shared", "restricted"— IM Group types: `normal` - Only group members can automatically see others in their group. Other people can search for members in the group. `shared` - Everyone under the account can see the group and members automatically. `restricted` - Nobody can see the group or search for members except for the members in the group.
Example:
{
"name": "Developers",
"search_by_account": true,
"search_by_domain": true,
"search_by_ma_account": true,
"type": "normal"
}
Responses
Status: 204 **HTTP Status Code:** `204` IM group updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Only available for Paid account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> IM group does not exist: {groupId}. <br>
Status: 410 **HTTP Status Code:** `410` <br> Gone **Error Code:** `4137` <br> The IM Group APIs are no longer available. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List IM directory group members
- Method:
GET - Path:
/im/groups/{groupId}/members - Tags: IM Groups
Lists the members of an IM directory group.
Scopes: imgroup:read:admin,imgroup:write:admin
Granular Scopes: contact_group:read:list_members:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` IM group member list returned. **Error Code:** `200` Only available for paid account:{accountId}.
Content-Type: application/json
All of:
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_countinteger— The number of pages returned for the request made. -
page_numberinteger, default:1— **Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination. -
page_sizeinteger, default:30— The number of records returned with a single API call. -
total_recordsinteger— The total number of all the records available across pages.
-
membersarray— The list of group member objects.Items:
-
emailstring— The user email. -
first_namestring— The user first name. -
idstring— The user ID. -
last_namestring— The last name of the user. -
typeinteger— The ujser type. `1` - Basic `2` - Licensed
-
Example:
{
"next_page_token": "w7587w4eiyfsudgf",
"page_count": 1,
"page_size": 30,
"total_records": 20,
"members": [
{
"email": "[email protected]",
"first_name": "Jill",
"id": "v4iyWT1LTfy8QvPG4GTvdg",
"last_name": "Chill",
"type": 1
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is either invalid or has expired. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Add IM directory group members
- Method:
POST - Path:
/im/groups/{groupId}/members - Tags: IM Groups
Add members to an IM directory group under an account.
Scopes: imgroup:write:admin
Granular Scopes: contact_group:write:member:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
membersarray— List of IM group members.Items:
-
emailstring— User email. If the user ID is given then ignore the user email. -
idstring— User ID.
-
Example:
{
"members": [
{
"email": "[email protected]",
"id": "v4iyWT1LTfy8QvPG4GTvdg"
}
]
}
Responses
Status: 201 **HTTP Status Code:** `201` The member that has been added.
Content-Type: application/json
-
added_atstring, format:date-time -
idsstring
Example:
{
"added_at": "2022-03-25T03:08:12Z",
"ids": "v4iyWT1LTfy8QvPG4GTvdg"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Only available for Paid account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete IM directory group member
- Method:
DELETE - Path:
/im/groups/{groupId}/members/{memberId} - Tags: IM Groups
Delete a member from an IM directory group under an account.
Scopes: imgroup:write:admin
Scopes: imgroup:write:admin
Granular Scopes: contact_group:delete:member:admin
Rate Limit Label: LIGHT
Responses
Status: 204 **HTTP Status Code:** `204` IM directory group member deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Only available for Paid account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4130` <br> Group does not exist:{groupId}. <br>
Status: 410 **HTTP Status Code:** `410` <br> Gone **Error Code:** `4137` <br> The IM Group APIs are no longer available. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Send new contact invitation
- Method:
POST - Path:
/chat/users/{userId}/invitations - Tags: Invitations
Sends a new contact invitation. For user-level apps, pass the me value instead of the userId parameter.
Scopes: chat_contact:write,chat_contact:write:admin
Granular Scopes: team_chat:write:contact_information:admin,team_chat:write:contact_information
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
email(required)string, format:email— The invitee's email. -
messagestring— The message body. (Optional)
Example:
{
"email": "[email protected]",
"message": "Hello, how are you!"
}
Responses
Status: 204 Successfully send new contact invitation.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid email format
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission to add new contact
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List legal hold matters
- Method:
GET - Path:
/chat/legalhold/matters - Tags: Legal Hold
Returns a list of legal hold matters.
Scopes: chat_history_legal_hold:read:admin,chat_history_legal_hold:write:admin
Granular Scopes: team_chat:read:list_legal_hold_matters:admin
Rate Limit Label: RESOURCE-INTENSIVE
Responses
Status: 200 **HTTP Status Code:** `200` Legal hold list returned.
Content-Type: application/json
-
legal_hold_matters(required)array— The legal hold matters.Items:
-
matter_creation_date(required)string, format:date— The legal hold matter creation date. -
matter_id(required)string— The legal hold matter's unique identifier. -
matter_name(required)string— The legal hold matter name. -
matter_users(required)array— A list of user in legal hold matter.Items:
-
email(required)string, format:email— The user's email. -
user_id(required)string— The user's ID.
-
-
matter_end_datestring, format:date— The legal hold matter end date. -
matter_start_datestring, format:date— The legal hold matter start date.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger— The number of records returned within a single API call.
Example:
{
"legal_hold_matters": [
{
"matter_id": "28c92682-f4fc-47b0-bceb-14cb839e0279",
"matter_name": "Test17888",
"matter_start_date": "2024-04-01",
"matter_end_date": "2024-04-30",
"matter_creation_date": "2024-05-01",
"matter_users": [
{
"user_id": "649ad5f12f804cfea7dd7b1c1bb4c337",
"email": "[email protected]"
}
]
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 30
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access legal hold <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Add a legal hold matter
- Method:
POST - Path:
/chat/legalhold/matters - Tags: Legal Hold
Adds a new legal hold matter.
Scopes: chat_history_legal_hold:write:admin
Granular Scopes: team_chat:write:legal_hold_matter:admin
Rate Limit Label: RESOURCE-INTENSIVE
Request Body
Content-Type: application/json
-
identifiers(required)array— A list of user's id or user's email for legal hold.Items:
string— The user's id or user's email to be legal check. -
matter_name(required)string— The legal hold matter's name. -
end_datestring, format:date— The legal hold matter's end date. If not defined, the legal hold matter continues. -
start_datestring, format:date— The legal hold matter's start date. If not defined, it considers the start from today.
Example:
{
"start_date": "2024-04-01",
"end_date": "2024-04-30",
"matter_name": "Test17888",
"identifiers": [
"[email protected]"
]
}
Responses
Status: 201 **HTTP Status Code:** `201` Legal hold matter created.
Content-Type: application/json
-
matter_id(required)string— The legal hold matter's unique identifier.
Example:
{
"matter_id": "28c92682-f4fc-47b0-bceb-14cb839e0279"
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access legal hold <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete legal hold matters
- Method:
DELETE - Path:
/chat/legalhold/matters/{matterId} - Tags: Legal Hold
Deletes a legal hold matter.
Scopes: chat_history_legal_hold:write:admin
Granular Scopes: team_chat:delete:legal_hold_matter:admin
Rate Limit Label: LIGHT
Responses
Status: 204 **HTTP Status Code:** `204` Successfully delete the legal hold matters.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access legal hold <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> Legal hold matter does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Update legal hold matter
- Method:
PATCH - Path:
/chat/legalhold/matters/{matterId} - Tags: Legal Hold
Updates the name for a given legal hold matter.
Scopes: chat_history_legal_hold:write:admin
Granular Scopes: team_chat:update:legal_hold_matter:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
matter_name(required)string— The new matter name for legal hold.
Example:
{
"matter_name": "NewTest17888"
}
Responses
Status: 204 **HTTP Status Code:** `204` Successfully updated the legal hold matter.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to access legal hold <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> Legal hold matter does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List legal hold files by given matter
- Method:
GET - Path:
/chat/legalhold/matters/{matterId}/files - Tags: Legal Hold
Returns a list files for given legal hold matter.
Scopes: chat_history_legal_hold:read:admin,chat_history_legal_hold:write:admin
Granular Scopes: team_chat:read:list_legal_hold_matter_files:admin
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:** `200` Legal hold files returned.
Content-Type: application/json
-
data(required)array— A list of zipped legal hold files.Items:
-
file_count(required)integer— The number of files in the current zip file. -
file_end_date(required)string, format:date— The legal hold file's end date. -
file_key(required)string— The file key to download the zip file. -
file_start_date(required)string, format:date— The legal hold file's start date. -
ready_for_download(required)boolean— Whether the legal hold file is ready to download. -
total_file_size(required)integer, format:int64— The total file size, based on byte.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger— The number of records returned within a single API call.
Example:
{
"data": [
{
"file_key": "Zmlyc3QubGFzdEBleGFtcGxlLmNvbS0xNjc5NTg5MjMwNzY4",
"file_count": 1,
"file_start_date": "2024-04-01",
"file_end_date": "2024-04-30",
"ready_for_download": true,
"total_file_size": 540123
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 30
}
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Download legal hold files for given matter
- Method:
GET - Path:
/chat/legalhold/matters/{matterId}/files/download - Tags: Legal Hold
Downloads a zip file.
Scopes: chat_history_legal_hold:read:admin,chat_history_legal_hold:write:admin
Granular Scopes: team_chat:read:legal_hold_matter_file:admin
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:** `200` Legal hold files download as a binary stream.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `403` <br> No permission to download legal hold files <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get chat sessions reports
- Method:
GET - Path:
/report/chat/sessions - Tags: Reports
Returns Zoom Chat session reports for a specified period of time. The monthly date range must be within the last six months.
Prerequisites
- A Pro or higher plan
- Report chat permissions.
Scopes: report_chat:read:admin,imchat:read:admin
Granular Scopes: report:read:list_chat_sessions:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Archived chat sessions returned.
Content-Type: application/json
-
fromstring, format:date— The query's start date. -
next_page_tokenstring— Use the next page token to paginate through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger, default:30— The amount of records returned within a single API call. -
sessionsarray— Information about the chat session.Items:
-
channel_idstring— If the chat session's type is 'Group', this field represents the channel's ID. -
has_external_memberboolean— When chat session is `1:1`, this field determines whether the sender and receiver are external user to each other at the time of the report requested. When the chat session is `Group`, this field determines whether the channel or group chat has external member. -
idstring— The chat session's ID. -
last_message_sent_timestring, format:date-time— The timestamp of the last message sent. -
member_emailsarray— Only shows 1:1 type participants emails. If the session is channel or groupchat, this field won't return as a response.Items:
string, format:email -
namestring— The chat session's name. For a 1:1 session, this field will be empty. Participants will show in `member_emails` field. -
statusstring, possible values:"active", "deleted", default:"active"— The chat session's status. Not appliable for `1:1`. -
typestring, possible values:"Group", "1:1"— The chat session's type. * `Group` - A group chat. * `1:1` - A one-on-one chat.
-
-
tostring, format:date— The query's end date.
Example:
{
"from": "2022-03-01",
"next_page_token": "peU2gkVkRebcqMTzOPnidf0OxlA3WD9Cunrp",
"page_size": 30,
"sessions": [
{
"id": "c38230acb7f009282c1b0d367a08102d65d12629bbcca58dfe2168bd335f5849",
"last_message_sent_time": "2022-03-18T10:16:13Z",
"name": "Channel One",
"type": "1:1",
"channel_id": "7a08102d65d12629bbcca5",
"member_emails": [
"[email protected]",
"[email protected]"
],
"status": "active",
"has_external_member": true
}
],
"to": "2022-03-25"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is either invalid or has expired. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Get chat message reports
- Method:
GET - Path:
/report/chat/sessions/{sessionId} - Tags: Reports
Returns Zoom Chat message reports for a specified period of time. The monthly date range must be within the last six months.
Prerequisites
- A Pro or higher plan
- Report chat permissions
Scopes: report_chat:read:admin,imchat:read:admin
Granular Scopes: report:read:chat_session:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Archived chat messages returned.
Content-Type: application/json
-
deleted_messagesarray— An array containing deleted chat messages information.Items:
-
action_timestampinteger, format:int64— The current message's action time, in milliseconds. -
custom_emoji_reactionsarray— A list of custom emoji reactions.Items:
-
custom_emoji_file_idstring— The custom emoji's file id. -
custom_emoji_namestring— The custom emoji's name. -
member_idsarray— A list of user member IDs that replied to this message with this emoji.Items:
string -
total_countinteger— The emoji's total usage count. -
user_idsarray— A list of user IDs from the same account, that replied to this message with this emoji. user IDs of those who are not from the same account will be omitted from the list.Items:
string
-
-
date_timestring, format:date-time— The timestamp when the chat message was sent. -
filesarray— The information about the chat files.Items:
-
download_urlstring— The URL when to download the chat file. -
file_idstring— The chat file's unique ID. -
file_namestring— The chat file's name and its file extension. -
file_sizeinteger— The chat file's size, in bytes.
-
-
forward_idstring— The forwarded message ID, use to get forwarded message detail info. -
giphy_informationarray— The giphy information in the chat message.Items:
-
giphy_view_urlstring— The view URL of the giphy.
-
-
idstring— The chat message's ID. -
is_sender_externalboolean— This field determines whether the sender is external to the API caller's account. This field only returns if the chat session is `1:1`. -
messagestring— The contents of the chat message. -
reactionsarray— A list of emoji reactions.Items:
-
emojistring— The emoji's unicode value in `UTF-32` format. -
member_idsarray— A list of user member IDs that replied to this message with this emoji.Items:
string -
total_countinteger— The emoji's total usage count. -
user_idsarray— A list of user IDs from the same account, that replied to this message with this emoji. user IDs of those who are not from the same account will be omitted from the list.Items:
string
-
-
receiverstring— The chat message's recipient. This field only returns if the chat session is `1:1`. -
reply_main_message_idstring— The reply message's unique ID. The API only returns this value if the message is a reply message. -
reply_main_message_timestampinteger, format:int64— A timestamp of when the reply message was sent. The API only returns this value if the message is a reply message. -
rich_textarray— The [rich text formatting](https://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages) information.Items:
-
end_positioninteger— The end position of the rich text. -
format_attrstring— The attribute values of a specific `format_type`: 1.`FontSize`: `s` for small, `m` for medium, or `l` for large font sizes. 2.`FontColor` and `BackgroundColor`: only supports RGB values. For example: `FFC0CB` 3.`LeftIndent`: a positive pixel length. 4.`Paragraph`: `h1` for heading 1, `h2` for heading 2, or `h3` for heading 3. 5.`AddLink`: must be a valid URL with an `http` or `https` prefix. For example: `https://example.com` -
format_typestring, possible values:"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"— The type of rich text format. -
start_positioninteger— The start position of the rich text in the message string.
-
-
senderstring— The message sender's email address. If the sender does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
sender_display_namestring— The message sender's display name. -
sender_member_idstring— The message sender's member ID. -
timestampinteger, format:int64— The message's timestamp, in milliseconds.
-
-
edited_messagesarray— An array containing edited chat message information.Items:
-
action_timestampinteger, format:int64— The current message's action time, in milliseconds. -
date_timestring, format:date-time— The timestamp when the chat message was sent. -
filesarray— The information about the chat files.Items:
-
download_urlstring— The URL when to download the chat file. -
file_idstring— The chat file's unique ID. -
file_namestring— The chat file's name and its file extension. -
file_sizeinteger— The chat file's size, in bytes.
-
-
forward_idstring— The forwarded message ID, use to get forwarded message detail info. -
giphy_informationarray— The giphy information in the chat messageItems:
-
giphy_view_urlstring— The view URL of the giphy
-
-
idstring— The chat message's ID. -
is_sender_externalboolean— Determine whether the sender is external to the api caller's account. This field only returns if the chat session is `1:1`. -
messagestring— The contents of the chat message. -
receiverstring— The chat message's recipient. This field only returns if the chat session is `1:1`. -
reply_main_message_idstring— The reply message's unique ID. The API only returns this value if the message is a reply message. -
reply_main_message_timestampinteger, format:int64— A timestamp of when the reply message was sent. The API only returns this value if the message is a reply message. -
rich_textarray— The [rich text formatting](https://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages) information.Items:
-
end_positioninteger— The end position of the rich text. -
format_attrstring— The attribute values of a specific `format_type`: 1.`FontSize`: `s` for small, `m` for medium, or `l` for large font sizes. 2.`FontColor` and `BackgroundColor`: only supports RGB values. For example: `FFC0CB` 3.`LeftIndent`: a positive pixel length. 4.`Paragraph`: `h1` for heading 1, `h2` for heading 2, or `h3` for heading 3. 5.`AddLink`: must be a valid URL with an `http` or `https` prefix. For example: `https://example.com` -
format_typestring, possible values:"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"— The type of rich text format. -
start_positioninteger— The start position of the rich text in the message string.
-
-
senderstring— The message sender's email address. If the sender does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
sender_display_namestring— The message sender's display name. -
sender_member_idstring— The message sender's member ID. -
timestampinteger, format:int64— The message's timestamp, in milliseconds.
-
-
fromstring, format:date— The query's start date. -
messagesarray— An array containing chat message information. **Note:** The `page_size` parameter only works for messages.Items:
-
action_timestampinteger, format:int64— The current message's action time, in milliseconds. -
bot_messageobject— Details of bot message.-
contentobject— The Chatbot's message content, in JSON format. For more information, see [Chatbots: Send, Edit, and Delete Messages](https://marketplace.zoom.us/docs/guides/chatbots/send-edit-and-delete-messages). -
external_sender_emailstring— If the message is sent via Mio, this field represents the email address from which the message was sent. For more information about Mio, see [Integrating with Mio Chat Interoperability](https://support.zoom.us/hc/en-us/articles/6584541876621-Integrating-with-Mio-Chat-Interoperability). -
is_markdown_supportboolean— Whether markdown is enabled. -
sourcestring— If the message is sent via Mio, this field represents the platform from which the message was sent. For more information about Mio, see [Integrating with Mio Chat Interoperability](https://support.zoom.us/hc/en-us/articles/6584541876621-Integrating-with-Mio-Chat-Interoperability).
-
-
custom_emoji_reactionsarray— A list of custom emoji reactions.Items:
-
custom_emoji_file_idstring— The custom emoji's file id. -
custom_emoji_namestring— The custom emoji's name. -
member_idsarray— A list of user member IDs that replied to this message with this emoji.Items:
string -
total_countinteger— The emoji's total usage count. -
user_idsarray— A list of user IDs from the same account, that replied to this message with this emoji. user IDs of those who are not from the same account will be omitted from the list.Items:
string
-
-
date_timestring, format:date-time— The timestamp when the chat message was sent. -
emoji_actionsarray— A list of custom emoji reaction actions within a given time range.Items:
-
emojistring— The custom emoji's name. -
emoji_actionstring, possible values:"remove", "add"— The emoji's action. -
emoji_action_timestampinteger, format:int64— A timestamp of when the emoji action (add or remove) occurred. -
member_idstring— The user's member ID who performed emoji `add` or `remove` actions. -
user_idstring— The user ID who performed emoji `add` or `remove` actions.
-
-
filesarray— The information about the chat files.Items:
-
download_urlstring— The URL to download the chat file. -
file_idstring— The chat file's unique ID. -
file_namestring— The chat file's name and its file extension. -
file_sizeinteger— The chat file's size in bytes.
-
-
forward_idstring— The forwarded message ID, use to get forwarded message detail info. -
giphy_informationarray— The giphy information in the chat messageItems:
-
giphy_view_urlstring— The view URL of the giphy
-
-
idstring— The chat message's ID. -
is_sender_externalboolean— This field determines whether the sender is external to the API caller's account. This field only returns if the chat session is `1:1`. -
messagestring— The contents of the chat message. -
reactionsarray— A list of emoji reactions.Items:
-
emojistring— The emoji's unicode value in `UTF-32` format. -
member_idsarray— A list of user member IDs that replied to this message with this emoji.Items:
string -
total_countinteger— The emoji's total usage count. -
user_idsarray— A list of user IDs from the same account, that replied to this message with this emoji. user IDs of those who are not from the same account will be omitted from the list.Items:
string
-
-
receiverstring— The chat message's recipient. This field only returns if the chat session is `1:1`. -
reply_main_message_idstring— The reply message's unique ID. The API only returns this value if the message is a reply message. -
reply_main_message_timestampinteger, format:int64— A timestamp of when the reply message was sent. The API only returns this value if the message is a reply message. -
rich_textarray— The [rich text formatting](https://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages) information.Items:
-
end_positioninteger— The end position of the rich text. -
format_attrstring— The attribute values of a specific `format_type`: 1.`FontSize`: `s` for small, `m` for medium, or `l` for large font sizes. 2.`FontColor` and `BackgroundColor`: only supports RGB values. For example: `FFC0CB` 3.`LeftIndent`: a positive pixel length. 4.`Paragraph`: `h1` for heading 1, `h2` for heading 2, or `h3` for heading 3. 5.`AddLink`: must be a valid URL with an `http` or `https` prefix. For example: `https://example.com` -
format_typestring, possible values:"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"— The type of rich text format. -
start_positioninteger— The start position of the rich text in the message string.
-
-
senderstring— The message sender's email address. If the sender does not belong to the same account as the current user or is not the current user's contact, this field will be empty. -
sender_display_namestring— The message sender's display name. -
sender_member_idstring— The message sender's member ID. -
timestampinteger, format:int64— The message's timestamp, in milliseconds.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger, default:30— The amount of records returned within a single API call. -
tostring, format:date— The query's end date.
Example:
{
"deleted_messages": [
{
"date_time": "2022-03-18T10:16:13Z",
"files": [
{
"download_url": "https://zoom.us/file/download/qreigNgqTk24RNnGJDxpDg?filename=48k.png&jwt=downloadjwt",
"file_id": "qreigNgqTk24RNnGJDxpDg",
"file_name": "48k.png",
"file_size": 224251
}
],
"giphy_information": [
{
"giphy_view_url": "https://giphy.com/gifs/union-soton-congrats-susu-soton-StRUIQttj1ewZVYZH2"
}
],
"id": "7ba4d98b-0a6a-4fb4-a71b-dd13fd689dc8",
"message": "How are you",
"receiver": "[email protected]",
"is_sender_external": true,
"reply_main_message_id": "{27ED2949-6457-417C-83EA-72515DAF00BD}",
"reply_main_message_timestamp": 1647494500135,
"sender": "[email protected]",
"sender_member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"sender_display_name": "Tom",
"timestamp": 1647494500135,
"action_timestamp": 1747494500135,
"forward_id": "6dfgdfgdg444447b0egga",
"rich_text": [
{
"start_position": 0,
"end_position": 5,
"format_type": "Paragraph",
"format_attr": "h1"
}
],
"reactions": [
{
"emoji": "U+1F600",
"total_count": 1,
"user_ids": [
"v4iyWT1LTfy8QvPG4GTvdg"
],
"member_ids": [
"R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
]
}
],
"custom_emoji_reactions": [
{
"custom_emoji_name": "test_custom_emoji_name",
"custom_emoji_file_id": "bliAGZfKSqOWev3rCwC99Q",
"total_count": 1,
"user_ids": [
"v4iyWT1LTfy8QvPG4GTvdg"
],
"member_ids": [
"R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
]
}
]
}
],
"edited_messages": [
{
"date_time": "2022-03-17T08:27:57Z",
"files": [
{
"download_url": "https://zoom.us/file/download/qreigNgqTk24RNnGJDxpDg?filename=48k.png&jwt=downloadjwt",
"file_id": "qreigNgqTk24RNnGJDxpDg",
"file_name": "48k.png",
"file_size": 224251
}
],
"giphy_information": [
{
"giphy_view_url": "https://giphy.com/gifs/union-soton-congrats-susu-soton-StRUIQttj1ewZVYZH2"
}
],
"id": "7ba4d98b-0a6a-4fb4-a71b-dd13fd689dc8",
"message": "How are you",
"receiver": "[email protected]",
"is_sender_external": true,
"reply_main_message_id": "{27ED2949-6457-417C-83EA-72515DAF00BD}",
"reply_main_message_timestamp": 1647494500135,
"sender_member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"sender": "[email protected]",
"sender_display_name": "Tom",
"timestamp": 1647494500135,
"action_timestamp": 1747494500135,
"forward_id": "6dfgdfgdg444447b0egga",
"rich_text": [
{
"start_position": 0,
"end_position": 5,
"format_type": "Paragraph",
"format_attr": "h1"
}
]
}
],
"from": "2022-03-17",
"messages": [
{
"date_time": "2022-03-17T08:27:57Z",
"files": [
{
"download_url": "https://zoom.us/file/download/qreigNgqTk24RNnGJDxpDg?filename=48k.png&jwt=downloadjwt",
"file_id": "qreigNgqTk24RNnGJDxpDg",
"file_name": "48k.png",
"file_size": 224251
}
],
"giphy_information": [
{
"giphy_view_url": "https://giphy.com/gifs/union-soton-congrats-susu-soton-StRUIQttj1ewZVYZH2"
}
],
"id": "7ba4d98b-0a6a-4fb4-a71b-dd13fd689dc8",
"message": "How are you",
"reactions": [
{
"emoji": "U+1F600",
"total_count": 1,
"user_ids": [
"v4iyWT1LTfy8QvPG4GTvdg"
],
"member_ids": [
"R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
]
}
],
"custom_emoji_reactions": [
{
"custom_emoji_name": "test_custom_emoji_name",
"custom_emoji_file_id": "bliAGZfKSqOWev3rCwC99Q",
"total_count": 1,
"user_ids": [
"v4iyWT1LTfy8QvPG4GTvdg"
],
"member_ids": [
"R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ"
]
}
],
"emoji_actions": [
{
"emoji": "U+1F600",
"emoji_action": "remove",
"user_id": "v4iyWT1LTfy8QvPG4GTvdg",
"member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJ",
"emoji_action_timestamp": 1775106992998
}
],
"receiver": "[email protected]",
"is_sender_external": true,
"reply_main_message_id": "{27ED2949-6457-417C-83EA-72515DAF00BD}",
"reply_main_message_timestamp": 1647494500135,
"sender": "[email protected]",
"sender_member_id": "R4VM29Oj0fVM2hhEmSKVM2hhezJTezJTKVM2hezJT2hezJTSK",
"sender_display_name": "Tom",
"timestamp": 1647494500135,
"action_timestamp": 1747494500135,
"forward_id": "6dfgdfgdg444447b0egga",
"bot_message": {
"is_markdown_support": false,
"source": "CCCC",
"external_sender_email": "[email protected]",
"content": "{\"head\":{\"text\":\"This is the head\",\"version\":1},\"body\":[{\"type\":\"message\",\"version\":1,\"text\":\"This is the body\",\"editable\":false,\"event_id\":\"message_0000\"}],\"settings\":{\"is_split_sidebar\":true,\"default_sidebar_color\":\"#0E71EB\"}}"
},
"rich_text": [
{
"start_position": 0,
"end_position": 5,
"format_type": "Paragraph",
"format_attr": "h1"
}
]
}
],
"next_page_token": "b43YBRLJFg3V4vsSpxvGdKIGtNbxn9h9If2",
"page_size": 30,
"to": "2022-03-25"
}
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List shared spaces
- Method:
GET - Path:
/chat/spaces - Tags: Shared Spaces
Returns a list shared spaces.
Scopes: chat:write:admin,chat:read:admin,chat:write,chat:read
Granular Scopes: team_chat:read:list_shared_spaces,team_chat:read:list_shared_spaces:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Shared space list returned.
Content-Type: application/json
-
shared_spaces(required)array— The shared spaces.Items:
-
space_id(required)string— The space's ID. -
space_name(required)string— The space's name. -
space_owner(required)object— The space's owner-
display_name(required)string— The owner's display name -
is_external_user(required)boolean— Whether the user is external to the organization. -
member_id(required)string— The owner's member ID. -
emailstring— The owner's email address. This value returns an empty string for external users. -
user_idstring— The owner's user ID. This value returns an empty string for external users.
-
-
space_descstring— The space's description.
-
-
next_page_tokenstring— The next page token paginates through large result sets. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger— The number of records returned with a single API call.
Example:
{
"next_page_token": "8V8HigQkzm2O5r9RUn31D9ZyJHgrmFfbLa2",
"page_size": 30,
"shared_spaces": [
{
"space_id": "bb31fa470fdc410cb76527282aa380d4",
"space_name": "space name",
"space_desc": "learning space",
"space_owner": {
"user_id": "KDcuGIm1QgePTO8WbOqwIQ",
"member_id": "1vuNwCvcgr1mI8WliW1gUKxoA8lozI4LHqDVoRIjMGaQHINfZWxqVHMilvXM8HGA",
"email": "[email protected]",
"display_name": "jchill",
"is_external_user": true
}
}
]
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to access the shared spaces. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Create a shared space
- Method:
POST - Path:
/chat/spaces - Tags: Shared Spaces
Creates a shared space.
Scopes: chat:write,chat:write:admin
Granular Scopes: team_chat:write:shared_space,team_chat:write:shared_space:admin
Rate Limit Label: RESOURCE-INTENSIVE
Request Body
Content-Type: application/json
-
space_name(required)string— The shared space's name. -
space_descstring— The description of the shared space. -
space_membersarray— The members of the shared space.Items:
-
identifier(required)string— The space member's user ID or member ID. -
rolestring, possible values:"admin", "member", "owner", default:"member"— This field indicates the role of the member. * `member` - Normal users in the shared space. * `owner` - Owner in the shared space. * `admin` - Admin users in the shared space. **Note:** Only one owner is allowed. If `role` is set to `owner`, `identifiers` must contain one element.
-
-
space_settingsobject— The settings of the shared space.-
add_member_permissionsinteger, possible values:1, 2— This field indicates who can add new shared space members: * `1` - All shared space members can add new members to the shared space. * `2` - Only shared space owners and administrators can add new members to the shared space. -
allow_to_add_external_usersinteger, possible values:0, 1, 2, 3— This field indicates whether external users can be added to the shared space: * `0` - External user cannot be added to the shared space. * `1` - All shared space members can add external users to the shared space. * `2` - Only shared space members within your organization can add external users to the shared space. * `3` - Only shared space owners and administrators can add external users to the shared space. -
create_channels_permissioninteger, possible values:1, 2— This field indicates who can create new channels or move existing channels to the shared space: * `1` - All shared space members can create new channels or move existing channels to the shared space. * `2` - Only shared space owners and administrators can create new channels or move existing channels to the shared space.
-
Example:
{
"space_name": "Developer Group",
"space_desc": "Developer discussion group.",
"space_members": [
{
"identifier": "1vRFhZt_2gipkB-SFKkOpnkh",
"role": "admin"
}
],
"space_settings": {
"allow_to_add_external_users": 0,
"add_member_permissions": 1,
"create_channels_permission": 1
}
}
Responses
Status: 201 **Status Code**: `201` Shared space created.
Content-Type: application/json
-
channel_id(required)string— The ID of the default channel in the shared space. -
space_id(required)string— The shared space's unique identifier ID. -
space_name(required)string— The shared space's name. -
space_descstring— The description of the shared space. -
space_membersarray— The shared space members.Items:
-
identifierstring— The space member's user ID or member ID. -
rolestring, possible values:"admin", "member", "owner"— This field indicates the role of the member. * `member` - Normal users in the shared space. * `owner` - Owner in the shared space. * `admin` - Admin users in the shared space. **Note:** Only one owner is allowed. If `role` is set to `owner`, `identifiers` must contain one element.
-
-
space_settingsobject— The settings of the shared space.-
add_member_permissionsinteger, possible values:1, 2— This field indicates who can add new shared space members: * `1` - All shared space members can add new members to the shared space. * `2` - Only shared space owners and administrators can add new members to the shared space. -
allow_to_add_external_usersinteger, possible values:0, 1, 2, 3— This field indicates whether external users can be added to the shared space: * `0` - External user cannot be added to the shared space. * `1` - All shared space members can add external users to the shared space. * `2` - Only shared space members within your organization can add external users to the shared space. * `3` - Only shared space owners and administrators can add external users to the shared space. -
create_channels_permissioninteger, possible values:1, 2— This field indicates who can create new channels or move existing channels to the shared space: * `1` - All shared space members can create new channels or move existing channels to the shared space. * `2` - Only shared space owners and administrators can create new channels or move existing channels to the shared space.
-
Example:
{
"space_id": "8609fdea87b44e2f8e0f21ef3906046c",
"channel_id": "8609fdea87b44e2f8e0f21ef3906046c",
"space_name": "Developer Group",
"space_desc": "Developer discussion group.",
"space_members": [
{
"identifier": "1vRFhZt_2gipkB-SFKkOpnkh",
"role": "admin"
}
],
"space_settings": {
"allow_to_add_external_users": 0,
"add_member_permissions": 1,
"create_channels_permission": 1
}
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5601` <br> System error, please try again later. <br> **Error Code:** `5603` <br> This name is already in use. Please enter another name. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to create a shared space. <br> **Error Code:** `5602` <br> You do not have permission to create a shared space on behalf of another user. <br> **Error Code:** `5603 ` <br> Each shared space can only has one space owner. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Status: 500 **HTTP Status Code:** `500` <br> Internal Server Error
Get a shared space
- Method:
GET - Path:
/chat/spaces/{spaceId} - Tags: Shared Spaces
Returns information about a shared space.
Scopes: chat:read:admin,chat:read,chat:write,chat:write:admin
Granular Scopes: team_chat:read:shared_space,team_chat:read:shared_space:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` **OK** Shared space object returned.
Content-Type: application/json
-
owner(required)object— The space's owner.-
display_name(required)string— The owner's display name -
is_external_user(required)boolean— Whether the user is external to the organization. -
member_id(required)string— The owner's member ID. -
emailstring— The owner's email address. This value returns an empty string for external users. -
user_idstring— The owner's user ID. This value returns an empty string for external users.
-
-
space_id(required)string— The space's ID. -
space_name(required)string— The space's name. -
space_settings(required)object— The settings of the shared space.-
add_member_permissionsinteger, possible values:1, 2— This field indicates who can add new shared space members: * `1` - All shared space members can add new members to the shared space. * `2` - Only shared space owners and administrators can add new members to the shared space. -
allow_to_add_external_usersinteger, possible values:0, 1, 2, 3— This field indicates whether external users can be added to the shared space: * `0` - External user cannot be added to the shared space. * `1` - All shared space members can add external users to the shared space. * `2` - Only shared space members within your organization can add external users to the shared space. * `3` - Only shared space owners and administrators can add external users to the shared space. -
create_channels_permissioninteger, possible values:1, 2— This field indicates who can create new channels or move existing channels to the shared space: * `1` - All shared space members can create new channels or move existing channels to the shared space. * `2` - Only shared space owners and administrators can create new channels or move existing channels to the shared space.
-
-
space_descstring— The space's description.
Example:
{
"space_id": "bb31fa470fdc410cb76527282aa380d4",
"space_name": "space name",
"space_desc": "learning space",
"owner": {
"user_id": "KDcuGIm1QgePTO8WbOqwIQ",
"member_id": "1vuNwCvcgr1mI8WliW1gUKxoA8lozI4LHqDVoRIjMGaQHINfZWxqVHMilvXM8HGA",
"email": "[email protected]",
"display_name ": "jchill",
"is_external_user": true
},
"space_settings": {
"allow_to_add_external_users": 0,
"add_member_permissions": 1,
"create_channels_permission": 1
}
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to access the shared spaces. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5407` <br> Space does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete a shared space
- Method:
DELETE - Path:
/chat/spaces/{spaceId} - Tags: Shared Spaces
Deletes a shared space. This API endpoint works for user-level and account-level apps.
Note: For user-level apps, the user calling this API must be the shared space owner. Note: For account-level apps, the user calling this API must have a role that has the Edit permission for the Chat Channels feature.
Scopes: chat:write,chat:write:admin
Granular Scopes: team_chat:delete:shared_space,team_chat:delete:shared_space:admin
Rate Limit Label: RESOURCE-INTENSIVE
Responses
Status: 204 **HTTP Status Code:** `204` **No Content** Shared space deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to delete the shared space failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to delete the shared space. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist. <br> **Error Code:** `5407` <br> Shared space does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Update shared space settings
- Method:
PATCH - Path:
/chat/spaces/{spaceId} - Tags: Shared Spaces
Updates a shared space's settings. Shared space owner can update space_name, space_description, and space_settings. Space admins can only update space_name and space_description unless the admin is also the space owner.
Scopes: chat:write,chat:write:admin
Granular Scopes: team_chat:update:shared_space,team_chat:update:shared_space:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
space_descstring— The description of the shared space. -
space_namestring— The name of the shared space. -
space_settingsobject— The settings of the shared space.-
add_member_permissionsinteger, possible values:1, 2— This field indicates who can add new shared space members: * `1` - All shared space members can add new members to the shared space. * `2` - Only shared space owners and administrators can add new members to the shared space. -
allow_to_add_external_usersinteger, possible values:0, 1, 2, 3— This field indicates whether external users can be added to the shared space: * `0` - External user cannot be added to the shared space. * `1` - All shared space members can add external users to the shared space. * `2` - Only shared space members within your organization can add external users to the shared space. * `3` - Only shared space owners and administrators can add external users to the shared space. -
create_channels_permissioninteger, possible values:1, 2— This field indicates who can create new channels or move existing channels to the shared space: * `1` - All shared space members can create new channels or move existing channels to the shared space. * `2` - Only shared space owners and administrators can create new channels or move existing channels to the shared space.
-
Example:
{
"space_name": "Dev Space",
"space_desc": "A dev's space.",
"space_settings": {
"allow_to_add_external_users": 0,
"add_member_permissions": 1,
"create_channels_permission": 1
}
}
Responses
Status: 204 **HTTP Status Code:** `204`Successfully updated the shared space's settings.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4719` <br> Share space settings request body missing. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to access the shared space. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Status: 500 **HTTP Status Code:** `500` <br> Internal Server Error
Promote shared space members to administrators
- Method:
POST - Path:
/chat/spaces/{spaceId}/admins - Tags: Shared Spaces
Promotes shared space members to administrators.
Note: This API supports account-level apps. The user calling this API must have a role that has the Edit permission for the Chat Channels feature.
Scopes: chat:write,chat:write:admin
Granular Scopes: team_chat:write:shared_space_administrators,team_chat:write:shared_space_administrators:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
members(required)array— The list of shared space members to be promoted to administrators.Items:
-
identifier(required)string— The user ID or member ID of the user.
-
Example:
{
"members": [
{
"identifier": "1vRFhZt_2gipkB-SFKkOpnkh"
}
]
}
Responses
Status: 201 **HTTP Status Code:** `201` Shared space members successfully promoted to administrators.
Content-Type: application/json
-
successful_operations_count(required)integer— The number of shared space members successfully promoted to administrators. -
unsuccessful_operations_count(required)integer— The number of users failed to be promnoted to shared space administrators. -
users(required)array— A list of users.Items:
-
is_external_user(required)boolean— Whether the user is external to the organization. -
member_id(required)string— The user's member ID. -
operation_status(required)string, possible values:"successful", "unsuccessful"— The status of the new shared space administrator: * `successful`: The shared space member is successfully promoted to an administrator. * `unsuccessful`: Failed to promote the user to a shared space administrator. -
user_id(required)string— The user ID of the user. It's set to an empty string for external users.
-
Example:
{
"successful_operations_count": 5,
"unsuccessful_operations_count": 3,
"users": [
{
"user_id": "1stlycl8qwcvfubn4dvdca",
"member_id": "1vRFhZt_2gipkB-SFKkOpnkh",
"is_external_user": false,
"operation_status": "successful"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to promote shared space members to administrators failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to promote shared space members to administrators. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5407` <br> Shared space does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Demote shared space administrators to members
- Method:
DELETE - Path:
/chat/spaces/{spaceId}/admins - Tags: Shared Spaces
Demotes shared space administrators to members.
Note: This API supports account-level apps. The user calling this API must have a role that has the Edit permission for the Chat Channels feature.
Scopes: chat:write,chat:write:admin
Granular Scopes: team_chat:delete:shared_space_administrators,team_chat:delete:shared_space_administrators:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Shared space administrators successfully demoted to members.
Content-Type: application/json
-
successful_operations_count(required)integer— The number of shared space administrators successfully demoted to memnbers. -
unsuccessful_operations_count(required)integer— The number of users failed to be demoted to shared space members. -
users(required)array— A list of users.Items:
-
is_external_user(required)boolean— Whether the user is external to the organization. -
member_id(required)string— The user's member ID. -
operation_status(required)string, possible values:"successful", "unsuccessful"— Whether the user is demoted to shared space member. * `successful`: The shared space administrator is successfully demoted to member. * `unsuccessful`: Failed to demote the user to shared space member. -
user_id(required)string— The user ID of the user. It's set to an empty string for external users.
-
Example:
{
"successful_operations_count": 5,
"unsuccessful_operations_count": 3,
"users": [
{
"user_id": "1stlycl8qwcvfubn4dvdca",
"member_id": "1vRFhZt_2gipkB-SFKkOpnkh",
"is_external_user": false,
"operation_status": "successful"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to demote shared space administrators failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You don't have permission to demote shared space administrators. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5407` <br> Shared space does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List shared space channels
- Method:
GET - Path:
/chat/spaces/{spaceId}/channels - Tags: Shared Spaces
Returns a list of channels for a shared space.
Scopes: chat:write:admin,chat:read:admin,chat:write,chat:read
Granular Scopes: team_chat:read:list_shared_space_channels,team_chat:read:list_shared_space_channels:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Channel list returned.
Content-Type: application/json
-
channels(required)array— The channels in the shared space.Items:
-
channel_id(required)string— The channel's ID. -
channel_name(required)string— The channel's name. -
member_count(required)integer— The channel's member count. -
space_channel_type(required)string, possible values:"private", "public_for_members", "general"— The shared space channel type. * `general` - The channel is general. * `private` - Only invited members can be added. Members do not have to join the shared space. * `public_for_members` - Everyone in the Shared Space can join. -
descriptionstring— The channel's description.
-
-
next_page_tokenstring— The next page token paginates through large result sets. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger— The number of records returned with a single API call.
Example:
{
"next_page_token": "8V8HigQkzm2O5r9RUn31D9ZyJHgrmFfbLa2",
"page_size": 30,
"channels": [
{
"channel_id": "cabc1234567defghijkl01234",
"channel_name": "Developers",
"description": "Learning channel",
"space_channel_type": "private",
"member_count": 30
}
]
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to access the shared spaces. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5407` <br> Space does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Move shared space channels
- Method:
PATCH - Path:
/chat/spaces/{spaceId}/channels - Tags: Shared Spaces
Moves one or more channels in or out of a shared space.
Scopes: chat:write
Granular Scopes: team_chat:update:shared_space_channels
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
channel_ids(required)array— The IDs of channels requested to be moved in or out of the shared space.Items:
string— The channel's unique identifier ID. -
move_direction(required)string, possible values:"move_into", "move_out"— This field indicates whether to move in or out of the shared space.
Example:
{
"channel_ids": [
"8609fdea87b44e2f8e08609fdea87b44e2f8e0"
],
"move_direction": "move_into"
}
Responses
Status: 200 **HTTP Status Code:** `204`Successfully moved the shared space channels.
Content-Type: application/json
-
channels(required)array— The details of moved channels.Items:
-
channel_id(required)string— The channel ID. -
is_moved(required)boolean— The status of the channel's moving action. * false: failed to move the channel into or out of a shared space. * true: the channel has been successfully moved into or out of a shared space.
-
-
move_direction(required)string— This field indicates whether to move in or out of the shared space. -
space_id(required)string— The shared space's unique identifier ID.
Example:
{
"space_id": "9f1b93284a69472387db562d7ba81733",
"move_direction": "move_into",
"channels": [
{
"channel_id": "d896a8fdf1424df0ae8f13218d2a6f78",
"is_moved": true
}
]
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to access this shared space. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId. <br> **Error Code:** `300` <br> Shared pace does not exist: $spaceId. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Status: 500 **HTTP Status Code:** `500` <br> Internal Server Error
List shared space members
- Method:
GET - Path:
/chat/spaces/{spaceId}/members - Tags: Shared Spaces
Returns a list of members in a shared space.
Scopes: chat:write:admin,chat:read:admin,chat:write,chat:read
Granular Scopes: team_chat:read:list_shared_space_members,team_chat:read:list_shared_space_members:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Member list returned.
Content-Type: application/json
-
members(required)array— The members in the shared space.Items:
-
display_name(required)string— The user's display name. -
first_name(required)string— The user's first name. -
is_external_user(required)boolean— Whether the user is external to the organization. -
last_name(required)string— The user's last name. -
member_id(required)string— The user's member ID. -
role(required)string, possible values:"member", "owner", "admin"— The user's role. * `member` - Normal users in the shared space. * `owner` - Owner in the shared space. * `admin` - Admin users in the shared space. -
status(required)string, possible values:"active", "inactive"— The user's status. * `active` - An active user. * `inactive` - A deactivated user. -
emailstring— The user's email address. This value returns an empty string for external users. -
user_idstring— The user's ID. This value returns an empty string for external users.
-
-
next_page_tokenstring— The next page token paginates through large set of results. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger— The number of records returned with a single API call.
Example:
{
"next_page_token": "8V8HigQkzm2O5r9RUn31D9ZyJHgrmFfbLa2",
"page_size": 30,
"members": [
{
"user_id": "KDcuGIm1QgePTO8WbOqwIQ",
"member_id": "1vuNwCvcgr1mI8WliW1gUKxoA8lozI4LHqDVoRIjMGaQHINfZWxqVHMilvXM8HGA",
"email": "[email protected]",
"role": "member",
"status": "active",
"first_name": "Jill",
"last_name": "Chill",
"display_name": "Jill Chill",
"is_external_user": true
}
]
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> No permission to access the shared spaces. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5407` <br> Space does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Add members to a shared space
- Method:
POST - Path:
/chat/spaces/{spaceId}/members - Tags: Shared Spaces
Adds members to a shared space.
Note: This API supports account-level apps. The user calling this API must have a role that has the Edit permission for the Chat Channels feature.
Scopes: chat:write,chat:write:admin
Granular Scopes: team_chat:write:shared_space_members,team_chat:write:shared_space_members:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
members(required)array— The list of users to be added to the shared space.Items:
-
identifier(required)string— The user ID or member ID of the user.
-
Example:
{
"members": [
{
"identifier": "1vRFhZt_2gipkB-SFKkOpnkh"
}
]
}
Responses
Status: 201 **HTTP Status Code:** `201` Members successfully added to the shared space.
Content-Type: application/json
-
successful_operations_count(required)integer— The number of users successfully added to the shared space. -
unsuccessful_operations_count(required)integer— The number of users failed to be added to the shared space. -
users(required)array— A list of users.Items:
-
is_external_user(required)boolean— Whether the user is external to the organization. -
member_id(required)string— The user's member ID. -
operation_status(required)string, possible values:"successful", "unsuccessful"— The status of the new shared space member: * `successful`: The user is successfully added as a shared space member. * `unsuccessful`: Failed to add the user as a shared space member. -
user_id(required)string— The user ID of the user. It's set to an empty string for external users.
-
Example:
{
"successful_operations_count": 5,
"unsuccessful_operations_count": 3,
"users": [
{
"user_id": "1stlycl8qwcvfubn4dvdca",
"member_id": "1vRFhZt_2gipkB-SFKkOpnkh",
"is_external_user": false,
"operation_status": "successful"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to add members to the shared space failed. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You do not have permission to add members to the shared space. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5407` <br> Shared space does not exist. <br> **Error Code:** `1001` <br> User does not exist: $identifier. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Remove members from a shared space
- Method:
DELETE - Path:
/chat/spaces/{spaceId}/members - Tags: Shared Spaces
Removes members from a shared space.
Note: This API supports account-level apps. The user calling this API must have a role that has the Edit permission for the Chat Channels feature.
Scopes: chat:write,chat:write:admin
Granular Scopes: team_chat:delete:shared_space_members,team_chat:delete:shared_space_members:admin
Rate Limit Label: MEDIUM
Responses
Status: 200 **HTTP Status Code:** `200` Members successfully removed from the shared space.
Content-Type: application/json
-
successful_operations_count(required)integer— The number of users successfully removed from the shared space. -
unsuccessful_operations_count(required)integer— The number of users failed to be removed from the shared space. -
users(required)array— A list of users.Items:
-
is_external_user(required)boolean— Whether the user is external to the organization. -
member_id(required)string— The user's member ID. -
operation_status(required)string, possible values:"successful", "unsuccessful"— Whether the user is successfully removed from the shared space. * `successful`: The user is successfully removed from the shared space. * `unsuccessful`: Failed to remove the user from the shared space. -
user_id(required)string— The user ID of the user. It's set to an empty string for external users.
-
Example:
{
"successful_operations_count": 5,
"unsuccessful_operations_count": 3,
"users": [
{
"user_id": "1stlycl8qwcvfubn4dvdca",
"member_id": "1vRFhZt_2gipkB-SFKkOpnkh",
"is_external_user": false,
"operation_status": "successful"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5301` <br> Request to remove shared space members failed. <br> **Error Code:** `1001` <br> User does not exist: {member_id}. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `200` <br> Unauthorized request. You don't have permission to remove members from the shared space. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5407` <br> Shared space does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Transfer shared space ownership
- Method:
PATCH - Path:
/chat/spaces/{spaceId}/owner - Tags: Shared Spaces
Transfers shared space ownership to a member or administrator.
Note: This API supports account-level apps. The user calling this API must have a role that has the Edit permission for the Chat Channels feature.
Scopes: chat:write,chat:write:admin
Granular Scopes: team_chat:update:shared_space_owner,team_chat:update:shared_space_owner:admin
Rate Limit Label: MEDIUM