KosmoKrator

communication

Zoom Lua API for KosmoKrator Agents

Agent-facing Lua documentation and function reference for the Zoom KosmoKrator integration.

7 functions 6 read 1 write Manual OAuth token auth

Lua Namespace

Agents call this integration through app.integrations.zoom.*. Use lua_read_doc("integrations.zoom") inside KosmoKrator to discover the same reference at runtime.

Agent-Facing Lua Docs

This is the rendered version of the full Lua documentation exposed to agents when they inspect the integration namespace.

Zoom — Lua API Reference

list_meetings

List meetings for a Zoom user.

Parameters

NameTypeRequiredDescription
user_idstringnoUser ID or "me" for the authenticated user. Default: "me".
typestringnoMeeting type filter: scheduled, live, or upcoming. Default: "live".
page_sizeintegernoNumber of meetings per page (1–300). Default: 30.
next_page_tokenstringnoToken for the next page of results.

Response

Returns an object with meetings array:

FieldTypeDescription
idstringMeeting ID
topicstringMeeting topic/title
typeintegerMeeting type (1=instant, 2=scheduled, 3=recurring no time, 8=recurring)
start_timestringStart time (ISO 8601)
durationintegerDuration in minutes
timezonestringMeeting timezone
join_urlstringURL to join the meeting

Example

local meetings = app.integrations.zoom.list_meetings({
  type = "live",
  page_size = 20
})

for _, m in ipairs(meetings.meetings or {}) do
  print(m.topic .. " at " .. m.start_time .. " (" .. m.duration .. " min)")
end

get_meeting

Get details of a specific meeting by ID.

Parameters

NameTypeRequiredDescription
meeting_idstringyesThe meeting ID or UUID.

Response

Returns the full meeting object:

FieldTypeDescription
idstringMeeting ID
topicstringMeeting topic/title
typeintegerMeeting type
start_timestringStart time (ISO 8601)
durationintegerDuration in minutes
timezonestringMeeting timezone
agendastringMeeting agenda/description
join_urlstringURL to join the meeting
passwordstringMeeting password
settingsobjectMeeting settings

Example

local meeting = app.integrations.zoom.get_meeting({
  meeting_id = "123456789"
})

print("Topic: " .. meeting.topic)
print("Join: " .. meeting.join_url)
print("Password: " .. (meeting.password or "none"))

create_meeting

Create a new Zoom meeting.

Parameters

NameTypeRequiredDescription
topicstringyesMeeting topic/title.
typestringno"1" = instant, "2" = scheduled (default), "3" = recurring no fixed time, "8" = recurring fixed time.
start_timestringnoStart time in ISO 8601 (e.g. "2024-01-15T10:00:00Z"). Required for scheduled meetings.
durationintegernoDuration in minutes. Default: 30.
timezonestringnoTimezone (e.g. "America/New_York").
agendastringnoMeeting description/agenda.
user_idstringnoUser ID to create meeting for. Default: "me".
settingsobjectnoMeeting settings object.

Response

Returns the created meeting with id, topic, start_time, join_url, and password.

Example

local meeting = app.integrations.zoom.create_meeting({
  topic = "Project Sync",
  type = "2",
  start_time = "2024-06-15T10:00:00Z",
  duration = 45,
  timezone = "America/New_York",
  agenda = "Weekly project sync meeting"
})

print("Created meeting: " .. meeting.id)
print("Join URL: " .. meeting.join_url)

list_users

List users in the Zoom account.

Parameters

NameTypeRequiredDescription
page_sizeintegernoNumber of users per page (1–300). Default: 30.
next_page_tokenstringnoToken for the next page of results.

Response

Returns an object with users array:

FieldTypeDescription
idstringUser ID
emailstringEmail address
first_namestringFirst name
last_namestringLast name
typeintegerUser type (1=basic, 2=licensed, 3=on-prem)
statusstringAccount status (active, pending, inactive)

Example

local users = app.integrations.zoom.list_users({
  page_size = 50
})

for _, u in ipairs(users.users or {}) do
  print(u.first_name .. " " .. u.last_name .. " <" .. u.email .. ">")
end

get_user

Get details of a specific Zoom user.

