Actions
The ballerinax/zoom.meetings package exposes the following clients:
| Client | Purpose |
|---|---|
Client | Provides access to all Zoom Meetings REST API v2 operations: meeting management, webinars, registrants, polls, recordings, and reports. |
Client
Provides access to all Zoom Meetings REST API v2 operations: meeting management, webinars, registrants, polls, recordings, and reports.
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
auth | ApiKeysConfig|http:BearerTokenConfig|http:OAuth2RefreshTokenGrantConfig | Required | Authentication configuration: API key authorization header, static bearer token, or OAuth 2.0 refresh token grant. |
httpVersion | http:HttpVersion | "2_0" | HTTP protocol version to use for requests. |
timeout | decimal | 60 | Request timeout in seconds. |
retryConfig | http:RetryConfig | () | Retry configuration for failed requests. |
secureSocket | http:ClientSecureSocket | () | SSL/TLS configuration for the HTTP client. |
proxy | http:ProxyConfig | () | Proxy server configuration. |
validation | boolean | true | Enable constraint validation on request and response payloads. |
Initializing the client
import ballerinax/zoom.meetings;
configurable string clientId = ?;
configurable string clientSecret = ?;
configurable string refreshUrl = ?;
configurable string refreshToken = ?;
meetings:Client zoomClient = check new ({
auth: {
clientId: clientId,
clientSecret: clientSecret,
refreshUrl: refreshUrl,
refreshToken: refreshToken
}
});
Operations
Meeting management
Create a meeting
Creates a new meeting for the specified Zoom user.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The host's user ID, email address, or me for the authenticated user. |
payload | UserIdMeetingsBody | Yes | Meeting details including topic, type, start time, duration, timezone, and optional settings. |
Returns: InlineResponse2018|error
Sample code:
meetings:InlineResponse2018 meetingDetails = check zoomClient->/users/[userId]/meetings.post(
payload = {
topic: "Team Sync",
'type: 2,
startTime: "2025-07-10T10:00:00Z",
duration: 30,
timezone: "UTC"
}
);
Sample response:
{"id": 123456789, "topic": "Team Sync", "type": 2, "start_time": "2025-07-10T10:00:00Z", "duration": 30, "timezone": "UTC", "join_url": "https://zoom.us/j/123456789", "start_url": "https://zoom.us/s/123456789?zak=abc", "password": "abc123", "created_at": "2025-06-01T08:00:00Z", "host_email": "[email protected]"}
List meetings for a user
Returns a paginated list of scheduled meetings for the specified user.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The user's ID, email address, or me for the authenticated user. |
queries | *MeetingsQueries | No | Optional query parameters: type (scheduled/live/upcoming), pageSize, nextPageToken. |
Returns: InlineResponse20028|error
Sample code:
meetings:InlineResponse20028 response = check zoomClient->/users/[userId]/meetings();
Sample response:
{"page_count": 1, "page_number": 1, "page_size": 30, "total_records": 2, "next_page_token": "", "meetings": [{"id": 123456789, "topic": "Team Sync", "type": 2, "start_time": "2025-07-10T10:00:00Z", "duration": 30, "timezone": "UTC", "join_url": "https://zoom.us/j/123456789", "created_at": "2025-06-01T08:00:00Z"}]}
Get a meeting
Retrieves the full details of a specific meeting by its ID.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
queries | *MeetingQueries | No | Optional query parameters: occurrenceId, showPreviousOccurrences. |
Returns: InlineResponse20013|error
Sample code:
meetings:InlineResponse20013 meeting = check zoomClient->/meetings/[meetingId]();
Sample response:
{"id": 123456789, "topic": "Team Sync", "type": 2, "start_time": "2025-07-10T10:00:00Z", "duration": 30, "timezone": "UTC", "join_url": "https://zoom.us/j/123456789", "host_email": "[email protected]", "settings": {"host_video": true, "participant_video": false, "mute_upon_entry": true, "waiting_room": true}}
Update a meeting
Updates the settings or details of an existing meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
payload | MeetingsmeetingIdBody | Yes | Meeting fields to update: topic, startTime, duration, agenda, settings, etc. |
queries | *MeetingUpdateQueries | No | Optional query parameter: occurrenceId for recurring meeting occurrences. |
Returns: error?
Sample code:
check zoomClient->/meetings/[meetingId].patch({
topic: "Updated Team Sync",
startTime: "2025-09-01T15:00:00Z"
});
Delete a meeting
Deletes a scheduled or recurring meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
queries | *MeetingDeleteQueries | No | Optional query parameters: occurrenceId, scheduleForReminder, cancelMeetingReminder. |
Returns: error?
Sample code:
check zoomClient->/meetings/[meetingId].delete();
Update meeting status
Updates the status of a meeting: for example, ends a live meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
payload | MeetingIdStatusBody | Yes | Status payload with action field: use end to end a live meeting. |
Returns: error?
Sample code:
check zoomClient->/meetings/[meetingId]/status.put({action: "end"});
Get a meeting invitation
Retrieves the formatted invitation text for a specific meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
Returns: MeetingInvitation|error
Sample code:
meetings:MeetingInvitation invitation = check zoomClient->/meetings/[meetingId]/invitation();
Sample response:
{"invitation": "Jane Smith is inviting you to a scheduled Zoom meeting.\n\nTopic: Team Sync\nTime: Jul 10, 2025 10:00 AM UTC\n\nJoin Zoom Meeting\nhttps://zoom.us/j/123456789\n\nMeeting ID: 123 456 789\nPasscode: abc123"}
Get meeting summary
Retrieves the AI-generated summary for a specific meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | string | Yes | The meeting ID or UUID. |
Returns: InlineResponse20018|error
Sample code:
meetings:InlineResponse20018 summary = check zoomClient->/meetings/[meetingId]/meeting_summary();
Sample response:
{"meeting_host_id": "usr123", "meeting_host_email": "[email protected]", "meeting_id": "123456789", "meeting_topic": "Team Sync", "meeting_start_time": "2025-07-10T10:00:00Z", "meeting_end_time": "2025-07-10T10:28:00Z", "summary_start_time": "2025-07-10T10:00:05Z", "summary_end_time": "2025-07-10T10:27:50Z", "summary_created_time": "2025-07-10T10:30:00Z", "summary_last_modified_time": "2025-07-10T10:30:00Z", "audio_transcript_file_id": "file123", "summary_title": "Team Sync: July 10", "summary_overview": "The team discussed Q3 goals and aligned on sprint priorities.", "summary_details": [{"summary_title": "Q3 Goals", "summary_detail": "Reviewed key objectives for the quarter."}], "next_steps": ["Finalize project roadmap by July 15.", "Schedule follow-up with design team."], "edited_summary": {}}
Meeting polls
List meeting polls
Returns a list of polls created for a specific meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
queries | *MeetingPollsQueries | No | Optional query parameter: anonymous: filter by anonymous poll setting. |
Returns: PollList|error
Sample code:
meetings:PollList pollList = check zoomClient->/meetings/[meetingId]/polls();
Sample response:
{"total_records": 1, "polls": [{"id": "QalIoKWLTJehBJ8e1xRrbQ", "title": "Weekly Check-in", "status": "notstart", "anonymous": false, "poll_type": 1, "questions": [{"name": "How is your week going?", "type": "single", "answers": ["Great", "Okay", "Could be better"]}]}]}
Create a meeting poll
Creates a poll for a specific meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
payload | MeetingIdPollsBody | Yes | Poll details including title, anonymous flag, and questions with answer options. |
Returns: InlineResponse2015|error
Sample code:
meetings:InlineResponse2015 poll = check zoomClient->/meetings/[meetingId]/polls.post(
payload = {
title: "Quick Check-in",
questions: [
{
name: "How is your week going?",
'type: "single",
answers: ["Great", "Okay", "Could be better"]
}
]
}
);
Sample response:
{"id": "QalIoKWLTJehBJ8e1xRrbQ", "title": "Quick Check-in", "status": "notstart", "anonymous": false, "questions": [{"name": "How is your week going?", "type": "single", "answers": ["Great", "Okay", "Could be better"]}]}
Get a meeting poll
Retrieves the details of a specific meeting poll.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
pollId | string | Yes | The poll's unique identifier. |
Returns: InlineResponse20019|error
Sample code:
meetings:InlineResponse20019 poll = check zoomClient->/meetings/[meetingId]/polls/[pollId]();
Sample response:
{"id": "QalIoKWLTJehBJ8e1xRrbQ", "title": "Quick Check-in", "status": "notstart", "anonymous": false, "poll_type": 1, "questions": [{"name": "How is your week going?", "type": "single", "answers": ["Great", "Okay", "Could be better"]}]}
Update a meeting poll
Updates a specific meeting poll's title or questions.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
pollId | string | Yes | The poll's unique identifier. |
payload | PollsPollIdBody | Yes | Updated poll details: title, questions, and answer options. |
Returns: error?
Sample code:
check zoomClient->/meetings/[meetingId]/polls/[pollId].put({
title: "Updated Check-in Poll",
questions: [
{
name: "Rate your week 1–5",
'type: "rating_scale",
ratingMinLabel: "Poor",
ratingMaxLabel: "Excellent"
}
]
});
Delete a meeting poll
Deletes a specific meeting poll.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
pollId | string | Yes | The poll's unique identifier. |
Returns: error?
Sample code:
check zoomClient->/meetings/[meetingId]/polls/[pollId].delete();
Meeting registrants
List meeting registrants
Returns a paginated list of registrants for a specific meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
queries | *MeetingRegistrantsQueries | No | Optional query parameters: occurrenceId, status (pending/approved/denied), pageSize, pageNumber, nextPageToken. |
Returns: RegistrationList|error
Sample code:
meetings:RegistrationList registrants = check zoomClient->/meetings/[meetingId]/registrants();
Sample response:
{"page_count": 1, "page_size": 30, "total_records": 1, "next_page_token": "", "registrants": [{"id": "reg001", "email": "[email protected]", "first_name": "Jane", "last_name": "Doe", "status": "approved", "create_time": "2025-06-01T08:00:00Z", "join_url": "https://zoom.us/w/123456789?tk=xyz"}]}
Add a meeting registrant
Registers a participant for a specific meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
payload | MeetingIdRegistrantsBody | Yes | Registrant details including email (required), first name, last name, and any custom questions. |
queries | *MeetingRegistrantCreateQueries | No | Optional query parameter: occurrenceIds for recurring meeting occurrences. |
Returns: InlineResponse2016|error
Sample code:
meetings:InlineResponse2016 result = check zoomClient->/meetings/[meetingId]/registrants.post(
payload = {
email: "[email protected]",
firstName: "Jane",
lastName: "Doe"
}
);
Sample response:
{"id": "reg001", "join_url": "https://zoom.us/w/123456789?tk=xyz", "registrant_id": "reg001", "start_time": "2025-07-10T10:00:00Z", "topic": "Team Sync"}
Update meeting registrant status
Approves, denies, or cancels one or more meeting registrants in bulk.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
payload | RegistrantsStatusBody | Yes | Status update with action (approve/deny/cancel) and list of registrant ID/email pairs. |
queries | *MeetingRegistrantStatusQueries | No | Optional query parameter: occurrenceId. |
Returns: error?
Sample code:
check zoomClient->/meetings/[meetingId]/registrants/status.put({
action: "approve",
registrants: [{id: "reg001", email: "[email protected]"}]
});
Delete a meeting registrant
Removes a specific registrant from a meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
registrantId | string | Yes | The registrant's unique identifier. |
queries | *MeetingregistrantdeleteQueries | No | Optional query parameter: occurrenceId. |
Returns: error?
Sample code:
check zoomClient->/meetings/[meetingId]/registrants/[registrantId].delete();
Get meeting registrant questions
Retrieves the registration questions and field settings for a meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
Returns: InlineResponse20020|error
Sample code:
meetings:InlineResponse20020 questions = check zoomClient->/meetings/[meetingId]/registrants/questions();
Sample response:
{"questions": [{"field_name": "last_name", "required": true}, {"field_name": "address", "required": false}, {"field_name": "city", "required": false}], "custom_questions": [{"title": "What do you hope to learn?", "type": "short", "required": false, "answers": []}]}
Meeting recordings
List meeting recordings
Returns cloud recording information for a completed meeting, including all recording files.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | string | Yes | The meeting ID or UUID. For UUIDs containing // or starting with /, double-encode them. |
Returns: InlineResponse2003|error
Sample code:
meetings:InlineResponse2003 recordings = check zoomClient->/meetings/[meetingId]/recordings();
Sample response:
{"uuid": "abc123xyz==", "id": 123456789, "account_id": "acc123", "host_id": "usr123", "topic": "Team Sync", "start_time": "2025-07-10T10:00:00Z", "duration": 28, "total_size": 10485760, "recording_count": 2, "recording_files": [{"id": "rec001", "recording_start": "2025-07-10T10:00:05Z", "recording_end": "2025-07-10T10:28:00Z", "file_type": "MP4", "file_size": 8388608, "play_url": "https://zoom.us/rec/play/abc", "download_url": "https://zoom.us/rec/download/abc", "status": "completed", "recording_type": "shared_screen_with_speaker_view"}]}
Delete meeting recordings
Deletes all cloud recordings for a completed meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | string | Yes | The meeting ID or UUID. |
queries | *RecordingsDeleteQueries | No | Optional query parameter: action: trash (move to trash, default) or delete (permanently remove). |
Returns: error?
Sample code:
check zoomClient->/meetings/[meetingId]/recordings.delete();
Get meeting recording settings
Retrieves sharing and access settings for a meeting's cloud recording.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | string | Yes | The meeting ID or UUID. |
Returns: RecordingSettings|error
Sample code:
meetings:RecordingSettings settings = check zoomClient->/meetings/[meetingId]/recordings/settings();
Sample response:
{"share_recording": "publicly", "recording_authentication": false, "viewer_download": true, "password": "", "on_demand": false, "approval_type": 2, "send_email_to_host": true, "show_social_share_buttons": true}
List recordings for a user
Returns all cloud recordings for a specific user within an optional date range.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The user's ID or email address. |
queries | *UserRecordingsQueries | No | Optional query parameters: from, to (date range), pageSize, nextPageToken, mc, trash. |
Returns: InlineResponse2006|error
Sample code:
meetings:InlineResponse2006 userRecordings = check zoomClient->/users/[userId]/recordings();
Sample response:
{"from": "2025-06-01", "to": "2025-07-01", "page_size": 30, "total_records": 1, "next_page_token": "", "meetings": [{"uuid": "abc123==", "id": 123456789, "topic": "Team Sync", "start_time": "2025-06-15T10:00:00Z", "duration": 28, "total_size": 10485760, "recording_count": 2}]}
Past meetings
Get a past meeting's details
Returns details about a completed meeting, including participant count and duration.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | string | Yes | The past meeting's ID or UUID. |
Returns: InlineResponse20023|error
Sample code:
meetings:InlineResponse20023 pastMeeting = check zoomClient->/past_meetings/[meetingId]();
Sample response:
{"uuid": "abc123xyz==", "id": 123456789, "host_id": "usr123", "topic": "Team Sync", "type": 2, "start_time": "2025-07-10T10:00:00Z", "end_time": "2025-07-10T10:28:00Z", "duration": 28, "total_minutes": 84, "participants_count": 3}
List past meeting instances
Returns all completed instances of a recurring meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The recurring meeting's numeric ID. |
Returns: MeetingInstances|error
Sample code:
meetings:MeetingInstances instances = check zoomClient->/past_meetings/[meetingId]/instances();
Sample response:
{"meetings": [{"uuid": "abc123xyz==", "start_time": "2025-06-01T10:00:00Z"}, {"uuid": "def456uvw==", "start_time": "2025-06-08T10:00:00Z"}, {"uuid": "ghi789rst==", "start_time": "2025-06-15T10:00:00Z"}]}
List past meeting participants
Returns a list of participants who attended a completed meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | string | Yes | The past meeting's ID or UUID. |
queries | *PastMeetingParticipantsQueries | No | Optional query parameters: pageSize, nextPageToken. |
Returns: InlineResponse20024|error
Sample code:
meetings:InlineResponse20024 participants = check zoomClient->/past_meetings/[meetingId]/participants();
Sample response:
{"page_count": 1, "page_size": 30, "total_records": 3, "next_page_token": "", "participants": [{"id": "usr001", "user_id": "usr001", "name": "Jane Doe", "user_email": "[email protected]", "join_time": "2025-07-10T10:01:00Z", "leave_time": "2025-07-10T10:28:00Z", "duration": 27, "attentiveness_score": "95"}]}
Webinar management
Create a webinar
Creates a new webinar for the specified host user.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The host's user ID or email address. |
payload | UserIdWebinarsBody | Yes | Webinar details including topic, type, start time, duration, timezone, and settings. |
Returns: InlineResponse2019|error
Sample code:
meetings:InlineResponse2019 webinar = check zoomClient->/users/[userId]/webinars.post(
payload = {
topic: "Product Launch Webinar",
'type: 5,
startTime: "2025-08-01T14:00:00Z",
duration: 60,
timezone: "UTC"
}
);
Sample response:
{"id": 987654321, "topic": "Product Launch Webinar", "type": 5, "start_time": "2025-08-01T14:00:00Z", "duration": 60, "timezone": "UTC", "join_url": "https://zoom.us/j/987654321", "start_url": "https://zoom.us/s/987654321?zak=xyz", "host_email": "[email protected]"}
List webinars for a user
Returns a list of webinars scheduled for the specified host user.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The host's user ID or email address. |
queries | *WebinarsQueries | No | Optional query parameters: pageSize, pageNumber. |
Returns: InlineResponse20046|error
Sample code:
meetings:InlineResponse20046 webinars = check zoomClient->/users/[userId]/webinars();
Sample response:
{"page_count": 1, "page_number": 1, "page_size": 30, "total_records": 1, "webinars": [{"id": 987654321, "topic": "Product Launch Webinar", "type": 5, "start_time": "2025-08-01T14:00:00Z", "duration": 60, "timezone": "UTC", "join_url": "https://zoom.us/j/987654321"}]}
Get a webinar
Retrieves full details of a specific webinar.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
webinarId | int | Yes | The webinar's unique numeric ID. |
Returns: InlineResponse20047|error
Sample code:
meetings:InlineResponse20047 webinar = check zoomClient->/webinars/[webinarId]();
Sample response:
{"id": 987654321, "topic": "Product Launch Webinar", "type": 5, "start_time": "2025-08-01T14:00:00Z", "duration": 60, "timezone": "UTC", "join_url": "https://zoom.us/j/987654321", "host_email": "[email protected]", "settings": {"approval_type": 0, "registration_type": 1, "hd_video": true, "panelists_video": true, "practice_session": false}}
Update a webinar
Updates the details or settings of an existing webinar.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
webinarId | int | Yes | The webinar's unique numeric ID. |
payload | WebinarsWebinarIdBody | Yes | Webinar fields to update: topic, startTime, duration, settings, etc. |
Returns: error?
Sample code:
check zoomClient->/webinars/[webinarId].patch({
topic: "Updated Product Launch Webinar",
startTime: "2025-08-02T14:00:00Z"
});
Delete a webinar
Deletes a specific webinar.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
webinarId | int | Yes | The webinar's unique numeric ID. |
Returns: error?
Sample code:
check zoomClient->/webinars/[webinarId].delete();
List webinar panelists
Returns all panelists for a specific webinar.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
webinarId | int | Yes | The webinar's unique numeric ID. |
Returns: PanelistList|error
Sample code:
meetings:PanelistList panelists = check zoomClient->/webinars/[webinarId]/panelists();
Sample response:
{"total_records": 2, "panelists": [{"id": "pan001", "email": "[email protected]", "name": "Alice Smith", "join_url": "https://zoom.us/w/987654321?tk=pan1"}, {"id": "pan002", "email": "[email protected]", "name": "Bob Jones", "join_url": "https://zoom.us/w/987654321?tk=pan2"}]}
Add webinar panelists
Adds one or more panelists to a specific webinar.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
webinarId | int | Yes | The webinar's unique numeric ID. |
payload | WebinarIdPanelistsBody | Yes | List of panelists with name and email fields. |
Returns: InlineResponse2021|error
Sample code:
meetings:InlineResponse2021 result = check zoomClient->/webinars/[webinarId]/panelists.post(
payload = {
panelists: [
{name: "Alice Smith", email: "[email protected]"},
{name: "Bob Jones", email: "[email protected]"}
]
}
);
Sample response:
{"id": 987654321, "updated_at": "2025-06-01T09:00:00Z", "panelists": [{"id": "pan001", "join_url": "https://zoom.us/w/987654321?tk=pan1"}, {"id": "pan002", "join_url": "https://zoom.us/w/987654321?tk=pan2"}]}
Reports
Get meeting reports
Returns meeting report data for meetings that ended within a specified date range.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
queries | *ReportMeetingsQueries | Yes | Required query parameters: from and to in YYYY-MM-DD format (max 1-month range). Optional: pageSize, nextPageToken, type. |
Returns: InlineResponse20037|error
Sample code:
meetings:InlineResponse20037 report = check zoomClient->/report/meetings('from = "2025-07-01", to = "2025-07-31");
Sample response:
{"from": "2025-07-01", "to": "2025-07-31", "page_size": 30, "total_records": 2, "next_page_token": "", "meetings": [{"uuid": "abc123==", "id": 123456789, "topic": "Team Sync", "start_time": "2025-07-10T10:00:00Z", "end_time": "2025-07-10T10:28:00Z", "duration": 28, "total_minutes": 84, "participants_count": 3, "user_email": "[email protected]", "user_name": "Host User", "has_pstn": false, "has_voip": true}]}
Get meeting participant reports
Returns detailed participant-level data for a specific meeting, including join/leave times and attentiveness.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | string | Yes | The meeting ID or UUID. |
queries | *ReportMeetingParticipantsQueries | No | Optional query parameters: pageSize, nextPageToken, includeFields. |
Returns: InlineResponse20038|error
Sample code:
meetings:InlineResponse20038 participantReport = check zoomClient->/report/meetings/[meetingId]/participants();
Sample response:
{"page_size": 30, "total_records": 3, "next_page_token": "", "participants": [{"id": "usr001", "user_id": "usr001", "name": "Jane Doe", "user_email": "[email protected]", "join_time": "2025-07-10T10:01:00Z", "leave_time": "2025-07-10T10:28:00Z", "duration": 27, "attentiveness_score": "95", "status": "in_meeting", "registrant_id": "reg001"}]}
Get user meeting reports
Returns meeting report data for all meetings hosted by a specific user within a date range.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The host's user ID or email address. |
queries | *ReportUserMeetingsQueries | Yes | Required query parameters: from and to in YYYY-MM-DD format. Optional: pageSize, nextPageToken. |
Returns: InlineResponse20044|error
Sample code:
meetings:InlineResponse20044 userReport = check zoomClient->/report/users/[userId]/meetings('from = "2025-07-01", to = "2025-07-31");
Sample response:
{"from": "2025-07-01", "to": "2025-07-31", "page_size": 30, "total_records": 5, "next_page_token": "", "meetings": [{"uuid": "abc123==", "id": 123456789, "topic": "Team Sync", "start_time": "2025-07-10T10:00:00Z", "end_time": "2025-07-10T10:28:00Z", "duration": 28, "participants_count": 3}]}
Get daily usage report
Returns day-by-day meeting activity data for an account within a specified month.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
queries | *ReportDailyQueries | No | Optional query parameters: year and month (defaults to previous month). |
Returns: InlineResponse20035|error
Sample code:
meetings:InlineResponse20035 dailyReport = check zoomClient->/report/daily(year = 2025, month = 7);
Sample response:
{"year": 2025, "month": 7, "dates": [{"date": "2025-07-01", "new_users": 0, "meetings": 3, "participants": 12, "meeting_minutes": 90}, {"date": "2025-07-02", "new_users": 1, "meetings": 5, "participants": 20, "meeting_minutes": 150}]}
Live meeting control
Update live meeting events
Performs a control action on a live in-progress meeting, such as muting all participants or putting the meeting on hold.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | string | Yes | The live meeting's ID or UUID. |
payload | LiveMeetingEventsBody | Yes | Event payload specifying the method (e.g., mute.upon.entry, put.on.hold) and associated params. |
Returns: error?
Sample code:
check zoomClient->/live_meetings/[meetingId]/events.patch({
method: "mute.upon.entry",
params: {mute_upon_entry: true}
});
Get a meeting join token for live streaming
Retrieves a join token that allows a third-party service to start live streaming a meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingId | int | Yes | The unique numeric meeting ID. |
Returns: InlineResponse20014|error
Sample code:
meetings:InlineResponse20014 tokenInfo = check zoomClient->/meetings/[meetingId]/jointoken/live_streaming();
Sample response:
{"expire_in": 120, "token": "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ6bSIsImV4cCI6MTY5MDAwMDAwMCwibWlkIjoiMTIzNDU2Nzg5In0.abc"}
Archive files
List account archive files
Returns a list of archived meeting and webinar files for the account.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
queries | *ArchiveFilesQueries | No | Optional query parameters: pageSize, nextPageToken, from, to, queryDateType, fileType, status, groupId. |
Returns: InlineResponse200|error
Sample code:
meetings:InlineResponse200 archiveFiles = check zoomClient->/archive_files();
Sample response:
{"from": "2025-07-01", "to": "2025-07-31", "page_size": 30, "total_records": 1, "next_page_token": "", "meetings": [{"uuid": "abc123==", "id": 123456789, "topic": "Team Sync", "start_time": "2025-07-10T10:00:00Z", "duration": 28, "host_id": "usr123", "archive_files": [{"id": "arc001", "file_type": "MP4", "file_size": 8388608, "recording_type": "shared_screen_with_speaker_view", "status": "completed", "download_url": "https://zoom.us/rec/archive/abc"}]}]}
Get archive file statistics
Returns statistics on archived files, including total file count and storage consumed.
Returns: InlineResponse2001|error
Sample code:
meetings:InlineResponse2001 stats = check zoomClient->/archive_files/statistics();
Sample response:
{"total_archive_files": 25, "audio_archive_files": 5, "video_archive_files": 20, "storage_used": 524288000, "audio_storage_used": 52428800, "video_storage_used": 471859200}
List past meeting archive files
Returns all archived files for a specific past meeting.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
meetingUUID | string | Yes | The meeting UUID. Double-encode UUIDs containing // or starting with /. |
Returns: InlineResponse2002|error
Sample code:
meetings:InlineResponse2002 meetingArchive = check zoomClient->/past_meetings/[meetingUUID]/archive_files();
Sample response:
{"uuid": "abc123xyz==", "id": 123456789, "account_id": "acc123", "host_id": "usr123", "topic": "Team Sync", "start_time": "2025-07-10T10:00:00Z", "duration": 28, "archive_files": [{"id": "arc001", "file_type": "MP4", "file_size": 8388608, "recording_type": "shared_screen_with_speaker_view", "status": "completed", "download_url": "https://zoom.us/rec/archive/abc", "recording_start": "2025-07-10T10:00:05Z", "recording_end": "2025-07-10T10:28:00Z"}]}