VideoSdk Websocket Cloud Transcript Completed not firing

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)

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

Or anyone thats available… @ticorrian.heard :grinning_face:

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.

1 Like

Appreciate you @ticorrian.heard

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.

1 Like

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