7 ways to get Zoom meeting transcriptions

13 min read

Quick summary:

Most developers building meeting transcription features get stuck debugging Zoom’s inconsistent APIs and rebuilding infrastructure for each meeting platform. This guide compares technical approaches to capturing Zoom transcripts — from Zoom SDKs to cross-platform meeting bot solutions — so you can choose the method that works best for your app.

What you’ll learn:

  • Why the Zoom Cloud Recording API isn’t the best method for programmatic transcriptions at scale.
  • How meeting bot APIs compare to Zoom SDKs or standalone transcription tools
  • Which methods work across multiple meeting platforms versus Zoom-only solutions

Who it’s for: Software engineers, product managers, and technical leads building SaaS applications that need meeting transcript functionality. Whether you’re adding CRM intelligence, building training platforms, or developing collaboration tools, this article helps you evaluate transcript capture methods based on development complexity and scalability requirements.

Building meeting transcription features shouldn’t require a six-month engineering project. Yet most developers who start with Zoom’s APIs find themselves debugging missing transcript files, managing separate integrations for each meeting platform, and scaling infrastructure they never wanted to build in the first place.

There are better approaches. This guide walks through seven methods for getting Zoom transcripts programmatically, from Zoom’s native options to meeting bot APIs that work across platforms. We’ll cover what actually works in production, what breaks at scale, and how to choose the right approach for your application’s needs.

The baseline: Zoom’s native transcription 

Let’s start with the most straightforward approach: Zoom’s built-in transcription feature. This works fine for personal use, but understanding its limitations helps explain why developers need more sophisticated solutions. 

To get transcriptions directly from Zoom, you need a Pro, Business, Education, and Enterprise plan. The most basic workflow would be to: 

  1. Access transcripts: Download completed transcripts from the Recordings section in the Zoom portal, typically as VTT files.
  2. Enable transcription in your Zoom account: Navigate to Settings > Recording in the Zoom web portal, enable Cloud Recording, and check “Create audio transcript” under Advanced settings.
  3. Record with transcription: During meetings, click Record > Record to the Cloud. Zoom processes transcripts after the meeting ends.

If you’re downloading meeting transcripts for personal use, then this would be manageable. But programmatic transcriptions are what you’re looking for if you’re experimenting and building products on top of user transcripts. Getting transcripts with an API means you get to work around limitations with: 

  • Meeting hosting: You can use an API so your product can access transcripts from meetings across users. 
  • Account setup: You wouldn’t need all your users to enable cloud recording and transcription settings in their Zoom account for your product to work. You also wouldn’t limit your users to those with premium Zoom accounts. 
  • Manual recordings: Your users wouldn’t have to remember to hit record and export transcripts after every meeting. Your product can do it for them. 

How to get recordings programmatically with the Zoom Cloud Recording API

If you want to stick within the Zoom platform, you have the option of using the Zoom Cloud Recording API. The Zoom Cloud Recording API lets you programmatically access completed meeting recordings — including transcripts — when they’re available. You would:

  • Set up webhook notifications: Subscribe to the recording.completed event to get notified when recordings are processed (or use recording.transcript_completed for transcript-specific notifications)
  • Authenticate with Zoom: Use Server-to-Server OAuth authentication to access the API
  • Fetch recording metadata: Call the recordings endpoint (GET /users/{userId}/recordings or GET /meetings/{meetingId}/recordings) to get download URLs for all recording files
  • Download transcript files: Look for files with file_type: "TRANSCRIPT" and recording_type: "audio_transcript" in the response

Here’s how you would subscribe to the webhook event to fetch recordings and download them.

Using the Zoom Cloud Recording API to get transcripts programmatically

// 1. Set up webhook to receive notifications
app.post('/zoom-webhook', async (req, res) => {
  const { event, payload } = req.body;
  
  if (event === 'recording.completed') {
    const meetingId = payload.object.uuid || payload.object.id;
    await processRecording(meetingId);
  }
  
  res.status(200).send('OK');
});

