productivity
GoTo Webinar Lua API for KosmoKrator Agents
Agent-facing Lua documentation and function reference for the GoTo Webinar KosmoKrator integration.Lua Namespace
Agents call this integration through app.integrations.goto_webinar.*.
Use lua_read_doc("integrations.goto-webinar") inside KosmoKrator to discover the same reference at runtime.
Call Lua from the Headless CLI
Use kosmo integrations:lua when a shell script, CI job, cron job, or another coding CLI should run a deterministic
GoTo Webinar workflow without starting an interactive agent session.
kosmo integrations:lua --eval 'dump(app.integrations.goto_webinar.list({page = 1, size = 1, status = "example_status"}))' --json kosmo integrations:lua --eval 'print(docs.read("goto-webinar"))' --json
kosmo integrations:lua --eval 'print(docs.read("goto-webinar.list"))' --json Workflow file
Put repeatable logic in a Lua file, then execute it with JSON output for the calling process.
local goto_webinar = app.integrations.goto_webinar
local result = goto_webinar.list({page = 1, size = 1, status = "example_status"})
dump(result) kosmo integrations:lua workflow.lua --json
kosmo integrations:lua workflow.lua --force --json integrations:lua exposes app.integrations.goto_webinar, app.mcp.*, docs.*, json.*, and regex.*. Use app.integrations.goto_webinar.default.* or app.integrations.goto_webinar.work.* when you configured named credential accounts.
MCP-only Lua
If the script only needs configured MCP servers and does not need GoTo Webinar, use the narrower mcp:lua command.
# Use mcp:lua for MCP-only scripts; use integrations:lua for this integration namespace.
kosmo mcp:lua --eval 'dump(mcp.servers())' --json Agent-Facing Lua Docs
This is the rendered version of the full Lua documentation exposed to agents when they inspect the integration namespace.
GoTo Webinar — Lua API Reference
list_webinars
List webinars from GoTo Webinar.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
page | integer | no | Page number (0-based, default: 0) |
size | integer | no | Page size (default: 20, max: 200) |
status | string | no | Filter: "ACTIVE", "IN_SESSION", "ENDED", "CANCELED" |
Examples
-- List all upcoming webinars
local result = app.integrations["goto-webinar"].list_webinars({
status = "ACTIVE"
})
for _, webinar in ipairs(result._embedded.webinars or {}) do
print(webinar.subject .. " (" .. webinar.webinarKey .. ")")
end
-- Paginate through past webinars
local result = app.integrations["goto-webinar"].list_webinars({
status = "ENDED",
page = 0,
size = 50
})
get_webinar
Get details of a specific webinar.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | yes | The webinar key |
Example
local result = app.integrations["goto-webinar"].get_webinar({
id = "1234567890"
})
print(result.subject)
print(result.description)
create_webinar
Schedule a new webinar.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
subject | string | yes | Webinar title |
times | array | yes | Time slots with startTime and endTime (ISO 8601) |
description | string | no | Webinar description |
Time Slot Format
Each time slot must include:
{
"startTime": "2026-04-10T15:00:00Z",
"endTime": "2026-04-10T16:00:00Z"
}
For recurring webinars, pass multiple time slots.
Example
local result = app.integrations["goto-webinar"].create_webinar({
subject = "Q2 Product Demo",
times = {
{
startTime = "2026-04-15T14:00:00Z",
endTime = "2026-04-15T15:00:00Z"
}
},
description = "Join us for a live demo of our latest features."
})
print("Created webinar: " .. result.webinarKey)
list_sessions
List sessions for a specific webinar.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
webinar_id | string | yes | The webinar key |
page | integer | no | Page number (0-based, default: 0) |
size | integer | no | Page size (default: 20) |
Example
local result = app.integrations["goto-webinar"].list_sessions({
webinar_id = "1234567890"
})
for _, session in ipairs(result._embedded.sessions or {}) do
print(session.sessionKey .. ": " .. session.startTime)
end
get_session
Get details of a specific session.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
webinar_id | string | yes | The webinar key |
id | string | yes | The session key |
Example
local result = app.integrations["goto-webinar"].get_session({
webinar_id = "1234567890",
id = "9876543210"
})
print("Attendees: " .. result.attendees)
print("Duration (seconds): " .. result.duration)
list_panelists
List panelists for a specific webinar.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
webinar_id | string | yes | The webinar key |
page | integer | no | Page number (0-based, default: 0) |
size | integer | no | Page size (default: 20) |
Example
local result = app.integrations["goto-webinar"].list_panelists({
webinar_id = "1234567890"
})
for _, panelist in ipairs(result._embedded.panelists or {}) do
print(panelist.name .. " <" .. panelist.email .. ">")
end
get_current_user
Get the authenticated user’s profile.
Parameters
None.
Example
local result = app.integrations["goto-webinar"].get_current_user({})
print(result.firstName .. " " .. result.lastName)
print("Email: " .. result.email)
print("Account key: " .. result.accountKey)
Multi-Account Usage
If you have multiple GoTo Webinar accounts configured, use account-specific namespaces:
-- Default account (always works)
app.integrations["goto-webinar"].function_name({...})
-- Explicit default (portable across setups)
app.integrations["goto-webinar"].default.function_name({...})
-- Named accounts
app.integrations["goto-webinar"].marketing.function_name({...})
app.integrations["goto-webinar"].sales.function_name({...})
All functions are identical across accounts — only the credentials differ.
Raw agent markdown
# GoTo Webinar — Lua API Reference
## list_webinars
List webinars from GoTo Webinar.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `page` | integer | no | Page number (0-based, default: 0) |
| `size` | integer | no | Page size (default: 20, max: 200) |
| `status` | string | no | Filter: `"ACTIVE"`, `"IN_SESSION"`, `"ENDED"`, `"CANCELED"` |
### Examples
```lua
-- List all upcoming webinars
local result = app.integrations["goto-webinar"].list_webinars({
status = "ACTIVE"
})
for _, webinar in ipairs(result._embedded.webinars or {}) do
print(webinar.subject .. " (" .. webinar.webinarKey .. ")")
end
-- Paginate through past webinars
local result = app.integrations["goto-webinar"].list_webinars({
status = "ENDED",
page = 0,
size = 50
})
```
---
## get_webinar
Get details of a specific webinar.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | string | yes | The webinar key |
### Example
```lua
local result = app.integrations["goto-webinar"].get_webinar({
id = "1234567890"
})
print(result.subject)
print(result.description)
```
---
## create_webinar
Schedule a new webinar.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `subject` | string | yes | Webinar title |
| `times` | array | yes | Time slots with `startTime` and `endTime` (ISO 8601) |
| `description` | string | no | Webinar description |
### Time Slot Format
Each time slot must include:
```json
{
"startTime": "2026-04-10T15:00:00Z",
"endTime": "2026-04-10T16:00:00Z"
}
```
For recurring webinars, pass multiple time slots.
### Example
```lua
local result = app.integrations["goto-webinar"].create_webinar({
subject = "Q2 Product Demo",
times = {
{
startTime = "2026-04-15T14:00:00Z",
endTime = "2026-04-15T15:00:00Z"
}
},
description = "Join us for a live demo of our latest features."
})
print("Created webinar: " .. result.webinarKey)
```
---
## list_sessions
List sessions for a specific webinar.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `webinar_id` | string | yes | The webinar key |
| `page` | integer | no | Page number (0-based, default: 0) |
| `size` | integer | no | Page size (default: 20) |
### Example
```lua
local result = app.integrations["goto-webinar"].list_sessions({
webinar_id = "1234567890"
})
for _, session in ipairs(result._embedded.sessions or {}) do
print(session.sessionKey .. ": " .. session.startTime)
end
```
---
## get_session
Get details of a specific session.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `webinar_id` | string | yes | The webinar key |
| `id` | string | yes | The session key |
### Example
```lua
local result = app.integrations["goto-webinar"].get_session({
webinar_id = "1234567890",
id = "9876543210"
})
print("Attendees: " .. result.attendees)
print("Duration (seconds): " .. result.duration)
```
---
## list_panelists
List panelists for a specific webinar.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `webinar_id` | string | yes | The webinar key |
| `page` | integer | no | Page number (0-based, default: 0) |
| `size` | integer | no | Page size (default: 20) |
### Example
```lua
local result = app.integrations["goto-webinar"].list_panelists({
webinar_id = "1234567890"
})
for _, panelist in ipairs(result._embedded.panelists or {}) do
print(panelist.name .. " <" .. panelist.email .. ">")
end
```
---
## get_current_user
Get the authenticated user's profile.
### Parameters
None.
### Example
```lua
local result = app.integrations["goto-webinar"].get_current_user({})
print(result.firstName .. " " .. result.lastName)
print("Email: " .. result.email)
print("Account key: " .. result.accountKey)
```
---
## Multi-Account Usage
If you have multiple GoTo Webinar accounts configured, use account-specific namespaces:
```lua
-- Default account (always works)
app.integrations["goto-webinar"].function_name({...})
-- Explicit default (portable across setups)
app.integrations["goto-webinar"].default.function_name({...})
-- Named accounts
app.integrations["goto-webinar"].marketing.function_name({...})
app.integrations["goto-webinar"].sales.function_name({...})
```
All functions are identical across accounts — only the credentials differ. local result = app.integrations.goto_webinar.list({page = 1, size = 1, status = "example_status"})
print(result) Functions
list Read
List webinars from GoTo Webinar. Returns upcoming, in-progress, and past webinars. Use the status parameter to filter by webinar state.
- Lua path
app.integrations.goto_webinar.list- Full name
goto-webinar.gotowebinar_list_webinars
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | no | Page number for pagination (0-based, default: 0). |
size | integer | no | Number of results per page (default: 20, max: 200). |
status | string | no | Filter by webinar status: "ACTIVE", "IN_SESSION", "ENDED", "CANCELED". Omit to list all. |
get Read
Get detailed information about a specific webinar, including schedule, registration settings, and organizer details.
- Lua path
app.integrations.goto_webinar.get- Full name
goto-webinar.gotowebinar_get_webinar
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | yes | The webinar key (webinar ID). |
create Write
Schedule a new webinar in GoTo Webinar. Provide a subject, one or more time slots (each with startTime and endTime in ISO 8601 format), and an optional description.
- Lua path
app.integrations.goto_webinar.create- Full name
goto-webinar.gotowebinar_create_webinar
| Parameter | Type | Required | Description |
|---|---|---|---|
subject | string | yes | The webinar subject/title. |
times | array | yes | Array of time slots. Each slot must have "startTime" and "endTime" in ISO 8601 format (e.g., "2026-04-10T15:00:00Z"). |
description | string | no | Optional description of the webinar. |
list_sessions Read
List all sessions for a specific webinar. Each session represents one occurrence of a webinar (useful for recurring webinars).
- Lua path
app.integrations.goto_webinar.list_sessions- Full name
goto-webinar.gotowebinar_list_sessions
| Parameter | Type | Required | Description |
|---|---|---|---|
webinar_id | string | yes | The webinar key. |
page | integer | no | Page number for pagination (0-based, default: 0). |
size | integer | no | Number of results per page (default: 20, max: 200). |
get_session Read
Get detailed information about a specific webinar session, including attendance, duration, and participant statistics.
- Lua path
app.integrations.goto_webinar.get_session- Full name
goto-webinar.gotowebinar_get_session
| Parameter | Type | Required | Description |
|---|---|---|---|
webinar_id | string | yes | The webinar key. |
id | string | yes | The session key (session ID). |
list_panelists Read
List all panelists for a specific webinar. Panelists are featured speakers who have enhanced permissions during the webinar.
- Lua path
app.integrations.goto_webinar.list_panelists- Full name
goto-webinar.gotowebinar_list_panelists
| Parameter | Type | Required | Description |
|---|---|---|---|
webinar_id | string | yes | The webinar key. |
page | integer | no | Page number for pagination (0-based, default: 0). |
size | integer | no | Number of results per page (default: 20, max: 200). |
get_current_user Read
Get the profile of the currently authenticated GoTo Webinar user. Useful for verifying credentials and identifying the organizer account.
- Lua path
app.integrations.goto_webinar.get_current_user- Full name
goto-webinar.gotowebinar_get_current_user
| Parameter | Type | Required | Description |
|---|---|---|---|
| No parameters. | |||