Parameters

NameTypeRequiredDescription
user_idstringyesUser ID or "me".

Response

Returns a user object:

FieldTypeDescription
idstringUser ID
emailstringEmail address
first_namestringFirst name
last_namestringLast name
typeintegerUser type
statusstringAccount status
timezonestringUser timezone
created_atstringAccount creation timestamp

Example

local user = app.integrations.zoom.get_user({
  user_id = "me"
})

print("Name: " .. user.first_name .. " " .. user.last_name)
print("Email: " .. user.email)
print("Timezone: " .. user.timezone)

list_recordings

List cloud recordings for a user.

Parameters

NameTypeRequiredDescription
user_idstringnoUser ID or "me". Default: "me".
page_sizeintegernoNumber of recordings per page (1–300). Default: 30.
next_page_tokenstringnoToken for the next page of results.

Response

Returns an object with meetings array, each containing recording info:

FieldTypeDescription
idstringMeeting instance ID
topicstringMeeting topic
start_timestringRecording start time
durationintegerDuration in minutes
recording_filesarrayArray of recording file objects with download URLs
share_urlstringSharing URL

Example

local recordings = app.integrations.zoom.list_recordings({
  user_id = "me",
  page_size = 10
})

for _, r in ipairs(recordings.meetings or {}) do
  print(r.topic .. " - " .. r.start_time .. " (" .. r.duration .. " min)")
  for _, f in ipairs(r.recording_files or {}) do
    print("  File: " .. f.file_type .. " - " .. (f.download_url or "no url"))
  end
end

get_current_user

Get the profile of the currently authenticated user.

Parameters

None.

Response

Returns a user object:

FieldTypeDescription
idstringUser ID
emailstringEmail address
first_namestringFirst name
last_namestringLast name
typeintegerUser type
statusstringAccount status
timezonestringUser timezone
created_atstringAccount creation timestamp

Example

local user = app.integrations.zoom.get_current_user({})

print("Logged in as: " .. user.first_name .. " " .. user.last_name .. " (" .. user.email .. ")")

Multi-Account Usage

If you have multiple Zoom accounts configured, use account-specific namespaces:

-- Default account (always works)
app.integrations.zoom.function_name({...})

-- Explicit default (portable across setups)
app.integrations.zoom.default.function_name({...})

-- Named accounts
app.integrations.zoom.work.function_name({...})
app.integrations.zoom.personal.function_name({...})

All functions are identical across accounts — only the credentials differ.

Raw agent markdown
# Zoom — Lua API Reference

## list_meetings

List meetings for a Zoom user.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `user_id` | string | no | User ID or `"me"` for the authenticated user. Default: `"me"`. |
| `type` | string | no | Meeting type filter: `scheduled`, `live`, or `upcoming`. Default: `"live"`. |
| `page_size` | integer | no | Number of meetings per page (1–300). Default: 30. |
| `next_page_token` | string | no | Token for the next page of results. |

### Response

Returns an object with `meetings` array:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Meeting ID |
| `topic` | string | Meeting topic/title |
| `type` | integer | Meeting type (1=instant, 2=scheduled, 3=recurring no time, 8=recurring) |
| `start_time` | string | Start time (ISO 8601) |
| `duration` | integer | Duration in minutes |
| `timezone` | string | Meeting timezone |
| `join_url` | string | URL to join the meeting |

### Example

```lua
local meetings = app.integrations.zoom.list_meetings({
  type = "live",
  page_size = 20
})

for _, m in ipairs(meetings.meetings or {}) do
  print(m.topic .. " at " .. m.start_time .. " (" .. m.duration .. " min)")
end
```

---

## get_meeting

Get details of a specific meeting by ID.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `meeting_id` | string | yes | The meeting ID or UUID. |

### Response

Returns the full meeting object:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Meeting ID |
| `topic` | string | Meeting topic/title |
| `type` | integer | Meeting type |
| `start_time` | string | Start time (ISO 8601) |
| `duration` | integer | Duration in minutes |
| `timezone` | string | Meeting timezone |
| `agenda` | string | Meeting agenda/description |
| `join_url` | string | URL to join the meeting |
| `password` | string | Meeting password |
| `settings` | object | Meeting settings |

