Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
anthropics avatar

Build Zoom Team Chat App

  • 1.4k installs
  • 23.1k repo stars
  • Updated July 28, 2026
  • anthropics/knowledge-work-plugins

build-zoom-team-chat-app is an agent skill for reference skill for zoom team chat. use after routing to a chat workflow when building user-scoped messaging integrations, chatbot experiences, rich cards, buttons, slash.

About

The build-zoom-team-chat-app skill is designed for reference skill for Zoom Team Chat. Use after routing to a chat workflow when building user-scoped messaging integrations, chatbot experiences, rich cards, buttons, slash. /build-zoom-team-chat-app Background reference for Zoom Team Chat integrations. Use this after the workflow is clear, especially when the Team Chat API versus Chatbot API distinction matters. Invoke when the user asks about build zoom team chat app or related SKILL.md workflows.

  • Chatbot Message Cards - Complete card component reference.
  • Webhook Events - All webhook event types.
  • API Reference - Endpoints, methods, parameters.
  • Sample Applications - 10+ official sample apps.
  • Integrated Index - see the section below in this file.

Build Zoom Team Chat App by the numbers

  • 1,410 all-time installs (skills.sh)
  • +81 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #261 of 1,896 Design & UI/UX skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

build-zoom-team-chat-app capabilities & compatibility

Capabilities
chatbot message cards complete card component · webhook events all webhook event types · api reference endpoints, methods, parameters · sample applications 10+ official sample apps
Use cases
frontend
From the docs

What build-zoom-team-chat-app says it does

Reference skill for Zoom Team Chat. Use after routing to a chat workflow when building user-scoped messaging integrations, chatbot experiences, rich cards, buttons, slash commands,
SKILL.md
Reference skill for Zoom Team Chat. Use after routing to a chat workflow when building user-scoped messaging integrations, chatbot experiences, rich cards, butt
SKILL.md
npx skills add https://github.com/anthropics/knowledge-work-plugins --skill build-zoom-team-chat-app

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1.4k
repo stars23.1k
Security audit2 / 3 scanners passed
Last updatedJuly 28, 2026
Repositoryanthropics/knowledge-work-plugins

How do I reference skill for zoom team chat. use after routing to a chat workflow when building user-scoped messaging integrations, chatbot experiences, rich cards, buttons, slash?

Reference skill for Zoom Team Chat. Use after routing to a chat workflow when building user-scoped messaging integrations, chatbot experiences, rich cards, buttons, slash.

Who is it for?

Developers using build zoom team chat app workflows documented in SKILL.md.

Skip if: Skip when the task falls outside build-zoom-team-chat-app scope or needs a different stack.

When should I use this skill?

User asks about build zoom team chat app or related SKILL.md workflows.

What you get

Completed build-zoom-team-chat-app workflow with documented commands, files, and expected deliverables.

  • API type decision
  • Auth model selection
  • Endpoint mapping

Files

SKILL.mdMarkdownGitHub ↗

/build-zoom-team-chat-app

Background reference for Zoom Team Chat integrations. Use this after the workflow is clear, especially when the Team Chat API versus Chatbot API distinction matters.

Read This First (Critical)

There are two different integration types and they are not interchangeable:

1. Team Chat API (user type)

  • Sends messages as a real authenticated user
  • Uses User OAuth (authorization_code)
  • Endpoint family: /v2/chat/users/...

2. Chatbot API (bot type)

  • Sends messages as your bot identity
  • Uses Client Credentials (client_credentials)
  • Endpoint family: /v2/im/chat/messages

If you choose the wrong type early, auth/scopes/endpoints all mismatch and implementation fails.

Official Documentation: https://developers.zoom.us/docs/team-chat/ Chatbot Documentation: https://developers.zoom.us/docs/team-chat/chatbot/extend/ API Reference: https://developers.zoom.us/docs/api/rest/reference/chatbot/

Quick Links

New to Team Chat? Follow this path:

1. [Get Started](get-started.md) - End-to-end fast path (user type vs bot type) 2. [Choose Your API](concepts/api-selection.md) - Team Chat API vs Chatbot API 3. [Environment Setup](concepts/environment-setup.md) - Credentials, scopes, app configuration 4. [OAuth Setup](examples/oauth-setup.md) - Complete authentication flow 5. [Send First Message](examples/send-message.md) - Working code to send messages

Reference:

  • [Chatbot Message Cards](references/message-cards.md) - Complete card component reference
  • [Webhook Events](references/webhook-events.md) - All webhook event types
  • [API Reference](references/api-reference.md) - Endpoints, methods, parameters
  • [Sample Applications](references/samples.md) - 10+ official sample apps
  • Integrated Index - see the section below in this file

