twentythree-skills 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/bin/add.js +103 -0
- package/package.json +46 -0
- package/skills/SKILL.md +211 -0
- package/skills/reference/action.md +233 -0
- package/skills/reference/analytics.md +337 -0
- package/skills/reference/app.md +160 -0
- package/skills/reference/audience.md +377 -0
- package/skills/reference/category.md +123 -0
- package/skills/reference/collector.md +103 -0
- package/skills/reference/comment.md +225 -0
- package/skills/reference/openupload.md +138 -0
- package/skills/reference/player.md +192 -0
- package/skills/reference/poll.md +174 -0
- package/skills/reference/presentation.md +99 -0
- package/skills/reference/protection.md +131 -0
- package/skills/reference/session.md +98 -0
- package/skills/reference/setting.md +115 -0
- package/skills/reference/site.md +94 -0
- package/skills/reference/spot.md +188 -0
- package/skills/reference/tag.md +93 -0
- package/skills/reference/thumbnail.md +224 -0
- package/skills/reference/user.md +216 -0
- package/skills/reference/video.md +631 -0
- package/skills/reference/webhook.md +151 -0
- package/skills/reference/webinar.md +1371 -0
- package/skills/workflows/upload-and-publish.md +146 -0
- package/skills/workflows/webinar-lifecycle.md +209 -0
|
@@ -0,0 +1,1371 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: webinar
|
|
3
|
+
description: Create and manage live webinars (linked to API /live/*) — configure sessions, speakers, agenda, attachments, recordings, transcriptions, mail, and series.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TwentyThree Webinar Commands
|
|
7
|
+
|
|
8
|
+
> Webinars are live broadcast events. Every example uses `--json` for machine-readable output.
|
|
9
|
+
> CLI `webinar` maps to API `live` — see Terminology Notes at the bottom of this file.
|
|
10
|
+
|
|
11
|
+
> **There is no `webinar get` command.** To retrieve details for a specific webinar,
|
|
12
|
+
> use `twentythree webinar list --search "<title>" --json` or filter by status/ID client-side.
|
|
13
|
+
> The API does not expose a single-record GET; list + filter is the canonical pattern.
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
Auth scope varies: **read** (list, metrics, clips, highlights, log, list-formats, recording status, most subtopic list commands), **write** (create, update, delete, repeat, upload-image, recording start/stop/split, speaker/series/mail/section/attachment/queued-video/transcription writes).
|
|
18
|
+
Run `twentythree auth credentials` if not already configured.
|
|
19
|
+
Verify: `twentythree auth status --json`
|
|
20
|
+
|
|
21
|
+
> For any flag not listed here, run `twentythree webinar <cmd> --agent` to get the complete flag list, types, and defaults.
|
|
22
|
+
|
|
23
|
+
## Commands
|
|
24
|
+
|
|
25
|
+
### webinar create
|
|
26
|
+
|
|
27
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value (id + admin_url)
|
|
28
|
+
|
|
29
|
+
After create, the CLI prints the new webinar ID and its admin URL. Capture `data.id` and `data.admin_url` from the `--json` response.
|
|
30
|
+
|
|
31
|
+
| Flag | Required | Default | Description |
|
|
32
|
+
|------|----------|---------|-------------|
|
|
33
|
+
| `--title` | yes | — | Title for the new webinar |
|
|
34
|
+
| `--description` | no | — | Description for the webinar |
|
|
35
|
+
| `--status` | no | — | Webinar status: `upcoming`, `live`, or `previous` |
|
|
36
|
+
| `--live-date` | no | — | Schedule date/time (ISO 8601) |
|
|
37
|
+
| `--draft` | no | false | Set as draft |
|
|
38
|
+
| `--publish` | no | false | Publish the webinar |
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Create a basic upcoming webinar
|
|
42
|
+
twentythree webinar create --title "Q2 Town Hall" --json
|
|
43
|
+
# => { "data": { "id": "<webinar-id>", "admin_url": "..." } }
|
|
44
|
+
|
|
45
|
+
# Create and schedule with a live date
|
|
46
|
+
twentythree webinar create --title "Product Launch" --live-date "2026-05-15T16:00:00Z" --description "Our biggest product release yet" --json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### webinar list
|
|
52
|
+
|
|
53
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Title, Status, Date, Private)
|
|
54
|
+
|
|
55
|
+
| Flag | Required | Default | Description |
|
|
56
|
+
|------|----------|---------|-------------|
|
|
57
|
+
| `--limit` | no | 20 | Maximum number of webinars to return |
|
|
58
|
+
| `--all` | no | false | Fetch all webinars across all pages (overrides --limit) |
|
|
59
|
+
| `--include-private` | no | false | Include private webinars in results |
|
|
60
|
+
| `--status` | no | — | Filter by status: `upcoming`, `live`, or `previous` |
|
|
61
|
+
| `--search` | no | — | Search webinars by keyword |
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# List upcoming webinars
|
|
65
|
+
twentythree webinar list --status upcoming --json
|
|
66
|
+
|
|
67
|
+
# Search for a webinar by title and include private
|
|
68
|
+
twentythree webinar list --search "Q2 Town Hall" --include-private --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
### webinar update
|
|
74
|
+
|
|
75
|
+
**Auth scope:** write **Side effects:** updates **Output:** key-value
|
|
76
|
+
|
|
77
|
+
| Flag | Required | Default | Description |
|
|
78
|
+
|------|----------|---------|-------------|
|
|
79
|
+
| `--title` | no | — | New title for the webinar |
|
|
80
|
+
| `--description` | no | — | New description for the webinar |
|
|
81
|
+
| `--status` | no | — | Webinar status: `upcoming`, `live`, or `previous` |
|
|
82
|
+
| `--live-date` | no | — | Schedule date/time (ISO 8601) |
|
|
83
|
+
| `--draft` | no | — | Set as draft |
|
|
84
|
+
| `--publish` | no | — | Publish or unpublish the webinar |
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Update title and description
|
|
88
|
+
twentythree webinar update <id> --title "New Title" --description "Updated description" --json
|
|
89
|
+
|
|
90
|
+
# Publish a draft webinar
|
|
91
|
+
twentythree webinar update <id> --publish --json
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### webinar delete
|
|
97
|
+
|
|
98
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
99
|
+
|
|
100
|
+
> **Warning: This action is destructive and cannot be undone.** The webinar and all associated data (recordings, speakers, mail, analytics) are permanently deleted from the workspace.
|
|
101
|
+
|
|
102
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Delete a webinar (destructive — cannot be undone)
|
|
106
|
+
twentythree webinar delete <id> --json
|
|
107
|
+
|
|
108
|
+
# Example with a real ID
|
|
109
|
+
twentythree webinar delete 12345 --json
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
### webinar repeat
|
|
115
|
+
|
|
116
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value (id + admin_url)
|
|
117
|
+
|
|
118
|
+
Duplicates a webinar and schedules the copy at a new date/time. After repeat, the CLI prints the new webinar ID and its admin URL.
|
|
119
|
+
|
|
120
|
+
| Flag | Required | Default | Description |
|
|
121
|
+
|------|----------|---------|-------------|
|
|
122
|
+
| `--date` | yes | — | Schedule date/time for the new webinar (ISO 8601) |
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Schedule a repeat of a webinar
|
|
126
|
+
twentythree webinar repeat <id> --date "2026-06-01T16:00:00Z" --json
|
|
127
|
+
# => { "data": { "id": "<new-webinar-id>", "admin_url": "..." } }
|
|
128
|
+
|
|
129
|
+
# Schedule a weekly repeat
|
|
130
|
+
twentythree webinar repeat <id> --date "2026-05-22T16:00:00Z" --json
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### webinar metrics
|
|
136
|
+
|
|
137
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Metric, Value)
|
|
138
|
+
|
|
139
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Get metrics for a webinar
|
|
143
|
+
twentythree webinar metrics <id> --json
|
|
144
|
+
|
|
145
|
+
# Example with a real ID
|
|
146
|
+
twentythree webinar metrics 12345 --json
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### webinar clips
|
|
152
|
+
|
|
153
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Video ID, Title, Duration, Type, Published, Views)
|
|
154
|
+
|
|
155
|
+
Clips become available after `webinar recording stop` — allow time for recording processing before calling this command.
|
|
156
|
+
|
|
157
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# List clips from a recorded webinar
|
|
161
|
+
twentythree webinar clips <id> --json
|
|
162
|
+
|
|
163
|
+
# Example with a real ID
|
|
164
|
+
twentythree webinar clips 12345 --json
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
### webinar highlights
|
|
170
|
+
|
|
171
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Type, Start, End, Absolute Start)
|
|
172
|
+
|
|
173
|
+
| Flag | Required | Default | Description |
|
|
174
|
+
|------|----------|---------|-------------|
|
|
175
|
+
| `--video-id` | no | — | Scope to a specific recording by video ID |
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# List all highlights for a webinar
|
|
179
|
+
twentythree webinar highlights <id> --json
|
|
180
|
+
|
|
181
|
+
# Scope highlights to a specific recording clip
|
|
182
|
+
twentythree webinar highlights <id> --video-id <video-id> --json
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
### webinar log
|
|
188
|
+
|
|
189
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Event, Start, End)
|
|
190
|
+
|
|
191
|
+
Returns the event log (chat/questions/registrations timeline) for a webinar.
|
|
192
|
+
|
|
193
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
# Retrieve the event log
|
|
197
|
+
twentythree webinar log <id> --json
|
|
198
|
+
|
|
199
|
+
# Example with a real ID
|
|
200
|
+
twentythree webinar log 12345 --json
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
### webinar list-formats
|
|
206
|
+
|
|
207
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Key, Name)
|
|
208
|
+
|
|
209
|
+
No additional flags.
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# List available webinar formats
|
|
213
|
+
twentythree webinar list-formats --json
|
|
214
|
+
|
|
215
|
+
# Use the Key value when creating or updating webinar format settings
|
|
216
|
+
twentythree webinar list-formats --json
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
### webinar upload-image
|
|
222
|
+
|
|
223
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
224
|
+
|
|
225
|
+
> **Chunked upload is automatic.** `twentythree webinar upload-image <id> <file>` handles chunking internally.
|
|
226
|
+
> `--chunk-size` (default 5 MB) and `--concurrency` (default 5) are tunables.
|
|
227
|
+
|
|
228
|
+
| Flag | Required | Default | Description |
|
|
229
|
+
|------|----------|---------|-------------|
|
|
230
|
+
| `--type` | no | thumbnail | Image type: `thumbnail`, `preview`, or `before_webinar` |
|
|
231
|
+
| `--chunk-size` | no | 5242880 | Chunk size in bytes (default: 5 MB) |
|
|
232
|
+
| `--concurrency` | no | 5 | Number of chunks to upload in parallel |
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Upload a thumbnail image
|
|
236
|
+
twentythree webinar upload-image <id> ./thumb.jpg --json
|
|
237
|
+
|
|
238
|
+
# Upload a before-webinar image with custom type
|
|
239
|
+
twentythree webinar upload-image <id> ./before.jpg --type before_webinar --json
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Subtopic: webinar speaker
|
|
245
|
+
|
|
246
|
+
Speakers are presenters attached to a webinar. Commands cover list, add, update, remove, invite, and speaker-specific settings.
|
|
247
|
+
|
|
248
|
+
### webinar speaker list
|
|
249
|
+
|
|
250
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Email, Role, Order)
|
|
251
|
+
|
|
252
|
+
| Flag | Required | Default | Description |
|
|
253
|
+
|------|----------|---------|-------------|
|
|
254
|
+
| `--token` | no | — | Webinar token (auto-looked up if omitted) |
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# List speakers for a webinar
|
|
258
|
+
twentythree webinar speaker list <id> --json
|
|
259
|
+
|
|
260
|
+
# Example with a real ID
|
|
261
|
+
twentythree webinar speaker list 12345 --json
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
### webinar speaker add
|
|
267
|
+
|
|
268
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value
|
|
269
|
+
|
|
270
|
+
| Flag | Required | Default | Description |
|
|
271
|
+
|------|----------|---------|-------------|
|
|
272
|
+
| `--name` | no | — | Speaker name |
|
|
273
|
+
| `--email` | no | — | Speaker email |
|
|
274
|
+
| `--title` | no | — | Speaker title or job title |
|
|
275
|
+
| `--description` | no | — | Speaker bio or description |
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
# Add a speaker with name and email
|
|
279
|
+
twentythree webinar speaker add <id> --name "Jane Doe" --email jane@example.com --json
|
|
280
|
+
|
|
281
|
+
# Add a speaker with full details
|
|
282
|
+
twentythree webinar speaker add <id> --name "John Smith" --email john@example.com --title "CTO" --description "Engineering lead" --json
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
### webinar speaker add-from-speaker
|
|
288
|
+
|
|
289
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
290
|
+
|
|
291
|
+
Adds a speaker from the workspace speaker library.
|
|
292
|
+
|
|
293
|
+
| Flag | Required | Default | Description |
|
|
294
|
+
|------|----------|---------|-------------|
|
|
295
|
+
| `--speaker-id` | no | — | Library speaker ID to add |
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# Add a speaker from the workspace library by ID
|
|
299
|
+
twentythree webinar speaker add-from-speaker <id> --speaker-id 99 --json
|
|
300
|
+
|
|
301
|
+
# First list library speakers to find the ID
|
|
302
|
+
twentythree webinar speaker library --json
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
### webinar speaker add-from-user
|
|
308
|
+
|
|
309
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
310
|
+
|
|
311
|
+
Adds a workspace user as a speaker on a webinar.
|
|
312
|
+
|
|
313
|
+
| Flag | Required | Default | Description |
|
|
314
|
+
|------|----------|---------|-------------|
|
|
315
|
+
| `--user-id` | no | — | User ID to add as speaker |
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
# Add a workspace user as a speaker
|
|
319
|
+
twentythree webinar speaker add-from-user <id> --user-id 42 --json
|
|
320
|
+
|
|
321
|
+
# First list workspace users to find the user ID
|
|
322
|
+
twentythree webinar speaker add-from-user <id> --user-id <user-id> --json
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
### webinar speaker update
|
|
328
|
+
|
|
329
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
330
|
+
|
|
331
|
+
| Flag | Required | Default | Description |
|
|
332
|
+
|------|----------|---------|-------------|
|
|
333
|
+
| `--name` | no | — | Speaker name |
|
|
334
|
+
| `--email` | no | — | Speaker email |
|
|
335
|
+
| `--title` | no | — | Speaker title or job title |
|
|
336
|
+
| `--description` | no | — | Speaker bio or description |
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# Update a speaker's title and email
|
|
340
|
+
twentythree webinar speaker update <id> <speaker-id> --title "CEO" --email ceo@example.com --json
|
|
341
|
+
|
|
342
|
+
# Update speaker bio
|
|
343
|
+
twentythree webinar speaker update <id> <speaker-id> --description "Updated bio" --json
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
### webinar speaker remove
|
|
349
|
+
|
|
350
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
351
|
+
|
|
352
|
+
No additional flags — pass webinar ID and speaker ID as positional arguments.
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
# Remove a speaker from a webinar
|
|
356
|
+
twentythree webinar speaker remove <id> <speaker-id> --json
|
|
357
|
+
|
|
358
|
+
# Example with real IDs
|
|
359
|
+
twentythree webinar speaker remove 12345 9900 --json
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
### webinar speaker set-avatar
|
|
365
|
+
|
|
366
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
367
|
+
|
|
368
|
+
Uploads an avatar image for a speaker. Chunked upload is automatic.
|
|
369
|
+
|
|
370
|
+
| Flag | Required | Default | Description |
|
|
371
|
+
|------|----------|---------|-------------|
|
|
372
|
+
| `--chunk-size` | no | 5242880 | Chunk size in bytes (default: 5 MB) |
|
|
373
|
+
| `--concurrency` | no | 5 | Number of chunks to upload in parallel |
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
# Upload an avatar image for a speaker
|
|
377
|
+
twentythree webinar speaker set-avatar <id> <speaker-id> ./avatar.jpg --json
|
|
378
|
+
|
|
379
|
+
# Upload with custom chunk size
|
|
380
|
+
twentythree webinar speaker set-avatar <id> <speaker-id> ./avatar.png --chunk-size 524288 --json
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
### webinar speaker remove-avatar
|
|
386
|
+
|
|
387
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
388
|
+
|
|
389
|
+
No additional flags — pass webinar ID and speaker ID as positional arguments.
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
# Remove the avatar image from a speaker
|
|
393
|
+
twentythree webinar speaker remove-avatar <id> <speaker-id> --json
|
|
394
|
+
|
|
395
|
+
# Example with real IDs
|
|
396
|
+
twentythree webinar speaker remove-avatar 12345 9900 --json
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
### webinar speaker set-order
|
|
402
|
+
|
|
403
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
404
|
+
|
|
405
|
+
| Flag | Required | Default | Description |
|
|
406
|
+
|------|----------|---------|-------------|
|
|
407
|
+
| `--speaker-id` | no | — | Speaker ID |
|
|
408
|
+
| `--order` | no | — | New display order (1-based) |
|
|
409
|
+
|
|
410
|
+
```bash
|
|
411
|
+
# Set a speaker to appear first
|
|
412
|
+
twentythree webinar speaker set-order <id> --speaker-id <speaker-id> --order 1 --json
|
|
413
|
+
|
|
414
|
+
# Set a speaker to appear third
|
|
415
|
+
twentythree webinar speaker set-order <id> --speaker-id <speaker-id> --order 3 --json
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
### webinar speaker send-invitation
|
|
421
|
+
|
|
422
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
423
|
+
|
|
424
|
+
No additional flags — pass webinar ID and speaker ID as positional arguments.
|
|
425
|
+
|
|
426
|
+
```bash
|
|
427
|
+
# Send an invitation to a speaker
|
|
428
|
+
twentythree webinar speaker send-invitation <id> <speaker-id> --json
|
|
429
|
+
|
|
430
|
+
# Example with real IDs
|
|
431
|
+
twentythree webinar speaker send-invitation 12345 9900 --json
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
### webinar speaker library
|
|
437
|
+
|
|
438
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Email)
|
|
439
|
+
|
|
440
|
+
No additional flags.
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
# List speakers in the workspace library
|
|
444
|
+
twentythree webinar speaker library --json
|
|
445
|
+
|
|
446
|
+
# Use to find speaker IDs for add-from-speaker
|
|
447
|
+
twentythree webinar speaker library --json
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
### webinar speaker connection-types
|
|
453
|
+
|
|
454
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Type, Label, Description)
|
|
455
|
+
|
|
456
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
457
|
+
|
|
458
|
+
```bash
|
|
459
|
+
# List available speaker connection types
|
|
460
|
+
twentythree webinar speaker connection-types <id> --json
|
|
461
|
+
|
|
462
|
+
# Example with a real ID
|
|
463
|
+
twentythree webinar speaker connection-types 12345 --json
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
### webinar speaker request-guest
|
|
469
|
+
|
|
470
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
471
|
+
|
|
472
|
+
No additional flags — pass webinar ID and speaker ID as positional arguments.
|
|
473
|
+
|
|
474
|
+
```bash
|
|
475
|
+
# Request a speaker as a guest
|
|
476
|
+
twentythree webinar speaker request-guest <id> <speaker-id> --json
|
|
477
|
+
|
|
478
|
+
# Example with real IDs
|
|
479
|
+
twentythree webinar speaker request-guest 12345 9900 --json
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
---
|
|
483
|
+
|
|
484
|
+
### webinar speaker cancel-guest-request
|
|
485
|
+
|
|
486
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
487
|
+
|
|
488
|
+
No additional flags — pass webinar ID and speaker ID as positional arguments.
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
# Cancel a guest request for a speaker
|
|
492
|
+
twentythree webinar speaker cancel-guest-request <id> <speaker-id> --json
|
|
493
|
+
|
|
494
|
+
# Example with real IDs
|
|
495
|
+
twentythree webinar speaker cancel-guest-request 12345 9900 --json
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
## Subtopic: webinar series
|
|
501
|
+
|
|
502
|
+
A series groups multiple webinars together (e.g. a recurring show). Commands cover list, create, update, delete, and attaching webinars to a series.
|
|
503
|
+
|
|
504
|
+
### webinar series list
|
|
505
|
+
|
|
506
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Status, Created)
|
|
507
|
+
|
|
508
|
+
No additional flags.
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
# List all webinar series
|
|
512
|
+
twentythree webinar series list --json
|
|
513
|
+
|
|
514
|
+
# Use the ID to reference a series in other commands
|
|
515
|
+
twentythree webinar series list --json
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
---
|
|
519
|
+
|
|
520
|
+
### webinar series create
|
|
521
|
+
|
|
522
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value
|
|
523
|
+
|
|
524
|
+
| Flag | Required | Default | Description |
|
|
525
|
+
|------|----------|---------|-------------|
|
|
526
|
+
| `--name` | no | — | Series name |
|
|
527
|
+
| `--description` | no | — | Series description |
|
|
528
|
+
|
|
529
|
+
```bash
|
|
530
|
+
# Create a new webinar series
|
|
531
|
+
twentythree webinar series create --name "Weekly Product Updates" --json
|
|
532
|
+
|
|
533
|
+
# Create with description
|
|
534
|
+
twentythree webinar series create --name "Q2 Webinars" --description "All Q2 sessions" --json
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
### webinar series update
|
|
540
|
+
|
|
541
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
542
|
+
|
|
543
|
+
| Flag | Required | Default | Description |
|
|
544
|
+
|------|----------|---------|-------------|
|
|
545
|
+
| `--name` | no | — | Series name |
|
|
546
|
+
| `--description` | no | — | Series description |
|
|
547
|
+
|
|
548
|
+
```bash
|
|
549
|
+
# Update the series name
|
|
550
|
+
twentythree webinar series update <series-id> --name "Q2 All-Hands Series" --json
|
|
551
|
+
|
|
552
|
+
# Update the series description
|
|
553
|
+
twentythree webinar series update <series-id> --description "Quarterly alignment sessions" --json
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
### webinar series delete
|
|
559
|
+
|
|
560
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
561
|
+
|
|
562
|
+
> **Warning: This action is destructive and cannot be undone.**
|
|
563
|
+
|
|
564
|
+
| Flag | Required | Default | Description |
|
|
565
|
+
|------|----------|---------|-------------|
|
|
566
|
+
| `--delete-associations` | no | false | Also delete associated webinars |
|
|
567
|
+
|
|
568
|
+
```bash
|
|
569
|
+
# Delete a series (keep associated webinars)
|
|
570
|
+
twentythree webinar series delete <series-id> --json
|
|
571
|
+
|
|
572
|
+
# Delete a series and all associated webinars
|
|
573
|
+
twentythree webinar series delete <series-id> --delete-associations --json
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
---
|
|
577
|
+
|
|
578
|
+
### webinar series cancel
|
|
579
|
+
|
|
580
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
581
|
+
|
|
582
|
+
| Flag | Required | Default | Description |
|
|
583
|
+
|------|----------|---------|-------------|
|
|
584
|
+
| `--cancel-associations` | no | false | Also cancel associated webinars |
|
|
585
|
+
|
|
586
|
+
```bash
|
|
587
|
+
# Cancel a series
|
|
588
|
+
twentythree webinar series cancel <series-id> --json
|
|
589
|
+
|
|
590
|
+
# Cancel a series and all associated webinars
|
|
591
|
+
twentythree webinar series cancel <series-id> --cancel-associations --json
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
---
|
|
595
|
+
|
|
596
|
+
### webinar series metrics
|
|
597
|
+
|
|
598
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Metric, Value)
|
|
599
|
+
|
|
600
|
+
No additional flags — pass the series ID as a positional argument.
|
|
601
|
+
|
|
602
|
+
```bash
|
|
603
|
+
# Get metrics for a webinar series
|
|
604
|
+
twentythree webinar series metrics <series-id> --json
|
|
605
|
+
|
|
606
|
+
# Example with a real series ID
|
|
607
|
+
twentythree webinar series metrics 42 --json
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
---
|
|
611
|
+
|
|
612
|
+
### webinar series mapped-objects
|
|
613
|
+
|
|
614
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Type, Title)
|
|
615
|
+
|
|
616
|
+
Lists all webinars (and other objects) mapped to a series.
|
|
617
|
+
|
|
618
|
+
No additional flags — pass the series ID as a positional argument.
|
|
619
|
+
|
|
620
|
+
```bash
|
|
621
|
+
# List webinars in a series
|
|
622
|
+
twentythree webinar series mapped-objects <series-id> --json
|
|
623
|
+
|
|
624
|
+
# Example with a real series ID
|
|
625
|
+
twentythree webinar series mapped-objects 42 --json
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
---
|
|
629
|
+
|
|
630
|
+
### webinar series recurrences
|
|
631
|
+
|
|
632
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Start Time, Status, Skipped)
|
|
633
|
+
|
|
634
|
+
No additional flags — pass the series ID as a positional argument.
|
|
635
|
+
|
|
636
|
+
```bash
|
|
637
|
+
# List scheduled recurrences for a series
|
|
638
|
+
twentythree webinar series recurrences <series-id> --json
|
|
639
|
+
|
|
640
|
+
# Example with a real series ID
|
|
641
|
+
twentythree webinar series recurrences 42 --json
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
---
|
|
645
|
+
|
|
646
|
+
### webinar series apply-recurrence
|
|
647
|
+
|
|
648
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
649
|
+
|
|
650
|
+
| Flag | Required | Default | Description |
|
|
651
|
+
|------|----------|---------|-------------|
|
|
652
|
+
| `--recurrence-id` | no | — | Recurrence ID |
|
|
653
|
+
|
|
654
|
+
```bash
|
|
655
|
+
# Apply a recurrence to a series
|
|
656
|
+
twentythree webinar series apply-recurrence <series-id> --recurrence-id 7 --json
|
|
657
|
+
|
|
658
|
+
# Example with real IDs
|
|
659
|
+
twentythree webinar series apply-recurrence 42 --recurrence-id 7 --json
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
---
|
|
663
|
+
|
|
664
|
+
### webinar series skip-recurrence
|
|
665
|
+
|
|
666
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
667
|
+
|
|
668
|
+
| Flag | Required | Default | Description |
|
|
669
|
+
|------|----------|---------|-------------|
|
|
670
|
+
| `--recurrence-id` | no | — | Recurrence ID |
|
|
671
|
+
| `--skipped` | no | — | Set skipped (`--skipped`) or unskipped (`--no-skipped`) |
|
|
672
|
+
|
|
673
|
+
```bash
|
|
674
|
+
# Skip a recurrence
|
|
675
|
+
twentythree webinar series skip-recurrence <series-id> --recurrence-id 7 --skipped --json
|
|
676
|
+
|
|
677
|
+
# Unskip a recurrence
|
|
678
|
+
twentythree webinar series skip-recurrence <series-id> --recurrence-id 7 --no-skipped --json
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
---
|
|
682
|
+
|
|
683
|
+
### webinar series set-ondemand
|
|
684
|
+
|
|
685
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
686
|
+
|
|
687
|
+
| Flag | Required | Default | Description |
|
|
688
|
+
|------|----------|---------|-------------|
|
|
689
|
+
| `--update-associations` | no | false | Also update associated webinars |
|
|
690
|
+
|
|
691
|
+
```bash
|
|
692
|
+
# Set a series to on-demand
|
|
693
|
+
twentythree webinar series set-ondemand <series-id> --json
|
|
694
|
+
|
|
695
|
+
# Set a series and associated webinars to on-demand
|
|
696
|
+
twentythree webinar series set-ondemand <series-id> --update-associations --json
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
---
|
|
700
|
+
|
|
701
|
+
### webinar series upload-thumbnail
|
|
702
|
+
|
|
703
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
704
|
+
|
|
705
|
+
Chunked upload is automatic.
|
|
706
|
+
|
|
707
|
+
| Flag | Required | Default | Description |
|
|
708
|
+
|------|----------|---------|-------------|
|
|
709
|
+
| `--chunk-size` | no | 5242880 | Chunk size in bytes (default: 5 MB) |
|
|
710
|
+
| `--concurrency` | no | 5 | Number of chunks to upload in parallel |
|
|
711
|
+
|
|
712
|
+
```bash
|
|
713
|
+
# Upload a thumbnail for a series
|
|
714
|
+
twentythree webinar series upload-thumbnail <series-id> ./thumb.jpg --json
|
|
715
|
+
|
|
716
|
+
# Upload with custom chunk size
|
|
717
|
+
twentythree webinar series upload-thumbnail <series-id> ./thumbnail.png --chunk-size 10485760 --json
|
|
718
|
+
```
|
|
719
|
+
|
|
720
|
+
---
|
|
721
|
+
|
|
722
|
+
## Subtopic: webinar mail
|
|
723
|
+
|
|
724
|
+
Mail templates and scheduled emails associated with a webinar (invitations, reminders, post-event follow-ups).
|
|
725
|
+
|
|
726
|
+
### webinar mail list
|
|
727
|
+
|
|
728
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Subject, Status, Send Date)
|
|
729
|
+
|
|
730
|
+
| Flag | Required | Default | Description |
|
|
731
|
+
|------|----------|---------|-------------|
|
|
732
|
+
| `--series-id` | no | — | Series ID — list mails for a series instead of a webinar |
|
|
733
|
+
|
|
734
|
+
```bash
|
|
735
|
+
# List emails for a webinar
|
|
736
|
+
twentythree webinar mail list <id> --json
|
|
737
|
+
|
|
738
|
+
# List emails for a series
|
|
739
|
+
twentythree webinar mail list --series-id <series-id> --json
|
|
740
|
+
```
|
|
741
|
+
|
|
742
|
+
---
|
|
743
|
+
|
|
744
|
+
### webinar mail add
|
|
745
|
+
|
|
746
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value
|
|
747
|
+
|
|
748
|
+
| Flag | Required | Default | Description |
|
|
749
|
+
|------|----------|---------|-------------|
|
|
750
|
+
| `--series-id` | no | — | Series ID — add mail to a series instead of a webinar |
|
|
751
|
+
| `--subject` | no | — | Email subject |
|
|
752
|
+
| `--message` | no | — | Email message body |
|
|
753
|
+
|
|
754
|
+
```bash
|
|
755
|
+
# Add a reminder email to a webinar
|
|
756
|
+
twentythree webinar mail add <id> --subject "Join us tomorrow!" --message "The webinar starts at 4 PM UTC." --json
|
|
757
|
+
|
|
758
|
+
# Add an email to a series
|
|
759
|
+
twentythree webinar mail add --series-id <series-id> --subject "Series reminder" --json
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
---
|
|
763
|
+
|
|
764
|
+
### webinar mail update
|
|
765
|
+
|
|
766
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
767
|
+
|
|
768
|
+
| Flag | Required | Default | Description |
|
|
769
|
+
|------|----------|---------|-------------|
|
|
770
|
+
| `--webinar-id` | no | — | Webinar ID (mutually exclusive with --series-id) |
|
|
771
|
+
| `--series-id` | no | — | Series ID (mutually exclusive with --webinar-id) |
|
|
772
|
+
| `--subject` | no | — | Email subject |
|
|
773
|
+
| `--message` | no | — | Email message body |
|
|
774
|
+
|
|
775
|
+
```bash
|
|
776
|
+
# Update the subject of a webinar email
|
|
777
|
+
twentythree webinar mail update <mail-id> --webinar-id <id> --subject "Updated Subject" --json
|
|
778
|
+
|
|
779
|
+
# Update an email on a series
|
|
780
|
+
twentythree webinar mail update <mail-id> --series-id <series-id> --message "New content" --json
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
---
|
|
784
|
+
|
|
785
|
+
### webinar mail remove
|
|
786
|
+
|
|
787
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
788
|
+
|
|
789
|
+
| Flag | Required | Default | Description |
|
|
790
|
+
|------|----------|---------|-------------|
|
|
791
|
+
| `--webinar-id` | no | — | Webinar ID (mutually exclusive with --series-id) |
|
|
792
|
+
| `--series-id` | no | — | Series ID (mutually exclusive with --webinar-id) |
|
|
793
|
+
|
|
794
|
+
```bash
|
|
795
|
+
# Remove an email from a webinar
|
|
796
|
+
twentythree webinar mail remove <mail-id> --webinar-id <id> --json
|
|
797
|
+
|
|
798
|
+
# Remove an email from a series
|
|
799
|
+
twentythree webinar mail remove <mail-id> --series-id <series-id> --json
|
|
800
|
+
```
|
|
801
|
+
|
|
802
|
+
---
|
|
803
|
+
|
|
804
|
+
### webinar mail send
|
|
805
|
+
|
|
806
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
807
|
+
|
|
808
|
+
| Flag | Required | Default | Description |
|
|
809
|
+
|------|----------|---------|-------------|
|
|
810
|
+
| `--webinar-id` | no | — | Webinar ID (mutually exclusive with --series-id) |
|
|
811
|
+
| `--series-id` | no | — | Series ID (mutually exclusive with --webinar-id) |
|
|
812
|
+
|
|
813
|
+
```bash
|
|
814
|
+
# Send a webinar email immediately
|
|
815
|
+
twentythree webinar mail send <mail-id> --webinar-id <id> --json
|
|
816
|
+
|
|
817
|
+
# Send a series email
|
|
818
|
+
twentythree webinar mail send <mail-id> --series-id <series-id> --json
|
|
819
|
+
```
|
|
820
|
+
|
|
821
|
+
---
|
|
822
|
+
|
|
823
|
+
### webinar mail test
|
|
824
|
+
|
|
825
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
826
|
+
|
|
827
|
+
| Flag | Required | Default | Description |
|
|
828
|
+
|------|----------|---------|-------------|
|
|
829
|
+
| `--webinar-id` | no | — | Webinar ID (mutually exclusive with --series-id) |
|
|
830
|
+
| `--series-id` | no | — | Series ID (mutually exclusive with --webinar-id) |
|
|
831
|
+
| `--email` | no | — | Recipient email for the test |
|
|
832
|
+
|
|
833
|
+
```bash
|
|
834
|
+
# Send a test email to yourself
|
|
835
|
+
twentythree webinar mail test <mail-id> --webinar-id <id> --email me@example.com --json
|
|
836
|
+
|
|
837
|
+
# Test a series email
|
|
838
|
+
twentythree webinar mail test <mail-id> --series-id <series-id> --email me@example.com --json
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
---
|
|
842
|
+
|
|
843
|
+
### webinar mail preview
|
|
844
|
+
|
|
845
|
+
**Auth scope:** read **Side effects:** none **Output:** none (raw HTML)
|
|
846
|
+
|
|
847
|
+
| Flag | Required | Default | Description |
|
|
848
|
+
|------|----------|---------|-------------|
|
|
849
|
+
| `--webinar-id` | no | — | Webinar ID (mutually exclusive with --series-id) |
|
|
850
|
+
| `--series-id` | no | — | Series ID (mutually exclusive with --webinar-id) |
|
|
851
|
+
|
|
852
|
+
```bash
|
|
853
|
+
# Preview a webinar email as raw HTML
|
|
854
|
+
twentythree webinar mail preview <mail-id> --webinar-id <id> --json
|
|
855
|
+
|
|
856
|
+
# Redirect HTML preview to a file
|
|
857
|
+
twentythree webinar mail preview <mail-id> --webinar-id <id> > preview.html
|
|
858
|
+
```
|
|
859
|
+
|
|
860
|
+
---
|
|
861
|
+
|
|
862
|
+
## Subtopic: webinar recording
|
|
863
|
+
|
|
864
|
+
Control server-side recording for a live webinar. Recording must be started while the webinar is live, stopped before clips become available, and can be split mid-session to create a chaptered archive.
|
|
865
|
+
|
|
866
|
+
### webinar recording start
|
|
867
|
+
|
|
868
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
869
|
+
|
|
870
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
871
|
+
|
|
872
|
+
```bash
|
|
873
|
+
# Start recording a live webinar
|
|
874
|
+
twentythree webinar recording start <id> --json
|
|
875
|
+
|
|
876
|
+
# Example with a real ID
|
|
877
|
+
twentythree webinar recording start 12345 --json
|
|
878
|
+
```
|
|
879
|
+
|
|
880
|
+
---
|
|
881
|
+
|
|
882
|
+
### webinar recording stop
|
|
883
|
+
|
|
884
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
885
|
+
|
|
886
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
887
|
+
|
|
888
|
+
```bash
|
|
889
|
+
# Stop recording a webinar
|
|
890
|
+
twentythree webinar recording stop <id> --json
|
|
891
|
+
|
|
892
|
+
# Example with a real ID
|
|
893
|
+
twentythree webinar recording stop 12345 --json
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
---
|
|
897
|
+
|
|
898
|
+
### webinar recording status
|
|
899
|
+
|
|
900
|
+
**Auth scope:** read **Side effects:** none **Output:** key-value
|
|
901
|
+
|
|
902
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
903
|
+
|
|
904
|
+
```bash
|
|
905
|
+
# Check recording status
|
|
906
|
+
twentythree webinar recording status <id> --json
|
|
907
|
+
|
|
908
|
+
# Poll status after stopping to know when clips are ready
|
|
909
|
+
twentythree webinar recording status 12345 --json
|
|
910
|
+
```
|
|
911
|
+
|
|
912
|
+
---
|
|
913
|
+
|
|
914
|
+
### webinar recording split
|
|
915
|
+
|
|
916
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
917
|
+
|
|
918
|
+
Splits the current recording into a new segment, creating a chapter boundary in the archive.
|
|
919
|
+
|
|
920
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
921
|
+
|
|
922
|
+
```bash
|
|
923
|
+
# Split the current recording into a new segment
|
|
924
|
+
twentythree webinar recording split <id> --json
|
|
925
|
+
|
|
926
|
+
# Example with a real ID
|
|
927
|
+
twentythree webinar recording split 12345 --json
|
|
928
|
+
```
|
|
929
|
+
|
|
930
|
+
---
|
|
931
|
+
|
|
932
|
+
## Subtopic: webinar room
|
|
933
|
+
|
|
934
|
+
Room commands control the live broadcast room (stream key, room URL, connection info). `webinar room connect` is the command agents use to retrieve the stream key and room URL before going live.
|
|
935
|
+
|
|
936
|
+
### webinar room connect
|
|
937
|
+
|
|
938
|
+
**Auth scope:** read **Side effects:** updates **Output:** key-value
|
|
939
|
+
|
|
940
|
+
Returns stream key and room URL. These credentials enable the broadcaster to start streaming into the webinar.
|
|
941
|
+
|
|
942
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
943
|
+
|
|
944
|
+
```bash
|
|
945
|
+
# Get room connection info (stream key + room URL)
|
|
946
|
+
twentythree webinar room connect <id> --json
|
|
947
|
+
|
|
948
|
+
# Example with a real ID
|
|
949
|
+
twentythree webinar room connect 12345 --json
|
|
950
|
+
```
|
|
951
|
+
|
|
952
|
+
---
|
|
953
|
+
|
|
954
|
+
### webinar room info
|
|
955
|
+
|
|
956
|
+
**Auth scope:** read **Side effects:** none **Output:** key-value
|
|
957
|
+
|
|
958
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
959
|
+
|
|
960
|
+
```bash
|
|
961
|
+
# Get room information for a webinar
|
|
962
|
+
twentythree webinar room info <id> --json
|
|
963
|
+
|
|
964
|
+
# Example with a real ID
|
|
965
|
+
twentythree webinar room info 12345 --json
|
|
966
|
+
```
|
|
967
|
+
|
|
968
|
+
---
|
|
969
|
+
|
|
970
|
+
### webinar room send-recording
|
|
971
|
+
|
|
972
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
973
|
+
|
|
974
|
+
No additional flags — pass the webinar ID as a positional argument.
|
|
975
|
+
|
|
976
|
+
```bash
|
|
977
|
+
# Send a recording from the webinar room
|
|
978
|
+
twentythree webinar room send-recording <id> --json
|
|
979
|
+
|
|
980
|
+
# Example with a real ID
|
|
981
|
+
twentythree webinar room send-recording 12345 --json
|
|
982
|
+
```
|
|
983
|
+
|
|
984
|
+
---
|
|
985
|
+
|
|
986
|
+
### webinar room themes
|
|
987
|
+
|
|
988
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Description)
|
|
989
|
+
|
|
990
|
+
No additional flags.
|
|
991
|
+
|
|
992
|
+
```bash
|
|
993
|
+
# List available room themes
|
|
994
|
+
twentythree webinar room themes --json
|
|
995
|
+
|
|
996
|
+
# Use the ID value when configuring room appearance
|
|
997
|
+
twentythree webinar room themes --json
|
|
998
|
+
```
|
|
999
|
+
|
|
1000
|
+
---
|
|
1001
|
+
|
|
1002
|
+
## Subtopic: webinar section
|
|
1003
|
+
|
|
1004
|
+
Sections are agenda items (time-stamped chapter markers) displayed to viewers. Unlike `video section`, webinar sections can be scheduled relative to the webinar start time.
|
|
1005
|
+
|
|
1006
|
+
### webinar section list
|
|
1007
|
+
|
|
1008
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Title, Start Time, Description)
|
|
1009
|
+
|
|
1010
|
+
| Flag | Required | Default | Description |
|
|
1011
|
+
|------|----------|---------|-------------|
|
|
1012
|
+
| `--token` | no | — | Webinar token (auto-looked up if omitted) |
|
|
1013
|
+
|
|
1014
|
+
```bash
|
|
1015
|
+
# List agenda sections for a webinar
|
|
1016
|
+
twentythree webinar section list <id> --json
|
|
1017
|
+
|
|
1018
|
+
# Example with a real ID
|
|
1019
|
+
twentythree webinar section list 12345 --json
|
|
1020
|
+
```
|
|
1021
|
+
|
|
1022
|
+
---
|
|
1023
|
+
|
|
1024
|
+
### webinar section add
|
|
1025
|
+
|
|
1026
|
+
**Auth scope:** write **Side effects:** creates **Output:** key-value
|
|
1027
|
+
|
|
1028
|
+
| Flag | Required | Default | Description |
|
|
1029
|
+
|------|----------|---------|-------------|
|
|
1030
|
+
| `--title` | no | — | Section title |
|
|
1031
|
+
| `--description` | no | — | Section description |
|
|
1032
|
+
| `--start-time` | no | — | Start time in seconds |
|
|
1033
|
+
|
|
1034
|
+
```bash
|
|
1035
|
+
# Add an intro section at time 0
|
|
1036
|
+
twentythree webinar section add <id> --title "Introduction" --start-time 0 --json
|
|
1037
|
+
|
|
1038
|
+
# Add a Q&A section at 60 minutes
|
|
1039
|
+
twentythree webinar section add <id> --title "Q&A" --start-time 3600 --description "Audience questions" --json
|
|
1040
|
+
```
|
|
1041
|
+
|
|
1042
|
+
---
|
|
1043
|
+
|
|
1044
|
+
### webinar section update
|
|
1045
|
+
|
|
1046
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
1047
|
+
|
|
1048
|
+
| Flag | Required | Default | Description |
|
|
1049
|
+
|------|----------|---------|-------------|
|
|
1050
|
+
| `--title` | no | — | New section title |
|
|
1051
|
+
| `--description` | no | — | New section description |
|
|
1052
|
+
| `--start-time` | no | — | New start time in seconds |
|
|
1053
|
+
|
|
1054
|
+
```bash
|
|
1055
|
+
# Update a section title
|
|
1056
|
+
twentythree webinar section update <id> <section-id> --title "Updated Title" --json
|
|
1057
|
+
|
|
1058
|
+
# Update start time and description
|
|
1059
|
+
twentythree webinar section update <id> <section-id> --start-time 1800 --description "Updated description" --json
|
|
1060
|
+
```
|
|
1061
|
+
|
|
1062
|
+
---
|
|
1063
|
+
|
|
1064
|
+
### webinar section remove
|
|
1065
|
+
|
|
1066
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
1067
|
+
|
|
1068
|
+
No additional flags — pass webinar ID and section ID as positional arguments.
|
|
1069
|
+
|
|
1070
|
+
```bash
|
|
1071
|
+
# Remove a section from a webinar
|
|
1072
|
+
twentythree webinar section remove <id> <section-id> --json
|
|
1073
|
+
|
|
1074
|
+
# Example with real IDs
|
|
1075
|
+
twentythree webinar section remove 12345 99 --json
|
|
1076
|
+
```
|
|
1077
|
+
|
|
1078
|
+
---
|
|
1079
|
+
|
|
1080
|
+
## Subtopic: webinar attachment
|
|
1081
|
+
|
|
1082
|
+
Attachments are files (PDFs, slides, links) made available to webinar viewers.
|
|
1083
|
+
|
|
1084
|
+
### webinar attachment list
|
|
1085
|
+
|
|
1086
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Filename, Size, Hidden)
|
|
1087
|
+
|
|
1088
|
+
| Flag | Required | Default | Description |
|
|
1089
|
+
|------|----------|---------|-------------|
|
|
1090
|
+
| `--token` | no | — | Webinar token (auto-looked up if omitted) |
|
|
1091
|
+
| `--include-hidden` | no | false | Include hidden attachments |
|
|
1092
|
+
|
|
1093
|
+
```bash
|
|
1094
|
+
# List attachments for a webinar
|
|
1095
|
+
twentythree webinar attachment list <id> --json
|
|
1096
|
+
|
|
1097
|
+
# Include hidden attachments
|
|
1098
|
+
twentythree webinar attachment list <id> --include-hidden --json
|
|
1099
|
+
```
|
|
1100
|
+
|
|
1101
|
+
---
|
|
1102
|
+
|
|
1103
|
+
### webinar attachment upload
|
|
1104
|
+
|
|
1105
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
1106
|
+
|
|
1107
|
+
Chunked upload is automatic.
|
|
1108
|
+
|
|
1109
|
+
| Flag | Required | Default | Description |
|
|
1110
|
+
|------|----------|---------|-------------|
|
|
1111
|
+
| `--chunk-size` | no | 5242880 | Chunk size in bytes (default: 5 MB) |
|
|
1112
|
+
| `--concurrency` | no | 5 | Number of chunks to upload in parallel |
|
|
1113
|
+
| `--hidden` | no | false | Upload attachment as hidden |
|
|
1114
|
+
|
|
1115
|
+
```bash
|
|
1116
|
+
# Upload slides as a downloadable attachment
|
|
1117
|
+
twentythree webinar attachment upload <id> ./slides.pdf --json
|
|
1118
|
+
|
|
1119
|
+
# Upload a handout as hidden (not visible to viewers until unhidden)
|
|
1120
|
+
twentythree webinar attachment upload <id> ./handout.pdf --hidden --json
|
|
1121
|
+
```
|
|
1122
|
+
|
|
1123
|
+
---
|
|
1124
|
+
|
|
1125
|
+
### webinar attachment set-hidden
|
|
1126
|
+
|
|
1127
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
1128
|
+
|
|
1129
|
+
| Flag | Required | Default | Description |
|
|
1130
|
+
|------|----------|---------|-------------|
|
|
1131
|
+
| `--filename` | no | — | Filename of the attachment |
|
|
1132
|
+
| `--hidden` | yes | — | Set hidden (`--hidden`) or visible (`--no-hidden`) |
|
|
1133
|
+
|
|
1134
|
+
```bash
|
|
1135
|
+
# Hide an attachment from viewers
|
|
1136
|
+
twentythree webinar attachment set-hidden <id> --filename slides.pdf --hidden --json
|
|
1137
|
+
|
|
1138
|
+
# Make a hidden attachment visible
|
|
1139
|
+
twentythree webinar attachment set-hidden <id> --filename slides.pdf --no-hidden --json
|
|
1140
|
+
```
|
|
1141
|
+
|
|
1142
|
+
---
|
|
1143
|
+
|
|
1144
|
+
### webinar attachment delete
|
|
1145
|
+
|
|
1146
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
1147
|
+
|
|
1148
|
+
| Flag | Required | Default | Description |
|
|
1149
|
+
|------|----------|---------|-------------|
|
|
1150
|
+
| `--filename` | no | — | Filename of the attachment to delete |
|
|
1151
|
+
|
|
1152
|
+
```bash
|
|
1153
|
+
# Delete an attachment from a webinar
|
|
1154
|
+
twentythree webinar attachment delete <id> --filename slides.pdf --json
|
|
1155
|
+
|
|
1156
|
+
# Delete another attachment
|
|
1157
|
+
twentythree webinar attachment delete <id> --filename handout.pdf --json
|
|
1158
|
+
```
|
|
1159
|
+
|
|
1160
|
+
---
|
|
1161
|
+
|
|
1162
|
+
## Subtopic: webinar queued-video
|
|
1163
|
+
|
|
1164
|
+
Queued videos are pre-recorded clips played during a live webinar (simulated-live / interstitial content).
|
|
1165
|
+
|
|
1166
|
+
### webinar queued-video add
|
|
1167
|
+
|
|
1168
|
+
**Auth scope:** write **Side effects:** creates **Output:** none
|
|
1169
|
+
|
|
1170
|
+
| Flag | Required | Default | Description |
|
|
1171
|
+
|------|----------|---------|-------------|
|
|
1172
|
+
| `--video-id` | no | — | Video ID to queue |
|
|
1173
|
+
|
|
1174
|
+
```bash
|
|
1175
|
+
# Add a pre-recorded intro video to the queue
|
|
1176
|
+
twentythree webinar queued-video add <id> --video-id <video-id> --json
|
|
1177
|
+
|
|
1178
|
+
# Example with real IDs
|
|
1179
|
+
twentythree webinar queued-video add 12345 --video-id 67890 --json
|
|
1180
|
+
```
|
|
1181
|
+
|
|
1182
|
+
---
|
|
1183
|
+
|
|
1184
|
+
### webinar queued-video remove
|
|
1185
|
+
|
|
1186
|
+
**Auth scope:** write **Side effects:** destructive **Output:** none
|
|
1187
|
+
|
|
1188
|
+
| Flag | Required | Default | Description |
|
|
1189
|
+
|------|----------|---------|-------------|
|
|
1190
|
+
| `--video-id` | no | — | Video ID to remove from queue |
|
|
1191
|
+
|
|
1192
|
+
```bash
|
|
1193
|
+
# Remove a video from the webinar queue
|
|
1194
|
+
twentythree webinar queued-video remove <id> --video-id <video-id> --json
|
|
1195
|
+
|
|
1196
|
+
# Example with real IDs
|
|
1197
|
+
twentythree webinar queued-video remove 12345 --video-id 67890 --json
|
|
1198
|
+
```
|
|
1199
|
+
|
|
1200
|
+
---
|
|
1201
|
+
|
|
1202
|
+
## Subtopic: webinar transcription
|
|
1203
|
+
|
|
1204
|
+
Transcription commands manage speech-to-text transcripts generated from webinar recordings. Transcripts feed into closed captions and AI-generated summaries.
|
|
1205
|
+
|
|
1206
|
+
### webinar transcription list
|
|
1207
|
+
|
|
1208
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Language, Status)
|
|
1209
|
+
|
|
1210
|
+
| Flag | Required | Default | Description |
|
|
1211
|
+
|------|----------|---------|-------------|
|
|
1212
|
+
| `--token` | no | — | Webinar token (auto-looked up if not provided) |
|
|
1213
|
+
|
|
1214
|
+
```bash
|
|
1215
|
+
# List transcriptions for a webinar
|
|
1216
|
+
twentythree webinar transcription list <id> --json
|
|
1217
|
+
|
|
1218
|
+
# Example with a real ID
|
|
1219
|
+
twentythree webinar transcription list 12345 --json
|
|
1220
|
+
```
|
|
1221
|
+
|
|
1222
|
+
---
|
|
1223
|
+
|
|
1224
|
+
### webinar transcription connect
|
|
1225
|
+
|
|
1226
|
+
**Auth scope:** write **Side effects:** updates **Output:** none
|
|
1227
|
+
|
|
1228
|
+
| Flag | Required | Default | Description |
|
|
1229
|
+
|------|----------|---------|-------------|
|
|
1230
|
+
| `--presenter-token` | no | — | Presenter token |
|
|
1231
|
+
|
|
1232
|
+
```bash
|
|
1233
|
+
# Connect a transcription to a webinar
|
|
1234
|
+
twentythree webinar transcription connect <id> --json
|
|
1235
|
+
|
|
1236
|
+
# Connect with a presenter token
|
|
1237
|
+
twentythree webinar transcription connect <id> --presenter-token abc123 --json
|
|
1238
|
+
```
|
|
1239
|
+
|
|
1240
|
+
---
|
|
1241
|
+
|
|
1242
|
+
### webinar transcription locales
|
|
1243
|
+
|
|
1244
|
+
**Auth scope:** read **Side effects:** none **Output:** table (Locale, Name)
|
|
1245
|
+
|
|
1246
|
+
| Flag | Required | Default | Description |
|
|
1247
|
+
|------|----------|---------|-------------|
|
|
1248
|
+
| `--token` | no | — | Webinar token (auto-looked up if not provided) |
|
|
1249
|
+
|
|
1250
|
+
```bash
|
|
1251
|
+
# List available transcription locales
|
|
1252
|
+
twentythree webinar transcription locales <id> --json
|
|
1253
|
+
|
|
1254
|
+
# Example with a real ID
|
|
1255
|
+
twentythree webinar transcription locales 12345 --json
|
|
1256
|
+
```
|
|
1257
|
+
|
|
1258
|
+
---
|
|
1259
|
+
|
|
1260
|
+
### webinar transcription transcriptionlist
|
|
1261
|
+
|
|
1262
|
+
**Auth scope:** read **Side effects:** none **Output:** table (ID, Webinar ID, Language, Status)
|
|
1263
|
+
|
|
1264
|
+
Lists all transcriptions in the workspace (not scoped to a single webinar).
|
|
1265
|
+
|
|
1266
|
+
No additional flags.
|
|
1267
|
+
|
|
1268
|
+
```bash
|
|
1269
|
+
# List all transcriptions in the workspace
|
|
1270
|
+
twentythree webinar transcription transcriptionlist --json
|
|
1271
|
+
|
|
1272
|
+
# Use to audit transcription status across all webinars
|
|
1273
|
+
twentythree webinar transcription transcriptionlist --json
|
|
1274
|
+
```
|
|
1275
|
+
|
|
1276
|
+
---
|
|
1277
|
+
|
|
1278
|
+
## Common Patterns
|
|
1279
|
+
|
|
1280
|
+
### Create and publish a webinar
|
|
1281
|
+
|
|
1282
|
+
```bash
|
|
1283
|
+
# 1. Create a scheduled webinar
|
|
1284
|
+
twentythree webinar create --title "Q2 Town Hall" --live-date "2026-05-15T16:00:00Z" --json
|
|
1285
|
+
# => { "data": { "id": "<webinar-id>", "admin_url": "..." } }
|
|
1286
|
+
|
|
1287
|
+
# 2. Publish it (make visible to registrants)
|
|
1288
|
+
twentythree webinar update <webinar-id> --publish --json
|
|
1289
|
+
```
|
|
1290
|
+
|
|
1291
|
+
### Go-live sequence
|
|
1292
|
+
|
|
1293
|
+
```bash
|
|
1294
|
+
# 1. Get room connection info (stream key + room URL)
|
|
1295
|
+
twentythree webinar room connect <id> --json
|
|
1296
|
+
# => Returns stream key and room URL for your streaming software
|
|
1297
|
+
|
|
1298
|
+
# 2. Start recording once you go live
|
|
1299
|
+
twentythree webinar recording start <id> --json
|
|
1300
|
+
```
|
|
1301
|
+
|
|
1302
|
+
### Session archive after broadcast
|
|
1303
|
+
|
|
1304
|
+
```bash
|
|
1305
|
+
# 1. Stop recording when session ends
|
|
1306
|
+
twentythree webinar recording stop <id> --json
|
|
1307
|
+
|
|
1308
|
+
# 2. Wait for processing, then check clips availability
|
|
1309
|
+
twentythree webinar recording status <id> --json
|
|
1310
|
+
twentythree webinar clips <id> --json
|
|
1311
|
+
|
|
1312
|
+
# 3. Mark webinar as previous (archived)
|
|
1313
|
+
twentythree webinar update <id> --status previous --json
|
|
1314
|
+
```
|
|
1315
|
+
|
|
1316
|
+
### Add a speaker and agenda section
|
|
1317
|
+
|
|
1318
|
+
```bash
|
|
1319
|
+
# Add a speaker
|
|
1320
|
+
twentythree webinar speaker add <id> --name "Jane Doe" --email jane@example.com --title "CTO" --json
|
|
1321
|
+
|
|
1322
|
+
# Add agenda sections
|
|
1323
|
+
twentythree webinar section add <id> --title "Introduction" --start-time 0 --json
|
|
1324
|
+
twentythree webinar section add <id> --title "Demo" --start-time 600 --json
|
|
1325
|
+
twentythree webinar section add <id> --title "Q&A" --start-time 3600 --json
|
|
1326
|
+
```
|
|
1327
|
+
|
|
1328
|
+
### Attach slides as a downloadable
|
|
1329
|
+
|
|
1330
|
+
```bash
|
|
1331
|
+
# Upload slides PDF as an attachment
|
|
1332
|
+
twentythree webinar attachment upload <id> ./slides.pdf --json
|
|
1333
|
+
|
|
1334
|
+
# Verify the attachment is visible
|
|
1335
|
+
twentythree webinar attachment list <id> --json
|
|
1336
|
+
```
|
|
1337
|
+
|
|
1338
|
+
### Schedule a repeat occurrence
|
|
1339
|
+
|
|
1340
|
+
```bash
|
|
1341
|
+
# Schedule next week's repeat
|
|
1342
|
+
twentythree webinar repeat <id> --date "2026-05-22T16:00:00Z" --json
|
|
1343
|
+
# => { "data": { "id": "<new-webinar-id>", "admin_url": "..." } }
|
|
1344
|
+
```
|
|
1345
|
+
|
|
1346
|
+
### Filter webinar list by status
|
|
1347
|
+
|
|
1348
|
+
```bash
|
|
1349
|
+
# List live webinars
|
|
1350
|
+
twentythree webinar list --status live --json
|
|
1351
|
+
|
|
1352
|
+
# List all previous webinars including private
|
|
1353
|
+
twentythree webinar list --status previous --include-private --json
|
|
1354
|
+
```
|
|
1355
|
+
|
|
1356
|
+
---
|
|
1357
|
+
|
|
1358
|
+
## Terminology Notes
|
|
1359
|
+
|
|
1360
|
+
CLI `webinar` = API `live`. The `api_endpoint` field in `--agent` output uses the API name:
|
|
1361
|
+
|
|
1362
|
+
- `twentythree webinar create` → `POST /live/create`
|
|
1363
|
+
- `twentythree webinar list` → `GET /live/list`
|
|
1364
|
+
- `twentythree webinar update` → `POST /live/update`
|
|
1365
|
+
- `twentythree webinar delete` → `POST /live/delete`
|
|
1366
|
+
- `twentythree webinar recording start` → `POST /live/recording/start`
|
|
1367
|
+
- `twentythree webinar room connect` → `GET /live/webinar/connect`
|
|
1368
|
+
|
|
1369
|
+
When reading the raw OpenAPI spec, `live` refers to a webinar. The `live session` endpoint family (`/live/webinar/*`) backs the `webinar room` concept — note that `webinar room connect` uses `/live/webinar/connect`.
|
|
1370
|
+
When commenting on a webinar via the `comment` topic, pass `--object-type live`.
|
|
1371
|
+
|