This shows how to use the Attendee API to implement an Meeting Notetaker that uses Zoom RTMS. It will transcribe the meeting in real-time. Once the meeting is over, it will show the recording of the meeting.
-
Ngrok Since Zoom RTMS needs to send webhooks to your local application, you'll need ngrok to create a secure tunnel to your localhost. Ngrok is free for basic usage. If you are deploying this application on the cloud, then you do not need ngrok.
-
Node version 22+: This demo uses Node.js version 22 or higher.
git clone https://github.com/attendee-labs/rtms-notetaker-example
cd rtms-notetaker-examplenpm install-
Install ngrok: Download from ngrok.com or install via package manager:
# On macOS with Homebrew brew install ngrok # On Ubuntu/Debian snap install ngrok
-
Start ngrok tunnel: In a separate terminal, run:
ngrok http 5005
-
Copy the public URL: Ngrok will display something like:
Forwarding https://abc123.ngrok.io -> http://localhost:5005Copy the
https://abc123.ngrok.ioURL - you'll need this for webhook configuration.
-
Go to the Zoom Developer Portal and create a new General app.
-
On the sidebar select 'Basic Information'.
-
For the OAuth redirect URLs, you can write https://zoom.us or any other URL. Because we are not using OAuth.
-
On the sidebar select 'Access'.
-
Click 'Add new Event Subscription'.
-
Subscribe to the 'RTMS started' and 'RTMS stopped' events.
-
Set the 'Event notification endpoint URL' to the ngrok URL you copied earlier.
-
Save the changes.
-
On the sidebar select 'Scopes'.
-
Add the following scopes:
- meeting:read:meeting_audio
- meeting:read:meeting_transcript
- meeting:read:meeting_chat
- meeting:read:meeting_video
- meeting:read:meeting_screenshare
-
On the sidebar select 'Local test'.
-
Click the 'Add app now' button and authorize the app.
-
Go to your Zoom App Settings at https://zoom.us/profile/setting?tab=zoomapps
-
Enable share realtime meeting content with apps
-
Under "Auto-start apps that access shared realtime meeting content" click the "Choose an app to auto-start" button and select your app.
- Sign into your Attendee account
- Navigate to the API Keys section and create a new API key, save this in the .env file as ATTENDEE_API_KEY
- Navigate to the Settings -> Credentials section and click the button to add Zoom credentials.
- Enter the Client ID and Client Secret of your Zoom RTMS app.
- Navigate to the Settings -> Webhooks section and create a new webhook. Have it point to
https://<YOUR NGROK DOMAIN>/attendee-webhook. - Subscribe to the
transcript.updateandbot.state_changeevents. - Save the webhook.
Set the following environment variables in the .env file:
- ATTENDEE_API_KEY=
<YOUR ATTENDEE API KEY> - ATTENDEE_BASE_URL=
<YOUR ATTENDEE BASE URL>(defaults to https://app.attendee.dev)
node index.jsJoin a meeting in Zoom. The RTMS app should automatically start recording. Then navigate to the application running at http://localhost:5005. You should see the meeting transcript.