Unable to Access Microsoft Teams Meeting Transcript via API with App-Only Authentication

Sushil Dangi 0 Reputation points
2025-06-10T06:41:36.3066667+00:00

description: We are implementing an integration where a Teams App (using App-Only Authentication) needs to programmatically access meeting transcripts.

We have completed the following setup:

Environment Setup:

Authentication Mode: App-only (using client credentials flow)

App Registration: Done in Azure AD with necessary Microsoft Graph API permissions.

Permissions Granted:

OnlineMeetings.ReadBasic.Chat

OnlineMeetings.Read.Chat

Calls.AccessMedia.All

CallRecords.Read.All

OnlineMeetings.Read.All

OnlineMeetingTranscript.Read.All

Chat.Read.All

All permissions are granted admin consent.

RSC Policy Configuration:

We created and applied a Resource-Specific Consent (RSC) policy using the following PowerShell script:

# Step 1: Connect to Microsoft Teams

		  Import-Module MicrosoftTeams

		  Connect-MicrosoftTeams

# Step 2: Define policy and app details

		  $policyName = "OrgTranscriptPolicy"

		  $appId = "<YOUR_AZURE_APP_ID>"

# Step 3: Required permissions

          $resourceSpecificPermissions = @(

		"OnlineMeetings.ReadBasic.Chat",

		"OnlineMeetings.Read.Chat",

		"Calls.AccessMedia.All",

		"CallRecords.Read.All",

		"OnlineMeetings.Read.All",

		"OnlineMeetingTranscript.Read.All",

		"Chat.Read.All"

)

$policyJson = @{

	Version = "1.0"

	Permissions = $resourceSpecificPermissions | ForEach-Object {

		@{

			ResourceAppId = "00000003-0000-0000-c000-000000000000"

			ResourceAccess = @(@{ Id = ""; Type = "Role" }) 

		}

	}

} | ConvertTo-Json -Depth 5

Step 4: Create policy

try {

New-CsApplicationAccessPolicy -Identity $policyName -AppIds $appId -Description "Access to online meetings and transcripts"

Write-Output "RSC Policy '$policyName' created successfully."

} catch {

Write-Warning " Policy may already exist. Skipping creation."

}

Step 5: Assign policy to user

$userEmail = "<USER_EMAIL>"

Grant-CsApplicationAccessPolicy -PolicyName $policyName -Identity $userEmail

Write-Output "Policy assigned to $userEmail."

Test Scenario:

A user (with policy assigned) created a Teams meeting via calendar.

During the meeting, recording and transcript were enabled.

After the meeting, the transcript is visible as an attachment in the chat section of the meeting.

Issue:

We are trying to programmatically access the transcript file via Microsoft Graph API.

From the chat messages API (/chats/{chatId}/messages) and few other apis, we are able to retrieve the attachment with transcriptContentUrl.(which looks like a OneDrive or SharePoint link).

However, when trying to access the transcriptContentUrl, it returns status 200 but no content.

The transcript opens and displays fine in the Teams client, but we are unable to fetch its contents via API using app-only token.

Clarification Requested:

Where exactly is the transcript stored? (Is it OneDrive, Exchange, or somewhere else?)

Who has access to the file by default? (Is it limited to meeting organizer/participants only?)

How can we access the transcript contents via Microsoft Graph using our app-only auth setup?

Is there a step-by-step API sequence or documentation to access the actual transcript content programmatically, not just metadata or file reference?

Is any additional permission or scope required to access the contents of transcript?

Expected Outcome:

We would like to access the actual transcript text or file content using Graph API in a secure and Microsoft-recommended manner, using the app's delegated permissions or app-only token.

Please advise on:

The correct approach and API endpoints.

Whether RSC or Graph API limitations are causing this issue.

Any missing permissions or policy configuration.

Microsoft Graph
Microsoft Graph
A Microsoft programmability model that exposes REST APIs and client libraries to access data on Microsoft 365 services.
13,685 questions
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Mark Dicks 540 Reputation points
    2025-06-10T08:30:30.4966667+00:00

    Hi @Sushil Dangi

    You're trying to access a Teams meeting transcript using app-only authentication, but it's not working because transcripts are stored in OneDrive, and your app doesn't have permission to read the file.

    Even though you set up all the Graph permissions and RSC permissions correctly, app-only tokens can't read personal OneDrive files unless you give the app extra access using Sites.Selected permissions and explicitly grant access to the site.

    What to do:

    Add Sites.Selected permission to your app in Azure.

    Use Graph API to give your app read access to the user’s OneDrive or the SharePoint site where the transcript is stored.

    Then, your app can access the transcript content using the transcriptContentUrl.

    Or, if possible, use delegated authentication (on behalf of a user)

    Let me know if you need additional assistance. I've included the links to the documentation to assist further.


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.