Request for clarification on meeting participants API endpoints and required OAuth scopes

Issue Description
We are building an automated meeting bot that joins Zoom meetings, records audio, generates
meeting summaries, and sends those summaries to all participants via email.
The critical missing piece is reliably retrieving participant email addresses after a meeting has
ended.
SDKs and APIs Currently in Use

  1. Zoom Meeting SDK for Linux (via zoom-meeting-sdk Python bindings)
    ●​ Purpose: Joining meetings, recording audio/video, real-time transcription
    ●​ Version: Latest from PyPI
    ●​ Documentation: Meeting SDK for Linux API Reference: Main Page
  2. Zoom REST API v2 (via Python requests library)
    ●​ Purpose: OAuth authentication, meeting management, participant retrieval
    ●​ Base URL: https://api.zoom.us/v2/
    Endpoints Tested
    EndpointStatu
    sScope UsedResult /
    Error
    /v2/meetings/{meetingId}/participantsTeste
    dmeeting:read:list_past_participant
    s404 Not
    Found –
    Only
    works for
    active or
    very
    recently
    ended
    meetings
    /v2/past_meetings/{meetingUUID}/pa
    rticipantsPartia
    lly
    testedmeeting:read:list_past_participant
    sRequires
    meeting
    UUID
    (hard to
    obtain
    after
    meeting
    ends)EndpointStatu
    sScope UsedResult /
    Error
    /v2/report/meetings/{meetingId}/parti
    cipantsTeste
    dreport:read:list_meeting_participa
    nts:admin400
    Error –
    Scope
    not
    available
    in App
    Marketpl
    ace
    Error from Report endpoint:
    JSON
    {
    “code”: 4711,
    “message”: “Invalid access token, does not contain
    scopes:[report:read:list_meeting_participants:admin].”
    }
    Current OAuth App Configuration
    ●​ App Type: Server-to-Server OAuth
    ●​ Enabled Scopes: meeting:read:list_past_participants (and other meeting-related
    scopes)
    ●​ Missing Scope: report:read:list_meeting_participants:admin (not visible in the Zoom
    App Marketplace dashboard)
    Questions
    1.​ What is the recommended endpoint to retrieve participant email addresses for ended
    meetings?
    2.​ Is the scope report:read:list_meeting_participants:admin available for OAuth apps
    (especially Server-to-Server), or is it account-level / admin-only?
    3.​ If reporting scopes are not available for our app type, what is the best alternative
    approach?
    4.​ For the endpoint /v2/past_meetings/{meetingUUID}/participants:
    ○​ What is the best way to obtain the meeting UUID after the meeting has ended?
    ○​ How long after the meeting ends is this endpoint still available?
    5.​ Are there any account-level requirements (e.g., Business, Education, or Enterprise
    plan) to access detailed participant data including emails?
    Use Case Summary●​ Bot automatically joins meetings using the Meeting SDK
    ●​ Records audio and performs transcription during the meeting
    ●​ After meeting ends: Retrieve all participant emails → Send personalized meeting
    summary emails
    ●​ Current workaround: Only sending summary to the host email
    Technical Details
    ●​
    ●​
    ●​
    ●​
    Language: Python 3.10+
    OAuth Flow: Authorization Code flow with refresh tokens (Server-to-Server OAuth)
    Authentication: Bearer token via requests library
    Error Handling: Implemented fallback logic trying all three endpoints
    Request
    We need clear guidance on:
    ●​ The correct endpoint + scope combination for our use case
    ●​ How to enable reporting scopes (if possible)
    ●​ Recommended workaround if reporting API is not available for Server-to-Server OAuth
    apps
    ●​ Any plan or account requirements

Hi @Abhijit ,

You can not have a bot to join a meeting on the server - server auth.
You can use server server to do admin functions but you are limited to the one account and can never put this on the marketplace.

You can not send a bot into a meeting unless you authorise with a user in the meeting,
You will need to authorise with OBF

I think your plan needs a big review and look at.

So much of what you are going to do is supported in zoom already, so I really dont see why you would want to do this.

I would look at what zoom does out of the box before you go any further.

all the best

John

Hi @Abhijit ,

If you need participant emails via the Zoom APIs, you generally must obtain OAuth consent from each user whose meetings you access. This is required because participant email data is protected and only available when the user explicitly authorizes your app with the correct scopes. You would need to ensure that you request all required scopes from users in order to retrieve their email addresses later.

Many notetaker apps avoid relying solely on participant email APIs. Instead, they use calendar integrations (Google Calendar, Microsoft Outlook) to map in-meeting display names to the email addresses of event invitees. This works because calendar events already contain verified attendee emails.

While this is possible to build yourself, you might consider using a platform like Recall.ai instead. Recall.ai is a simple 3rd party API that lets you use meeting bots to record audio and video in meetings. It also has a calendar integration that allows you to match participant names to email addresses on the calendar invite. Happy to share more info if you’re interested!