Maton

Zoom

Access the Zoom API with managed OAuth authentication. Manage meetings, webinars, cloud recordings, and user profiles.

Reference

Get Current User

GET /zoom/v2/users/me

Response:

{
  "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 - Basic
  • 2 - Licensed
  • 3 - On-prem

List User's Meetings

GET /zoom/v2/users/me/meetings
GET /zoom/v2/users/{userId}/meetings

Query Parameters:

ParameterTypeDescription
typestringscheduled, live, upcoming, upcoming_meetings, previous_meetings
page_sizeintegerResults per page (max 300, default 30)
next_page_tokenstringPagination token
fromstringStart date (YYYY-MM-DD)
tostringEnd 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_meetings

Returns 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 meeting
  • 2 - Scheduled meeting
  • 3 - Recurring meeting with no fixed time
  • 8 - 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']}")
EOF

Response:

{
  "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!")
EOF

Delete 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}/recordings

Query Parameters:

ParameterTypeDescription
fromstringStart date (YYYY-MM-DD)
tostringEnd date (YYYY-MM-DD)
page_sizeintegerResults per page (max 300, default 30)
next_page_tokenstringPagination token
trashbooleanList trashed recordings
trash_typestringmeeting_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}/recordings

Delete Meeting Recordings

DELETE /zoom/v2/meetings/{meetingId}/recordings

Note: Webinar endpoints require a Webinar add-on plan.

List User's Webinars

GET /zoom/v2/users/me/webinars
GET /zoom/v2/users/{userId}/webinars

Create 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 webinar
  • 6 - Recurring webinar with no fixed time
  • 9 - 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}/registrants

Add 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}/participants

Note: Use double-encoded UUID if it contains / or //.

Resources

On this page