Introduction and architecture

What you'll learn

By the end of this series, you'll have a working chatbot that can:

  • Post and reply to messages within Zoom Chat.
  • Handle events from users and channels.
  • Respond to slash commands.
  • Send interactive messages, markdown, and emojis.
  • Search messages using the Zoom Chat API.
  • Schedule messages for future delivery.
  • Integrate with external APIs or databases.

What you'll need

  • Development environment with a code editor and terminal.
  • Git.
  • Node.js (v18+ recommended).
  • ngrok (or another tunneling service).
  • A Zoom Developer account.
  • A general app created in the Zoom App Marketplace.
  • Your Zoom Chatbot credentials:
    • Client ID.
    • Client Secret.
    • Bot JID.
    • Verification Token.

Simple way to think about it

  • Chat app = the integration platform
  • Chatbot = one type of app that interacts through messages

Remember

Every chatbot is a Chat app, but not every Chat app is just a chatbot.

Example

A Chat app might integrate a project management system and provide:

  • Message cards with buttons.
  • Workflow triggers.
  • Notifications.
  • Slash commands.

A chatbot version of that integration might only allow:

  • /task create.
  • Automated status messages in a channel.

Understanding Zoom Chat APIs vs. Chatbot APIs

Zoom offers two powerful ways to extend Zoom Chat functionality: ** Chat APIs** and Chatbot APIs. While both interact with Zoom Chat, they use different authentication methods and serve distinct use cases.

Authentication methods

To send messages using the Chat APIs, you'll implement OAuth 2.0. This allows you to request an account-level or user-level access token and call a wide range of API endpoints beyond Chatbot functionality. When the token expires, you can use the refresh token to automatically refresh the access token.

To interact with Zoom Chat using a Chatbot, you'll use a Chatbot access token. This token is short-lived (one hour) and does not require a refresh token, making it ideal for lightweight, event-driven applications. When the token expires, you can request a new one without a refresh flow.

Chatbots are effective for keeping teams informed—whether by posting reminders, surfacing action items, or responding to slash commands.

Comparison Table

CategoryZoom Chat APIsZoom Chatbot APIs
API TypeREST API (part of Zoom's broader API platform)Specialized API for building Zoom Chat bots
Access Token TypeOAuth 2.0 access token (with refresh token)Chatbot access token (no refresh token; short-lived)
Token ExpiryAccess token expires in 1 hour; refresh token used to renewExpires in 1 hour; must request a new token manually
Best ForBackend integrations, user-level or account-level operationsReal-time bot interactions in Zoom Chat
InstallationOAuth flow required (user or admin consent)Installed via Zoom Marketplace as a Chatbot
Bot Mention TriggerNot supportedYes – Bots can listen and respond when @mentioned
Can Post to ChannelYes, using user tokenYes, using bot JID and Chatbot token
Can Read MessagesYes, with appropriate scopesOnly if the message is addressed to or from the bot

Typical Use Cases

Use CaseZoom Chat APIZoom Chatbot API
Send messages to a chat/channel✅ Yes (on behalf of user or system)✅ Yes (as the bot)
Respond to @mentions in chat✅ Yes✅ Yes
Handle slash commands❌ Not supported✅ Yes
Post interactive message elements (buttons, menus)❌ Not supported✅ Yes
Read chat messages✅ Yes (with scopes)✅ Only if sent to/from bot
Manage channels (create, invite, remove users)✅ Yes❌ Not supported
Receive event notifications (webhooks)✅ Via Zoom Event Subscriptions✅ Via Chatbot Event Triggers
File sharing in chat✅ Yes✅ Yes
System-level task notifications✅ Yes✅ Yes

Tutorial Topics Covered

NameDescription
Setup, Auth, and Deep LinkingLearn how to set up your first Zoom Chatbot and implement OAuth 2.0 for seamless chatbot installation and deep linking.
Send, edit, and delete messagesLearn how to send messages using the Zoom Chatbot API. You'll create a Python script that authenticates and sends messages to a Zoom channel.
Handling EventsLearn how to handle real-time events in Zoom Chatbot development. We'll subscribe to Zoom webhook events and use Flask to capture and respond to messages and user actions.
Slash CommandsLearn how to create and handle custom slash commands in Zoom Workplace. You'll set up commands, process user input, and respond dynamically with chatbot messages.
Markdown Messages & EmojisLearn how to format and enhance your chatbot responses using Markdown syntax, emojis, and message updates that react to user interactions.
Reaction HandlingLearn how to capture and respond to reactions (emoji responses) to messages in Zoom Chat. You'll detect reactions through webhooks and handle them in your server logic.
Replying to Messages (Using Threads)Learn how to reply to specific Zoom Chat messages using threaded replies. This tutorial shows how to nest responses under a parent message using the reply_to parameter in Node.js or Python.
Scheduling MessagesLearn how to schedule messages in Zoom Chat using Python or Node.js. We'll walk through queuing messages for future delivery, listing scheduled messages, and canceling pending ones.
Apps in ChatLearn how to add a Chatbot to a Chat channel. This tutorial shows how to detect Chatbot events and responses.