Create Webinar

zoom.create_webinar
ActionChat & messagingconnection required

Calls the Zoom API with the connection's credentials.

Schedule a webinar and return its join and registration links.

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

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

FieldTypeRequiredDefaultConstraintsExample
user_id
A Zoom user id or email address. Leave blank for 'me', the user the Server-to-Server app acts as.
stringNome——
topic
The webinar's title. Supports {{ }}.
stringYes———
agenda
The webinar's description.
stringNo———
start_time
Start time. Ending in Z is GMT; without a zone it is wall-clock time in 'timezone'.
stringNo—iso8601 format—
timezone
Timezone the start_time is read in, e.g. America/New_York. Only meaningful when start_time has no trailing Z.
stringConditional—only with start_time—
duration
Scheduled length in minutes (1-1440).
numberNo601–1440—
type
5 a webinar, 6 recurring with no fixed time, 9 recurring with a fixed time.
numberNo55–9—
password
Passcode attendees must enter.
stringNo—credential materialcredential
settings
Zoom webinar settings, as JSON — e.g. {"practice_session": true}.
objectNo——{"practice_session":true}

Example configuration

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

{
  "duration": 60,
  "settings": {
    "practice_session": true
  },
  "type": 5,
  "user_id": "me"
}

Output

One shape.

result

FieldTypeExample
id
The meeting number, as a string.
string—
uuid
This instance's UUID — a new one per occurrence.
string—
topic
The meeting's topic.
string—
type
1 instant, 2 scheduled, 3 recurring no fixed time, 8 recurring.
number—
start_time
Scheduled start, as Zoom returned it.
string—
duration
Scheduled length in minutes.
number—
timezone
The timezone the start_time is read in.
string—
join_url
Link participants use to join.
string—
agenda
The meeting's description.
string—
host_id
The host's Zoom user id.
string—
created_at
When the meeting was created.
string—
start_url
Host start link — it carries a token, keep it private.
string—
password
The webinar passcode, when one is set.
string—
registration_url
Public registration link.
string—
settings
The whole settings object Zoom returned.
object—
occurrences
Occurrences of a recurring webinar, when there are any.
array—
webinar
The whole webinar object Zoom returned, unmodified.
object—
{
  "agenda": "",
  "created_at": "",
  "duration": 0,
  "host_id": "",
  "id": "",
  "join_url": "",
  "occurrences": [],
  "password": "",
  "registration_url": "",
  "settings": {},
  "start_time": "",
  "start_url": "",
  "timezone": "",
  "topic": "",
  "type": 0,
  "uuid": "",
  "webinar": {}
}

Notes

  • start_time has two forms and they mean different things: ending in Z (2026-09-01T15:00:00Z) is GMT and timezone is ignored; without a zone (2026-09-01T15:00:00) it is wall-clock time in timezone, and a blank timezone means the Zoom account's timezone — not UTC. An offset like +05:30 is neither form and Zoom will not read it as you intend.
  • The host named by user_id needs a Webinar add-on licence; without one Zoom answers 1001 or 3000 rather than creating anything.
  • Webinar types are 5, 6 and 9 — a meeting's 2 and 8 are not valid here.

See Create Webinar 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.