Having issues?

  • Authentication errors → OAuth Troubleshooting
  • Webhook not receiving events → Webhook Setup Guide
  • Messages not sending → Common Issues
  • Start with quick checks → 5-Minute Runbook

OAuth endpoint sanity check:

  • Authorize URL: https://zoom.us/oauth/authorize
  • Token URL: https://zoom.us/oauth/token
  • If /oauth/token returns 404/HTML, use https://zoom.us/oauth/token.

Building Interactive Bots?

  • Button Actions - Handle button clicks
  • Form Submissions - Process form data
  • Slash Commands - Create custom commands

Quick Decision: Which API?

Use CaseAPI to Use
Send notifications from scripts/CI/CDTeam Chat API
Automate messages as a userTeam Chat API
Build an interactive chatbotChatbot API
Respond to slash commandsChatbot API
Create messages with buttons/formsChatbot API
Handle user interactionsChatbot API

Team Chat API (User-Level)

  • Messages appear as sent by authenticated user
  • Requires User OAuth (authorization_code flow)
  • Endpoint: POST https://api.zoom.us/v2/chat/users/me/messages
  • Scopes: chat_message:write, chat_channel:read

Chatbot API (Bot-Level)

  • Messages appear as sent by your bot
  • Requires Client Credentials grant
  • Endpoint: POST https://api.zoom.us/v2/im/chat/messages
  • Scopes: imchat:bot (auto-added)
  • Rich cards: buttons, forms, dropdowns, images

Prerequisites

System Requirements

  • Zoom account
  • Account owner, admin, or Zoom for developers role enabled
  • To enable: User ManagementRolesRole SettingsAdvanced features → Enable Zoom for developers

Create Zoom App

1. Go to Zoom App Marketplace 2. Click DevelopBuild App 3. Select General App (OAuth)

⚠️ Do NOT use Server-to-Server OAuth - S2S apps don't have the Chatbot/Team Chat feature. Only General App (OAuth) supports chatbots.

Required Credentials

From Zoom Marketplace → Your App:

CredentialLocationUsed By
Client IDApp Credentials → DevelopmentBoth APIs
Client SecretApp Credentials → DevelopmentBoth APIs
Account IDApp Credentials → DevelopmentChatbot API
Bot JIDFeatures → Chatbot → Bot CredentialsChatbot API
Secret TokenFeatures → Team Chat SubscriptionsChatbot API

See: Environment Setup Guide for complete configuration steps.

Quick Start: Team Chat API

Send a message as a user:

// 1. Get access token via OAuth
const accessToken = await getOAuthToken(); // See examples/oauth-setup.md

// 2. Send message to channel
const response = await fetch('https://api.zoom.us/v2/chat/users/me/messages', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    message: 'Hello from CI/CD pipeline!',
    to_channel: 'CHANNEL_ID'
  })
});

const data = await response.json();
// { "id": "msg_abc123", "date_time": "2024-01-15T10:30:00Z" }

Complete example: Send Message Guide

Quick Start: Chatbot API

Build an interactive chatbot:

// 1. Get chatbot token (client_credentials)
async function getChatbotToken() {
  const credentials = Buffer.from(
    `${CLIENT_ID}:${CLIENT_SECRET}`
  ).toString('base64');
  
  const response = await fetch('https://zoom.us/oauth/token', {
    method: 'POST',
    headers: {
      'Authorization': `Basic ${credentials}`,
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: 'grant_type=client_credentials'
  });
  
  return (await response.json()).access_token;
}

// 2. Send chatbot message with buttons
const response = await fetch('https://api.zoom.us/v2/im/chat/messages', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    robot_jid: process.env.ZOOM_BOT_JID,
    to_jid: payload.toJid,           // From webhook
    account_id: payload.accountId,   // From webhook
    content: {
      head: {
        text: 'Build Notification',
        sub_head: { text: 'CI/CD Pipeline' }
      },
      body: [
        { type: 'message', text: 'Deployment successful!' },
        {
          type: 'fields',
          items: [
            { key: 'Branch', value: 'main' },
            { key: 'Commit', value: 'abc123' }
          ]
        },
        {
          type: 'actions',
          items: [
            { text: 'View Logs', value: 'view_logs', style: 'Primary' },
            { text: 'Dismiss', value: 'dismiss', style: 'Default' }
          ]
        }
      ]
    }
  })
});