// 2. Fetch recordings and filter for transcripts
async function processRecording(meetingId) {
  const response = await fetch(
    `https://api.zoom.us/v2/meetings/${meetingId}/recordings`,
    {
      headers: { 'Authorization': `Bearer ${accessToken}` }
    }
  );
  
  const data = await response.json();
  
  // Filter for transcript files
  const transcripts = data.recording_files?.filter(
    file => file.file_type === 'TRANSCRIPT'
  ) || [];
  
  // Download each transcript
  for (const transcript of transcripts) {
    const content = await fetch(transcript.download_url, {
      headers: { 'Authorization': `Bearer ${accessToken}` }
    }).then(r => r.text());
    
    // Store transcript content
    await storeTranscript(meetingId, content);
  }
}

Where the Zoom Cloud Recording API falls short

The Zoom Cloud Recording API isn’t a go-to choice for everyone, though. The Zoom Cloud Recording API works fine if you’re building tools for people who control their own meeting environments. This could be a personal productivity tool that you’re vibe coding or an internal company tool where an IT team controls all meeting accounts and host settings. 

But if you’re building customer-facing SaaS or products that serve multiple organizations, then you’re going to be limited by the Cloud Recording API’s: 

  • Host-only access: The recorded meeting is only stored in the host’s account, so other users cannot access the meeting and transcript details. 
  • Limited transcript data: Zoom’s transcript format lacks the structured JSON output with timestamps, speaker labels, and confidence thresholds that third-party APIs can provide. 
  • Platform lock-in: You’re still limited to Zoom users with specific plan types (Business/Enterprise) with the right account settings enabled. 
  • Post-meeting processing delays: Transcripts require additional processing time on Zoom after recordings are complete, adding unpredictable latency. 
  • No security guardrails: There are no built-in compliance controls, custom retention policies, or advanced security features that would be required for most organizational use.

How developers are actually getting meeting transcripts

When Zoom’s Cloud Recording API isn’t sufficient, developers typically turn to one of these approaches:

Zoom RTMS SDK

Zoom’s Real-Time Media Streams (RTMS) provides WebSocket-based access to live meeting transcripts as they happen. You register a Zoom General App and connect to meeting streams via WebSocket. Transcript events arrive with speaker identification and timestamps as participants speak, delivering transcription data with minimal latency.

Pros:

  • Get live transcripts during meetings for coaching applications, live note-taking, or real-time meeting analysis. 
  • Includes live speaker-change events and metadata for accurate diarization
  • Transcript events arrive in milliseconds, far faster than post-meeting processing
  • Unlike bot-based solutions, RTMS doesn’t add another participant to meetings
  • Good for real-time coaching apps, live meeting dashboards, compliance monitoring, or any application requiring immediate transcript access

Cons:

  • Only works if the meeting host’s organization has RTMS enabled. 
  • Complex WebSocket implementation, requiring custom handling for authentication, keep-alives, reconnections, and streaming protocol management. 
  • Four to six week Zoom approval process before production use.
  • Only works on Zoom, requiring separate solutions for other meeting platforms. 
  • Not good for customer-facing products where you can’t control meeting hosts, or applications needing cross-platform support.

Meeting bot with the Zoom Meeting SDK

Building a custom Zoom meeting bot involves using the Zoom Meeting SDK (primarily Linux version for headless bots) to programmatically join meetings and capture raw audio/video streams. You would need to send processed audio to transcription APIs like AssemblyAI, Deepgram, or OpenAI Whisper since the Zoom SDK doesn’t provide built-in transcription for bot-captured audio. The process for building a custom meeting bot requires significant infrastructure setup compared to other methods. 

Pros:

  • You get to fully customize your meeting bot’s transcript processing, audio quality settings, data handling, and branding. 
  • Bots can join any meeting regardless of host settings or account type.
  • Good for enterprise applications with dedicated engineering resources, highly specialized transcript processing needs, or products requiring deep customization

