KosmoKrator

productivity

Vimeo Lua API for KosmoKrator Agents

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

Lua Namespace

Agents call this integration through app.integrations.vimeo.*. Use lua_read_doc("integrations.vimeo") 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 Vimeo workflow without starting an interactive agent session.

Inline Lua call
kosmo integrations:lua --eval 'dump(app.integrations.vimeo.list_videos({per_page = 1, page = 1, query = "example_query", filter = "example_filter", filter_embeddable = true, filter_playable = true, direction = "example_direction", sort = "example_sort"}))' --json
Read Lua docs headlessly
kosmo integrations:lua --eval 'print(docs.read("vimeo"))' --json
kosmo integrations:lua --eval 'print(docs.read("vimeo.list_videos"))' --json

Workflow file

Put repeatable logic in a Lua file, then execute it with JSON output for the calling process.

workflow.lua
local vimeo = app.integrations.vimeo
local result = vimeo.list_videos({per_page = 1, page = 1, query = "example_query", filter = "example_filter", filter_embeddable = true, filter_playable = true, direction = "example_direction", sort = "example_sort"})

dump(result)
Run the workflow
kosmo integrations:lua workflow.lua --json
kosmo integrations:lua workflow.lua --force --json
Namespace note. integrations:lua exposes app.integrations.vimeo, app.mcp.*, docs.*, json.*, and regex.*. Use app.integrations.vimeo.default.* or app.integrations.vimeo.work.* when you configured named credential accounts.

MCP-only Lua

If the script only needs configured MCP servers and does not need Vimeo, use the narrower mcp:lua command.

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.

Vimeo - Lua API Reference

Namespace: app.integrations.vimeo

Use this integration for Vimeo videos, uploads, albums/showcases, folders/projects, comments, text tracks, thumbnails, channels, and categories. Responses are decoded Vimeo JSON; several legacy list tools return a compact normalized shape for agent readability.

Videos

local videos = app.integrations.vimeo.list_videos({
  per_page = 25,
  page = 1,
  query = "launch"
})

local video = app.integrations.vimeo.get_video({video_id = "123456789"})

local created = app.integrations.vimeo.create_video({
  upload_approach = "pull",
  upload_link = "https://example.test/video.mp4",
  name = "Launch demo",
  privacy = "unlisted"
})

app.integrations.vimeo.update_video({
  video_id = "123456789",
  data = {
    name = "Updated launch demo",
    privacy = {view = "unlisted"}
  }
})

app.integrations.vimeo.delete_video({video_id = "123456789"})

upload_video creates an upload ticket using Vimeo’s upload resource flow. It does not upload local file bytes itself.

Comments, Text Tracks, And Pictures

local comments = app.integrations.vimeo.list_video_comments({
  video_id = "123456789",
  params = {per_page = 10}
})

local comment = app.integrations.vimeo.create_video_comment({
  video_id = "123456789",
  text = "Looks good."
})

local tracks = app.integrations.vimeo.list_video_text_tracks({
  video_id = "123456789"
})

local track = app.integrations.vimeo.create_video_text_track({
  video_id = "123456789",
  data = {
    type = "subtitles",
    language = "en",
    name = "English"
  }
})

local pictures = app.integrations.vimeo.list_video_pictures({
  video_id = "123456789"
})

Albums And Folders

local albums = app.integrations.vimeo.list_albums({})
local album = app.integrations.vimeo.get_album({album_id = "98765"})

local created_album = app.integrations.vimeo.create_album({
  data = {name = "Customer demos"}
})

app.integrations.vimeo.update_album({
  album_id = "98765",
  data = {description = "Updated showcase"}
})

local album_videos = app.integrations.vimeo.list_album_videos({
  album_id = "98765"
})

app.integrations.vimeo.add_video_to_album({
  album_id = "98765",
  video_id = "123456789"
})

local folders = app.integrations.vimeo.list_folders({})

local folder = app.integrations.vimeo.create_folder({
  data = {name = "Launch assets"}
})

app.integrations.vimeo.update_folder({
  folder_id = "456",
  data = {name = "Updated launch assets"}
})

Discovery

local channels = app.integrations.vimeo.list_channels({
  page = 1,
  per_page = 25
})

local categories = app.integrations.vimeo.list_categories({})

local me = app.integrations.vimeo.get_current_user({})

Generic API Helpers

