How to Access Teams Meeting Transcripts with the Microsoft Graph

Controls to Limit Graph API Access to Teams Meeting Transcripts

Message center notification MC1393806 (16 June 2026) discusses the implementation of a control to limit Graph API access to Teams meeting transcripts. The control is now active in tenants with a default value of disabled (false), meaning that Graph API-powered apps and agents do not have access to transcripts.

The statement that the new control helps tenants to “govern how applications and agents access meeting transcripts through the Microsoft Graph API” explains why Microsoft introduced the setting. Microsoft does not want agents to have free rein over meeting transcripts without explicit tenant buy-in and approval. There’s probably no desire either within Microsoft to allow Teams meeting transcripts be processed by ChatGPT or Claude connectors.

Good reason exists for such an approach. Teams meeting transcripts can contain some extremely confidential and sensitive information. For example, a meeting might discuss an upcoming proposal for redundancies within an operating unit, or proposals for compensation changes (obviously, the second topic is better than the first). Either way, this kind of information should be protected, especially from apps or agents that might download transcripts for ingestion and processing in unexpected ways.

Figure 1 shows how to configure the control in the Meeting settings section of the Teams admin center.

Configuring Graph API access to Teams meeting transcripts.
Figure 1: Configuring Graph API access to meeting transcripts

Configuring Controls with PowerShell

You can also configure the control with the Set-CsTeamsMeetingConfiguration cmdlet. In this example, I set the control to allow Graph API access to Teams meeting transcripts. I also update the setting to allow Teams to export speaker attribution in transcripts (identifying who said what during a call). Enabling speaker attribution is not required to allow Graph API access. The speaker attribution control is currently unavailable through the Teams admin center.

Set-CsTeamsMeetingConfiguration -EnableAttributedTranscripts $true -EnableGraphTranscriptAccess $true

Other Requirements

Before a Graph-powered app can retrieve Teams meeting transcripts, two other requirements must be met:

  1. The app must have the OnlineMeetings.Read.All and OnlineMeetings.Transcripts.Read.All permissions.
  2. Use app-only authentication with a registered app. The app must also be granted access to the target user accounts through a Teams application access policy. The same issue is encountered whenever access is required to online meeting artifacts (like when updating Teams online event information after transferring meeting ownership).

In addition, finding a Teams meeting depends on the JoinURL property. This is the URL users see in meeting invitations that they click to join an online meeting. Teams has used two formats for these URLs. The old format is something like:

https://teams.microsoft.com/l/meetup-join/19%3ameeting_ followed by a long value.

The new format looks like this:

https://teams.microsoft.com/meet/382314615403093?p=MhwpbLNlCVE8IvrANn

In testing, I found that the Graph APIs can resolve online meetings when calendar events contain the newer JoinURL format. Attempts to resolve meetings using older-format JoinURL values failed, even though the Teams client could still locate and open the meetings. Because transcript retrieval depends on locating the corresponding Teams online meeting, differences in JoinURL format can affect whether Graph can resolve the meeting.

Online meetings created after the rollout of the new meeting join experience to tenants generally use the new format (see MC772556).

PowerShell Script to Illustrate the Concept

To illustrate the concept, I wrote a script (available from the Microsoft 365 for IT Pros GitHub repository). The script is best run with app-only authentication. The code:

  • Asks for a user and meeting subject to retrieve a transcript.
  • Checks for the Exchange calendar event.
  • Checks that the selected user is the meeting organizer.
  • Uses the JoinURL from the Exchange calendar event to find the Teams online meeting.
  • Finds the transcripts (if available) for the meeting.
  • Downloads each transcript to a text file.

Figure 2 shows an example transcript as downloaded. This version includes speaker attribution.

Teams meeting transcript with speaker attribution.
Figure 2: Teams meeting transcript with speaker attribution

The important things to note are the new control for Graph API access to Teams meeting transcripts together with the permissions and application access policies required to retrieve transcript data. After the necessary permissions, policies, and transcript access controls are in place, retrieving and processing meeting transcripts with Graph is relatively straightforward.


Learn about managing Teams, the Microsoft Graph, and the rest of the Microsoft 365 ecosystem by subscribing to the Microsoft 365 for IT Pros eBook. Use our experience to understand what’s important and how best to protect your tenant.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.