Building, integrating, or customizing apps and workflows within Microsoft Teams using developer tools and APIs
It seems that using delegated permissions for your meeting transcription bot might not be feasible for your specific use case.
Delegated Permissions: These are permissions that an app uses on behalf of a signed-in user. They require a user to be present and logged in to access certain resources. This is why your attempt to use the /me/onlinemeetings/{meeting_id}/transcripts endpoint results in a 400 Bad Request error when you’re not authenticated as a user or when the required authentication flow isn’t being utilized.
Application Permissions: These permissions are granted to the application itself and do not require a signed-in user. They allow the app to access resources in the Microsoft Graph API on behalf of itself, rather than a user. This is why your application-level permissions work without issues.
If your bot is meant to serve a wide range of users or meetings, using application permissions would be the recommended approach.
Also, it appears that application-level permissions are a hard requirement for your meeting transcription bot due to the limitations and security considerations associated with delegated permissions.
Reference Document:
Overview of Delegated and Application Permissions: Microsoft Graph Permissions Reference
Online Meeting Transcripts API: List Transcripts API Documentation
Authentication and Authorization: Authentication and Authorization Basics