Setu Recipes: reusable workflows across every app.Browse templates

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

TypeScript
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

ScopeWhy it is requested
user:read:userIdentify which Zoom account you connected
meeting:read:list_meetingsList your Zoom meetings
meeting:read:list_upcoming_meetingsList your upcoming Zoom meetings
meeting:read:meetingRead the details of your Zoom meetings
meeting:write:meetingSchedule Zoom meetings for you
meeting:update:meetingChange your Zoom meetings
meeting:delete:meetingDelete your Zoom meetings
meeting:read:list_past_participantsSee who attended your past meetings
meeting:read:summaryRead your meeting summaries
cloud_recording:read:list_user_recordingsList 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

InputTypeDescription
topicstringRequiredMeeting topic
typeintegerOptional1 instant, 2 scheduled (default), 3 recurring with no fixed time, 8 recurring with fixed time
start_timestringOptionalStart time, ISO 8601, for example 2022-03-25T07:46:00Z (scheduled meetings)
durationintegerOptionalDuration in minutes
timezonestringOptionalTime zone name, for example America/Los_Angeles
agendastringOptionalMeeting description
passwordstringOptionalMeeting passcode (up to 10 characters)
TypeScript
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

InputTypeDescription
meeting_idstringRequiredMeeting ID
cancel_meeting_reminderbooleanOptionaltrue to email registrants about the cancellation
TypeScript
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

InputTypeDescription
meeting_idstringRequiredMeeting ID, a number such as 97763643886
TypeScript
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

InputTypeDescription
meeting_idstringRequiredMeeting UUID of the ended meeting (double-encode UUIDs that start with / or contain //)
TypeScript
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

InputTypeDescription
typestringOptionalWhich meetings to list (default scheduled)
page_sizeintegerOptionalRecords per page (default 30)
next_page_tokenstringOptionalToken from a previous reply to fetch the next page
TypeScript
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

InputTypeDescription
meeting_idstringRequiredMeeting ID or UUID of the ended meeting
page_sizeintegerOptionalRecords per page
TypeScript
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

InputTypeDescription
fromstringOptionalStart date, yyyy-mm-dd (UTC)
tostringOptionalEnd date, yyyy-mm-dd (UTC)
page_sizeintegerOptionalRecords per page
TypeScript
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.

TypeScript
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

InputTypeDescription
meeting_idstringRequiredMeeting ID
topicstringOptionalMeeting topic
typeintegerOptional1 instant, 2 scheduled (default), 3 recurring with no fixed time, 8 recurring with fixed time
start_timestringOptionalStart time, ISO 8601, for example 2022-03-25T07:46:00Z (scheduled meetings)
durationintegerOptionalDuration in minutes
timezonestringOptionalTime zone name, for example America/Los_Angeles
agendastringOptionalMeeting description
passwordstringOptionalMeeting passcode (up to 10 characters)
TypeScript
await setu.execute({
  userId: "user_1",
  action: "zoom.update_meeting",
  input: {
    "meeting_id": "<meeting_id>"
  },
});