Cons:

  • Custom bot development is a massive engineering investment, with development teams expecting to spend upwards of six months building basic functionality and ensuring reliability. 
  • Each meeting bot requires its own virtual server running a complete operating system and Zoom client. This is a big problem as you scale, as the costs and complexity of running these servers become unpredictable as your meeting volume goes up. 
  • Platform updates break bots regularly and require dedicated engineers for ongoing maintenance. 
  • Not good for startups or product teams wanting to focus on features rather than infrastructure, applications with unpredictable meeting volumes, or teams without dedicated resources for building and maintaining meeting bots.

Transcription API

You can use transcription APIs like AssemblyAI, Deepgram, or OpenAI Whisper to process audio from multiple Zoom recording sources. These transcription providers work with the Zoom RTMS API, meeting bots developed with the Zoom Meeting SDK, or desktop recordings and web-captured audio. 

Pros:

  • Works with audio from any capture method.
  • More accurate and reliable than platform-native transcription, with features like confidence scores, multi-language support, custom vocabulary support, and speaker diarization. 
  • Good for applications requiring high transcription accuracy, multi-language support, or integration with existing audio capture systems

Cons:

  • This API would be an additional service dependency to pay for, set up, and monitor on top of your audio and video capture infrastructure. 
  • Transcription APIs don’t join meetings to automatically access recordings for you, so you’ll still need to build infrastructure for getting meeting audio.  
  • You would need to store and manage large audio files to upload into the transcription API.
  • Not good for applications needing complete meeting recording (audio + video), products requiring meeting metadata, or teams wanting a single-vendor solution for meeting capture and transcription. 

Standalone transcription software

Standalone meeting tools join meetings as AI assistants, automatically record conversations, and provide webhook notifications or API access when transcripts are ready. You would integrate with their APIs to pull transcript data into your application.

Pros:

  • No complex setup and immediate deployment once you start paying for the tool. 
  • Most tools work across platforms, so transcriptions are not limited to just Zoom. 
  • These tools provide out-of-the-box AI features to enhance transcripts, such as summaries, action items, and basic analysis. 
  • Good for internal productivity use cases or creating transcript archives. 

Cons:

  • Most tools only offer basic webhook notifications and simple transcript exports. There’s little to no customization for bot behavior, programmatic integrations or data processing workflows. 
  • Users would have to authenticate separately within an external tool rather that your app’s login flow.  
  • Users would manage recordings in the tool’s software and not your own product experience. 
  • Costs scale with team size rather than actual usage.
  • Not a suitable data source to build on top of for embedded software experiences, customer-facing SaaS features, or custom AI models. 

Nylas Notetaker API 

Instead of building a custom meeting bot yourself, you can use the Nylas API to send an AI meeting bot to your Zoom meetings and retrieve audio and video files. With Nylas, developers can send meeting bots to Zoom, Teams, and Google Meet with a single API that also handles transcriptions, speaker diarization, webhooks, and calendar syncs. 

Pros:

  • Teams can ship meeting recording and transcription features in a few weeks instead of months. 
  • Work with a single integration partner for cross-platform meeting recordings and transcription services. Nylas partners with AssemblyAI, giving developers accurate built-in transcription services without any additional custom development. 
  • Bots can automatically join and retrieve transcripts from scheduled meetings through calendar sync. 
  • Built-in SOC-2, HIPAA, and GDPR compliance handling for transcripts collected in business settings or in highly regulated industries. 
  • Good for product teams building customer-facing SaaS applications or custom AI features and workflows on top of meeting data. 

Cons:

  • Bots join as visible participants, which may not work for scenarios requiring invisible recording. 
  • Not good for applications requiring completely invisible recording or teams with highly specific infrastructure requirements in need of completely custom builds. 

How to use the Nylas API to get meeting transcripts

