A Node.js/Express server that proxies to the Zoom AI Scribe API for speech-to-text transcription. It handles JWT authentication and exposes simple REST endpoints for fast mode (with file upload) and batch jobs (S3-based).
- Sync transcription —
POST /transcribewith an audio/video file, returns transcript in the response. - Batch jobs — Create, list, get, and delete Scribe batch jobs using S3 input/output buckets.
- Webhooks —
POST /webhooks/scribeendpoint to receive job status notifications.
- A Zoom developer account for the Build platform
- For batch: IAM credentials to access an S3 bucket
- Node.js v24+
git clone https://github.com/zoom/scribe-quickstart.git
cd scribe-quickstart
npm install-
Copy environment variables and add your Zoom Build Platform and AWS Security Token Service credentials:
cp .env.example .env
You can use scripts/generate-sts-creds.sh to generate temporary AWS STS credentials using your IAM access key and secret key if you have the aws cli installed:
./scripts/generate-sts-creds.sh <AWS_ACCESS_KEY_ID> <AWS_SECRET_ACCESS_KEY>This will generate a temporary AWS STS credentials and write them to the .env file.
-
Edit
.envand set at minimum:Variable Required Description ZOOM_API_KEYYes Zoom Build platform API key ZOOM_API_SECRETYes Zoom Build platform API secret PORTNo Server port (default: 4000)LANGUAGENo Default transcription language (default: en-US)For batch jobs you must also set:
Variable Required for batch Description S3_INPUT_URIYes S3 URI for input files (e.g. s3://bucket/)S3_OUTPUT_URIYes S3 URI for output transcripts AWS_ACCESS_KEY_IDYes AWS credentials for Scribe AWS_SECRET_ACCESS_KEYYes AWS credentials for Scribe AWS_SESSION_TOKENYes (if using temp) AWS session token Optional:
Variable Description WEBHOOK_URLURL for batch job status webhooks WEBHOOK_SECRETSecret to verify webhook payloads -
Start the server:
npm start
The server runs at
http://localhost:4000(or yourPORT).
A small web UI is provided to try transcription and batch jobs.
-
Start the API server (from the project root):
npm run start
-
In another terminal, run the playground:
cd playground && npm install && npm run dev
-
Open the URL shown by Vite (e.g.
http://localhost:5173). If the API runs on a different origin, set theAPIbase URL inplayground/src/shared.ts(e.g.export const API = 'http://localhost:4000') or use a Vite proxy to the API.