We use a Server-to-Server OAuth app to pull Zoom Events data into our internal analytics. We can retrieve registrants, tickets, ticket types, sessions and live session attendees successfully. We cannot find any API route for the per-person participation data that the Event analytics console exposes, and we have one granted scope whose endpoint we cannot locate. Five questions:
- What endpoint does zoom_events:read:event_attendance:admin authorize?
It is granted on our app, but every candidate route returns 404 Route Not Found — including /zoom_events/events/{eventId}/attendance, /event_attendance, /attendance_report, /report/attendance, /reports/attendance, /analytics/attendance, /metrics, /summary, and the equivalents at session level. Note we can distinguish real routes from missing ones: /exhibitors, /speakers, /sessions/{sessionId} and /sessions/{sessionId}/polls all return 401 naming their missing scope, so the 404s above are genuinely absent routes rather than permission errors.
- Is the per-person Participation classification available via API?
Event analytics → People → Person Summary export gives, per registrant: Participation (Live, Live & On demand, Lobby only, On demand only, Absent), Lobby attendance, Total recording watch time, and engagement fields. GET /zoom_events/events/{eventId}/sessions/{sessionId}/attendees returns objects containing only email, and ignores include_fields, type, attendance_type and include parameters. Is there any endpoint returning the fuller record?
- Can that People-tab export be generated or downloaded via API?
If there is a report-generation-plus-download pattern for Event analytics, please point us at it.
- Do Events webhooks emit lobby entry or on-demand view events?
We would prefer to capture this going forward rather than exporting CSVs per event. We already hold a webhook secret token and have not yet enabled a receiver.
- Two behaviours we would like confirmed as intended, since they are not documented:
(a) GET /zoom_events/events returns 0 events without role_type; with role_type=host it returns only current/upcoming events. We found no parameter that lists past events — is there a supported way, or is retrieving the eventId from the console URL the only route for a finished event?
(b) For a Zoom Events–backed webinar, GET /meetings/{meetingId}/recordings/analytics_details?type=by_view reports 0 views, while Event analytics reports 25 people with recording watch time on the same content. Is Zoom Events on-demand viewing tracked separately from cloud-recording analytics, and if so is it exposed via any API?
Happy to provide request/response captures for any of the above.