Complete example: Chatbot Setup Guide

Key Features

Team Chat API

FeatureDescription
Send MessagesPost messages to channels or direct messages
List ChannelsGet user's channels with metadata
Create ChannelsCreate public/private channels programmatically
Threaded RepliesReply to specific messages in threads
Edit/DeleteModify or remove messages

Chatbot API

FeatureDescription
Rich Message CardsHeaders, images, fields, buttons, forms
Slash CommandsCustom /commands trigger webhooks
Button ActionsInteractive buttons with webhook callbacks
Form SubmissionsCollect user input with forms
Dropdown SelectsChannel, member, date/time pickers
LLM IntegrationEasy integration with Claude, GPT, etc.

Webhook Events (Chatbot API)

EventTriggerUse Case
bot_notificationUser messages bot or uses slash commandProcess commands, integrate LLM
bot_installedBot added to accountInitialize bot state
interactive_message_actionsButton clickedHandle button actions
chat_message.submitForm submittedProcess form data
app_deauthorizedBot removedCleanup

See: Webhook Events Reference

Message Card Components

Build rich interactive messages with these components:

ComponentDescription
headerTitle and subtitle
messagePlain text
fieldsKey-value pairs
actionsButtons (Primary, Danger, Default styles)
sectionColored sidebar grouping
attachmentsImages with links
dividerHorizontal line
form_fieldText input
dropdownSelect menu
date_pickerDate selection

See: Message Cards Reference for complete component catalog

Architecture Patterns

Chatbot Lifecycle

User types /command → Webhook receives bot_notification
                            ↓
                     payload.cmd = "user's input"
                            ↓
                     Process command
                            ↓
                     Send response via sendChatbotMessage()

LLM Integration Pattern

case 'bot_notification': {
  const { toJid, cmd, accountId } = payload;
  
  // 1. Call your LLM
  const llmResponse = await callClaude(cmd);
  
  // 2. Send response back
  await sendChatbotMessage(toJid, accountId, {
    body: [{ type: 'message', text: llmResponse }]
  });
}

See: LLM Integration Guide

Sample Applications

SampleDescriptionLink
Chatbot QuickstartOfficial tutorial (recommended start)GitHub
Claude ChatbotAI chatbot with Anthropic ClaudeGitHub
Unsplash ChatbotImage search with databaseGitHub
ERP ChatbotOracle ERP with scheduled alertsGitHub
Task ManagerFull CRUD appGitHub

See: Sample Applications Guide for analysis of all 10 samples

Common Operations

Send Message to Channel

