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
Join the session, speak for 1+ minutes with clear audio, then end the session
session.recording_completed webhook fires to our endpoint — payload contains MP4 and TIMELINE (JSON) files only, no VTT
Check BYOS S3 bucket — VTT file exists but only contains “Starting Transcript”
Wait 30+ minutes — VTT file is never updated, session.recording_transcript_completed webhook never fires
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)
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
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.