Before you start building with the Nylas Notetaker, make sure you have:

  • A Nylas developer account with API access
  • Your Nylas API key from the dashboard
  • A Grant ID for the user whose meetings you want to record
  • Zoom meeting links (either from calendar events or manual input)

Create a Nylas account for free to record up to 5 hours of meetings free! Start your 14-day free trial of the Nylas Notetaker to start building in our sandbox.

Step 1

Set up your development environment with the necessary credentials.

Development environment setup

#Install the Nylas SDK
npm install nylas dotenv

# Create .env file 
echo "NYLAS_API_KEY=your_api_key_here" > .env 
echo "NYLAS_GRANT_ID=your_grant_id_here" >> .env

Import packages and initialize Nylas SDK

import Nylas from 'nylas';
import 'dotenv/config';

// Initialize the Nylas client
const nylas = new Nylas({
  apiKey: process.env.NYLAS_API_KEY,
});

const grantId = process.env.NYLAS_GRANT_ID;

 

Step 2

If you don’t already have a Grant ID, you’ll need to authenticate a user and obtain one through Nylas’s OAuth flow.

Obtain Grant ID

"41009df5-bf11-4c97-aa18-b285b5f2e386"; // Example Grant ID

 

Step 3

Deploy a meeting bot to join and record a specific Zoom meeting.

Deploy a bot to get Zoom transcripts

// Create a notetaker for transcript capture from a Zoom meeting
async function createTranscriptBot(meetingLink, meetingTitle) {
  try {
    const notetaker = await nylas.notetakers.create({
      identifier: grantId,
      requestBody: {
        meetingLink, // e.g., "https://zoom.us/j/123456789"
        name: `Transcript Bot - ${meetingTitle}`,
        settings: {
          transcription: true,         // Generate transcripts
          speakerLabels: true,         // Identify who said what
          audioRecording: true,        // Record audio for backup
          videoRecording: false        // Audio-only for transcripts
        }
      }
    });
    
    console.log(`Transcript bot created with ID: ${notetaker.data.id}`);
    return notetaker.data.id;
  } catch (error) {
    console.error('Error creating transcript bot:', error);
  }
}

// Example usage
const transcriptBotId = await createTranscriptBot(
  "https://zoom.us/j/123456789", 
  "Sales Team Weekly Sync"
);

 

or 

Use the Nylas Calendar Sync to automatically monitor your calendar and send a meeting bot to a Zoom meeting based on rules you configure.

Deploy a meeting bot with Calendar sync

// Set up automatic transcript bot deployment for future calendar meetings
async function setupAutoTranscription() {
  try {
    const calendarSync = await nylas.calendars.update({
      identifier: grantId,
      calendarId: "primary",
      requestBody: {
        // Configuration for all auto-deployed transcript bots
        notetaker: {
          name: "Meeting Transcript Bot",
          settings: {
            transcription: true,       // Generate transcripts
            speakerLabels: true,       // Identify speakers
            audioRecording: true,      // Record audio
            videoRecording: false      // Transcript-focused
          }
        }
      }
    });
    
    console.log('Auto-transcription configured:', calendarSync.data);
    return calendarSync.data.id;
  } catch (error) {
    console.error('Error setting up auto-transcription:', error);
  }
}

 

Step 4

Set up webhook handling to receive and process transcripts when they’re ready.

Receive transcript data

// Webhook notifications (recommended for real-time processing)
app.post('/webhooks/notetaker', async (req, res) => {
  const webhookData = req.body;
  
  // Check for transcript availability notification
  if (webhookData.type === 'notetaker.media' && 
      webhookData.data.object.state === 'available') {

    const { data } = webhookData;
    
    const notetakerId = data.object.id;
    const mediaUrls = data.object.media;
    
    console.log('Transcript URL:', mediaUrls.transcript);
    console.log('Recording URL (if needed):', mediaUrls.recording);
    
    // Download and process the transcript
    await processTranscript(mediaUrls.transcript, notetakerId);
  }
  
  res.status(200).send('Webhook received');
});

 