### Example

```lua
local meeting = app.integrations.zoom.get_meeting({
  meeting_id = "123456789"
})

print("Topic: " .. meeting.topic)
print("Join: " .. meeting.join_url)
print("Password: " .. (meeting.password or "none"))
```

---

## create_meeting

Create a new Zoom meeting.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `topic` | string | yes | Meeting topic/title. |
| `type` | string | no | `"1"` = instant, `"2"` = scheduled (default), `"3"` = recurring no fixed time, `"8"` = recurring fixed time. |
| `start_time` | string | no | Start time in ISO 8601 (e.g. `"2024-01-15T10:00:00Z"`). Required for scheduled meetings. |
| `duration` | integer | no | Duration in minutes. Default: 30. |
| `timezone` | string | no | Timezone (e.g. `"America/New_York"`). |
| `agenda` | string | no | Meeting description/agenda. |
| `user_id` | string | no | User ID to create meeting for. Default: `"me"`. |
| `settings` | object | no | Meeting settings object. |

### Response

Returns the created meeting with `id`, `topic`, `start_time`, `join_url`, and `password`.

### Example

```lua
local meeting = app.integrations.zoom.create_meeting({
  topic = "Project Sync",
  type = "2",
  start_time = "2024-06-15T10:00:00Z",
  duration = 45,
  timezone = "America/New_York",
  agenda = "Weekly project sync meeting"
})

print("Created meeting: " .. meeting.id)
print("Join URL: " .. meeting.join_url)
```

---

## list_users

List users in the Zoom account.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `page_size` | integer | no | Number of users per page (1–300). Default: 30. |
| `next_page_token` | string | no | Token for the next page of results. |

### Response

Returns an object with `users` array:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | User ID |
| `email` | string | Email address |
| `first_name` | string | First name |
| `last_name` | string | Last name |
| `type` | integer | User type (1=basic, 2=licensed, 3=on-prem) |
| `status` | string | Account status (active, pending, inactive) |

### Example

```lua
local users = app.integrations.zoom.list_users({
  page_size = 50
})

for _, u in ipairs(users.users or {}) do
  print(u.first_name .. " " .. u.last_name .. " <" .. u.email .. ">")
end
```

---

## get_user

Get details of a specific Zoom user.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `user_id` | string | yes | User ID or `"me"`. |

### Response

Returns a user object:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | User ID |
| `email` | string | Email address |
| `first_name` | string | First name |
| `last_name` | string | Last name |
| `type` | integer | User type |
| `status` | string | Account status |
| `timezone` | string | User timezone |
| `created_at` | string | Account creation timestamp |

### Example

```lua
local user = app.integrations.zoom.get_user({
  user_id = "me"
})

print("Name: " .. user.first_name .. " " .. user.last_name)
print("Email: " .. user.email)
print("Timezone: " .. user.timezone)
```

---

## list_recordings

List cloud recordings for a user.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `user_id` | string | no | User ID or `"me"`. Default: `"me"`. |
| `page_size` | integer | no | Number of recordings per page (1–300). Default: 30. |
| `next_page_token` | string | no | Token for the next page of results. |

### Response

Returns an object with `meetings` array, each containing recording info:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Meeting instance ID |
| `topic` | string | Meeting topic |
| `start_time` | string | Recording start time |
| `duration` | integer | Duration in minutes |
| `recording_files` | array | Array of recording file objects with download URLs |
| `share_url` | string | Sharing URL |

### Example

```lua
local recordings = app.integrations.zoom.list_recordings({
  user_id = "me",
  page_size = 10
})

for _, r in ipairs(recordings.meetings or {}) do
  print(r.topic .. " - " .. r.start_time .. " (" .. r.duration .. " min)")
  for _, f in ipairs(r.recording_files or {}) do
    print("  File: " .. f.file_type .. " - " .. (f.download_url or "no url"))
  end
end
```

---

## get_current_user

Get the profile of the currently authenticated user.

### Parameters

None.

### Response

Returns a user object:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | User ID |
| `email` | string | Email address |
| `first_name` | string | First name |
| `last_name` | string | Last name |
| `type` | integer | User type |
| `status` | string | Account status |
| `timezone` | string | User timezone |
| `created_at` | string | Account creation timestamp |

