List Meeting Recordings

zoom.list_meeting_recordings
ActionChat & messagingconnection required

Calls the Zoom API with the connection's credentials.

Read every cloud-recording file one meeting produced.

Connection

Required
Yes — the node will not save without one
Auth type
OAuth 2.0
Providers
Zoom
Secret shape
{"account_id", "client_id", "client_secret"} — Server-to-Server OAuth
Config it needs
account_id
Resolved by
config.connection_id, else node.connection_id

Configuration

3 fields, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
meeting_id
The meeting number, as a string — an int64 read as a number loses digits. The spaced form Zoom's UI shows ('812 3456 7890') is accepted.
stringYes——81234567890
download_access_token
Also return a token that authorises download_url on its own, so a later step can fetch the files without the Zoom API credential. Sent to Zoom as include_fields=download_access_token.
booleanNofalse——
ttl
How long that download token stays valid, in seconds (max 604800 — one week). Only read when download_access_token is on.
numberConditional—1–604800; only with download_access_token—

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "download_access_token": false,
  "meeting_id": "81234567890"
}

Output

One shape.

result

FieldTypeExample
id
The meeting number the recording belongs to, as a string.
string—
uuid
The recorded instance's UUID.
string—
topic
The meeting's topic.
string—
start_time
When the recorded instance started.
string—
duration
Recorded length in minutes.
number—
total_size
Total bytes across every file.
number—
recording_count
How many files the instance produced.
number—
recording_files
The files themselves — see recording_files[].
array—
recording_files[].id
The recording file id.
string—
recording_files[].meeting_id
The meeting UUID this file belongs to.
string—
recording_files[].file_type
MP4, M4A, TRANSCRIPT, CHAT, CC, CSV…
string—
recording_files[].file_extension
The file's extension.
string—
recording_files[].file_size
Size in bytes.
number—
recording_files[].recording_type
shared_screen_with_speaker_view, audio_only…
string—
recording_files[].recording_start
When this file's recording started.
string—
recording_files[].recording_end
When this file's recording ended.
string—
recording_files[].download_url
Download link — needs the token to fetch it.
string—
recording_files[].play_url
Browser playback link.
string—
recording_files[].status
completed once Zoom has finished processing.
string—
count
How many files the instance produced.
number—
download_access_token
A token that authorises download_url, when include_fields asked for one.
string—
{
  "count": 0,
  "download_access_token": "",
  "duration": 0,
  "id": "",
  "recording_count": 0,
  "recording_files": [
    {
      "download_url": "",
      "file_extension": "",
      "file_size": 0,
      "file_type": "",
      "id": "",
      "meeting_id": "",
      "play_url": "",
      "recording_end": "",
      "recording_start": "",
      "recording_type": "",
      "status": ""
    }
  ],
  "start_time": "",
  "topic": "",
  "total_size": 0,
  "uuid": ""
}

Notes

  • download_url is not public: fetching it needs the same Bearer token, or the download_access_token this node can return, in an Authorization header.
  • Passing the meeting number reads the latest instance; pass an instance UUID to read a specific past occurrence.
  • Zoom answers 3301 when the meeting has no cloud recording — a local recording is never visible through the API.

See List Meeting Recordings run in a workflow.

In a technical demo we add the Zoom connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.