Question
People commonly ask on the Zoom Developer Forum:
Why do I intermittently get a 401 with errorCode 300 (“Forbidden”) when downloading a transcript using the download_token right after the recording.transcript_completed webhook? I’m using payload.recording_files[0].download_url with the webhook’s download_token as a Bearer header. If I retry later with the same token, it works.
Answer
This can happen because the transcript file isn’t immediately available to download when the webhook fires. There is a slight delay between data and system servers, so attempting the download instantly can return 401/300. A short retry delay resolves it.
- On receiving recording.transcript_completed, attempt the download using recording_files[0].download_url with the download_token as a Bearer token.
- If you receive 401/300, wait ~5 seconds and retry the same request. Developers report that a 5-second delay consistently succeeds.
- If issues persist, log and share the webhook IDs and timestamps with Zoom support so they can investigate specific events.
Zoom Developer Forum Examples
Some examples of this question are:
