Cannot read My Notes (AI Companion transcript) document content via Server-to-Server OAuth — canvas:read:content:admin scope has no documented endpoint

Hi all,

I’m building an internal integration (Server-to-Server OAuth app) to back up meeting transcripts generated by the My Notes feature (AI Companion auto-transcription), which creates Zoom Docs/Canvas documents per meeting.

What I’ve found so far:

  1. GET /docs/users/{userId}/root → GET /docs/files/{fileId}/children works fine with an admin token and lets me walk the user’s “My Docs” folder tree. However, the auto-generated My Notes documents never appear in this tree (root folder only shows a few manually-created folders/files).

  2. When I take a fileId directly from a My Notes document’s URL (Zoom Docs - open page, copied from the Canvas web UI) and call GET /docs/files/{fileId} with the same admin token, I get 404 fileID not found — even though the same endpoint works fine for regular Docs files owned by the same user. It seems My Notes files are excluded from admin-level Docs file APIs.

  3. GET /docs/files/{fileId}/content (the only documented “get content” endpoint) requires the classic scope docs_export:read / granular docs:read:export — but this scope has no :admin variant offered in the Server-to-Server scope picker, only docs:read:export:admin exists, which maps to a different operation (“Get file export status”).

  4. There is also a scope called canvas:read:content:admin (“Read File Content”) available in the Marketplace scope picker for S2S apps (it appears after enabling the “Canvas content” role permission), but I cannot find any documented endpoint that requires this scope in the Canvas API reference ( Canvas APIs - API - Zoom Developer Docs ).

Questions:

  1. Is there an admin-level (Server-to-Server) way to read the content of a user’s My Notes documents? Or is this feature intentionally excluded from admin Docs APIs for privacy reasons?
  2. What is the correct endpoint for the canvas:read:content:admin scope?
  3. If admin access truly isn’t possible, would a User-authorized OAuth app (with user consent, using the non-admin docs:read:export scope) be the only supported path to read My Notes content programmatically?

Any pointers — even “this is intentionally not supported” — would be hugely helpful. Thanks!

Zoom released a dedicated My Notes API on August 3, 2026. For user-authorized OAuth, list the user’s notes with GET /my_notes/notes, then call GET /my_notes/notes/{noteId}/content with include=transcript. The response can include manual notes, AI-generated content, transcript segments, and speaker attribution. Use the note_id returned by the My Notes API rather than assuming the file ID from the docs.zoom.us URL is interchangeable. So you can now read the content of a user’s My Notes documents.

@amanda-recallai On a slightly different problem with My notes api - I’m building a user-scoped (PKCE, non-admin) integration for personal use — a user reading their own My Notes. I’ve run into what looks like a fundamental gap, and I want to check whether I’m missing an endpoint before concluding this API is not usable for its most common real-world case.

The problem:

GET /my_notes/notes requires a meeting_id as a query parameter. There is no way to list a user’s notes without already knowing which meeting they belong to.

The only user-scoped endpoint for listing meetings is GET /users/{userId}/meetings (meeting:read:list_meetings), and it only returns meetings the user hosted. For any meeting the user joined as a participant/invitee but did not host — which, for most people, is the majority of their meetings — there is no meeting_id available to pass into GET /my_notes/notes at all.

The ask: Is there a user-scope endpoint — documented or otherwise — that returns meetings the user attended/was invited to, not just hosted? If not, this seems like a significant oversight: My Notes is a per-user, auto-generated artifact tied to participation, not hosting, but every user-scoped discovery path (meeting list, folder tree, file search) is either hosting-gated or non-functional. As it stands, a user-scoped integration can only retrieve a note if it already has the note’s URL/ID from somewhere outside the API (Zoom UI, email, chat) — it can’t be built as a “list and read my notes” feature at all, which seems like it undermines the point of exposing this API to end users in the first place.

Any guidance appreciated — happy to file this as a bug/feature request if that’s more appropriate than a forum question.

Can we use this API to list the my notes notes id ? Let me know

POST /docs/file_search (canvas_file_search:write / canvas:write:file_search) — documented at /docs/api/canvas/#tag/search/post/docs/file_search,