Zoom app credentials
This guide walks you through setting up your local development environment for building a Zoom Chatbot. You will clone the starter application, create and configure a Zoom OAuth app using the App Manifest API, add the required scopes, and populate your .env file with the necessary credentials to run the application locally.
Starter Application
Clone the repository and switch to the starter branch:
- Zoom Workplace Chatbot Repository (use the
starter-appbranch)
Create a Zoom Chatbot App using the App Manifest API
1. Create an OAuth app
- Go to the Zoom App Marketplace.
- Select General app and click Create.
App ID
Take note of your app ID in the URL after creating the app — you will need it later.
2. Retrieve app credentials
- Click Manage and select your app.
- Navigate to Basic Information → App Credentials. You use the app credentials for authorization.
3. Add required scopes
On the Scopes page, add the following scopes:
- Create apps:
marketplace:write:app - View an app:
marketplace:read:app
4. Update the App using the Manifest API
Use the following endpoint to quickly configure a Zoom Marketplace app:
PUT /marketplace/apps/{appId}/manifest
5. Use the Manifest JSON object to create your Zoom app
Use an API tool like Postman to send a PUT request to the manifest endpoint with the JSON object below as the request body.
Placeholder URLs
Replace placeholder URLs like https://example.ngrok.app with your actual tunnel URL (e.g., from ngrok).
{
"manifest": {
"display_information": {
"display_name": "Zoom Claude Chatbot Sample"
},
"oauth_information": {
"usage": "USER_OPERATION",
"development_redirect_uri": "[https://example.ngrok.app](https://example.ngrok.app)",
"production_redirect_uri": "",
"oauth_allow_list": [
"[https://example.ngrok.app](https://example.ngrok.app)",
"[https://oauth.pstmn.io/v1/callback](https://oauth.pstmn.io/v1/callback)"
],
"strict_mode": false,
"subdomain_strict_mode": false,
"scopes": [
{
"scope": "imchat:userapp",
"optional": false
},
{
"scope": "marketplace:read:app",
"optional": false
},
{
"scope": "marketplace:write:app",
"optional": false
}
]
},
"features": {
"products": ["ZOOM_CHAT"],
"development_home_uri": "",
"production_home_uri": "",
"in_client_feature": {
"zoom_app_api": {
"enable": false,
"zoom_app_apis": []
},
"guest_mode": {
"enable": false,
"enable_test_guest_mode": false
},
"in_client_oauth": {
"enable": false
},
"collaborate_mode": {
"enable": false,
"enable_screen_sharing": false,
"enable_play_together": false,
"enable_start_immediately": false,
"enable_join_immediately": false
}
},
"zoom_client_support": {
"mobile": {
"enable": false
},
"zoom_room": {
"enable": false,
"enable_personal_zoom_room": false,
"enable_shared_zoom_room": false,
"enable_digital_signage": false,
"enable_zoom_rooms_controller": false
},
"pwa_client": {
"enable": false
}
},
"embed": {
"meeting_sdk": {
"enable": false,
"enable_device": false,
"devices": []
},
"contact_center_sdk": {
"enable": false
},
"phone_sdk": {
"enable": false
}
},
"team_chat_subscription": {
"enable": true,
"enable_support_channel": false,
"slash_command": {
"command": "",
"command_hints": [],
"enable_add_to_channel": false,
"development_message_url": "[https://example.ngrok.app/anthropic](https://example.ngrok.app/anthropic)",
"production_message_url": "",
"sender_type": "zoom",
"welcome_msg": {
"title": "",
"body": ""
},
"trust_domain_list": []
},
"shortcuts": []
},
"event_subscription": {
"enable": false,
"events": []
}
}
}
}
Set up credentials
After configuring your Zoom Marketplace app, add the required credentials to your environment variables:
- Navigate to Basic Information to retrieve your Client ID and Client Secret.
- Ensure the app is marked as User-managed under Basic Information.
- Go to Features → Access to get your secret token.
- Go to Surface → Chat Subscription to get your Bot JID.
Update the following variables in your .env file:
# Zoom app credentials
ZOOM_CLIENT_ID=your_zoom_client_id
ZOOM_CLIENT_SECRET=your_zoom_client_secret
ZOOM_CHANNEL_ID=your_zoom_channel_id
# Zoom account ID
ACCOUNT_ID=your_account_id
# MongoDB configuration
MONGO_URI=your_mongodb_connection_string
# Zoom bot JIDs (from Marketplace app settings)
ZOOM_ROBOT_JID=your_zoom_robot_jid
ZOOM_USER_JID=your_zoom_user_jid
# Server configuration (optional)
PORT=3000
Security Note
Do not store credentials in plain text in production environments.