CONNECT APP
Build with Zoom
Communication
- OAuth
MCP
Give your agent Zoom tools
Every Zoom action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Zoom account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "zoom",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Add Meeting Registrant:
const result = await mcp.callTool({
name: "zoom-add-meeting-registrant",
arguments: {
meetingId: "Meeting ID",
occurrenceIds: "Occurrence IDs",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "zoom",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Add Meeting Registrant:
result = await session.call_tool("zoom-add-meeting-registrant", {
"meetingId": "Meeting ID",
"occurrenceIds": "Occurrence IDs",
})API PROXY
Call the Zoom API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Zoom API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.zoom.us/v2/users/me",
})
// Any allowed Zoom endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.zoom.us/v2/users/me
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkuem9vbS51cy92Mi91c2Vycy9tZQ?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Zoom actions from your backend
Connect a user's Zoom account once, then run Add Meeting Registrant on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "zoom-add-meeting-registrant",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
zoom: { authProvisionId: "apn_xxxxxxx" },
meetingId: "Meeting ID",
occurrenceIds: "Occurrence IDs",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="zoom-add-meeting-registrant",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"zoom": {"authProvisionId": "apn_xxxxxxx"},
"meetingId": "Meeting ID",
"occurrenceIds": "Occurrence IDs",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "zoom-add-meeting-registrant",
"configured_props": {
"zoom": { "authProvisionId": "apn_xxxxxxx" },
"meetingId": "Meeting ID",
"occurrenceIds": "Occurrence IDs"
}
}'TOOLS
Zoom actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Add Meeting Registrant
actionRegisters a participant or multiple participants for a meeting. See the documentationWritev0.3.13 -
Add Webinar Registrant
actionRegisters a participant for a webinar. See the docs here.Writev0.3.13 -
Create Meeting
actionCreates a meeting for a user. A maximum of 100 meetings can be created for a user in a day.Writev0.1.7 -
Create User
actionCreates a new user in your account.Writev0.2.6 -
Delete Meeting
actionDelete a meeting. See the documentationWritev0.0.8 -
Delete User
actionDisassociates (unlinks) a user from the associated account or permanently deletes a user.Writev0.2.6 -
Get Current User
actionReturns the authenticated Zoom user's ID, name, email, account ID, and timezone. Call this first when the user says 'my meetings', 'my recordings', or needs their Zoom identity. Useidwith Create Meeting,account_idto scope queries, andemailto match participants in List Past Meeting Participants. See the documentation.Read-onlyv0.0.4 -
Get Meeting Details
actionRetrieves the details of a meeting.Read-onlyv0.3.9 -
Get Meeting Recordings
actionGet the cloud recording metadata for one Zoom meeting. Use when you need to know what a meeting recorded — its video, audio, chat, and transcript files — or to pick a specific file to download. To find a meeting ID, call List Meetings or List All Recordings first. Returns the meeting's details plus arecording_filesarray whose entries each carryid,file_type,file_size,recording_type, andstatus. This is metadata only: thedownload_urlon each file does not work on its own — pass that file'sidto Get Recording Download Link to get a usable URL. Example: call with meetingId=84598792483→ returns the meeting's topic and start time plus recording files such as{ id: "a1b2c3d4-5e6f-7890-abcd-ef1234567890", file_type: "MP4", recording_type: "shared_screen_with_speaker_view", file_size: 148203910, status: "completed" }. A meeting with no cloud recordings returns an emptyrecording_filesarray rather than an error, so check the array's length before reporting a failure. See the documentationRead-onlyv0.1.2 -
Get Meeting Summary
actionRetrieve the AI Companion summary of a past meeting or webinar. Use when you need what was discussed or decided in a meeting that has already ended. To find a meeting ID, call List Meetings first. A numeric meeting ID is resolved to its most recent ended instance. Returns the summary title andsummary_contentin Markdown. See the documentationRead-onlyv0.0.3 -
Get Meeting Transcript
actionGet the transcript of a past meeting. A numeric meeting ID is resolved to its most recent ended instance first. Returns Zoom's meeting transcript when there is one, otherwise the meeting's cloud recording audio transcript. Fetches the VTT file server-side using your OAuth token and returns speaker-attributed plain text, the original authenticated URL, and the transcriptsource(meeting_transcriptorcloud_recording). See the documentationRead-onlyv0.2.0 -
Get Recording Download Link
actionGenerate a temporary, pre-signed download link for one Zoom cloud recording file. Use to download, fetch, or share a recording. Call Get Meeting Recordings first to list a meeting's files and pass theidof the one you want, or omit Recording File to get the meeting's main video recording automatically. ReturnsdownloadUrl,expiresAt,expiresInSeconds, and the file'srecordingId,fileType,fileExtension,fileSize, and recording start/end timestamps. This link contains a credential — anyone who has it can download the file without logging in to Zoom, until it expires. Example: call with meetingId=84598792483and no recording file → returns{ downloadUrl: "https://us02web.zoom.us/rec/download/abc123?access_token=eyJ...", expiresInSeconds: 900, fileType: "MP4", fileSize: 148203910 }. See the documentationRead-onlyv0.0.3 -
Get Webinar Details
actionGets details of a scheduled webinar. See the docs here.Read-onlyv0.3.13 -
List All Recordings
actionList all cloud recordings for a user. Returns recording metadata only — to obtain a download link for a given recording, use Get Recording Download Link. See the documentationRead-onlyv0.0.4 -
List Call Recordings
actionGet your account's call recordings. See the documentationRead-onlyv0.0.11 -
List Channels
actionList a user's chat channels.Read-onlyv0.1.6 -
List Meetings
actionList meetings for a user. See the documentationRead-onlyv0.0.7 -
List Past Meeting Participants
actionRetrieve information on participants from a past meeting. See the docs here.Read-onlyv0.2.13 -
List Past Webinar Q&A
actionThe feature for Webinars allows attendees to ask questions during the Webinar and for the panelists, co-hosts and host to answer their questions. Use this API to list Q&A of a specific Webinar.Read-onlyv0.1.9 -
List User's Call Logs
actionGets a user's Zoom phone call logs. See the documentationRead-onlyv0.0.13 -
List Webinar Participants Report
actionRetrieves detailed report on each webinar attendee. You can get webinar participant reports for the last 6 months. See the docs here.Read-onlyv0.0.14 -
Send Chat Message
actionSend chat messages on Zoom to either an individual user who is in your contact list or to a of which you are a member.Writev0.1.6 -
Update Meeting
actionUpdates an existing Zoom meetingWritev0.1.9 -
Update Webinar
actionUpdate a webinar's topic, start time, or other settingsWritev0.1.9 -
View User
actionView your user informationRead-onlyv0.1.6
-
Meeting Created (Instant)
triggerEmit new event each time a meeting is created where you're the hostInstantv0.1.12 -
Meeting Started (Instant)
triggerEmit new event each time a meeting starts where you're the hostInstantv0.1.13 -
Recording Completed (Instant)
triggerEmit new event each time a new recording completes for a meeting or webinar where you're the hostInstantv0.1.12 -
Meeting Ended (Instant)
triggerEmit new event each time a meeting ends where you're the hostInstantv0.1.12 -
Meeting Updated (Instant)
triggerEmit new event each time a meeting is updated where you're the hostInstantv0.1.12 -
Webinar Started (Instant)
triggerEmit new event each time a webinar starts where you're the hostInstantv0.1.12 -
Webinar Created (Instant)
triggerEmit new event each time a webinar is created where you're the hostInstantv0.1.12 -
Custom Events (Instant)
triggerEmit new events tied to your Zoom user or resources you ownInstantv0.1.12 -
Meeting Deleted (Instant)
triggerEmit new event each time a meeting is deleted where you're the hostInstantv0.1.12 -
New Recording Transcript Completed (Instant)
triggerEmit new event each time a recording transcript is completedInstantv0.0.10 -
Webinar Deleted (Instant)
triggerEmit new event each time a webinar is deleted where you're the hostInstantv0.1.12 -
Webinar Ended (Instant)
triggerEmit new event each time a webinar ends where you're the hostInstantv0.1.12 -
Webinar Updated (Instant)
triggerEmit new event each time a webinar is updated where you're the hostInstantv0.1.12 -
Zoom Phone Events (Instant)
triggerEmit new Zoom Phone event tied to your Zoom user or resources you ownInstantv0.1.12
MULTI-APP
Use Zoom with other popular apps
Most products don't stop at one integration. Pair Zoom with the other apps your users rely on, and ship use cases that span both.
- App slug
- zoom
- Authentication
- OAuth
- Categories
- Communication
- Actions
- 25
- Triggers
- 14
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed Zoom OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- chat_channel:read
- webinar:write
- recording:read
- webinar:read
- meeting:write
- zoom_events_basic:read
- user:read
- user:write
- chat_message:write
- meeting:read
- phone:read
- chat_message:read
- meeting_summary:read