A focused post-meeting export workflow.
Cloud Recording Exporter is a user-managed Zoom OAuth application. It acts only for the Zoom user who authorizes it. The service listens for completed recording and transcript events, retrieves authorized download information from Zoom, and transfers selected files to the storage destination configured for that user.
Google Drive, Amazon S3, and Azure Blob Storage destination setup is currently completed with Nimbus Whale Labs support. The Zoom connection and removal flows remain self-service.
Prerequisites
- A Zoom account with Cloud Recording enabled.
- A paid Zoom plan that supports the recording and transcription features you intend to export.
- Audio transcription enabled in Zoom if transcript exports are required.
- Access to the Google Drive folder, S3 bucket, or Azure container selected as the destination.
Connect in four steps.
Cloud Recording Exporter redirects you to Zoom’s authorization page. Confirm the app name and requested permissions.
Authorization applies only to recordings owned by the Zoom user completing the connection.
During private beta, contact support with the destination type. Never send access keys, client secrets, or tokens by email.
Record a short Zoom meeting to the cloud, end it, and allow Zoom to finish processing the files and transcript.
Zoom OAuth permits access to the authorized user’s Zoom recording data. Access to Google Drive, S3, or Azure is configured separately and can be revoked independently.
Event-driven, verified, and observable.
- Zoom sends a signed completion notification to the Cloud Recording Exporter webhook.
- The service verifies the HMAC signature and timestamp before accepting the event.
- The service uses the user’s encrypted OAuth token to request recording or transcript download information.
- Files are transferred to the configured destination using the selected naming and folder rules.
- The destination response is verified and the export result is recorded. Zoom recordings are never deleted merely because an export was attempted.
Webhook requests are acknowledged quickly. File transfer, retry, and destination verification happen outside the webhook response path.
Why Cloud Recording Exporter requests each scope.
All permissions are user-level. Cloud Recording Exporter does not request account-wide :admin scopes.
| Scope | Purpose | When used |
|---|---|---|
cloud_recording:read:recording | Receive recording lifecycle events for the authorized user. | When Zoom completes a recording or transcript. |
cloud_recording:read:list_user_recordings | List recordings owned by the authorized user. | For export history and reconciliation. |
cloud_recording:read:list_recording_files | Read the files associated with a meeting recording. | To identify video, audio, chat, caption, and related export files. |
cloud_recording:read:meeting_transcript | Read transcript readiness and obtain its authorized download URL. | When transcript export is enabled. |
cloud_recording:delete:meeting_recording | Move all recording files for a meeting to trash or permanently delete them. | Only after an explicit user deletion instruction. |
cloud_recording:delete:recording_file | Delete one selected recording file. | Only after an explicit user deletion instruction. |
cloud_recording:delete:meeting_transcript | Delete a selected meeting transcript. | Only after an explicit user deletion instruction. |
The service defaults recording deletion to Zoom trash. Permanent deletion requires a separate, explicit confirmation and is never part of the normal export trigger.
Two completion events, one endpoint.
| Event | Use |
|---|---|
recording.completed | Starts retrieval of completed video, audio, chat, caption, and related recording files. |
recording.transcript_completed | Signals that Zoom’s audio transcript has finished processing and can be retrieved. |
Zoom automatically sends endpoint.url_validation while the webhook URL is configured. App removal is delivered separately to the Deauthorization Notification Endpoint as app_deauthorized.
Webhook URL: https://nimbuswhale.com/api/zoom/webhooks Deauthorization URL: https://nimbuswhale.com/api/zoom/deauthorization
Transcript processing has its own clock.
A recording can finish before its audio transcript. Cloud Recording Exporter listens for the transcript completion event and also checks Zoom’s transcript endpoint. If Zoom reports NOT_READY, the service retries with backoff rather than treating the export as failed.
Transcripts are exported only when transcription is enabled for the host and Zoom has produced a supported transcript file. Closed captions and audio transcripts are distinct files and may contain different attribution information.
Export first. Verify second. Delete only on request.
- Exports do not delete Zoom data by default.
- Trash is preferred over permanent deletion.
- Permanent deletion requires explicit confirmation.
- Deletion requires an authenticated internal request.
- Transcript deletion is controlled separately.
- Destination verification should precede deletion.
You can revoke access from Zoom at any time.
- Sign in to the Zoom App Marketplace.
- Open Manage, then Added Apps.
- Select Cloud Recording Exporter.
- Choose Remove and confirm.
Zoom then sends a signed deauthorization notification. Cloud Recording Exporter deletes the associated Zoom access and refresh tokens and stops future exports. Files already delivered to your chosen storage remain under your control and must be removed there separately.
Use Zoom Marketplace removal to revoke Zoom authorization and trigger server-side credential cleanup.
Recommended reviewer test path.
- Authorize Cloud Recording Exporter with a Zoom test user that has Cloud Recording enabled.
- Confirm the OAuth callback reports a successful connection.
- Create a short meeting, record to the cloud, speak briefly, and end the meeting.
- Wait for Zoom to generate
recording.completedand, when enabled,recording.transcript_completed. - Confirm recording metadata is received without exposing OAuth tokens or download URLs in application logs.
- Retrieve the recording file list and transcript using the authorized user token.
- Remove the app in Zoom Marketplace and confirm the installation token record is deleted.
Reviewers can request private-beta destination assistance through Cloud Recording Exporter Support.
Common setup issues.
Authorization is rejected
Confirm the Zoom user owns the recordings being exported and approved every required user-level scope. Restart from the Connect Zoom link if the authorization code expired.
No recording event arrives
Confirm the meeting was recorded to the Zoom cloud, the app remains installed, and the event subscription is enabled for the app environment being tested.
The recording arrives but the transcript does not
Enable audio transcription in Zoom recording settings. Transcript processing may take longer than the recording and may depend on the user’s Zoom plan.
A download fails
Cloud recording download URLs require a current OAuth bearer token and may redirect. The service refreshes tokens and follows authorized redirects.
Need help?
Email [email protected]. Do not include tokens, client secrets, webhook secrets, recording passcodes, or cloud-provider credentials.
