# 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](https://github.com/just-zoomit/zoomworkplace-chatbot) (use the `starter-app` branch) --- ## Create a Zoom Chatbot App using the App Manifest API ### 1. Create an OAuth app 1. Go to the [Zoom App Marketplace](https://marketplace.zoom.us). 2. 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 1. Click **Manage** and select your app. 2. 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: ```http 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). ```json { "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: 1. Navigate to **Basic Information** to retrieve your **Client ID** and **Client Secret**. 2. Ensure the app is marked as **User-managed** under **Basic Information**. 3. Go to **Features** → **Access** to get your secret token. 4. Go to **Surface** → **Chat Subscription** to get your **Bot JID**. Update the following variables in your .env file: ```plainText # 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.