You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Microsoft Graph Call Records API, also known as the call records API, offers usage and diagnostic insights for calls and online meetings that occur within your organization when using Microsoft Teams or Skype for Business. Organizationsreferred to as tenants, can use the call records API to subscribe to, list, retrieve call records by call IDs, and to look up calls for a participant. For more details, please refer to the [Working with the call records API in Microsoft Graph](/graph/api/resources/callrecords-api-overview).
13
+
The Microsoft Graph Call Records API (Call Records API) offers usage and diagnostic insights for calls and online meetings that occur within your organization when using Microsoft Teams or Skype for Business. Organizations, also referred to as "tenants," can use the Call Records API to subscribe to, list, retrieve call records by call IDs, and to look up calls for a participant. For more information, see [Working with the Call Records API in Microsoft Graph](/graph/api/resources/callrecords-api-overview).
14
14
15
-
## What is the permission required to use the Graph Call Records API?
15
+
## Which permission is required to use the Call Records API?
16
16
17
-
Your application needs the **CallRecords.Read.All** permission to access call records in Microsoft Graph. An administrator must grant this permission to the application. For more details, please refer to the[Microsoft Graph permissions reference](permissions-reference.md).
17
+
Your application needs the **CallRecords.Read.All** permission to access call records in Microsoft Graph. An administrator must grant this permission to the application. For more information, see[Microsoft Graph permissions reference](permissions-reference.md).
18
18
19
-
## Can I use delegated permissions with the Graph Call Records API?
19
+
## Can I use delegated permissions with the Call Records API?
20
20
21
-
No, the Graph Call Records API doesn't support delegated permissions.
21
+
No, the Call Records API doesn't support delegated permissions.
22
22
23
-
## Why can't I use delegated permissions with the Graph Call Records API?
23
+
## Why can't I use delegated permissions with the Call Records API?
24
24
25
-
You can't use delegated permissions because there's no way to limit **CallRecords.Read.All** permission to specific calls or users, as the application permission is granted at the organization level, not the individual user level.
25
+
You can't use delegated permissions because there's no way to limit **CallRecords.Read.All** permission to specific calls or users because the application permission is granted at the organization level, not the individual user level.
26
26
27
-
## How do I request a call record using the Microsoft Graph Call Records API?
27
+
## How do I request a call record using the Microsoft Call Records API?
28
28
29
-
To request a call record, you need to make a `GET` request to the `/communications/callRecords/{id}` endpoint, where `{id}` is the unique identifier of your call. Ensure you have the necessary **CallRecords.Read.All** permission and include the Authorization header with a valid bearer token. For more details, please refer to the [Get callRecord documentation](/graph/api/callrecords-callrecord-get).
29
+
To request a call record, you need to make a `GET` request to the `/communications/callRecords/{id}` endpoint, where `{id}` is the unique identifier of your call. Ensure you have the **CallRecords.Read.All** permission and include the Authorization header with a valid bearer token. For more information, see[Get callRecord documentation](/graph/api/callrecords-callrecord-get).
30
30
31
31
## Where can I find the call IDs of the calls that occurred in my organization?
32
32
33
-
You can find and collect call IDs using the following options:
33
+
You can find and collect call IDs in the following ways:
34
34
35
35
***Subscribe to notifications**: Subscribe to [change notifications feed](changenotifications-for-callrecords.md) and receive notifications containing call IDs whenever a new call record is created.
36
36
***List call records**: Get a list of call IDs by requesting it from [List callRecords API](/graph/api/callrecords-cloudcommunications-list-callrecords).
37
37
***Manual search**: If you have access to [Call Analytics](/microsoftteams/use-call-analytics-to-troubleshoot-poor-call-quality) within the [Teams Admin Center](/microsoftteams/teams-overview) for Microsoft Teams, you can manually search for a call ID in a user’s history. However, there's no automated system available to retrieve all call IDs from Call Analytics.
38
-
***Use callChainId:**: Look up the call ID using the `callChainId` from the [Get call](/graph/api/resources/call) API after the call is completed. This approach works when the call is programmatically created and you're working with the [call resource type](/graph/api/resources/call). Also, the `callChainId`may differ from the call record ID in certain scenarios, such as transfer calls due to architecture specifics. Therefore, this method is less preferred compared to other options.
38
+
***Use callChainId:**: Look up the call ID using the `callChainId` from the [Get call](/graph/api/resources/call) API after the call is completed. Use this approach when the call is programmatically created and you're working with the [call resource type](/graph/api/resources/call). Also, the `callChainId`can differ from the call record ID in certain scenarios, such as transfer calls, due to architecture specifics. Therefore, prefer the other methods in this list when possible.
39
39
40
40
## When is a call record available?
41
41
42
-
A first version of a call record is typically generated and a notification is sent within 15 minutes after a call ends. However, it can take up to 60 minutes for the service to make the call record available. For more details, please refer to the[Latency](/graph/api/resources/subscription#latency) page.
42
+
A first version of a call record is typically generated and a notification is sent within 15 minutes after a call ends. However, it can take up to 60 minutes for the service to make the call record available. For more information, see[Latency](/graph/api/resources/subscription#latency) page.
43
43
44
44
## How long are call records retained?
45
45
46
46
Call records are retained for 30 days after the call ends.
47
47
48
48
## Can I retrieve call records older than 30 days?
49
49
50
-
No, the Call Records API doesn't return call records older than 30 days. Requests for such records result in a 404 Not Found error response.
50
+
No, the Call Records API doesn't return call records older than 30 days. Requests for such records result in a `404 Not Found` error response.
51
51
52
52
## Why is my first call record notification delayed?
53
53
54
-
Your call record notification may be delayed because it can take up to 60 minutes for the service to make the **first** version of a call record available. If you experience a longer delay for the first call record version delivery, check for any reported outages by the Graph Call Records API team in the "Health" tab of the [Teams Admin Portal](https://admin.teams.microsoft.com/). Additionally, you can open a [Support Ticket](https://developer.microsoft.com/graph/support) with the Graph Call Records API team.
54
+
Your call record notification can be delayed because it can take up to 60 minutes for the service to make the **first** version of a call record available. If you experience a longer delay for delivery of the first call record version, check for outages reported by the Call Records API team in the "Health" tab of the [Teams Admin Portal](https://admin.teams.microsoft.com/). Also, you can open a [Support Ticket](https://developer.microsoft.com/graph/support) with the Call Records API team.
55
55
56
56
## Why are subsequent versions of my call record delayed?
57
57
58
-
Subsequent versions of a call record may be delivered after the initial 60-minute latency. This means that while the first version is available within 60 minutes, later updates to the call record can arrive later due to client delayed telemetry and other factors.
58
+
Subsequent versions of a call record can be delivered after the initial 60-minute latency. This means that while the first version is available within 60 minutes, later updates to the call record can arrive later due to delayed telemetry from the client and other factors.
59
59
60
60
## Why does a call record have missing fields?
61
61
62
-
A call record may have missing fields due to delayed telemetry from a client. When new telemetry data becomes available, the system generates a new call record with updated information, increments the `version` property value, and sends the updated call record to you. If your call record is missing properties, wait for the next call record version.
62
+
A call record can have missing fields due to delayed telemetry from a client. When new telemetry data becomes available, the system generates a new call record with updated information, increments the `version` property value, and sends the updated call record to you. If your call record is missing properties, wait for the next call record version.
63
63
64
-
However, it's important to note that some fields may remain empty by design or because the client telemetry never arrived, such as media stream values.
64
+
However, it's important to note that some fields can remain empty by design or because the client telemetry never arrived, such as media stream values.
65
65
66
-
If critical fields are still missing or were previously delivered but have stopped, open a [Support Ticket](https://developer.microsoft.com/graph/support) with the Graph Call Records API team.
66
+
If critical or previously delivered fields are missing, open a [Support Ticket](https://developer.microsoft.com/graph/support) with the Call Records API team.
67
67
68
-
## How can I list all participants attended in a call?
68
+
## How can I list all participants who attended a call?
69
69
70
-
There are multiple options to list all participants who attended a call.
70
+
You can use the following three methods to list all attending call participants:
71
71
72
-
### Option 1: List participants_v2 API
72
+
1.**List participants_v2 API**
73
73
74
-
Use the [List participants_v2](/graph/api/callrecords-callrecord-list-participants_v2) API to collect the full list of participants for a requested call ID.
74
+
Use the [List participants_v2](/graph/api/callrecords-callrecord-list-participants_v2) API to collect the full list of participants for a requested call ID.
75
75
76
-
### Option 2: callRecords API with expanded participants_v2 property
76
+
2.**Use the $expand OData query parameter on the callRecords object to expand the participants_v2 property**
77
77
78
-
You can call `GET communications/callRecords/{id}?$expand=participants_v2` to retrieve high-level call details along with the list of participants.
78
+
You can call `GET communications/callRecords/{id}?$expand=participants_v2` to retrieve high-level call details along with the list of participants.
79
79
80
-
### Option 3: Build custom participants list
80
+
3.**Build a custom participants list**
81
81
82
-
To see all participants, implement a custom solution to build the participants list from the call records data:
82
+
To see all participants, implement a custom solution to build the participants list from the call records data:
83
83
84
-
1. Call [Get callRecord](/graph/api/callrecords-callrecord-get) API with expanded sessions endpoint: `GET /communications/callRecords/{id}?$expand=sessions`
85
-
2. For **peer-to-peer** (P2P) calls, read both the `caller` and `callee` properties from each `session` in the received `sessions` list. For **meeting** calls, read only the `caller` property
86
-
3. Build your custom participants list based on the `caller` endpoint [identity](/graph/api/resources/identity), and for P2P calls, also include the `callee` endpoint [identity](/graph/api/resources/identity). Collect the `id`, `displayName`, and other properties you require to gather for a participant
84
+
1. Call the [Get callRecord](/graph/api/callrecords-callrecord-get) API and expand the sessions property: `GET /communications/callRecords/{id}?$expand=sessions`.
85
+
2. For peer-to-peer (P2P) calls, read both the `caller` and `callee` properties from each `session` in the received `sessions` list. For meeting calls, read only the `caller` property.
86
+
3. Build your custom participants list based on the `caller` endpoint [identity](/graph/api/resources/identity). For P2P calls, also include the `callee` endpoint [identity](/graph/api/resources/identity). Collect the `id`, `displayName`, and other properties you require for each participant.
87
87
88
88
## Why don't I see all participants who attended a call while calling list participants_v2 API?
89
89
90
-
You might not see all participants because the [List participants_v2](/graph/api/callrecords-callrecord-list-participants_v2) API supports pagination, limiting the number of participants in the response to 60 per page. If there were more than 60 users on the call, the first call record response contains 60 participants along with a `@odata.nextLink` property. This property includes the URL to call the API and receive the next set of participants. Continue this process until the next link is empty, indicating that there are no more participants to retrieve.
90
+
You might not see all participants because the [List participants_v2](/graph/api/callrecords-callrecord-list-participants_v2) API supports pagination, limiting the number of participants in the response to 60 per page. If there were more than 60 users on the call, the first call record response contains 60 participants along with a `@odata.nextLink` property. This property includes the URL to call the API and receive the next set of participants. Continue this process until the next link is empty, which indicates that there are no more participants to retrieve.
91
91
92
92
## Why do I receive a 404 Not Found error?
93
93
94
-
There are several reasons you might encounter a 404 Not Found error:
94
+
The following list shows some reasons why you might encounter a `404 Not Found` error:
95
95
96
-
***Recent Call**: If the call was made within the last 60 minutes, the call record might not be generated yet. Wait until 60 minutes have elapsed from when the call ended and try again.
97
-
***Old Call**: If the call is older than 30 days, the Graph Call Records API returns a 404 Not Found error by design.
98
-
***Other Issues**: If neither of the reasons apply, check for any reported outages by the Graph Call Records API team in the "Health" tab of the [Teams Admin Portal](https://admin.teams.microsoft.com/). Additionally, you can open a [Support Ticket](https://developer.microsoft.com/graph/support) with the Graph Call Records API team for assistance.
96
+
***Recent Call**: If the call was made within the last 60 minutes, the call record might not be generated yet. Wait 60 minutes after the call ended and try again.
97
+
***Old Call**: If the call is older than 30 days, the Call Records API returns a 404 Not Found error by design.
98
+
***Other Issues**: If neither of the reasons apply, check for any outages reported by the Call Records API team in the "Health" tab of the [Teams Admin Portal](https://admin.teams.microsoft.com/). Also, you can open a [Support Ticket](https://developer.microsoft.com/graph/support) with the Call Records API team for assistance.
0 commit comments