Access the Zoom API with managed OAuth authentication and admin-level scopes. Manage users, meetings, webinars, recordings, and account settings.
Reference
List Users
GET /zoom-admin/v2/users?status=active&page_size=30Query Parameters:
| Param | Type | Default | Description |
|---|---|---|---|
status | string | active | active, inactive, or pending |
page_size | integer | 30 | Max: 2000 |
next_page_token | string | Pagination token (15-min expiry) | |
role_id | string | Filter by role ID |
Response:
{
"page_size": 30,
"total_records": 1,
"next_page_token": "",
"users": [
{
"id": "a-IOECePRV265Gy_wotUdQ",
"first_name": "Richard",
"last_name": "Song",
"display_name": "Richard Song",
"email": "user@example.com",
"type": 1,
"pmi": 6862513852,
"timezone": "America/Los_Angeles",
"verified": 1,
"status": "active",
"created_at": "2025-03-21T21:52:50Z",
"last_login_time": "2026-05-01T01:01:08Z",
"role_id": "0"
}
]
}User type values: 1 = Basic, 2 = Licensed, 4 = Unassigned, 99 = None.
Get User
GET /zoom-admin/v2/users/{userId}Use me for the authenticated user, or a user ID / email address.
Response:
{
"id": "a-IOECePRV265Gy_wotUdQ",
"first_name": "Richard",
"last_name": "Song",
"display_name": "Richard Song",
"email": "user@example.com",
"type": 1,
"role_name": "Owner",
"pmi": 6862513852,
"use_pmi": false,
"personal_meeting_url": "https://us05web.zoom.us/j/6862513852?pwd=...",
"timezone": "America/Los_Angeles",
"status": "active",
"account_id": "ciah2jjMRgedBSqxO8bOjA",
"role_id": "0",
"login_types": [100, 1],
"created_at": "2025-03-21T21:52:50Z",
"last_login_time": "2026-05-01T01:01:08Z"
}Get User Settings
GET /zoom-admin/v2/users/{userId}/settingsQuery Parameters:
| Param | Type | Description |
|---|---|---|
option | string | meeting_authentication, recording_authentication, or meeting_security |
Returns detailed settings grouped into sections: schedule_meeting, in_meeting, email_notification, recording, telephony, feature, whiteboard, audio_conferencing, etc.
List Meetings
GET /zoom-admin/v2/users/{userId}/meetings?type=scheduled&page_size=30Query Parameters:
| Param | Type | Default | Description |
|---|---|---|---|
type | string | live | scheduled, live, upcoming, upcoming_meetings, previous_meetings |
page_size | integer | 30 | Max: 300 |
next_page_token | string | Pagination token (15-min expiry) |
Response:
{
"page_size": 30,
"total_records": 11,
"next_page_token": "B4Tr0tLbJKQMnChspbYH7UUvt7g0UeDQNh2",
"meetings": [
{
"uuid": "SukzvlkXQO2rNcNPKUGCpw==",
"id": 89560318205,
"host_id": "a-IOECePRV265Gy_wotUdQ",
"topic": "Team Standup",
"type": 2,
"start_time": "2026-03-30T18:00:00Z",
"duration": 30,
"timezone": "America/Los_Angeles",
"created_at": "2026-03-29T18:01:40Z",
"join_url": "https://us05web.zoom.us/j/89560318205?pwd=..."
}
]
}Meeting type values: 1 = Instant, 2 = Scheduled, 3 = Recurring (no fixed time), 4 = PMI, 8 = Recurring (fixed time).
Get Meeting
GET /zoom-admin/v2/meetings/{meetingId}Query Parameters:
| Param | Type | Description |
|---|---|---|
occurrence_id | string | For recurring meetings |
show_previous_occurrences | boolean | Show previous occurrences |
Returns full meeting details including settings, recurrence, occurrences, join_url, start_url, password, etc.
Create Meeting
POST /zoom-admin/v2/users/{userId}/meetings
Content-Type: application/json
{
"topic": "Weekly Team Sync",
"type": 2,
"start_time": "2026-05-02T10:00:00Z",
"duration": 30,
"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": false,
"auto_recording": "none",
"audio": "voip"
}
}Key Request Fields:
| Field | Type | Description |
|---|---|---|
topic | string | Meeting topic |
type | integer | 1 = Instant, 2 = Scheduled, 3 = Recurring (no fixed), 8 = Recurring (fixed) |
start_time | string | ISO 8601 datetime (required for type 2 and 8) |
duration | integer | Duration in minutes |
timezone | string | e.g., America/New_York |
password | string | Up to 10 characters |
agenda | string | Max 2000 characters |
recurrence | object | Required for type 8 |
settings | object | Meeting settings |
Returns the created meeting object (same as Get Meeting).
Update Meeting
PATCH /zoom-admin/v2/meetings/{meetingId}
Content-Type: application/json
{
"topic": "Updated Meeting Topic",
"duration": 45
}All fields are optional. Returns 204 No Content on success.
Delete Meeting
DELETE /zoom-admin/v2/meetings/{meetingId}Query Parameters:
| Param | Type | Description |
|---|---|---|
occurrence_id | string | Delete specific occurrence of recurring meeting |
schedule_for_reminder | boolean | Notify host about cancellation |
cancel_meeting_reminder | string | Notify registrants (true/false) |
Returns 204 No Content on success.
Get Past Meeting Details
GET /zoom-admin/v2/past_meetings/{meetingId}Use the meeting ID or UUID. If the UUID starts with / or contains //, it must be double-URL-encoded.
Response:
{
"uuid": "/LAYgqiEQ8CW4NlhkyOvVA==",
"id": 89560318205,
"host_id": "a-IOECePRV265Gy_wotUdQ",
"type": 2,
"topic": "Team Standup",
"user_name": "Richard Song",
"user_email": "user@example.com",
"start_time": "2026-03-30T18:02:25Z",
"end_time": "2026-03-30T18:09:50Z",
"duration": 8,
"total_minutes": 22,
"participants_count": 3,
"source": "Calendly for Zoom"
}List Past Meeting Instances
GET /zoom-admin/v2/past_meetings/{meetingId}/instancesResponse:
{
"meetings": [
{
"uuid": "/LAYgqiEQ8CW4NlhkyOvVA==",
"start_time": "2026-03-30T18:02:25Z"
}
]
}List Webinars
GET /zoom-admin/v2/users/{userId}/webinars?page_size=30Query Parameters:
| Param | Type | Default | Description |
|---|---|---|---|
type | string | scheduled | scheduled or upcoming |
page_size | integer | 30 | Max: 300 |
next_page_token | string | Pagination token |
Response:
{
"page_size": 30,
"total_records": 0,
"next_page_token": "",
"webinars": [
{
"uuid": "...",
"id": 12345678901,
"host_id": "...",
"topic": "Product Launch Webinar",
"type": 5,
"start_time": "2026-05-15T14:00:00Z",
"duration": 60,
"timezone": "America/Los_Angeles",
"join_url": "https://us05web.zoom.us/j/..."
}
]
}Webinar type values: 5 = Webinar, 6 = Recurring (no fixed time), 9 = Recurring (fixed time).
Get Webinar
GET /zoom-admin/v2/webinars/{webinarId}Returns full webinar details including settings, recurrence, and registration info.
List User Recordings
GET /zoom-admin/v2/users/{userId}/recordings?from=2026-04-01&to=2026-04-30&page_size=30Query Parameters:
| Param | Type | Description |
|---|---|---|
from | string | Start date (yyyy-mm-dd). Max range: 1 month. Max past: 6 months |
to | string | End date (yyyy-mm-dd) |
page_size | integer | Max: 300 |
next_page_token | string | Pagination token |
trash | boolean | List trashed recordings |
Response:
{
"from": "2026-04-01",
"to": "2026-04-30",
"total_records": 0,
"next_page_token": "",
"meetings": [
{
"uuid": "...",
"id": 12345678901,
"host_id": "...",
"topic": "Meeting Topic",
"start_time": "2026-04-15T10:00:00Z",
"duration": 45,
"total_size": 52428800,
"recording_count": 2,
"recording_files": [
{
"id": "...",
"file_type": "MP4",
"file_extension": "MP4",
"file_size": 41943040,
"play_url": "https://...",
"download_url": "https://...",
"recording_type": "shared_screen_with_speaker_view",
"status": "completed"
}
]
}
]
}Get Meeting Recordings
GET /zoom-admin/v2/meetings/{meetingId}/recordingsUse the meeting ID or UUID. If the UUID starts with / or contains //, it must be double-URL-encoded.
Query Parameters:
| Param | Type | Description |
|---|---|---|
include_fields | string | download_access_token for JWT download token |
ttl | integer | Token TTL in seconds (0–604800, default: 172800) |
Returns the meeting's recording files with download URLs.
Get Account Settings
GET /zoom-admin/v2/accounts/{accountId}/settingsUse me for the connected account. Requires a paid Zoom plan.
Query Parameters:
| Param | Type | Description |
|---|---|---|
option | string | meeting_authentication, recording_authentication, security, meeting_security |
Returns account-level settings grouped into sections: security, schedule_meeting, in_meeting, recording, telephony, feature, chat, etc.