What apps can you build on top of Zoom transcript data? 

With programmatic access to meeting transcript data and calendar syncs, you can spin up features like: 

  • Deal progression tracking in a CRM: Extract next steps, budget discussions, and decision timelines from sales call transcriptions to update opportunity records.
  • Automated follow-up generation: Generate action items and meeting summaries from sales calls to create immediate follow-ups or personalized email sequences. 
  • Candidate experience optimization in an ATS: Use interview transcripts to measure question effectiveness, detect bias, gather intelligence on candidate expectations, or even generate feedback reports for hiring managers. 
  • Customer health scoring: Predict customer satisfaction scores and support needs by using transcripts to extract pain points and build sentiment analysis models. 
  • Performance coaching tools: Analyze internal team calls or customer-facing interactions to identify coaching opportunities or knowledge gaps in a company. 
  • Client consultation documentation: Generate detailed case notes for legal firms with action items and billable hour tracking from attorney-client meetings
  • Clinical documentation automation: Convert patient consultations into structured SOAP notes and treatment plans. 

What’s the best way for you to get Zoom transcripts?

MethodSetup complexityCustomizationData sourcePricing model
Zoom Cloud Recording APIMedium (Needs OAuth, configured webhooks, and cloud recording enabled in a host’s Zoom account) No customization for transcript formatting or data processingZoom only
Free with paid Zoom plans
Zoom RTMS SDKHigh (Needs custom WebSocket authentication, streaming protocol management, and Zoom app reviews)High (Custom WebSocket handling for data processing, custom data storage, wide integration options) Zoom onlyUsage-based pricing
Custom meeting bots with Zoom Meeting SDKVery high (Needs custom server infrastructure, raw media processing, container orchestration, and Zoom app reviews)High (Complete control over audio/video processing, UI/UX, bot appearance and behavior) Zoom onlyUsage-based pricing. Builders also take on higher costs for infrastructure development and maintenance.
Transcription APIsHigh (Custom data processing and vocabulary libraries) Medium (Audio capture must be developed separately)Any audio input Usage-based pricing

Standalone software
Low (User creates account to start using software)Low (Locked into infrastructure and UI/UX of selected software, minimal API access for custom setups)Any audio input
License-based pricing
Nylas Notetaker API
Low (All bot infrastructure and partnerships with transcription APIs handled by Nylas.)
High (Integrate meeting bot infrastructurinto existing application architecture, integrations, or custom AI models.) Zoom, Google Meet, Microsoft TeamsUsage-based pricing

For developers building customer-facing SaaS applications, a meeting bot API gives you the most practical path to adding transcript functionality that users actually want. According to our 2025 State of Meeting Recordings report, SaaS users see the most value in meeting tools and notetakers that give them access to video and audio files, followed by transcription-based features like post-meeting summaries and speaker-labeled transcripts. Meeting bot APIs deliver both components without requiring you to build recording infrastructure from scratch.

If you’re looking to add meeting transcript functionality without the infrastructure complexity, Nylas Notetaker provides simplified meeting bot development with native calendar sync across Google, Microsoft, and other providers. You can deploy transcript bots, process structured transcript data, and integrate meeting intelligence into your application in weeks rather than months. 

Ready to get started?

Create a Nylas account for free to record up to 5 hours of meetings free!

Related resources

How to Add AI Meeting Recording with Lovable

Learn how to integrate AI meeting recording into your app using Lovable and Nylas Notetaker. Generate transcripts, summaries, and action items in minutes.

How to Add AI Sales Call Transcription to a CRM

Quick summary: Purpose: Learn how to build sales call tracking features into a CRM by…

How to Record Microsoft Teams Meetings when Screen Capture is Blocked

Upcoming Update: Microsoft Teams is rolling out screen capture blocking features in 2025 that turn…