Use generic helpers only for documented Vimeo endpoints that do not yet have a dedicated tool. path must be relative to the configured API base URL; absolute URLs are rejected.

local raw = app.integrations.vimeo.api_get({
  path = "/me/videos",
  params = {per_page = 5}
})

local posted = app.integrations.vimeo.api_post({
  path = "/me/albums",
  body = {name = "New showcase"}
})

local patched = app.integrations.vimeo.api_patch({
  path = "/videos/123456789",
  body = {name = "Updated title"}
})

local deleted = app.integrations.vimeo.api_delete({
  path = "/videos/123456789"
})

Multi-Account Usage

app.integrations.vimeo.list_videos({})
app.integrations.vimeo.default.list_videos({})
app.integrations.vimeo.client_account.list_videos({})

All account namespaces expose the same tools; only stored access tokens differ.

Raw agent markdown
# Vimeo - Lua API Reference

Namespace: `app.integrations.vimeo`

Use this integration for Vimeo videos, uploads, albums/showcases, folders/projects, comments, text tracks, thumbnails, channels, and categories. Responses are decoded Vimeo JSON; several legacy list tools return a compact normalized shape for agent readability.

## Videos

```lua
local videos = app.integrations.vimeo.list_videos({
  per_page = 25,
  page = 1,
  query = "launch"
})

local video = app.integrations.vimeo.get_video({video_id = "123456789"})

local created = app.integrations.vimeo.create_video({
  upload_approach = "pull",
  upload_link = "https://example.test/video.mp4",
  name = "Launch demo",
  privacy = "unlisted"
})

app.integrations.vimeo.update_video({
  video_id = "123456789",
  data = {
    name = "Updated launch demo",
    privacy = {view = "unlisted"}
  }
})

app.integrations.vimeo.delete_video({video_id = "123456789"})
```

`upload_video` creates an upload ticket using Vimeo's upload resource flow. It does not upload local file bytes itself.

## Comments, Text Tracks, And Pictures

```lua
local comments = app.integrations.vimeo.list_video_comments({
  video_id = "123456789",
  params = {per_page = 10}
})

local comment = app.integrations.vimeo.create_video_comment({
  video_id = "123456789",
  text = "Looks good."
})

local tracks = app.integrations.vimeo.list_video_text_tracks({
  video_id = "123456789"
})

local track = app.integrations.vimeo.create_video_text_track({
  video_id = "123456789",
  data = {
    type = "subtitles",
    language = "en",
    name = "English"
  }
})

local pictures = app.integrations.vimeo.list_video_pictures({
  video_id = "123456789"
})
```

## Albums And Folders

```lua
local albums = app.integrations.vimeo.list_albums({})
local album = app.integrations.vimeo.get_album({album_id = "98765"})

local created_album = app.integrations.vimeo.create_album({
  data = {name = "Customer demos"}
})

app.integrations.vimeo.update_album({
  album_id = "98765",
  data = {description = "Updated showcase"}
})

local album_videos = app.integrations.vimeo.list_album_videos({
  album_id = "98765"
})

app.integrations.vimeo.add_video_to_album({
  album_id = "98765",
  video_id = "123456789"
})

local folders = app.integrations.vimeo.list_folders({})

local folder = app.integrations.vimeo.create_folder({
  data = {name = "Launch assets"}
})

app.integrations.vimeo.update_folder({
  folder_id = "456",
  data = {name = "Updated launch assets"}
})
```

## Discovery

```lua
local channels = app.integrations.vimeo.list_channels({
  page = 1,
  per_page = 25
})

local categories = app.integrations.vimeo.list_categories({})

local me = app.integrations.vimeo.get_current_user({})
```

## Generic API Helpers

Use generic helpers only for documented Vimeo endpoints that do not yet have a dedicated tool. `path` must be relative to the configured API base URL; absolute URLs are rejected.

```lua
local raw = app.integrations.vimeo.api_get({
  path = "/me/videos",
  params = {per_page = 5}
})

local posted = app.integrations.vimeo.api_post({
  path = "/me/albums",
  body = {name = "New showcase"}
})

local patched = app.integrations.vimeo.api_patch({
  path = "/videos/123456789",
  body = {name = "Updated title"}
})

local deleted = app.integrations.vimeo.api_delete({
  path = "/videos/123456789"
})
```

