Zoom Team Chat Channels & Messages
Catch up on Zoom Team Chat and post where your team already talks: find a channel, read recent messages or a full thread, send or edit a message with @mentions, add an emoji reaction, and spin up a new channel with the right members. Search by keyword across a channel or a 1:1 chat.
Connect this API to an AI agent Browse all specs
What you can do with Zoom Team Chat Channels & Messages via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /chat/users/{userId}/channels |
listMyChannels | List the channels a user belongs to |
| POST | /chat/users/{userId}/channels |
createChannel | Create a channel and add its first members |
| POST | /chat/channels/search |
searchChannels | Find channels by name |
| GET | /chat/channels/{channelId} |
getChannel | Get a channel's name, type and settings |
| GET | /chat/channels/{channelId}/members |
listChannelMembers | List who is in a channel |
| POST | /chat/channels/{channelId}/members |
inviteChannelMembers | Invite people to a channel by email |
| GET | /chat/users/{userId}/sessions |
listChatSessions | List recent 1:1 chats and channels with activity |
| GET | /chat/users/{userId}/messages |
listMessages | Read or keyword-search messages in a channel or 1:1 chat |
| POST | /chat/users/{userId}/messages |
sendMessage | Send a message or thread reply to a channel or contact |
| GET | /chat/users/{userId}/messages/{messageId} |
getMessage | Get one message with its files and reactions |
| PUT | /chat/users/{userId}/messages/{messageId} |
editMessage | Edit the text of a message you sent |
| GET | /chat/users/{userId}/messages/{messageId}/thread |
getThread | Read the replies in a message thread |
| PATCH | /chat/users/{userId}/messages/{messageId}/emoji_reactions |
reactToMessage | Add or remove an emoji reaction on a message |
| GET | /chat/users/me/contacts |
listContacts | List the user's company and external contacts |
Authentication
zoom_oauth
OAuth 2.0
Scopes: team_chat:read:list_user_channels team_chat:write:search_channels team_chat:read:channel team_chat:read:list_members team_chat:write:user_channel team_chat:write:members team_chat:read:list_user_sessions team_chat:read:list_user_messages team_chat:read:user_message team_chat:read:thread_message team_chat:write:user_message team_chat:update:user_message team_chat:update:message_emoji team_chat:read:list_contacts
Zoom OAuth 2.0 (authorization code) for a user-managed Zoom app.
How to get a credential
- Sign in to the Zoom App Marketplace (https://marketplace.zoom.us) and choose Develop > Build App > General App.
- Set it to User-managed, and add the VX Agents OAuth redirect URL shown on the credential form.
- Under Scopes, add the Team Chat scopes in the table below.
- Copy the Client ID and Client Secret into a VX Agents OAuth2 credential and sign in with the Zoom user whose chats the agent should use. Messages are sent as that user.
Permissions used
| Scope | Operations |
|---|---|
team_chat:read:list_user_channels, team_chat:write:search_channels, team_chat:read:channel, team_chat:read:list_members |
listMyChannels, searchChannels, getChannel, listChannelMembers |
team_chat:write:user_channel, team_chat:write:members |
createChannel, inviteChannelMembers |
team_chat:read:list_user_sessions, team_chat:read:list_user_messages, team_chat:read:user_message, team_chat:read:thread_message |
listChatSessions, listMessages, getMessage, getThread |
team_chat:write:user_message, team_chat:update:user_message, team_chat:update:message_emoji |
sendMessage, editMessage, reactToMessage |
team_chat:read:list_contacts |
listContacts |
Common errors
| Status | Meaning | Fix |
|---|---|---|
| 401 | Token expired or revoked | Reconnect the credential; access tokens last one hour and are refreshed automatically. |
| 403 | Scope missing, or Team Chat disabled for the account | Add the scope above to the app and reconnect; ask the Zoom admin to enable Team Chat. |
| 404 | Channel, contact or message not found | Use ids from listMyChannels / listContacts / listMessages; the user must be a channel member. |
| 400 | Bad field | Pass exactly one of to_channel or to_contact; dates are yyyy-MM-dd. |
| 429 | Rate limit | Wait and retry; sending messages is a Medium-limit API. |
Store it as a VX Agents OAuth2 credential.
Usage guide
Setup
- Connect a VX Agents OAuth2 credential for a user-managed Zoom General App with the Team Chat scopes listed on the credential. Messages are sent as the Zoom user who signs in.
- Pin
userIdtomeon every operation that takes it (the signed-in user). - Optional: pin
to_channelonlistMessagesandsendMessageto the id of the channel the agent posts to (fromlistMyChannels).
Catch up and reply in a channel
- Find the channel:
listMyChannels, orsearchChannelswithneedle(part of the name) andhaystackuser_joined(orpublic,all).getChannelandlistChannelMembersshow details and who will see a post. - For direct chats,
listChatSessionslists recent 1:1 chats and channels;listContactsgives contact emails and ids. - Read messages with
listMessages: pass exactly one ofto_channelorto_contact, plusfrom/to(ISO 8601) ordate(yyyy-MM-dd). For a keyword search setsearch_type=messageandsearch_key. Page withnext_page_token. getThread(with the sameto_channel/to_contactand a requiredfromtime) returns the replies to a message;getMessagereturns one message with files and reactions.- Draft the reply and show it to the user. After they confirm,
sendMessagewithmessageandto_channelorto_contact; addreply_main_message_idto reply in a thread,at_itemsfor @mentions, orscheduled_time(more than 30 minutes ahead) to send later. editMessagefixes a message the user sent (pass the sameto_channel/to_contact);reactToMessagewithactionaddorremoveandemoji(the emoji's Unicode value in UTF-32 format).- New project?
createChannelwithname,type(1 private, 2 private and limited to your Zoom account, 3 public, 4 group chat) and up to 20membersby email;inviteChannelMembersadds up to 5 more per call. Confirm both first.
Good to know
- Times in
from/touseyyyy-MM-dd'T'HH:mm:ss'Z'(UTC, e.g.2026-10-20T09:00:00Z); if bothdateandfromare sent,datewins. - The signed-in user must belong to a channel to read or post in it.
- List calls return at most 50 records per page (
page_size, default 10); history only goes back as far as the account's chat retention. - Deleting messages or channels is not part of this spec.
- Posts, edits, reactions and invitations are seen by colleagues immediately: always confirm the text and destination first.
Source: Zoom Team Chat API reference (https://developers.zoom.us/docs/api/chat/), checked 2026-10-20.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Zoom Team Chat Channels & Messages” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.