# VideoSdk Websocket Cloud Transcript Completed not firing

**URL:** <https://devforum.zoom.us/t/videosdk-websocket-cloud-transcript-completed-not-firing/141948>\
**Category:** Cloud Recordings\
**Tags:** webhooks\
**Created:** [February 17, 2026, 2:36am UTC](https://devforum.zoom.us/t/videosdk-websocket-cloud-transcript-completed-not-firing/141948 "2026-02-17T02:36:11Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![sam9](https://avatars.discourse-cdn.com/v4/letter/s/858c86/32.png) [@sam9](https://devforum.zoom.us/u/sam9)\
**Post date:** [February 17, 2026, 2:36am UTC](https://devforum.zoom.us/t/videosdk-websocket-cloud-transcript-completed-not-firing/141948/1 "2026-02-17T02:36:11Z")

</div>

### 

**API Endpoint(s) and/or Zoom API Event(s)**  
_Webhook Subscriptions for VideoSdk Account_

VideoSDK Account Number: 7042047386

**Description**  
om Video SDK BYOS (Bring Your Own Storage) transcription is no longer completing. Sessions record successfully and session.recording\_completed webhooks fire as expected, but the VTT transcript file written to our S3 bucket only contains “Starting Transcript” — the placeholder — and is never updated with actual transcript content. The session.recording\_transcript\_completed webhook never fires. This was previously working without any changes on our end.

**Error?**  
No error is returned. The VTT file is created in our BYOS S3 bucket at session start with content “Starting Transcript” but is never updated with actual transcribed audio. The session.recording\_transcript\_completed webhook event is never sent to our endpoint, despite session.recording\_completed being received successfully for the same session. The MP4 recording file contains valid audio.

**How To Reproduce**  
Create a Zoom Video SDK session with BYOS cloud recording enabled and “Create audio transcript” enabled in account settings

1. Join the session, speak for 1+ minutes with clear audio, then end the session
2. session.recording\_completed webhook fires to our endpoint — payload contains MP4 and TIMELINE (JSON) files only, no VTT
3. Check BYOS S3 bucket — VTT file exists but only contains “Starting Transcript”
4. Wait 30+ minutes — VTT file is never updated, session.recording\_transcript\_completed webhook never fires
5. MP4 recording plays back with valid, audible speech

- App type: Video SDK,
- BYOS: Enabled (recordings go to our S3 bucket)
- Account settings: “Create audio transcript” is ON
- Webhook subscriptions: Both session.recording\_completed and session.recording\_transcript\_completed are subscribed — only the former fires
- Recording type received: shared\_screen\_with\_speaker\_view (MP4) + timeline (JSON)

---

<div class="post-metadata">

**Author:** ![sam9](https://avatars.discourse-cdn.com/v4/letter/s/858c86/32.png) [@sam9](https://devforum.zoom.us/u/sam9)\
**Post date:** [February 17, 2026, 2:35pm UTC](https://devforum.zoom.us/t/videosdk-websocket-cloud-transcript-completed-not-firing/141948/2 "2026-02-17T14:35:00Z")

</div>

@vic.yang anyway you can take a look at this?

---

<div class="post-metadata">

**Author:** ![sam9](https://avatars.discourse-cdn.com/v4/letter/s/858c86/32.png) [@sam9](https://devforum.zoom.us/u/sam9)\
**Post date:** [February 18, 2026, 3:33am UTC](https://devforum.zoom.us/t/videosdk-websocket-cloud-transcript-completed-not-firing/141948/3 "2026-02-18T03:33:34Z")

</div>

Or anyone thats available… @ticorrian.heard 😀

---

<div class="post-metadata">

**Author:** ![ticorrian.heard](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/ticorrian.heard/32/70213_2.png) [@ticorrian.heard](https://devforum.zoom.us/u/ticorrian.heard)\
**Post date:** [February 18, 2026, 7:41pm UTC](https://devforum.zoom.us/t/videosdk-websocket-cloud-transcript-completed-not-firing/141948/4 "2026-02-18T19:41:44Z")

</div>

Hi @sam9 I can help take a look here. I’ll submit this as an engineering ticket and get back to you with the reference number.

---

<div class="post-metadata">

**Author:** ![sam9](https://avatars.discourse-cdn.com/v4/letter/s/858c86/32.png) [@sam9](https://devforum.zoom.us/u/sam9)\
**Post date:** [February 18, 2026, 8:54pm UTC](https://devforum.zoom.us/t/videosdk-websocket-cloud-transcript-completed-not-firing/141948/5 "2026-02-18T20:54:45Z")

</div>

Appreciate you @ticorrian.heard

---

<div class="post-metadata">

**Author:** ![sam9](https://avatars.discourse-cdn.com/v4/letter/s/858c86/32.png) [@sam9](https://devforum.zoom.us/u/sam9)\
**Post date:** [February 19, 2026, 4:26pm UTC](https://devforum.zoom.us/t/videosdk-websocket-cloud-transcript-completed-not-firing/141948/6 "2026-02-19T16:26:04Z")

</div>

Okay @ticorrian.heard and @vic.yang and for whom it concerns I’ve solved the issue by disabling my bucket versioning on s3. below is a write up of what I learned after. This ticket can be closed but leaving this here for future sake.

* * *

**Zoom BYOS (Bring Your Own Storage) — S3 Bucket Versioning Breaks Transcript Webhooks**

**Summary**  
Enabling S3 bucket versioning on an Amazon S3 bucket used for Zoom BYOS causes transcript-related webhooks (session.recording\_transcript\_completed / recording.transcript\_completed) to stop firing. Recording webhooks and all other BYOS functionality continue to work normally. Disabling versioning immediately restores transcript webhook delivery.

**Environment**

- Zoom BYOS with Amazon S3 (AWS Access Key authentication)
- Bucket region: us-east-2
- Zoom Video SDK and Zoom Meetings API webhooks

**Symptoms**

- Recording files (.mp4) upload to S3 successfully and recording.completed webhooks fire as expected
- Transcript files (.vtt) appear empty in the bucket and recording.transcript\_completed /  
session.recording\_transcript\_completed webhooks never fire
- All other webhook events (session.started, session.ended, meeting.started, meeting.ended) continue working normally
- Switching to Zoom Cloud storage (disabling BYOS) restores transcript delivery immediately

**Debugging Steps**

1. Initially suspected IAM credentials or bucket policy — ruled out because recording uploads worked fine with the same  
credentials and bucket
2. Changed S3 Object Ownership from “Bucket owner enforced” to “Object writer” and disabled versioning simultaneously —  
transcripts started working
3. Re-enabled versioning — transcripts broke again
4. Removed S3 lifecycle rules while keeping versioning — transcripts still broken
5. Removed versioning, kept lifecycle rules — transcripts restored

**Root Cause**  
S3 bucket versioning is the sole cause. Lifecycle rules, Object Ownership settings, IAM permissions, and bucket policies were all ruled out through isolated testing. The issue appears to be specific to how Zoom’s BYOS transcript upload pipeline interacts with versioned S3 buckets — the recording upload pipeline is unaffected.

**Workaround**  
Disable S3 bucket versioning on any bucket used for Zoom BYOS if transcript delivery is required. Alternatively, use a separate non-versioned bucket for Zoom BYOS while keeping versioning enabled on other buckets.

---

<div class="post-metadata">

**Author:** ![ticorrian.heard](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/ticorrian.heard/32/70213_2.png) [@ticorrian.heard](https://devforum.zoom.us/u/ticorrian.heard)\
**Post date:** [February 19, 2026, 5:18pm UTC](https://devforum.zoom.us/t/videosdk-websocket-cloud-transcript-completed-not-firing/141948/7 "2026-02-19T17:18:31Z")

</div>

Hi @sam9 happy to hear you resolved this! I’ll archive this for future reference 🙂
