Taking transcription via OAuth2 application

Aron Marinescu 40 Reputation points
2025-11-05T18:38:02.9466667+00:00

Hello everyone,

while searching for the Transcriptions API, I noticed that the listTranscription endpoint is available both for Application and Delegated flows.
By reading at the documentation, the 'online-meeting-id' is required to access a meet's transcriptions. When looking at the Online Meeting API, the GET with filterBy joinWebUrl is only available for delegated flows.
Since I am retrieving the transcripts from a user's calendar meetings (via an Application flow) isn't there another way to get the meeting ID (and therefore, access the transcriptions)?

Thank you.

Microsoft Security | Microsoft Entra | Microsoft Entra ID
{count} votes

Answer accepted by question author
  1. Rukmini 11,470 Reputation points Microsoft External Staff Moderator
    2025-11-06T11:54:38.78+00:00

    Hello Aron Marinescu,

    You can fetch the online meeting ID by passing join web URL using Application API permissions too.

    To fetch the online meeting details using OAuth2 application, make sure to:

    • Create the application access policy and grant the policy, otherwise an error "No application access policy found for this app" will popup.
    • Make sure to encode the join web URL and pass in the Microsoft Graph API request.
    • Also, pass User ID not User Email/UPN in the Microsoft Graph API request.
    • Make sure to pass JoinWebUrl not JoinUrl in the Microsoft Graph API request.

    Grant OnlineMeetings.Read.All application type API permission:

    User's image

    Create the application access policy and grant the policy:

    Active "Skype for Business Administrator role" role must be assigned to the user performing this.

    
    Connect-MicrosoftTeams
    
    New-CsApplicationAccessPolicy -Identity Ruk-policy -AppIds "ClientIDofApp" -Description "Ruk"
    
    Grant-CsApplicationAccessPolicy -PolicyName Ruk-policy -Global
    
    

    User's image

    Generated access token using client credential flow for sample:

    User's image

    The online meeting ID can be fetched successfully:

    
    https://graph.microsoft.com/v1.0/users/UserID/onlineMeetings?$filter=JoinWebUrl%20eq%20'https%3A%2F%2Fteams.microsoft.com%2Fl%2Fmeetup-join%2F19%253amexxxxxxx'
    
    

    User's image

    
    const response = await client
    
      .api(`/users/${userId}/onlineMeetings`)
    
      .filter(`JoinWebUrl eq '${encodedJoinWebUrl}'`)
    
      .get();
    
    

    Hope this helps!

    If this answers your query, do click Accept Answer and Yes, if you have any further queries do let us know.

    If you have any other questions, let me know in the “comments” and I would be happy to help you.


0 additional answers

Sort by: Most helpful

Your answer

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