# How to access meeting transcript from recording.completed webhook event

**URL:** <https://devforum.zoom.us/t/how-to-access-meeting-transcript-from-recording-completed-webhook-event/103087>\
**Category:** Meetings\
**Created:** [February 2, 2024, 4:19pm UTC](https://devforum.zoom.us/t/how-to-access-meeting-transcript-from-recording-completed-webhook-event/103087 "2024-02-02T16:19:34Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![fasarker](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/fasarker/32/31112_2.png) [@fasarker](https://devforum.zoom.us/u/fasarker)\
**Post date:** [February 2, 2024, 4:19pm UTC](https://devforum.zoom.us/t/how-to-access-meeting-transcript-from-recording-completed-webhook-event/103087/1 "2024-02-02T16:19:34Z")

</div>

Hello,

In the [recording.completed](https://developers.zoom.us/docs/meeting-sdk/webhooks/#operation/recording.completed) webhook response, there is an attribute called file\_type , with some possible values listed as “TRANSCRIPT”, “CC”, and “TIMELINE”.

However, whenever I receive a recording.completed event from a meeting on my Zoom account, the only available file\_types are “MP4” and “M4A”.

I am trying to retrieve a Zoom meeting transcript for each recording that contains both speaker names and timestamps using the recording.completed webhook.

How can I achieve this? If it is not possible to achieve this with the recording.completed webhook, what other method should I follow? Also, what settings need to be turned on within a user’s Zoom account in order for us to be able to access their meeting transcripts through the Zoom API?

Thanks,  
Farhana

---

<div class="post-metadata">

**Author:** ![gianni.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/gianni.zoom/32/32523_2.png) [@gianni.zoom](https://devforum.zoom.us/u/gianni.zoom)\
**Post date:** [February 2, 2024, 5:56pm UTC](https://devforum.zoom.us/t/how-to-access-meeting-transcript-from-recording-completed-webhook-event/103087/2 "2024-02-02T17:56:03Z")

</div>

Hi @fasarker ,

> [@fasarker](#):
>
> How can I achieve this? If it is not possible to achieve this with the recording.completed webhook, what other method should I follow? Also, what settings need to be turned on within a user’s Zoom account in order for us to be able to access their meeting transcripts through the Zoom API?

You may not have transcription enabled. Please check out this support article:

- [https://support.zoom.com/hc/en/article?id=zm\_kb&sysparm\_article=KB0064927](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064927)

Additionally, this blog walks through recording downloads with webhooks, but links to the cloud recording API endpoints as an alternative at the beginning:

> **[Zoom Meeting API querying tips - Download recordings using webhooks](https://developers.zoom.us/blog/meeting-api-querying-tips-part4/)**
>
> Join Developer Advocate Elisa Levet in this blog post series as she takes a deep dive into the world of the Zoom REST API.

---

<div class="post-metadata">

**Author:** ![fasarker](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/fasarker/32/31112_2.png) [@fasarker](https://devforum.zoom.us/u/fasarker)\
**Post date:** [February 5, 2024, 6:24am UTC](https://devforum.zoom.us/t/how-to-access-meeting-transcript-from-recording-completed-webhook-event/103087/4 "2024-02-05T06:24:51Z")

</div>

@gianni.zoom Thank you for your quick response. I enabled transcription by following the instructions in the resource you shared. Now, I am able to see an additional “TIMELINE” file\_type in the recording webhook response, but I still do not see a “TRANSCRIPT” or “CC” file\_type.

Are there any other steps I need to take to retrieve the full recording transcript through the recording.completed webhook?

Also, could you point me to some documentation that describes what the “TIMELINE” file contains?

Thanks again for the help.

---

<div class="post-metadata">

**Author:** ![gianni.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/gianni.zoom/32/32523_2.png) [@gianni.zoom](https://devforum.zoom.us/u/gianni.zoom)\
**Post date:** [February 5, 2024, 8:22pm UTC](https://devforum.zoom.us/t/how-to-access-meeting-transcript-from-recording-completed-webhook-event/103087/5 "2024-02-05T20:22:17Z")

</div>

> [@fasarker](#):
>
> Thank you for your quick response. I enabled transcription by following the instructions in the resource you shared. Now, I am able to see an additional “TIMELINE” file\_type in the recording webhook response, but I still do not see a “TRANSCRIPT” or “CC” file\_type.
> 
> Are there any other steps I need to take to retrieve the full recording transcript through the recording.completed webhook?

@fasarker can you check if you see the transcription provided in the cloud recording on the web portal or [API endpoint](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingGet)? I want to see if it’s actually transcribing, but not showing in the webhook. If it’s not showing there, please double check transcription for cloud recordings was properly enabled.

- Instructions for viewing transcription: [https://support.zoom.com/hc/en/article?id=zm\_kb&sysparm\_article=KB0064927](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064927)
- Instructions for enabling transcription: [Enabling or disabling audio transcription for cloud recordings - Zoom Support](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065911)

I just tested the `recording.completed` webhook and got a similar response as you. I received MP4, M4A and TIMELINE files.

Alternatively, I also subscribed to the `recording.transcript_completed` event and received the TRANSCRIPT file there:

 ![Screenshot 2024-02-05 at 3.18.57 PM](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/2/4/2497031b1bc1e6f0f4ca002ca94205ff28d0e7f0.png)

I will submit a request to our docs team for clarification on which file types are to be expected from `recording.completed`. In the interim, please also subscribe to `recording.transcript_completed` event.

> [@fasarker](#):
>
> Also, could you point me to some documentation that describes what the “TIMELINE” file contains?

The cloud recording API endpoints have robust descriptions of the fields: [Meeting API](https://developers.zoom.us/docs/meeting-sdk/apis/#operation/recordingGet)

---

<div class="post-metadata">

**Author:** ![gianni.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/gianni.zoom/32/32523_2.png) [@gianni.zoom](https://devforum.zoom.us/u/gianni.zoom)\
**Post date:** [February 5, 2024, 8:30pm UTC](https://devforum.zoom.us/t/how-to-access-meeting-transcript-from-recording-completed-webhook-event/103087/6 "2024-02-05T20:30:21Z")

</div>

Another thing I noticed @fasarker ,

In the `recording.completed` [documentation](https://developers.zoom.us/docs/meeting-sdk/webhooks/#operation/recording.completed), `audio_transcript` is not listed in the allowed:

 ![Screenshot 2024-02-05 at 3.29.13 PM](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/c/7/c762131998c9729603c984125839d4ab8e13bc1e.png)

This means what we saw is likely expected behavior. `closed_captions` however, is listed. Can you confirm you had closed captions enabled in the recording you tested?

---

<div class="post-metadata">

**Author:** ![fasarker](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/fasarker/32/31112_2.png) [@fasarker](https://devforum.zoom.us/u/fasarker)\
**Post date:** [February 6, 2024, 2:53am UTC](https://devforum.zoom.us/t/how-to-access-meeting-transcript-from-recording-completed-webhook-event/103087/7 "2024-02-06T02:53:26Z")

</div>

@gianni.zoom Thanks again for the very helpful response.

Yes, it looks like the transcript is available when I query the [get recordings API](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingGet). I suppose then that the transcript will show up in the get recordings API response only when it is ready?

When I enable closed captions during the meeting, the CC file does indeed show up in the recording.completed webhook response. However, the CC file does not contain any speaker names. Other than the speaker names being omitted, is there any other difference between the contents of the CC file and the contents of the audio transcript file?

I checked the cloud recording APIs, but I still don’t see a good description of what is contained in the TIMELINE file. What does each timestamp in that file represent (e.g. when a word is spoken, when a certain length of phrase is spoken, etc.)? How should we match up the timestamps in the TIMELINE file to the CC file?

I will try out the recording.transcript\_completed event. Can we be certain that the recording.transcript\_completed event will always fire after the recording.completed event has already fired? How long after the recording is available can we be sure that the transcript will be available?

Thanks again for all the help.

-Farhana

---

<div class="post-metadata">

**Author:** ![gianni.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/gianni.zoom/32/32523_2.png) [@gianni.zoom](https://devforum.zoom.us/u/gianni.zoom)\
**Post date:** [February 7, 2024, 9:43pm UTC](https://devforum.zoom.us/t/how-to-access-meeting-transcript-from-recording-completed-webhook-event/103087/8 "2024-02-07T21:43:06Z")

</div>

Hey @fasarker !

> [@fasarker](#):
>
> Yes, it looks like the transcript is available when I query the [get recordings API](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/recordingGet). I suppose then that the transcript will show up in the get recordings API response only when it is ready?

**Yes, you can always use this endpoint for the transcript files.**

> [@fasarker](#):
>
> When I enable closed captions during the meeting, the CC file does indeed show up in the recording.completed webhook response. However, the CC file does not contain any speaker names. Other than the speaker names being omitted, is there any other difference between the contents of the CC file and the contents of the audio transcript file?

**See below for comparison:**

> [@Difference between audio transcript and closed captions](https://devforum.zoom.us/t/difference-between-audio-transcript-and-closed-captions/6035/4):
>
> Hey @j.herman, Audio Transcript The audio transcript is a VTT file created automatically if you have these [account](https://zoom.us/account/setting?tab=recording)/[user](https://zoom.us/profile/setting?tab=recording) settings turned on: [Here is an example of an audio transcript file.](https://zoom.us/recording/download/kvqQgi1AhkrKTsvVdQ3CSSlmTC4vSQ1MYs2YiYlj7OfwL_eo2sOptDNHZRfv8dZb) Closed Caption The closed caption file is a .txt file that someone in the meeting or [3rd party app](https://marketplace.zoom.us/apps/d054_tATQRaGPKxfs7SPnw) types/generates with time stamp and the words spoken: 18:57:45 Hello 18:57:50 This is a closed caption 18:58:03 I am doing this manually, but there are tools to do this automatically Closed capti…

> [@fasarker](#):
>
> I checked the cloud recording APIs, but I still don’t see a good description of what is contained in the TIMELINE file. What does each timestamp in that file represent (e.g. when a word is spoken, when a certain length of phrase is spoken, etc.)? How should we match up the timestamps in the TIMELINE file to the CC file?

**See below for comparison:**

> [@Can't find Timeline file type](https://devforum.zoom.us/t/cant-find-timeline-file-type/8637/16):
>
> Hey @leva, @santa.th0, @maya.bialik, I was able to generate the TIMELINE file in the following way: Make sure timestamp is enabled in your [user settings](https://zoom.us/profile/setting?tab=recording): Start the meeting Start the cloud recording Speak End the meeting. You will notice the TIMELINE file is not present in the Zoom Cloud Recordings Portal It is only accessible from the [Get Recording API endpoint](https://marketplace.zoom.us/docs/api-reference/zoom-api/cloud-recording/recordingget).

> [@fasarker](#):
>
> I will try out the recording.transcript\_completed event. Can we be certain that the recording.transcript\_completed event will always fire after the recording.completed event has already fired? How long after the recording is available can we be sure that the transcript will be available?

**In my testing, the `recording.transcript_completed` event was available 7 milliseconds before the `recording.completed` event. Webhook latency/failure os subject to a few different factors, but we have some support guidance on the topic here: [Zoom Developer Blog](https://developers.zoom.us/blog/?category=webhooks)**

---

<div class="post-metadata">

**Author:** ![fasarker](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/fasarker/32/31112_2.png) [@fasarker](https://devforum.zoom.us/u/fasarker)\
**Post date:** [February 7, 2024, 10:28pm UTC](https://devforum.zoom.us/t/how-to-access-meeting-transcript-from-recording-completed-webhook-event/103087/9 "2024-02-07T22:28:15Z")

</div>

Thanks again for the help @gianni.zoom, that answers most of my questions.

I’m still confused about what each timestamp in the TIMELINE file represents (e.g. when a word is spoken, when a certain length of phrase is spoken, etc.), but I’m happy to open a separate post for that.

Appreciate your time!
