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