Integrations / Zoom
Zoom
Schedule and manage Zoom meetings, and read upcoming meetings, participants, recordings and summaries.
9 actions
OAuth 2
6 read2 write1 destructive
Calls api.zoom.us
Connect
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "zoom" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();Permissions requested
| Scope | Why it is requested |
|---|---|
user:read:user | Identify which Zoom account you connected |
meeting:read:list_meetings | List your Zoom meetings |
meeting:read:list_upcoming_meetings | List your upcoming Zoom meetings |
meeting:read:meeting | Read the details of your Zoom meetings |
meeting:write:meeting | Schedule Zoom meetings for you |
meeting:update:meeting | Change your Zoom meetings |
meeting:delete:meeting | Delete your Zoom meetings |
meeting:read:list_past_participants | See who attended your past meetings |
meeting:read:summary | Read your meeting summaries |
cloud_recording:read:list_user_recordings | List your cloud recordings |
Actions
Create meetingwritezoom.create_meetingSchedule a Zoom meeting on the user's account and get its join link. Use type 2 with a start_time for a one-off scheduled meeting.
Needs scope: meeting:write:meeting
| Input | Type | Description | |
|---|---|---|---|
topic | string | Required | Meeting topic |
type | integer | Optional | 1 instant, 2 scheduled (default), 3 recurring with no fixed time, 8 recurring with fixed time |
start_time | string | Optional | Start time, ISO 8601, for example 2022-03-25T07:46:00Z (scheduled meetings) |
duration | integer | Optional | Duration in minutes |
timezone | string | Optional | Time zone name, for example America/Los_Angeles |
agenda | string | Optional | Meeting description |
password | string | Optional | Meeting passcode (up to 10 characters) |
await setu.execute({
userId: "user_1",
action: "zoom.create_meeting",
input: {
"topic": "<topic>"
},
});Delete meetingdestructivezoom.delete_meetingDelete a scheduled meeting, optionally emailing the registrants that it is cancelled.
Needs scope: meeting:delete:meeting
| Input | Type | Description | |
|---|---|---|---|
meeting_id | string | Required | Meeting ID |
cancel_meeting_reminder | boolean | Optional | true to email registrants about the cancellation |
await setu.execute({
userId: "user_1",
action: "zoom.delete_meeting",
input: {
"meeting_id": "<meeting_id>"
},
confirm: true,
});Get meetingreadzoom.get_meetingGet the details of one meeting: topic, time, duration, join link and passcode.
Needs scope: meeting:read:meeting
| Input | Type | Description | |
|---|---|---|---|
meeting_id | string | Required | Meeting ID, a number such as 97763643886 |
await setu.execute({
userId: "user_1",
action: "zoom.get_meeting",
input: {
"meeting_id": "<meeting_id>"
},
});Get meeting summaryreadzoom.get_meeting_summaryGet the AI Companion summary of a finished meeting: overview, details and next steps. Only exists if the host enabled meeting summaries.
Needs scope: meeting:read:summary
| Input | Type | Description | |
|---|---|---|---|
meeting_id | string | Required | Meeting UUID of the ended meeting (double-encode UUIDs that start with / or contain //) |
await setu.execute({
userId: "user_1",
action: "zoom.get_meeting_summary",
input: {
"meeting_id": "<meeting_id>"
},
});List meetingsreadzoom.list_meetingsList the user's meetings: scheduled, live or upcoming. Returns IDs, topics, start times and join links.
Needs scope: meeting:read:list_meetings
| Input | Type | Description | |
|---|---|---|---|
type | string | Optional | Which meetings to list (default scheduled) |
page_size | integer | Optional | Records per page (default 30) |
next_page_token | string | Optional | Token from a previous reply to fetch the next page |
await setu.execute({
userId: "user_1",
action: "zoom.list_meetings",
input: {},
});List past meeting participantsreadzoom.list_past_meeting_participantsList who attended a meeting that has ended, with join and leave times.
Needs scope: meeting:read:list_past_participants
| Input | Type | Description | |
|---|---|---|---|
meeting_id | string | Required | Meeting ID or UUID of the ended meeting |
page_size | integer | Optional | Records per page |
await setu.execute({
userId: "user_1",
action: "zoom.list_past_meeting_participants",
input: {
"meeting_id": "<meeting_id>"
},
});List cloud recordingsreadzoom.list_recordingsList the user's cloud recordings in a date range, with meeting topic, size and share link.
Needs scope: cloud_recording:read:list_user_recordings
| Input | Type | Description | |
|---|---|---|---|
from | string | Optional | Start date, yyyy-mm-dd (UTC) |
to | string | Optional | End date, yyyy-mm-dd (UTC) |
page_size | integer | Optional | Records per page |
await setu.execute({
userId: "user_1",
action: "zoom.list_recordings",
input: {},
});List upcoming meetingsreadzoom.list_upcoming_meetingsList the user's upcoming meetings, soonest first, with topic, start time and join link.
Needs scope: meeting:read:list_upcoming_meetings
No input.
await setu.execute({
userId: "user_1",
action: "zoom.list_upcoming_meetings",
input: {},
});Update meetingwritezoom.update_meetingChange a meeting's topic, time, duration, description or passcode. Only the fields you pass are changed.
Needs scope: meeting:update:meeting
| Input | Type | Description | |
|---|---|---|---|
meeting_id | string | Required | Meeting ID |
topic | string | Optional | Meeting topic |
type | integer | Optional | 1 instant, 2 scheduled (default), 3 recurring with no fixed time, 8 recurring with fixed time |
start_time | string | Optional | Start time, ISO 8601, for example 2022-03-25T07:46:00Z (scheduled meetings) |
duration | integer | Optional | Duration in minutes |
timezone | string | Optional | Time zone name, for example America/Los_Angeles |
agenda | string | Optional | Meeting description |
password | string | Optional | Meeting passcode (up to 10 characters) |
await setu.execute({
userId: "user_1",
action: "zoom.update_meeting",
input: {
"meeting_id": "<meeting_id>"
},
});