Use of this sample app is subject to our Terms of Use.
This Express/Node.js project demonstrates how to set up and listen to Zoom webhooks that, when processed, will automatically stream a download and subsequent upload to AWS S3 for Cloud Recordings storage.
In a terminal window (e.g., Git Bash for Windows or Terminal for Linux/Mac OS), clone this repository by executing the following command:
$ git clone https://github.com/zoom/videosdk-s3-cloud-recordings.git
-
In a terminal window,
cd
into the cloned repository:$ cd zoom-video-sdk-s3-uploader
-
Install all necessary dependencies with
npm
,yarn
, orpnpm
:$ npm install
-
Rename
.env.local
to.env
, replacing all environment variables for use with the AWS SDK and Zoom's Video SDK. -
Start the development server
$ npm run dev
-
Once the server is up and running, Zoom requires all webhook endpoints are first validated before webhooks are sent. Refer to Zoom's Using Webhooks guide for more information.
Note
The only required webhook event for this application is Video SDK > Session recording completed. All others events that are sent to this application will return 200 OK
, but will not be processed.
This application exposes the POST /
endpoint; however, this endpoint should not be called manually. Instead, this endpoint is called by Zoom once a Video SDK Cloud Recording has finished successfully.
As this application is written in TypeScript, it will need to be deployed with the ability to run via ts-node
, tsx
, swc-node
, or similar; node
will be unable to run this application out of the box.
If you want to be able to run the application via the node
command, it must first be built by executing npm run build
, which will transpile all TypeScript files to JavaScript, outputting them to the dist
directory. Once transpiled you can run the application by executing node server.js
within the dist
directory.
If you're looking for help, try Developer Support or our Developer Forum. Priority support is also available with Premier Developer Support plans.