Tom Talks Microsoft Teams and Microsoft 365 news and opinions

Microsoft Teams Call Records and Session Details API Public Preview

Update: This API is now generally available, more details here:

Being able to report at depth on usage (number of calls, who called who, what modalities were used etc.) and on performance (packet loss, jitter latency etc.) on unified communications is something many organisations want to do.

In Skype for Business Server we could get all the data in the backend CDR/QoE SQL databases and also later in its life-cycle had the option of leveraging the SDN API to get session detail information. Many third parties, including Modality (who I work for) build products that collected, sorted and interpreted this data into useful actionable information for customers.

In Skype for Business Online we got some limited access via a PowerShell cmdlet Get-CsUserSession, but it was tricky to get information out at scale.

Now for Microsoft Teams and Skype for Business online, in preview, there is a graph web hook API that will give access to this information. Allowing customers and third party applications to collect and report on it. This unlocks all sorts of new abilities to report at scale.


Below is a a summary of the initial information, but stay tuned on my blog for more in the coming weeks.

You can check out the documentation on Microsoft docs here


Microsoft Teams and Skype for Business Online Microsoft Graph call records API

Now in preview, under the /beta version in Microsoft Graph (microsoft.graph.callRecords), the Call records API provides

  • Usage and diagnostic information about the calls and online meetings that occur within your organization when using Microsoft Teams or Skype for Business
  • Subscribe to call records and look up call records by IDs.

It is worth noting that this is preview and API’s under /beta in Microsoft Graph are subject to change. Use of these APIs in production applications is not supported.



Resources returned by the API

The API offers the following resources

  • callRecord – represents a single peer-to-peer call or a group call between multiple participants
  • session – A peer-to-peer call contains a single session between the two participants in the call. Group calls contain one or more session entities. In a group call, each session is between the participant and a service endpoint.
  • segmentsegment represents a media link between two endpoints.

Properties include:

  • id
  • endDateTime
  • startDateTime
  • joinWebUrl
  • lastModifiedDateTime
  • modalities
  • organizer
  • participants
  • type
  • version


Graph Permissions

Access to this data is provided via Graph, you need an Application Permission type of CallRecords.Read.All

About the author

Tom Arbuthnot

A Microsoft MVP and Microsoft Certified Master, Tom Arbuthnot is Founder and Principal at Empowering.Cloud as well as a Solutions Director at Pure IP.

Tom stays up to date with industry developments and shares news and his opinions on his, UC Today Microsoft Teams Podcast and email list. He is a regular speaker at events around the world.

  • Hello Tom… thank you for sharing this details, I am facing the issue,

    “error”: {
    “code”: “Forbidden”,
    “message”: “”,
    “innerError”: {
    “request-id”: “92cdc47d-6cd6-4024-94c8-03878415193e”,
    “date”: “2020-03-27T06:23:41”

    • Hi,

      I’m not that deep into the API’s, to be honest. Maybe start a thread on ?

    • Same here. I cannot set the permission, beause they are not showing yet. Give it time, it’s too new ;)

  • Tom Talks Microsoft Teams and Microsoft 365 news and opinions