// Team Chat API
await fetch('https://api.zoom.us/v2/chat/users/me/messages', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${token}` },
  body: JSON.stringify({
    message: 'Hello!',
    to_channel: 'CHANNEL_ID'
  })
});

Handle Button Click

// Webhook handler
case 'interactive_message_actions': {
  const { actionItem, toJid, accountId } = payload;
  
  if (actionItem.value === 'approve') {
    await sendChatbotMessage(toJid, accountId, {
      body: [{ type: 'message', text: '✅ Approved!' }]
    });
  }
}

Verify Webhook Signature

function verifyWebhook(req) {
  const message = `v0:${req.headers['x-zm-request-timestamp']}:${JSON.stringify(req.body)}`;
  const hash = crypto.createHmac('sha256', process.env.ZOOM_VERIFICATION_TOKEN)
    .update(message)
    .digest('hex');
  return req.headers['x-zm-signature'] === `v0=${hash}`;
}

Deployment

ngrok for Local Development

# Install ngrok
npm install -g ngrok

# Expose local server
ngrok http 4000

# Use HTTPS URL as Bot Endpoint URL in Zoom Marketplace
# Example: https://abc123.ngrok.io/webhook

Production Deployment

See: Deployment Guide for:

  • Nginx reverse proxy setup
  • Base path configuration
  • OAuth redirect URI setup

Limitations

LimitValue
Message length4,096 characters
File size512 MB
Members per channel10,000
Channels per user500

Security Best Practices

1. Verify webhook signatures - Always validate using x-zm-signature header 2. Sanitize messages - Limit to 4096 chars, remove control characters 3. Validate JIDs - Check format: user@domain or channel@domain 4. Environment variables - Never hardcode credentials 5. Use HTTPS - Required for production webhooks

See: Security Best Practices

Complete Documentation Library

Core Concepts (Start Here!)

  • [API Selection Guide](concepts/api-selection.md) - Choose Team Chat API vs Chatbot API
  • [Environment Setup](concepts/environment-setup.md) - Complete credentials guide
  • [Authentication Flows](concepts/authentication.md) - OAuth vs Client Credentials
  • [Webhook Architecture](concepts/webhooks.md) - How webhooks work
  • [Message Card Structure](concepts/message-structure.md) - Card component hierarchy

Complete Examples

  • [OAuth Setup](examples/oauth-setup.md) - Full OAuth implementation
  • [Send Message](examples/send-message.md) - Team Chat API message sending
  • [Chatbot Setup](examples/chatbot-setup.md) - Complete chatbot with webhooks
  • [Button Actions](examples/button-actions.md) - Handle interactive buttons
  • [Form Submissions](examples/form-submissions.md) - Process form data
  • [Slash Commands](examples/slash-commands.md) - Create custom commands
  • [LLM Integration](examples/llm-integration.md) - Claude/GPT integration
  • [Scheduled Alerts](examples/scheduled-alerts.md) - Cron + incoming webhooks
  • [Channel Management](examples/channel-management.md) - Create/manage channels

References

  • [API Reference](references/api-reference.md) - All endpoints and methods
  • [Webhook Events](references/webhook-events.md) - Complete event reference
  • [Message Cards](references/message-cards.md) - All card components
  • [Sample Applications](references/samples.md) - Analysis of 10 official samples
  • [Error Codes](references/error-codes.md) - Error handling guide

Troubleshooting

  • [OAuth Issues](troubleshooting/oauth-issues.md) - Authentication failures
  • [Webhook Issues](troubleshooting/webhook-issues.md) - Webhook debugging
  • [Common Issues](troubleshooting/common-issues.md) - Quick diagnostics

Resources

  • Official Docs: https://developers.zoom.us/docs/team-chat/
  • API Reference: https://developers.zoom.us/docs/api/rest/reference/chatbot/
  • Dev Forum: https://devforum.zoom.us/
  • App Marketplace: https://marketplace.zoom.us/

---

Need help? Start with Integrated Index section below for complete navigation.

---

Integrated Index

_This section was migrated from SKILL.md._

Complete navigation guide for the Zoom Team Chat skill.

Quick Start Paths

  • Start here: Get Started
  • Fast troubleshooting first: 5-Minute Runbook

Path 1: Team Chat API (User-Level Messaging)

For sending messages as a user account.

1. API Selection Guide - Confirm Team Chat API is right 2. Environment Setup - Get credentials 3. OAuth Setup Example - Implement authentication 4. Send Message Example - Send your first message

Path 2: Chatbot API (Interactive Bots)

For building interactive chatbots with rich messages.

1. API Selection Guide - Confirm Chatbot API is right 2. Environment Setup - Get credentials (including Bot JID) 3. Webhook Architecture - Understand webhook events 4. Chatbot Setup Example - Build your first bot 5. Message Cards Reference - Create rich messages

Core Concepts

Essential understanding for both APIs.

DocumentDescription
API Selection GuideChoose Team Chat API vs Chatbot API
Environment SetupComplete credentials and app configuration
Authentication FlowsOAuth vs Client Credentials
Webhook ArchitectureHow webhooks work (Chatbot API)
Message Card StructureCard component hierarchy
Deployment GuideProduction deployment strategies
Security Best PracticesSecure your integration

Complete Examples

Working code for common scenarios.

Authentication

ExampleDescription
OAuth SetupUser OAuth flow implementation
Token ManagementRefresh tokens, expiration handling

Basic Operations

ExampleDescription
Send MessageTeam Chat API message sending
Chatbot SetupComplete chatbot with webhooks
List ChannelsGet user's channels
Create ChannelCreate public/private channels

Interactive Features (Chatbot API)

ExampleDescription
Button ActionsHandle button clicks
Form SubmissionsProcess form data
Slash CommandsCreate custom commands
Dropdown SelectsChannel/member pickers

Advanced Integration

ExampleDescription
LLM IntegrationIntegrate Claude/GPT
Scheduled AlertsCron + incoming webhooks
Database IntegrationStore conversation state
Multi-Step WorkflowsComplex user interactions

References

API Documentation

ReferenceDescription
API ReferencePointers and common endpoints
Webhook EventsEvent types and handling checklist
Message CardsAll card components
Error CodesError handling guide

Sample Applications

ReferenceDescription
Sample ApplicationsSample app index/notes

Field Guides

ReferenceDescription
JID FormatsUnderstanding JID identifiers
Scopes ReferenceCommon scopes
Rate LimitsThrottling guidance

Troubleshooting

GuideDescription
Common IssuesQuick diagnostics and solutions
OAuth IssuesAuthentication failures
Webhook IssuesWebhook debugging
Message IssuesMessage sending problems
Deployment IssuesProduction problems

Architecture Patterns

Chatbot Lifecycle

User Action → Webhook → Process → Response

LLM Integration Pattern

User Input → Chatbot receives → Call LLM → Send response

Approval Workflow Pattern

Request → Send card with buttons → User clicks → Update status → Notify

Common Use Cases

Notifications

  • CI/CD build notifications
  • Server monitoring alerts
  • Scheduled reports
  • System health checks

Workflows

  • Approval requests
  • Task assignment
  • Status updates
  • Form submissions

Integrations

  • LLM-powered assistants
  • Database queries
  • External API integration
  • File/image sharing

Automation

  • Scheduled messages
  • Auto-responses
  • Data collection
  • Report generation

Resource Links

Official Documentation

  • [Team Chat Docs](https://developers.zoom.us/docs/team-chat/) - Official overview
  • [Chatbot Docs](https://developers.zoom.us/docs/team-chat/chatbot/extend/) - Chatbot guide
  • [API Reference](https://developers.zoom.us/docs/api/rest/reference/chatbot/) - REST API docs
  • [App Marketplace](https://marketplace.zoom.us/) - Create and manage apps

Sample Code

  • [Chatbot Quickstart](https://github.com/zoom/chatbot-nodejs-quickstart) - Official tutorial
  • [Claude Chatbot](https://github.com/zoom/zoom-chatbot-claude-sample) - AI integration
  • [Unsplash Chatbot](https://github.com/zoom/unsplash-chatbot) - Image search bot
  • [ERP Chatbot](https://github.com/zoom/zoom-erp-chatbot-sample) - Enterprise integration
  • [Task Manager](https://github.com/zoom/task-manager-sample) - Full CRUD app

Tools

  • [App Card Builder](https://appssdk.zoom.us/cardbuilder/) - Visual card designer
  • [ngrok](https://ngrok.com/) - Local webhook testing
  • [Postman](https://www.postman.com/) - API testing

Community

  • [Developer Forum](https://devforum.zoom.us/) - Ask questions
  • [GitHub Discussions](https://github.com/zoom) - Community support
  • [Developer Support](https://devsupport.zoom.us) - Official support

Documentation Status

✅ Complete

  • Main skill.md entry point
  • API Selection Guide
  • Environment Setup
  • Webhook Architecture
  • Chatbot Setup Example (complete working code)
  • Message Cards Reference
  • Common Issues Troubleshooting

📝 Pending (High Priority)

  • OAuth Setup Example
  • Send Message Example
  • Button Actions Example
  • LLM Integration Example
  • Webhook Events Reference
  • API Reference
  • Sample Applications Analysis

📋 Planned (Lower Priority)

  • Form Submissions Example
  • Channel Management Examples
  • Database Integration Example
  • Error Codes Reference
  • Rate Limits Guide
  • Deployment troubleshooting

Getting Started Checklist

For Team Chat API

  • [ ] Read API Selection Guide
  • [ ] Complete Environment Setup
  • [ ] Obtain Client ID, Client Secret
  • [ ] Add required scopes
  • [ ] Implement OAuth flow
  • [ ] Send first message

For Chatbot API

  • [ ] Read API Selection Guide
  • [ ] Complete Environment Setup
  • [ ] Obtain Client ID, Client Secret, Bot JID, Secret Token, Account ID
  • [ ] Enable Team Chat in Features
  • [ ] Configure Bot Endpoint URL and Slash Command
  • [ ] Set up ngrok for local testing
  • [ ] Implement webhook handler
  • [ ] Send first chatbot message

Version History

  • v1.0 (2026-02-09) - Initial comprehensive documentation
  • Core concepts (API selection, environment setup, webhooks)
  • Complete chatbot setup example
  • Message cards reference
  • Common issues troubleshooting

Support

Use this SKILL.md as the navigation hub for Team Chat API selection, setup, examples, and troubleshooting.

Environment Variables

  • See references/environment-variables.md for standardized .env keys and where to find each value.

Related skills

FAQ

What does build-zoom-team-chat-app do?

Reference skill for Zoom Team Chat. Use after routing to a chat workflow when building user-scoped messaging integrations, chatbot experiences, rich cards, buttons, slash.

When should I use build-zoom-team-chat-app?

User asks about build zoom team chat app or related SKILL.md workflows.

Is build-zoom-team-chat-app safe to install?

Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.