## Multi-Account Usage

```lua
app.integrations.vimeo.list_videos({})
app.integrations.vimeo.default.list_videos({})
app.integrations.vimeo.client_account.list_videos({})
```

All account namespaces expose the same tools; only stored access tokens differ.
Metadata-derived Lua example
local result = app.integrations.vimeo.list_videos({per_page = 1, page = 1, query = "example_query", filter = "example_filter", filter_embeddable = true, filter_playable = true, direction = "example_direction", sort = "example_sort"})
print(result)

Functions

list_videos Read

List videos for the authenticated Vimeo user. Supports pagination, full-text search via query, and filters (e.g., embeddable, playable, privacy). Returns video URIs, names, durations, thumbnails, and metadata.

Lua path
app.integrations.vimeo.list_videos
Full name
vimeo.vimeo_list_videos
ParameterTypeRequiredDescription
per_page integer no Number of videos per page (1-100, default: 25).
page integer no Page number for pagination (default: 1).
query string no Full-text search query to filter videos by name or description.
filter string no Filter category: "embeddable", "playable", "purchase_price", "privacy".
filter_embeddable boolean no When filter is "embeddable": true = only embeddable, false = only non-embeddable.
filter_playable boolean no When filter is "playable": true = only playable, false = only non-playable.
direction string no Sort direction: "asc" or "desc".
sort string no Sort field: "alphabetical", "comments", "date", "duration", "likes", "plays".
get_video Read

Get detailed information about a single Vimeo video by its ID. Returns name, description, duration, thumbnails, privacy, stats, and playback links.

Lua path
app.integrations.vimeo.get_video
Full name
vimeo.vimeo_get_video
ParameterTypeRequiredDescription
video_id string yes The Vimeo video ID (e.g., "123456789").
create_video Write

Create a new video upload slot on Vimeo. Choose an upload approach: "pull" (Vimeo downloads from a URL), "post" (you POST to an upload link), or "streaming" (Tus protocol). Returns the video URI and upload target.

Lua path
app.integrations.vimeo.create_video
Full name
vimeo.vimeo_create_video
ParameterTypeRequiredDescription
upload_approach string no Upload method: "pull" (Vimeo fetches from URL), "post" (direct upload), or "streaming" (Tus). Default: "post".
upload_link string no Required when upload_approach is "pull". The URL Vimeo will download the video from.
name string no Title of the video.
description string no Description of the video.
privacy string no Privacy setting: "anybody", "nobody", "contacts", "password", "unlisted", "disable".
password string no Required when privacy is "password".
folder_uri string no URI of a folder (project) to add the video to after creation.
upload_video Write

Create an upload ticket for a new video on Vimeo. Returns the upload URL and video object. Use the upload link to POST the video file binary.

Lua path
app.integrations.vimeo.upload_video
Full name
vimeo.vimeo_upload_video
ParameterTypeRequiredDescription
name string no Title of the video.
description string no Description of the video.
privacy string no Privacy setting: "anybody", "nobody", "contacts", "password", "disable", "unlisted".
update_video Write

Update a video.

Lua path
app.integrations.vimeo.update_video
Full name
vimeo.vimeo_update_video
ParameterTypeRequiredDescription
No parameters.
delete_video Write

Delete a video from Vimeo permanently. This action cannot be undone.

Lua path
app.integrations.vimeo.delete_video
Full name
vimeo.vimeo_delete_video
ParameterTypeRequiredDescription
video_id string yes The video ID to delete (e.g., "123456789").
list_video_comments Read

List comments for a video.

Lua path
app.integrations.vimeo.list_video_comments
Full name
vimeo.vimeo_list_video_comments
ParameterTypeRequiredDescription
No parameters.
create_video_comment Write

Create a video comment.

Lua path
app.integrations.vimeo.create_video_comment
Full name
vimeo.vimeo_create_video_comment
ParameterTypeRequiredDescription
No parameters.
list_video_text_tracks Read

List video captions and subtitles.

Lua path
app.integrations.vimeo.list_video_text_tracks
Full name
vimeo.vimeo_list_video_text_tracks
ParameterTypeRequiredDescription
No parameters.
create_video_text_track Write

Create a video text track.

Lua path
app.integrations.vimeo.create_video_text_track
Full name
vimeo.vimeo_create_video_text_track
ParameterTypeRequiredDescription
No parameters.
list_video_pictures Read

