Zoom
Authentication Type: Server-to-Server OAuth (Account ID + Client ID + Client Secret)
Description: Pull Zoom meeting metadata, cloud recordings, participants, and WebVTT transcripts for call analysis and downstream processing.
Authentication
These tools authenticate to Zoom using a Server-to-Server OAuth app. You'll need:
- Account ID — found on the app's credentials page
- Client ID — found on the app's credentials page
- Client Secret — found on the app's credentials page
Required Scopes:
meeting:read:meeting:admin(ormeeting:read) — read meeting metadatacloud_recording:read:list_user_recordings:admin— list a user's cloud recordingscloud_recording:read:recording:admin— access individual meeting recordings and transcriptsreport:read:list_meeting_participants:admin(orreport:read:admin) — list past meeting participants
Cloud recording and audio transcription must be enabled on the account for transcripts to be produced.
Meetings
Fetch metadata, cloud recordings, and transcripts for individual Zoom meetings.
Get Meeting
Fetch metadata for a Zoom meeting — topic, host, scheduled start time, duration, timezone, agenda, and join URL.
Operation Type: Query (Read)
Parameters:
- meetingId
string(required): The meeting numeric ID or UUID. UUIDs containing/or starting with/are double URL-encoded automatically per Zoom's rules - occurrenceId
string(nullable): For recurring meetings, the specific occurrence ID
Returns:
- id
number: Numeric meeting ID - uuid
string: Meeting UUID - hostId
string(nullable): Host's Zoom user ID - hostEmail
string(nullable): Host's email - topic
string: Meeting topic - type
number(nullable): Meeting type code (e.g. 2 = scheduled, 8 = recurring) - status
string(nullable): Meeting status - startTime
string(nullable): Scheduled start time (ISO 8601) - duration
number(nullable): Duration in minutes - timezone
string(nullable): IANA timezone - agenda
string(nullable): Meeting agenda - createdAt
string(nullable): Creation timestamp (ISO 8601) - joinUrl
string(nullable): URL attendees use to join
Example Usage:
{
"meetingId": "83925123456",
"occurrenceId": null
}
Get Meeting Recordings
List all cloud recording files (audio, video, chat, transcript) for a single Zoom meeting instance, including download URLs.
Operation Type: Query (Read)
Parameters:
- meetingId
string(required): Meeting numeric ID or UUID. UUIDs are handled with Zoom's double-encoding rules
Returns:
- uuid
string: Meeting UUID - id
number(nullable): Numeric meeting ID - topic
string(nullable): Meeting topic - startTime
string(nullable): Meeting start time (ISO 8601) - duration
number(nullable): Duration in minutes - totalSize
number(nullable): Combined size of all recording files in bytes - recordingCount
number(nullable): Number of recording files - recordingFiles
array of objects: All recording files attached to the meeting- id
string(nullable): Recording file ID - fileType
string(nullable): File type (e.g.MP4,M4A,TRANSCRIPT,CHAT) - fileExtension
string(nullable): File extension - recordingType
string(nullable): Recording type (e.g.shared_screen_with_speaker_view,audio_transcript) - fileSize
number(nullable): File size in bytes - playUrl
string(nullable): URL to play the recording in a browser - downloadUrl
string(nullable): URL to download the raw file (requires the Zoom access token) - status
string(nullable): Processing status - recordingStart
string(nullable): Recording start time (ISO 8601) - recordingEnd
string(nullable): Recording end time (ISO 8601)
- id
Example Usage:
{
"meetingId": "83925123456"
}
Get Meeting Transcript
Fetch the cloud recording transcript (WebVTT) for a Zoom meeting. Requires that cloud recording and audio transcription were enabled for the meeting.
Operation Type: Query (Read)
Parameters:
- meetingId
string(required): The meeting numeric ID or UUID. UUIDs containing/or starting with/are double URL-encoded automatically
Returns:
- meetingId
string: The meeting ID echoed from input - meetingUuid
string: The meeting UUID from Zoom - topic
string(nullable): The meeting topic - startTime
string(nullable): Meeting start time (ISO 8601) - transcriptVtt
string(nullable): The full transcript content in WebVTT format.nullwhen no transcript is available for the meeting - downloadUrl
string(nullable): The Zoom download URL for the transcript file
Example Usage:
{
"meetingId": "abcDEFghiJKL1234567=="
}
Past Meetings
Resolve per-occurrence UUIDs and look up who actually attended.
List Past Meeting Instances
List the UUIDs of all past occurrences of a recurring Zoom meeting. Transcripts and recordings are keyed per-occurrence, so you typically need these UUIDs before fetching them.
Operation Type: Query (Read)
Parameters:
- meetingId
string(required): Numeric meeting ID (not UUID). For a recurring meeting, returns one entry per occurrence
Returns:
- meetings
array of objects: Past occurrences of the meeting- uuid
string: Occurrence UUID — use this with the transcript/recording tools - startTime
string(nullable): Occurrence start time (ISO 8601)
- uuid
Example Usage:
{
"meetingId": "83925123456"
}
List Past Meeting Participants
List the participants who attended a past Zoom meeting instance. Useful for attributing transcript content to specific attendees.
Operation Type: Query (Read)
Parameters:
- meetingUuid
string(required): Meeting UUID (not the numeric ID). Double-encoding is handled automatically - pageSize
number(nullable): Max records per page, up to 300 - nextPageToken
string(nullable): Token for paging through results
Returns:
- totalRecords
number(nullable): Total number of participants across all pages - nextPageToken
string(nullable): Token to fetch the next page, when more results are available - participants
array of objects: Participants on this occurrence- id
string(nullable): Zoom participant ID - name
string: Display name in the meeting - userEmail
string(nullable): Participant's email (when Zoom could resolve it)
- id
Example Usage:
{
"meetingUuid": "abcDEFghiJKL1234567==",
"pageSize": 100,
"nextPageToken": null
}
Users
Discover which of a user's meetings have recordings available.
List User Recordings
List cloud recordings for a Zoom user within a date range. Use this to discover past meetings that have recordings or transcripts available before fetching them individually.
Operation Type: Query (Read)
Parameters:
- userId
string(nullable): The Zoom user ID or email. Defaults to"me"(the token-owning user) - from
string(nullable): Start date (yyyy-mm-dd). Zoom defaults to 1 month ago - to
string(nullable): End date (yyyy-mm-dd). Zoom defaults to today - pageSize
number(nullable): Max records per page, up to 300. Zoom defaults to 30 - nextPageToken
string(nullable): Token for paging through results
Returns:
- from
string(nullable): Start of the returned window - to
string(nullable): End of the returned window - nextPageToken
string(nullable): Token to fetch the next page - meetings
array of objects: Meetings with cloud recordings in the window- uuid
string: Meeting UUID - id
number: Numeric meeting ID - topic
string: Meeting topic - startTime
string(nullable): Meeting start time (ISO 8601) - duration
number(nullable): Duration in minutes - totalSize
number(nullable): Combined size of all recording files in bytes - recordingCount
number(nullable): Number of recording files - hasTranscript
boolean: Whether a transcript file is attached to the meeting
- uuid
Example Usage:
{
"userId": "me",
"from": "2026-03-01",
"to": "2026-04-15",
"pageSize": 100,
"nextPageToken": null
}
Common Use Cases
Call transcript ingestion:
- Use List User Recordings to discover recent meetings that have transcripts (
hasTranscript: true) - For recurring meetings, use List Past Meeting Instances to enumerate per-occurrence UUIDs
- Pull the WebVTT with Get Meeting Transcript, then parse it into speaker-attributed segments for summarization or search
Attribution and context:
- Pair Get Meeting with List Past Meeting Participants to enrich transcripts with host, attendee names, and emails
- Use Get Meeting Recordings when you need the raw audio/video file URLs alongside the transcript (e.g. for re-transcription with a different engine)