### Example

```lua
local user = app.integrations.zoom.get_current_user({})

print("Logged in as: " .. user.first_name .. " " .. user.last_name .. " (" .. user.email .. ")")
```

---

## Multi-Account Usage

If you have multiple Zoom accounts configured, use account-specific namespaces:

```lua
-- Default account (always works)
app.integrations.zoom.function_name({...})

-- Explicit default (portable across setups)
app.integrations.zoom.default.function_name({...})

-- Named accounts
app.integrations.zoom.work.function_name({...})
app.integrations.zoom.personal.function_name({...})
```

All functions are identical across accounts — only the credentials differ.

Metadata-Derived Lua Example

local result = app.integrations.zoom.zoom_create_meeting({
  topic = "example_topic",
  type = "example_type",
  start_time = "example_start_time",
  duration = 1,
  timezone = "example_timezone",
  agenda = "example_agenda",
  user_id = "example_user_id",
  settings = "example_settings"
})
print(result)

Functions

zoom_create_meeting

Create a new Zoom meeting. Provide a topic, start time (ISO 8601), duration, and optional timezone. Returns the meeting with join URL and password.

Operation
Write write
Full name
zoom.zoom_create_meeting
ParameterTypeRequiredDescription
topic string yes Meeting topic/title.
type string no Meeting type: "1" = instant, "2" = scheduled (default), "3" = recurring no fixed time, "8" = recurring fixed time.
start_time string no Meeting start time in ISO 8601 format (e.g. "2024-01-15T10:00:00Z"). Required for scheduled meetings.
duration integer no Meeting duration in minutes. Default: 30.
timezone string no Timezone for the meeting (e.g. "America/New_York").
agenda string no Meeting description/agenda.
user_id string no User ID to create the meeting for. Default: "me".
settings object no Meeting settings (join_before_host, mute_upon_entry, etc.).

zoom_get_current_user

Get the profile of the currently authenticated Zoom user. Returns email, name, account type, status, and timezone.

Operation
Read read
Full name
zoom.zoom_get_current_user
ParameterTypeRequiredDescription
No parameters.

zoom_get_meeting

Get details of a specific Zoom meeting by ID. Returns the meeting topic, agenda, start time, duration, join URL, and settings.

Operation
Read read
Full name
zoom.zoom_get_meeting
ParameterTypeRequiredDescription
meeting_id string yes The meeting ID or UUID.

zoom_get_user

Get details of a specific Zoom user by ID or "me" for the authenticated user. Returns email, name, type, status, and timezone.

Operation
Read read
Full name
zoom.zoom_get_user
ParameterTypeRequiredDescription
user_id string yes The user ID or "me" for the authenticated user.

zoom_list_meetings

List meetings for a Zoom user. Returns meeting IDs, topics, start times, durations, and join URLs. Use type "live" for in-progress, "scheduled" for upcoming, or "upcoming" for all upcoming meetings.

Operation
Read read
Full name
zoom.zoom_list_meetings
ParameterTypeRequiredDescription
user_id string no User ID or "me" for the authenticated user. Default: "me".
type string no Meeting type filter: scheduled, live, or upcoming. Default: "live".
page_size integer no Number of meetings per page (1–300). Default: 30.
next_page_token string no Token for the next page of results.

zoom_list_recordings

List cloud recordings for a Zoom user. Returns recording IDs, topics, start times, durations, and download URLs for recording files.

Operation
Read read
Full name
zoom.zoom_list_recordings
ParameterTypeRequiredDescription
user_id string no User ID or "me" for the authenticated user. Default: "me".
page_size integer no Number of recordings per page (1–300). Default: 30.
next_page_token string no Token for the next page of results.

zoom_list_users

List users in the Zoom account. Returns user IDs, emails, names, types (1=basic, 2=licensed), and status. Use this to find user IDs for other operations.

Operation
Read read
Full name
zoom.zoom_list_users
ParameterTypeRequiredDescription
page_size integer no Number of users per page (1–300). Default: 30.
next_page_token string no Token for the next page of results.