List video thumbnails.

Lua path
app.integrations.vimeo.list_video_pictures
Full name
vimeo.vimeo_list_video_pictures
ParameterTypeRequiredDescription
No parameters.
list_albums Read

List albums (showcases) for the authenticated Vimeo user. Supports pagination, query search, sorting, and direction. Returns album names, descriptions, thumbnails, and video counts.

Lua path
app.integrations.vimeo.list_albums
Full name
vimeo.vimeo_list_albums
ParameterTypeRequiredDescription
per_page integer no Number of albums per page (1-100, default: 25).
page integer no Page number for pagination (default: 1).
query string no Full-text search query to filter albums by name or description.
sort string no Sort field: "alphabetical", "date", "duration", "manual", "modified_time", "name".
direction string no Sort direction: "asc" or "desc".
get_album Read

Get detailed information about a single Vimeo album (showcase) by its ID.

Lua path
app.integrations.vimeo.get_album
Full name
vimeo.vimeo_get_album
ParameterTypeRequiredDescription
album_id string yes The album ID (e.g., "1234567").
create_album Write

Create an album/showcase.

Lua path
app.integrations.vimeo.create_album
Full name
vimeo.vimeo_create_album
ParameterTypeRequiredDescription
No parameters.
update_album Write

Update an album/showcase.

Lua path
app.integrations.vimeo.update_album
Full name
vimeo.vimeo_update_album
ParameterTypeRequiredDescription
No parameters.
list_album_videos Read

List videos in an album/showcase.

Lua path
app.integrations.vimeo.list_album_videos
Full name
vimeo.vimeo_list_album_videos
ParameterTypeRequiredDescription
No parameters.
add_video_album Write

Add a video to an album/showcase.

Lua path
app.integrations.vimeo.add_video_album
Full name
vimeo.vimeo_add_video_to_album
ParameterTypeRequiredDescription
No parameters.
list_folders Read

List folders (projects) for the authenticated Vimeo user. Supports pagination and query search. Returns folder names, descriptions, and item counts.

Lua path
app.integrations.vimeo.list_folders
Full name
vimeo.vimeo_list_folders
ParameterTypeRequiredDescription
per_page integer no Number of folders per page (1-100, default: 25).
page integer no Page number for pagination (default: 1).
query string no Search query to filter folders by name.
create_folder Write

Create a folder/project.

Lua path
app.integrations.vimeo.create_folder
Full name
vimeo.vimeo_create_folder
ParameterTypeRequiredDescription
No parameters.
update_folder Write

Update a folder/project.

Lua path
app.integrations.vimeo.update_folder
Full name
vimeo.vimeo_update_folder
ParameterTypeRequiredDescription
No parameters.
list_channels Read

List public Vimeo channels. Returns paginated results with channel metadata.

Lua path
app.integrations.vimeo.list_channels
Full name
vimeo.vimeo_list_channels
ParameterTypeRequiredDescription
page integer no Page number (1-based, default: 1).
per_page integer no Number of channels per page (default: 25).
list_categories Read

List Vimeo categories.

Lua path
app.integrations.vimeo.list_categories
Full name
vimeo.vimeo_list_categories
ParameterTypeRequiredDescription
No parameters.
get_current_user Read

Get the authenticated Vimeo user's profile information. Returns name, bio, location, account type, upload quota, and profile pictures.

Lua path
app.integrations.vimeo.get_current_user
Full name
vimeo.vimeo_get_current_user
ParameterTypeRequiredDescription
No parameters.
api_get Read

Call a documented GET endpoint.

Lua path
app.integrations.vimeo.api_get
Full name
vimeo.vimeo_api_get
ParameterTypeRequiredDescription
No parameters.
api_post Write

Call a documented POST endpoint.

Lua path
app.integrations.vimeo.api_post
Full name
vimeo.vimeo_api_post
ParameterTypeRequiredDescription
No parameters.
api_patch Write

Call a documented PATCH endpoint.

Lua path
app.integrations.vimeo.api_patch
Full name
vimeo.vimeo_api_patch
ParameterTypeRequiredDescription
No parameters.
api_delete Write

Call a documented DELETE endpoint.

Lua path
app.integrations.vimeo.api_delete
Full name
vimeo.vimeo_api_delete
ParameterTypeRequiredDescription
No parameters.