Question
People commonly ask on the Zoom Developer Forum:
Why does the Zoom recording webhook only trigger once when a host stops and restarts recording during the same live meeting, resulting in multiple recording files? How can I get notified for all recordings or enumerate all segments when there are multiple start/stop actions in a single meeting?
Answer
This is expected behavior. The post_recording.completed event fires once per meeting/webinar instance—after the host ends the meeting and the cloud recording is processed and uploaded. It does not fire for each start/stop segment within the same meeting instance.
To handle multiple segments:
- Expect a single post_recording.completed per meeting instance (not per start/stop).
- After receiving
post_recording.completed, call GET/meetings/{meetingUUID}/recordingsto enumerate all segments/files created during that meeting. Remember to double-encode UUIDs that start with / or contain //. - If the host actually ends and restarts the meeting (a new instance), Zoom generates a new meeting UUID and you will receive a separate post_recording.completed for that instance. You can list all UUIDs tied to a meeting ID with GET
/past_meetings/{meetingId}/instances. - For earlier awareness of mid-meeting stops/starts, also subscribe to
post_recording.stoppedand reconcile when the finalpost_recording.completedarrives.
Zoom Developer Forum Examples
Some examples of this question are:
