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.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
user_id A Zoom user id or email address. Leave blank for 'me', the user the Server-to-Server app acts as. | string | No | me | — | — |
topic The webinar's title. Supports {{ }}. | string | Yes | — | — | — |
agenda The webinar's description. | string | No | — | — | — |
start_time Start time. Ending in Z is GMT; without a zone it is wall-clock time in 'timezone'. | string | No | — | iso8601 format | — |
timezone Timezone the start_time is read in, e.g. America/New_York. Only meaningful when start_time has no trailing Z. | string | Conditional | — | only with start_time | — |
duration Scheduled length in minutes (1-1440). | number | No | 60 | 1–1440 | — |
type 5 a webinar, 6 recurring with no fixed time, 9 recurring with a fixed time. | number | No | 5 | 5–9 | — |
password Passcode attendees must enter. | string | No | — | credential material | credential |
settings Zoom webinar settings, as JSON — e.g. {"practice_session": true}. | object | No | — | — | {"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
| Field | Type | Example |
|---|---|---|
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.