> **Building with AI coding agents?** If you're using an AI coding agent, install the official Scalekit plugin. It gives your agent full awareness of the Scalekit API — reducing hallucinations and enabling faster, more accurate code generation.
>
> - **Claude Code**: `/plugin marketplace add scalekit-inc/claude-code-authstack` then `/plugin install <auth-type>@scalekit-auth-stack`
> - **GitHub Copilot CLI**: `copilot plugin marketplace add scalekit-inc/github-copilot-authstack` then `copilot plugin install <auth-type>@scalekit-auth-stack`
> - **Codex**: run the bash installer, restart, then open Plugin Directory and enable `<auth-type>`
> - **Skills CLI** (Windsurf, Cline, 40+ agents): `npx skills add scalekit-inc/skills --list` then `--skill <skill-name>`
>
> `<auth-type>` / `<skill-name>`: `agentkit`, `full-stack-auth`, `mcp-auth`, `modular-sso`, `modular-scim` — [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Vimeo

**Authentication:** OAuth 2.0
**Categories:** Communication
## What you can do

Connect this agent connector to let your agent:

- **List watchlater, showcase videos, following** — Retrieve all videos in the authenticated user's Vimeo Watch Later queue
- **Add showcase video, folder video, watchlater** — Add a video to a Vimeo showcase
- **Follow user** — Follow a Vimeo user on behalf of the authenticated user
- **Create folder, showcase, webhook** — Create a new folder (project) in the authenticated user's Vimeo account for organizing private video content
- **Delete video, webhook** — Permanently delete a Vimeo video
- **Get video, me, user** — Retrieve detailed information about a specific Vimeo video including metadata, privacy settings, stats, and embed details

## Authentication

This connector uses **OAuth 2.0**. Scalekit acts as the OAuth client: it redirects your user to Vimeo, obtains an access token, and automatically refreshes it before it expires. Your agent code never handles tokens directly — you only pass a `connectionName` and a user `identifier`.

You supply your Vimeo **Connected App** credentials (Client ID + Secret) once per environment in the Scalekit dashboard.

Before calling this connector from your code, create the Vimeo connection in **AgentKit** > **Connections** and copy the exact **Connection name** from that connection into your code. The value in code must match the dashboard exactly.

## Set up the connector

Register your Vimeo app credentials with Scalekit so it can manage the OAuth 2.0 authentication flow and token lifecycle on your behalf. You'll need a Client Identifier and Client Secret from the [Vimeo Developer Portal](https://developer.vimeo.com/).

1. ### Create a Vimeo app

   - Go to the [Vimeo Developer Portal](https://developer.vimeo.com/) and click **Create an app** in the top-right corner.

   - Fill in the required fields:
     - **App name** — enter a name for your app (e.g., `Scalekit-Auth`)
     - **Brief description** — describe what the app does
     - Select **Yes** under "Will people besides you be able to access your app?" to allow other Vimeo accounts to authenticate
     - Check the box to agree to the Vimeo API License Agreement and Terms of Service

     <img src={createAppFilledImg.src} alt="Vimeo Create a new app form filled with Scalekit-Auth details" width="540" />

   - Click **Create App**.

2. ### Copy your Client Identifier

   After creating the app, you are taken to the app's settings page. Copy the **Client identifier** — you'll need it in a later step.

   <img src={appClientIdentifierImg.src} alt="Vimeo app settings page showing the Client Identifier" width="540" />

3. ### Create a connection in Scalekit

   - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** > **Connections** > **Create Connection**. Search for **Vimeo** and click **Create**.

     <img src={scalekitSearchVimeoImg.src} alt="Searching for Vimeo in Scalekit Create Connection" width="540" />

   - Copy the **Redirect URI** from the connection configuration panel. It looks like `https:///sso/v1/oauth//callback`.

     <img src={configureVimeoConnectionImg.src} alt="Configure Vimeo Connection panel showing Redirect URI, Client ID, Client Secret, and Scopes fields" width="540" />

4. ### Configure the callback URL in Vimeo

   - Back in the [Vimeo Developer Portal](https://developer.vimeo.com/), open your app and click **Edit settings**.

   - Paste the Scalekit Redirect URI into the **App URL** field and the **Your callback URLs** field.

   - Click **Add secret** under **Client secrets** to generate a new client secret. Copy the secret value.

     <img src={vimeoAppCallbackUrlImg.src} alt="Vimeo app settings with callback URL and client secret configured" width="540" />

   - Click **Update** to save.

5. ### Add credentials in Scalekit

   - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** > **Connections** and open the Vimeo connection you created.

   - Enter your credentials:
     - **Client ID** — the Client Identifier from your Vimeo app
     - **Client Secret** — the secret you generated in step 4
     - **Scopes** — select the scopes your app needs (e.g., `create`, `delete`, `edit`, `interact`, `private`, `public`)

   - Click **Save**.

## Tool list

Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first.

## Tool list

### `vimeo_categories_list`

Retrieve all top-level Vimeo content categories (e.g., Animation, Documentary, Music). Requires public scope.

Parameters:

- `direction` (`string`, optional): Sort direction
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of categories per page
- `sort` (`string`, optional): Sort order for categories

### `vimeo_channel_videos_list`

Retrieve all videos in a specific Vimeo channel. Requires public scope.

Parameters:

- `channel_id` (`string`, required): Vimeo channel ID or slug
- `direction` (`string`, optional): Sort direction
- `filter` (`string`, optional): Filter videos by type
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of videos per page
- `query` (`string`, optional): Search query to filter channel videos
- `sort` (`string`, optional): Sort order for videos

### `vimeo_channels_list`

Retrieve a list of Vimeo channels. Can list all public channels or channels the authenticated user follows/manages. Requires public scope.

Parameters:

- `direction` (`string`, optional): Sort direction
- `filter` (`string`, optional): Filter channels by type
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of channels per page
- `query` (`string`, optional): Search query to filter channels by name
- `sort` (`string`, optional): Sort order for channels

### `vimeo_folder_create`

Create a new folder (project) in the authenticated user's Vimeo account for organizing private video content. Requires create scope.

Parameters:

- `name` (`string`, required): Name of the new folder
- `parent_folder_uri` (`string`, optional): URI of the parent folder to nest this folder inside

### `vimeo_folder_video_add`

Move or add a video into a Vimeo folder (project). Requires edit scope.

Parameters:

- `folder_id` (`string`, required): Folder (project) ID to add the video to
- `video_id` (`string`, required): Video ID to add to the folder

### `vimeo_folder_videos_list`

Retrieve all videos inside a specific Vimeo folder (project). Requires private scope.

Parameters:

- `folder_id` (`string`, required): Folder (project) ID to list videos from
- `direction` (`string`, optional): Sort direction
- `filter` (`string`, optional): Filter videos by type
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of videos per page
- `query` (`string`, optional): Search query to filter videos by name
- `sort` (`string`, optional): Sort order for videos

### `vimeo_folders_list`

Retrieve all folders (projects) owned by the authenticated Vimeo user for organizing private video libraries. Requires private scope.

Parameters:

- `direction` (`string`, optional): Sort direction
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of folders per page
- `query` (`string`, optional): Search query to filter folders by name
- `sort` (`string`, optional): Sort order for folders

### `vimeo_following_list`

Retrieve a list of Vimeo users that the authenticated user is following. Requires private scope.

Parameters:

- `direction` (`string`, optional): Sort direction
- `filter` (`string`, optional): Filter following list by type
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of users per page
- `query` (`string`, optional): Search query to filter following list by name
- `sort` (`string`, optional): Sort order

### `vimeo_liked_videos_list`

Retrieve all videos liked by the authenticated Vimeo user. Requires private scope.

Parameters:

- `direction` (`string`, optional): Sort direction
- `filter` (`string`, optional): Filter liked videos by type
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of videos per page
- `sort` (`string`, optional): Sort order for liked videos

### `vimeo_me_get`

Retrieve the authenticated Vimeo user's profile including account type, bio, location, stats, and links. Requires a valid Vimeo OAuth2 connection.

### `vimeo_my_videos_list`

Retrieve all videos uploaded by the authenticated Vimeo user. Supports filtering, sorting, and pagination. Requires private scope.

Parameters:

- `containing_uri` (`string`, optional): Filter videos that contain a specific URI
- `direction` (`string`, optional): Sort direction
- `filter` (`string`, optional): Filter videos by type
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of videos per page
- `query` (`string`, optional): Search query to filter videos by title or description
- `sort` (`string`, optional): Sort order for video results

### `vimeo_showcase_create`

Create a new showcase (album) on Vimeo for organizing videos. Supports privacy, password protection, branding, and embed settings. Requires create scope.

Parameters:

- `name` (`string`, required): Name/title of the showcase
- `brand_color` (`string`, optional): Hex color code for showcase branding
- `description` (`string`, optional): Description of the showcase
- `hide_nav` (`boolean`, optional): Whether to hide Vimeo navigation in the showcase
- `hide_upcoming` (`boolean`, optional): Whether to hide upcoming live events in the showcase
- `password` (`string`, optional): Password for the showcase when privacy is set to 'password'
- `privacy` (`string`, optional): Privacy setting for the showcase
- `review_mode` (`boolean`, optional): Enable review mode for the showcase
- `sort` (`string`, optional): Default sort for videos in the showcase

### `vimeo_showcase_video_add`

Add a video to a Vimeo showcase. Requires edit scope and ownership of both the showcase and the video.

Parameters:

- `album_id` (`string`, required): Showcase (album) ID to add the video to
- `video_id` (`string`, required): Video ID to add to the showcase

### `vimeo_showcase_videos_list`

Retrieve all videos in a specific Vimeo showcase. Requires private scope.

Parameters:

- `album_id` (`string`, required): Showcase (album) ID
- `direction` (`string`, optional): Sort direction
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of videos per page
- `sort` (`string`, optional): Sort order for videos

### `vimeo_showcases_list`

Retrieve all showcases (formerly albums) owned by the authenticated Vimeo user. Requires private scope.

Parameters:

- `direction` (`string`, optional): Sort direction
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of showcases per page
- `query` (`string`, optional): Search query to filter showcases by name
- `sort` (`string`, optional): Sort order for showcases

### `vimeo_user_follow`

Follow a Vimeo user on behalf of the authenticated user. Requires interact scope.

Parameters:

- `follow_user_id` (`string`, required): Vimeo user ID to follow

### `vimeo_user_get`

Retrieve public profile information for any Vimeo user by their user ID or username. Requires public scope.

Parameters:

- `user_id` (`string`, required): Vimeo user ID or username

### `vimeo_user_videos_list`

Retrieve all public videos uploaded by a specific Vimeo user. Supports filtering and pagination. Requires public scope.

Parameters:

- `user_id` (`string`, required): Vimeo user ID or username
- `direction` (`string`, optional): Sort direction
- `filter` (`string`, optional): Filter results by video type
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of videos per page
- `query` (`string`, optional): Search query to filter videos
- `sort` (`string`, optional): Sort order for video results

### `vimeo_video_comment_add`

Post a comment on a Vimeo video on behalf of the authenticated user. Requires interact scope.

Parameters:

- `text` (`string`, required): Comment text to post
- `video_id` (`string`, required): Vimeo video ID to comment on

### `vimeo_video_comments_list`

Retrieve all comments posted on a specific Vimeo video. Requires public scope.

Parameters:

- `video_id` (`string`, required): Vimeo video ID to list comments from
- `direction` (`string`, optional): Sort direction
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of comments per page

### `vimeo_video_delete`

Permanently delete a Vimeo video. This action is irreversible. Requires delete scope and ownership of the video.

Parameters:

- `video_id` (`string`, required): Vimeo video ID to delete

### `vimeo_video_edit`

Update the metadata of an existing Vimeo video including title, description, privacy settings, tags, and content rating. Requires edit scope.

Parameters:

- `video_id` (`string`, required): Vimeo video ID to edit
- `content_rating` (`string`, optional): Content rating of the video
- `description` (`string`, optional): New description for the video
- `license` (`string`, optional): Creative Commons license to apply
- `name` (`string`, optional): New title for the video
- `password` (`string`, optional): Password for the video when privacy view is set to 'password'
- `privacy_add` (`boolean`, optional): Whether users can add the video to their showcases or channels
- `privacy_comments` (`string`, optional): Who can comment on the video
- `privacy_download` (`boolean`, optional): Whether users can download the video
- `privacy_embed` (`string`, optional): Who can embed the video
- `privacy_view` (`string`, optional): Who can view the video

### `vimeo_video_get`

Retrieve detailed information about a specific Vimeo video including metadata, privacy settings, stats, and embed details. Requires a valid Vimeo OAuth2 connection.

Parameters:

- `video_id` (`string`, required): Vimeo video ID

### `vimeo_video_like`

Like a Vimeo video on behalf of the authenticated user. Use PUT /me/likes/{video_id} to like. Requires interact scope.

Parameters:

- `video_id` (`string`, required): Vimeo video ID to like

### `vimeo_video_tags_list`

Retrieve all tags applied to a specific Vimeo video. Requires public scope.

Parameters:

- `video_id` (`string`, required): Vimeo video ID to list tags from

### `vimeo_videos_search`

Search for public videos on Vimeo using keywords and filters. Returns paginated video results with metadata. Requires a valid Vimeo OAuth2 connection with public scope.

Parameters:

- `query` (`string`, required): Search query keywords
- `direction` (`string`, optional): Sort direction for results
- `filter` (`string`, optional): Filter results by video type
- `page` (`integer`, optional): Page number of results to return
- `per_page` (`integer`, optional): Number of results to return per page
- `sort` (`string`, optional): Sort order for search results

### `vimeo_watchlater_add`

Add a video to the authenticated user's Vimeo Watch Later queue. Requires interact scope.

Parameters:

- `video_id` (`string`, required): Vimeo video ID to add to Watch Later

### `vimeo_watchlater_list`

Retrieve all videos in the authenticated user's Vimeo Watch Later queue. Requires private scope.

Parameters:

- `direction` (`string`, optional): Sort direction
- `filter` (`string`, optional): Filter by video type
- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of videos per page
- `sort` (`string`, optional): Sort order for watch later videos

### `vimeo_webhook_create`

Register a new webhook endpoint to receive real-time Vimeo event notifications. Supports events for video uploads, transcoding, privacy changes, and comments. Requires private scope.

Parameters:

- `event_types` (`array`, required): List of event types that will trigger this webhook
- `url` (`string`, required): HTTPS URL that Vimeo will send webhook POST requests to

### `vimeo_webhook_delete`

Delete a registered Vimeo webhook endpoint so it no longer receives event notifications. Requires private scope.

Parameters:

- `webhook_id` (`string`, required): Webhook ID to delete

### `vimeo_webhooks_list`

Retrieve all webhooks registered for the authenticated Vimeo application. Requires private scope.

Parameters:

- `page` (`integer`, optional): Page number of results
- `per_page` (`integer`, optional): Number of webhooks per page


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
