Metered usage for Teams transcription API throwing error due to public app instead of confidential

Kamal Ranabhat 0 Reputation points
2025-03-13T16:14:01.9366667+00:00

Hello, we are using Graph API to build an application to fetch Teams meeting transcription. We reached out to Teams Graph API support. They told us to reach out to Entra support. They told us the appID indicates it is a public app and we need to build a Confidential app. We are not sure how to to do this. We did use pay as you go billing. The current app allows us to pull 600 minutes of transcript but then throws error after that.

This is the details of our current app.

  1. TenantId:  3d03b1f4-a2f1-4d76-90ed-b21563dde548
  2. Application Id/Client Id: 995f6c5e-f81a-4a50-90a1-8e5ca8610031
  3. Graph API used with the Request Body: users/{userId}/onlineMeetings/{meetingId}/transcripts/{transcriptId}/content
  4. Method: GET
  5. Permission Type: Delegated permission
  6. API Version: v1
    7: timestamp: 17:47 UTC, March 11, 2025
    8: HTTP Status Code:  402
    9: Error Message: Payment Required
Microsoft Graph
Microsoft Graph
A Microsoft programmability model that exposes REST APIs and client libraries to access data on Microsoft 365 services.
13,256 questions
0 comments No comments
{count} votes

2 answers

Sort by: Most helpful
  1. Q&A Assist
    2025-03-13T16:14:01.94+00:00
    AI generated content. This question contains an answer created with AI from Q&A Assist. Learn more

    To resolve the issue with the Teams transcription API, you need to convert your public app into a confidential app. A confidential app is typically used for server-to-server communication and requires a client secret or certificate for authentication.

    Here are the steps you can follow to create a confidential app:

    1. Register a New Application: Go to the Azure portal and register a new application. Ensure that you select the option for a confidential client.
    2. Configure Permissions: Assign the necessary permissions for accessing the Teams meeting transcripts. You may need to use application permissions instead of delegated permissions to avoid limitations on the number of transcripts you can fetch.
    3. Generate Client Secret: After registering the app, generate a client secret. This secret will be used in your application to authenticate against the Microsoft identity platform.
    4. Update Your Application: Modify your application code to use the new client ID and client secret for authentication. Ensure you are using the appropriate libraries, such as MSAL (Microsoft Authentication Library), to handle the authentication flow.
    5. Test the API Calls: Once the application is configured, test the API calls again to see if the issue with the 402 error persists.

    By following these steps, you should be able to transition from a public app to a confidential app and resolve the metered usage issue with the Teams transcription API.


    References:

    0 comments No comments

  2. Rajat Vashistha-MSFT 1,155 Reputation points Microsoft External Staff
    2025-03-13T17:15:05.8633333+00:00

    Hi Kamal Ranabhat,

    Thanks for reaching out to Microsoft!

    To address your requirements, you can register a new application as a confidential app by adding a client secret. Be sure to also include the necessary delegated or application permissions based on your needs, such as "OnlineMeetings.Read" or "OnlineMeetings.Read.All". These permissions will enable you to fetch transcripts using the onlineMeeting: getAllTranscripts API.

    To increase the limit for the Microsoft Teams API evaluation quota (600 minutes per month), you need to configure Azure billing.

    When Azure billing is configured, there is no limit on the amount of meeting content that can be downloaded. Usage is billed based on the number of minutes of content downloaded. Engineering RPS limits still apply even with billing configured. User's imageEnable metered Microsoft 365 APIs and services to set up an active Azure subscription for billing purposes.

    The Teams meeting transcript and recording APIs don't support the model A and model B payment models. The APIs support an evaluation mode that allows apps to use them without configuring Azure billing. Once the evaluation capacity is exhausted these API fails with error code 402 (Payment Required).

    Payment requirements for meeting APIs

    Hope this helps.

    If the answer is helpful, please click Accept Answer and kindly upvote. If you have any further questions about this answer, please click Comment.

    0 comments No comments

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.