Use Graph APIs to fetch transcript
Use Graph REST APIs to get transcripts for a particular meeting. Your app fetches the transcripts based on the user ID of the meeting organizer and the meeting ID.
The following APIs are used for fetching transcripts:
List callTranscripts
This API is used to get a list of all callTranscript objects based on the user ID and meeting ID. It returns the metadata of the transcripts of the meeting, which contains the transcript ID and the created date and time of that transcript.
HTTP request
GET /me/onlineMeetings('{meetingId}')/transcripts
GET /users('{userId}')/onlineMeetings('{meetingId}')/transcripts
Optional query parameters
The method supports the $skipToken and $top OData query parameters to help customize the response.
Supported query patterns
| Pattern | Supported | Syntax | Notes |
|---|---|---|---|
| Server-side pagination | ✓ | @odata.nextLink |
Get a continuation token in the response, when a result set spans multiple pages. |
| Page limit | ✓ | /transcripts?$top=20 |
Get transcripts with page size 20. Default page limit is 10. Max page limit is 100. |
Request headers
| Header | Value |
|---|---|
| Authorization | Bearer {token}. Required. |
Request body
Don't supply a request body for this method.
Response
If successful, this method returns a 200 OK response code and a collection of callTranscript objects in the response body.
Example: List of callTranscript
Request
GET https://graph.microsoft.com/beta/users/ba321e0d-79ee-478d-8e28-85a19507f456/onlineMeetings/MSo1N2Y5ZGFjYy03MWJmLTQ3NDMtYjQxMy01M2EdFGkdRWHJlQ/transcripts
Response
Note
The response object shown here might be shortened for readability.
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#users('ba321e0d-79ee-478d-8e28-85a19507f456')/onlineMeetings('MSo1N2Y5ZGFjYy03MWJmLTQ3NDMtYjQxMy01M2EdFGkdRWHJlQ')/transcripts",
"@odata.count": 3,
"@odata.nextLink": "https://graph.microsoft.com/beta/users('ba321e0d-79ee-478d-8e28-85a19507f456')/onlineMeetings('MSo1N2Y5ZGFjYy03MWJmLTQ3NDMtYjQxMy01M2EdFGkdRWHJlQ')/transcripts?$skiptoken=MSMjMCMjMjAyMS0wOS0xNlQxMzo1OToyNy4xMjEwMzgzWg%3d%3d",
"value": [
{
"id": "MSMjMCMjZDAwYWU3NjUtNmM2Yi00NjQxLTgwMWQtMTkzMmFmMjEzNzdh",
"createdDateTime": "2021-09-17T06:09:24.8968037Z"
},
{
"id": "MSMjMCMjMzAxNjNhYTctNWRmZi00MjM3LTg5MGQtNWJhYWZjZTZhNWYw",
"createdDateTime": "2021-09-16T18:58:58.6760692Z"
},
{
"id": "MSMjMCMjNzU3ODc2ZDYtOTcwMi00MDhkLWFkNDItOTE2ZDNmZjkwZGY4",
"createdDateTime": "2021-09-16T18:56:00.9038309Z"
}
]
}
Get callTranscript
Your app parses through the list of transcript IDs, received as the response of the List callTranscripts API, to get the required transcript ID. This API is used to get a single transcript metadata based on the user ID, meeting ID, and transcript ID.
HTTP request
GET me/onlineMeetings('{meetingId}')/transcripts('{transcriptId}')
GET users('{userId}')/onlineMeetings('{meetingId}')/transcripts('{transcriptId}')
Request headers
| Header | Value |
|---|---|
| Authorization | Bearer {token}. Required. |
Request body
Don't supply a request body for this method.
Response
If successful, this method returns a 200 OK response code and a callTranscript object in the response body.
Example: Get a callTranscript
Request
GET https://graph.microsoft.com/beta/users/ba321e0d-79ee-478d-8e28-85a19507f456/onlineMeetings/MSo1N2Y5ZGFjYy03MWJmLTQ3NDMtYjQxMy01M2EdFGkdRWHJlQ/transcripts/MSMjMCMjNzU3ODc2ZDYtOTcwMi00MDhkLWFkNDItOTE2ZDNmZjkwZGY4
Response
Note
The response object shown here might be shortened for readability.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#users('ba321e0d-79ee-478d-8e28-85a19507f456')/onlineMeetings('MSo1N2Y5ZGFjYy03MWJmLTQ3NDMtYjQxMy01M2EdFGkdRWHJlQ')/transcripts/$entity",
"id": "MSMjMCMjNzU3ODc2ZDYtOTcwMi00MDhkLWFkNDItOTE2ZDNmZjkwZGY4",
"createdDateTime": "2021-09-17T06:09:24.8968037Z"
}
Get callTranscript content
This API is used to get the transcript of the selected transcript ID that was obtained in the response of the Get callTranscript API. It returns the content of the transcript.
HTTP request
GET me/onlineMeetings('{meetingId}')/transcripts('{transcriptId}')/content
GET users('{userId}')/onlineMeetings('{meetingId}')/transcripts('{transcriptId}')/content
Optional query parameters
This method supports the $format OData query parameter that allows response customization.
The supported format types are text/vtt for vtt OR application/vnd.openxmlformats-officedocument.wordprocessingml.document for docx format.
Request headers
| Header | Value |
|---|---|
| Authorization | Bearer {token}. Required. |
| Accept | text/vtt OR application/vnd.openxmlformats-officedocument.wordprocessingml.document. Optional. |
Request body
Don't supply a request body for this method.
Response
If successful, this method returns a 200 OK response code and contains bytes for callTranscript object in the response body. The content-type header specifies type of the transcript content.
Examples
Example: Get a callTranscript content
Request
GET https://graph.microsoft.com/beta/users/ba321e0d-79ee-478d-8e28-85a19507f456/onlineMeetings/MSo1N2Y5ZGFjYy03MWJmLTQ3NDMtYjQxMy01M2EdFGkdRWHJlQ/transcripts/MSMjMCMjNzU3ODc2ZDYtOTcwMi00MDhkLWFkNDItOTE2ZDNmZjkwZGY4/content
Response
Response contains bytes for the transcript in the body. The content-type header specifies type of the transcript content.
Note
The response object shown here might be shortened for readability.
HTTP/1.1 200 OK
Content-type: text/vtt
WEBVTT
0:0:0.0 --> 0:0:5.320
<v User Name>This is a transcript test.</v>
Example: Get a callTranscript content specifying $format query param
Request
GET https://graph.microsoft.com/beta/users/ba321e0d-79ee-478d-8e28-85a19507f456/onlineMeetings/MSo1N2Y5ZGFjYy03MWJmLTQ3NDMtYjQxMy01M2EdFGkdRWHJlQ/transcripts/MSMjMCMjNzU3ODc2ZDYtOTcwMi00MDhkLWFkNDItOTE2ZDNmZjkwZGY4/content?$format=text/vtt
Response
Response contains bytes for the transcript in the body. The content-type header specifies type of the transcript content.
Note
The response object shown here might be shortened for readability.
HTTP/1.1 200 OK
Content-type: text/vtt
WEBVTT
0:0:0.0 --> 0:0:5.320
<v User Name>This is a transcript test.</v>
Example: Get a callTranscript content specifying Accept header
Request
GET https://graph.microsoft.com/beta/users/ba321e0d-79ee-478d-8e28-85a19507f456/onlineMeetings/MSo1N2Y5ZGFjYy03MWJmLTQ3NDMtYjQxMy01M2EdFGkdRWHJlQ/transcripts/MSMjMCMjNzU3ODc2ZDYtOTcwMi00MDhkLWFkNDItOTE2ZDNmZjkwZGY4/content
Accept: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Response
Response contains bytes for the transcript in the body. The content-Type header specifies type of the transcript content.
Note
The response object shown here might be shortened for readability.
HTTP/1.1 200 OK
Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
0:0:0.0 --> 0:0:5.320
User Name
This is a transcript test.
Example: Get a callTranscript content with $format getting precedence over the accept header
Request
GET https://graph.microsoft.com/beta/users/ba321e0d-79ee-478d-8e28-85a19507f456/onlineMeetings/MSo1N2Y5ZGFjYy03MWJmLTQ3NDMtYjQxMy01M2EdFGkdRWHJlQ/transcripts/MSMjMCMjNzU3ODc2ZDYtOTcwMi00MDhkLWFkNDItOTE2ZDNmZjkwZGY4/content?$format=text/vtt
Accept: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Response
Response contains bytes for the transcript in the body. The content-Type header specifies type of the transcript content.
Note
The response object shown here might be shortened for readability.
HTTP/1.1 200 OK
Content-type: text/vtt
WEBVTT
0:0:0.0 --> 0:0:5.320
<v User Name>This is a transcript test.</v>
Platform Docs
Feedback
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback.
Submit and view feedback for

