Building, integrating, or customizing apps and workflows within Microsoft Teams using developer tools and APIs
Based on the information you provided, I understand you are looking to confirm whether Microsoft has introduced any native Graph API subscriptions or webhooks as of mid-2026 that can fire real-time call events (such as ringing, answered, or ended) for tenant-wide Teams Phone PSTN calls, specifically without deploying a Calling Bot or utilizing a Compliance Recording policy.
After researching the current state of the Microsoft Graph communications APIs, it is still not possible to get real-time lifecycle signaling events for tenant-wide PSTN calls without an active application participant (like a bot) in the call.
Here is a technical breakdown of how the endpoints behave under the hood to help clarify why the bot approach remains necessary for your requirements:
-
/communications/callRecords:This endpoint remains strictly a post-call reporting tool. A call record is generated only after a call has completely terminated. While you can subscribe to webhooks (change notifications) for this endpoint, the notification triggers only after the record is created (with the usual processing delay). It is designed purely for reporting, logging, compliance, and historical analytics, not for real-time signaling. -
/communications/calls:This endpoint does not support a global, tenant-wide subscription model for all PSTN calls. Microsoft's API architecture dictates that real-time call lifecycle events (like ringing or answering) are strictly bound to the context of an active call object. An application can only receive these signals if it is a direct participant in that specific call.
Depending on your exact business goals, you have two primary architectural approaches:
- If you absolutely need real-time events (Ringing, Answering, Call Control): You should commit to the Calling Bot approach. To intercept tenant-wide PSTN traffic, the bot must either be explicitly invited, routed through standard Teams components like Auto Attendants or Call Queues, or deployed via a Compliance Recording/Jotting policy that forces the media/signaling path to include your app.
- If near-real-time data after the call ends is acceptable (Logging/CRM Populating): You can bypass the bot complexity entirely. You can use the
/communications/callRecordsendpoint combined with Graph change notifications (webhooks). This will alert your backend system as soon as the call record is finalized so you can process the PSTN session data for auditing or reporting purposes.
I hope this confirmation helps you commit to your architectural design with confidence. Please let me know how else I can assist!
If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.