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:


Create a Zoom Chatbot App using the App Manifest API

1. Create an OAuth app

  1. Go to the Zoom App Marketplace.
  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 InformationApp 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:

  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 FeaturesAccess to get your secret token.
  4. Go to SurfaceChat 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.