Access the Zoom API with managed OAuth authentication. Manage meetings, webinars, cloud recordings, and user profiles.
Reference
Get Current User
GET /zoom/v2/users/meResponse:
{
"id": "APv5EPHiSvitxgPAw0DbaQ",
"first_name": "John",
"last_name": "Doe",
"display_name": "John Doe",
"email": "john@example.com",
"type": 1,
"role_name": "Owner",
"pmi": 5017823017,
"timezone": "America/Los_Angeles",
"status": "active",
"created_at": "2023-06-01T19:33:22Z",
"last_login_time": "2026-04-10T00:35:21Z"
}User Types:
1- Basic2- Licensed3- On-prem
List User's Meetings
GET /zoom/v2/users/me/meetings
GET /zoom/v2/users/{userId}/meetingsQuery Parameters:
| Parameter | Type | Description |
|---|---|---|
type | string | scheduled, live, upcoming, upcoming_meetings, previous_meetings |
page_size | integer | Results per page (max 300, default 30) |
next_page_token | string | Pagination token |
from | string | Start date (YYYY-MM-DD) |
to | string | End date (YYYY-MM-DD) |
Response:
{
"page_size": 30,
"total_records": 1,
"next_page_token": "",
"meetings": [
{
"uuid": "RPrVctdSRxaVmIUTHVUlGQ==",
"id": 82931897821,
"host_id": "APv5EPHiSvitxgPAw0DbaQ",
"topic": "Team Standup",
"type": 2,
"start_time": "2026-04-10T00:39:32Z",
"duration": 30,
"timezone": "America/Los_Angeles",
"join_url": "https://us05web.zoom.us/j/82931897821?pwd=..."
}
]
}Get Upcoming Meetings
GET /zoom/v2/users/me/upcoming_meetingsReturns meetings scheduled for the future.
Create Meeting
POST /zoom/v2/users/me/meetings
POST /zoom/v2/users/{userId}/meetings
Content-Type: application/json
{
"topic": "Weekly Team Sync",
"type": 2,
"start_time": "2026-04-15T14:00:00Z",
"duration": 60,
"timezone": "America/Los_Angeles",
"agenda": "Discuss project updates",
"settings": {
"host_video": true,
"participant_video": true,
"join_before_host": false,
"mute_upon_entry": true,
"waiting_room": true
}
}Meeting Types:
1- Instant meeting2- Scheduled meeting3- Recurring meeting with no fixed time8- Recurring meeting with fixed time
Example - Create Meeting:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
"topic": "Project Review",
"type": 2,
"start_time": "2026-04-15T14:00:00Z",
"duration": 60,
"timezone": "America/Los_Angeles",
"settings": {
"host_video": True,
"participant_video": True,
"waiting_room": True
}
}).encode()
req = urllib.request.Request('https://api.maton.ai/zoom/v2/users/me/meetings', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
resp = json.load(urllib.request.urlopen(req))
print(f"Meeting created! Join URL: {resp['join_url']}")
EOFResponse:
{
"uuid": "RPrVctdSRxaVmIUTHVUlGQ==",
"id": 82931897821,
"host_id": "APv5EPHiSvitxgPAw0DbaQ",
"host_email": "john@example.com",
"topic": "Project Review",
"type": 2,
"status": "waiting",
"start_time": "2026-04-15T14:00:00Z",
"duration": 60,
"timezone": "America/Los_Angeles",
"start_url": "https://us05web.zoom.us/s/82931897821?zak=...",
"join_url": "https://us05web.zoom.us/j/82931897821?pwd=...",
"password": "AX2hsd"
}Get Meeting
GET /zoom/v2/meetings/{meetingId}Path Parameters:
meetingId- Meeting ID or UUID (double-encode UUID if it contains/or//)
Update Meeting
PATCH /zoom/v2/meetings/{meetingId}
Content-Type: application/json
{
"topic": "Updated Meeting Title",
"duration": 45,
"settings": {
"waiting_room": false
}
}Example - Update Meeting:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
"topic": "Updated Weekly Sync",
"duration": 45
}).encode()
req = urllib.request.Request('https://api.maton.ai/zoom/v2/meetings/82931897821', data=data, method='PATCH')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
urllib.request.urlopen(req)
print("Meeting updated!")
EOFDelete Meeting
DELETE /zoom/v2/meetings/{meetingId}Query Parameters:
schedule_for_reminder- Send cancellation email to registrants (boolean)cancel_meeting_reminder- Send cancellation email notification (boolean)
List User's Cloud Recordings
GET /zoom/v2/users/me/recordings
GET /zoom/v2/users/{userId}/recordingsQuery Parameters:
| Parameter | Type | Description |
|---|---|---|
from | string | Start date (YYYY-MM-DD) |
to | string | End date (YYYY-MM-DD) |
page_size | integer | Results per page (max 300, default 30) |
next_page_token | string | Pagination token |
trash | boolean | List trashed recordings |
trash_type | string | meeting_recordings or recording_file |
Response:
{
"from": "2026-04-01",
"to": "2026-04-10",
"page_count": 1,
"page_size": 30,
"total_records": 2,
"next_page_token": "",
"meetings": [
{
"uuid": "...",
"id": 123456789,
"topic": "Team Meeting",
"start_time": "2026-04-05T14:00:00Z",
"duration": 45,
"total_size": 52428800,
"recording_count": 2,
"recording_files": [
{
"id": "...",
"meeting_id": "...",
"recording_start": "2026-04-05T14:00:00Z",
"recording_end": "2026-04-05T14:45:00Z",
"file_type": "MP4",
"file_size": 50000000,
"play_url": "https://...",
"download_url": "https://...",
"status": "completed",
"recording_type": "shared_screen_with_speaker_view"
}
]
}
]
}Get Meeting Recordings
GET /zoom/v2/meetings/{meetingId}/recordingsDelete Meeting Recordings
DELETE /zoom/v2/meetings/{meetingId}/recordingsNote: Webinar endpoints require a Webinar add-on plan.
List User's Webinars
GET /zoom/v2/users/me/webinars
GET /zoom/v2/users/{userId}/webinarsCreate Webinar
POST /zoom/v2/users/{userId}/webinars
Content-Type: application/json
{
"topic": "Product Launch Webinar",
"type": 5,
"start_time": "2026-05-01T10:00:00Z",
"duration": 90,
"timezone": "America/Los_Angeles"
}Webinar Types:
5- Scheduled webinar6- Recurring webinar with no fixed time9- Recurring webinar with fixed time
Get Webinar
GET /zoom/v2/webinars/{webinarId}Update Webinar
PATCH /zoom/v2/webinars/{webinarId}
Content-Type: application/json
{
"topic": "Updated Webinar Title"
}Delete Webinar
DELETE /zoom/v2/webinars/{webinarId}List Meeting Registrants
GET /zoom/v2/meetings/{meetingId}/registrantsAdd Meeting Registrant
POST /zoom/v2/meetings/{meetingId}/registrants
Content-Type: application/json
{
"email": "attendee@example.com",
"first_name": "Jane",
"last_name": "Smith"
}List Past Meeting Participants
GET /zoom/v2/past_meetings/{meetingUUID}/participantsNote: Use double-encoded UUID if it contains / or //.