{"files":{"SKILL.md":"---\nname: vimeo-api\ndescription: \"Vimeo API skill. Use when working with Vimeo for root, categories, channels. Covers 328 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Vimeo API\nAPI version: 3.4\n\n## Auth\nBearer bearer | OAuth2\n\n## Base URL\nhttps://api.vimeo.com\n\n## Setup\n1. Set Authorization header with Bearer token\n2. GET / -- get an api specification\n3. POST /channels -- create first channel\n\n## Endpoints\n328 endpoints across 15 groups. See references/api-spec.lap for full details.\n\n### Root\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | / | Get an API specification |\n\n### Categories\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /categories | Get all categories |\n| GET | /categories/{category} | Get a specific category |\n| GET | /categories/{category}/channels | Get all the channels in a category |\n| GET | /categories/{category}/groups | Get all the groups in a category |\n| GET | /categories/{category}/videos | Get all the videos in a category |\n| GET | /categories/{category}/videos/{video_id} | Check for a video in a category |\n\n### Channels\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /channels | Get all channels |\n| POST | /channels | Create a channel |\n| DELETE | /channels/{channel_id} | Delete a channel |\n| GET | /channels/{channel_id} | Get a specific channel |\n| PATCH | /channels/{channel_id} | Edit a channel |\n| GET | /channels/{channel_id}/categories | Get all the categories in a channel |\n| PUT | /channels/{channel_id}/categories | Add a list of categories to a channel |\n| DELETE | /channels/{channel_id}/categories/{category} | Remove a category from a channel |\n| PUT | /channels/{channel_id}/categories/{category} | Categorize a channel |\n| DELETE | /channels/{channel_id}/moderators | Remove a list of channel moderators |\n| GET | /channels/{channel_id}/moderators | Get all the moderators in a channel |\n| PATCH | /channels/{channel_id}/moderators | Replace the moderators of a channel |\n| PUT | /channels/{channel_id}/moderators | Add a list of channel moderators |\n| GET | /channels/{channel_id}/moderators/{user_id} | Get a specific channel moderator |\n| DELETE | /channels/{channel_id}/moderators/{user_id} | Remove a specific channel moderator |\n| PUT | /channels/{channel_id}/moderators/{user_id} | Add a specific channel moderator |\n| GET | /channels/{channel_id}/privacy/users | Get all the users who can view a private channel |\n| PUT | /channels/{channel_id}/privacy/users | Permit a list of users to view a private channel |\n| DELETE | /channels/{channel_id}/privacy/users/{user_id} | Restrict a user from viewing a private channel |\n| PUT | /channels/{channel_id}/privacy/users/{user_id} | Permit a specific user to view a private channel |\n| GET | /channels/{channel_id}/tags | Get all the tags that have been added to a channel |\n| PUT | /channels/{channel_id}/tags | Add a list of tags to a channel |\n| DELETE | /channels/{channel_id}/tags/{word} | Remove a tag from a channel |\n| GET | /channels/{channel_id}/tags/{word} | Check if a tag has been added to a channel |\n| PUT | /channels/{channel_id}/tags/{word} | Add a specific tag to a channel |\n| GET | /channels/{channel_id}/users | Get all the followers of a channel |\n| DELETE | /channels/{channel_id}/videos | Remove a list of videos from a channel |\n| GET | /channels/{channel_id}/videos | Get all the videos in a channel |\n| PUT | /channels/{channel_id}/videos | Add a list of videos to a channel |\n| DELETE | /channels/{channel_id}/videos/{video_id} | Remove a specific video from a channel |\n| GET | /channels/{channel_id}/videos/{video_id} | Get a specific video in a channel |\n| PUT | /channels/{channel_id}/videos/{video_id} | Add a specific video to a channel |\n| GET | /channels/{channel_id}/videos/{video_id}/comments | Get all the comments on a video |\n| POST | /channels/{channel_id}/videos/{video_id}/comments | Add a comment to a video |\n| GET | /channels/{channel_id}/videos/{video_id}/credits | Get all the credited users in a video |\n| POST | /channels/{channel_id}/videos/{video_id}/credits | Credit a user in a video |\n| GET | /channels/{channel_id}/videos/{video_id}/likes | Get all the users who have liked a video |\n| GET | /channels/{channel_id}/videos/{video_id}/pictures | Get all the thumbnails of a video |\n| POST | /channels/{channel_id}/videos/{video_id}/pictures | Add a video thumbnail |\n| GET | /channels/{channel_id}/videos/{video_id}/privacy/users | Get all the users who can view a private video |\n| PUT | /channels/{channel_id}/videos/{video_id}/privacy/users | Permit a list of users to view a private video |\n| GET | /channels/{channel_id}/videos/{video_id}/texttracks | Get all the text tracks of a video |\n| POST | /channels/{channel_id}/videos/{video_id}/texttracks | Add a text track to a video |\n\n### Contentratings\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /contentratings | Get all content ratings |\n\n### Creativecommons\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /creativecommons | Get all Creative Commons licenses |\n\n### Groups\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /groups | Get all groups |\n| POST | /groups | Create a group |\n| DELETE | /groups/{group_id} | Delete a group |\n| GET | /groups/{group_id} | Get a specific group |\n| GET | /groups/{group_id}/users | Get all the members of a group |\n| GET | /groups/{group_id}/videos | Get all the videos in a group |\n| DELETE | /groups/{group_id}/videos/{video_id} | Remove a video from a group |\n| GET | /groups/{group_id}/videos/{video_id} | Get a specific video in a group |\n| PUT | /groups/{group_id}/videos/{video_id} | Add a video to a group |\n\n### Languages\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /languages | Get all languages |\n\n### Me\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /me | Get a user |\n| PATCH | /me | Edit a user |\n| GET | /me/albums | Get all the albums that belong to a user |\n| POST | /me/albums | Create an album |\n| DELETE | /me/albums/{album_id} | Delete an album |\n| GET | /me/albums/{album_id} | Get a specific album |\n| PATCH | /me/albums/{album_id} | Edit an album |\n| GET | /me/albums/{album_id}/videos | Get all the videos in an album |\n| PUT | /me/albums/{album_id}/videos | Replace all the videos in an album |\n| DELETE | /me/albums/{album_id}/videos/{video_id} | Remove a video from an album |\n| GET | /me/albums/{album_id}/videos/{video_id} | Get a specific video in an album |\n| PUT | /me/albums/{album_id}/videos/{video_id} | Add a specific video to an album |\n| POST | /me/albums/{album_id}/videos/{video_id}/set_album_thumbnail | Set a video as the album thumbnail |\n| GET | /me/appearances | Get all the videos in which a user appears |\n| GET | /me/categories | Get all the categories that a user follows |\n| DELETE | /me/categories/{category} | Unsubscribe a user from a category |\n| GET | /me/categories/{category} | Check if a user follows a category |\n| PUT | /me/categories/{category} | Subscribe a user to a single category |\n| GET | /me/channels | Get all the channels to which a user subscribes |\n| DELETE | /me/channels/{channel_id} | Unsubscribe a user from a specific channel |\n| GET | /me/channels/{channel_id} | Check if a user follows a channel |\n| PUT | /me/channels/{channel_id} | Subscribe a user to a specific channel |\n| GET | /me/customlogos | Get all the custom logos that belong to a user |\n| POST | /me/customlogos | Add a custom logo |\n| GET | /me/customlogos/{logo_id} | Get a specific custom logo |\n| GET | /me/feed | Get all the videos in a user's feed |\n| GET | /me/followers | Get all the followers of a user |\n| GET | /me/following | Get all the users that a user is following |\n| POST | /me/following | Follow a list of users |\n| DELETE | /me/following/{follow_user_id} | Unfollow a user |\n| GET | /me/following/{follow_user_id} | Check if a user is following another user |\n| PUT | /me/following/{follow_user_id} | Follow a specific user |\n| GET | /me/groups | Get all the groups that a user has joined |\n| DELETE | /me/groups/{group_id} | Remove a user from a group |\n| PUT | /me/groups/{group_id} | Add a user to a group |\n| GET | /me/groups/{group_id} | Check if a user has joined a group |\n| GET | /me/likes | Get all the videos that a user has liked |\n| DELETE | /me/likes/{video_id} | Cause a user to unlike a video |\n| GET | /me/likes/{video_id} | Check if a user has liked a video |\n| PUT | /me/likes/{video_id} | Cause a user to like a video |\n| GET | /me/ondemand/pages | Get all the On Demand pages of a user |\n| POST | /me/ondemand/pages | Create an On Demand page |\n| GET | /me/ondemand/purchases | Get all the On Demand purchases and rentals that a user has made |\n| GET | /me/ondemand/purchases/{ondemand_id} | Check if a user has made a purchase or rental from an On Demand page |\n| GET | /me/pictures | Get all the pictures that belong to a user |\n| POST | /me/pictures | Add a user picture |\n| DELETE | /me/pictures/{portraitset_id} | Delete a user picture |\n| GET | /me/pictures/{portraitset_id} | Get a specific user picture |\n| PATCH | /me/pictures/{portraitset_id} | Edit a user picture |\n| GET | /me/portfolios | Get all the portfolios that belong to a user |\n| GET | /me/portfolios/{portfolio_id} | Get a specific portfolio |\n| GET | /me/portfolios/{portfolio_id}/videos | Get all the videos in a portfolio |\n| DELETE | /me/portfolios/{portfolio_id}/videos/{video_id} | Remove a video from a portfolio |\n| GET | /me/portfolios/{portfolio_id}/videos/{video_id} | Get a specific video in a portfolio |\n| PUT | /me/portfolios/{portfolio_id}/videos/{video_id} | Add a video to a portfolio |\n| GET | /me/presets | Get all the embed presets that a user has created |\n| GET | /me/presets/{preset_id} | Get a specific embed preset |\n| PATCH | /me/presets/{preset_id} | Edit an embed preset |\n| GET | /me/presets/{preset_id}/videos | Get all the videos that have been added to an embed preset |\n| GET | /me/projects | Get all the projects that belong to a user |\n| POST | /me/projects | Create a project |\n| DELETE | /me/projects/{project_id} | Delete a project |\n| GET | /me/projects/{project_id} | Get a specific project |\n| PATCH | /me/projects/{project_id} | Edit a project |\n| DELETE | /me/projects/{project_id}/videos | Remove a list of videos from a project |\n| GET | /me/projects/{project_id}/videos | Get all the videos in a project |\n| PUT | /me/projects/{project_id}/videos | Add a list of videos to a project |\n| DELETE | /me/projects/{project_id}/videos/{video_id} | Remove a specific video from a project |\n| PUT | /me/projects/{project_id}/videos/{video_id} | Add a specific video to a project |\n| GET | /me/videos | Get all the videos that a user has uploaded |\n| POST | /me/videos | Upload a video |\n| GET | /me/videos/{video_id} | Check if a user owns a video |\n| DELETE | /me/watched/videos | Delete a user's watch history |\n| GET | /me/watched/videos | Get all the videos that a user has watched |\n| DELETE | /me/watched/videos/{video_id} | Delete a specific video from a user's watch history |\n| GET | /me/watchlater | Get all the videos in a user's Watch Later queue |\n| DELETE | /me/watchlater/{video_id} | Remove a video from a user's Watch Later queue |\n| GET | /me/watchlater/{video_id} | Check if a user has added a specific video to their Watch Later queue |\n| PUT | /me/watchlater/{video_id} | Add a video to a user's Watch Later queue |\n\n### Oauth\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /oauth/access_token | Exchange an authorization code for an access token |\n| POST | /oauth/authorize/client | Authorize a client with OAuth |\n| POST | /oauth/authorize/vimeo_oauth1 | Convert OAuth 1 access tokens to OAuth 2 access tokens |\n| GET | /oauth/verify | Verify an OAuth 2 token |\n\n### Ondemand\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /ondemand/genres | Get all On Demand genres |\n| GET | /ondemand/genres/{genre_id} | Get a specific On Demand genre |\n| GET | /ondemand/genres/{genre_id}/pages | Get all the On Demand pages in a genre |\n| GET | /ondemand/genres/{genre_id}/pages/{ondemand_id} | Get a specific On Demand page in a genre |\n| DELETE | /ondemand/pages/{ondemand_id} | Delete a draft of an On Demand page |\n| GET | /ondemand/pages/{ondemand_id} | Get a specific On Demand page |\n| PATCH | /ondemand/pages/{ondemand_id} | Edit an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/backgrounds | Get all the backgrounds of an On Demand page |\n| POST | /ondemand/pages/{ondemand_id}/backgrounds | Add a background to an On Demand page |\n| DELETE | /ondemand/pages/{ondemand_id}/backgrounds/{background_id} | Remove a background from an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/backgrounds/{background_id} | Get a specific background of an On Demand page |\n| PATCH | /ondemand/pages/{ondemand_id}/backgrounds/{background_id} | Edit a background of an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/genres | Get all the genres of an On Demand page |\n| DELETE | /ondemand/pages/{ondemand_id}/genres/{genre_id} | Remove a genre from an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/genres/{genre_id} | Check whether an On Demand page belongs to a genre |\n| PUT | /ondemand/pages/{ondemand_id}/genres/{genre_id} | Add a genre to an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/likes | Get all the users who have liked a video on an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/pictures | Get all the posters of an On Demand page |\n| POST | /ondemand/pages/{ondemand_id}/pictures | Add a poster to an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/pictures/{poster_id} | Get a specific poster of an On Demand page |\n| PATCH | /ondemand/pages/{ondemand_id}/pictures/{poster_id} | Edit a poster of an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/promotions | Get all the promotions on an On Demand page |\n| POST | /ondemand/pages/{ondemand_id}/promotions | Add a promotion to an On Demand page |\n| DELETE | /ondemand/pages/{ondemand_id}/promotions/{promotion_id} | Remove a promotion from an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/promotions/{promotion_id} | Get a specific promotion on an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/promotions/{promotion_id}/codes | Get all the codes of a promotion on an On Demand page |\n| DELETE | /ondemand/pages/{ondemand_id}/regions | Remove a list of regions from an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/regions | Get all the regions of an On Demand page |\n| PUT | /ondemand/pages/{ondemand_id}/regions | Add a list of regions to an On Demand page |\n| DELETE | /ondemand/pages/{ondemand_id}/regions/{country} | Remove a specific region from an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/regions/{country} | Get a specific region of an On Demand page |\n| PUT | /ondemand/pages/{ondemand_id}/regions/{country} | Add a specific region to an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/seasons | Get all the seasons on an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/seasons/{season_id} | Get a specific season on an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/seasons/{season_id}/videos | Get all the videos in a season on an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/videos | Get all the videos on an On Demand page |\n| DELETE | /ondemand/pages/{ondemand_id}/videos/{video_id} | Remove a video from an On Demand page |\n| GET | /ondemand/pages/{ondemand_id}/videos/{video_id} | Get a specific video on an On Demand page |\n| PUT | /ondemand/pages/{ondemand_id}/videos/{video_id} | Add a video to an On Demand page |\n| GET | /ondemand/regions | Get all the On Demand regions |\n| GET | /ondemand/regions/{country} | Get a specific On Demand region |\n\n### Tags\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /tags/{word} | Get a specific tag |\n| GET | /tags/{word}/videos | Get all the videos with a specific tag |\n\n### Tokens\n| Method | Path | Description |\n|--------|------|-------------|\n| DELETE | /tokens | Revoke the current access token |\n\n### Tutorial\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /tutorial | Get started with the Vimeo API |\n\n### Users\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /users | Search for users |\n| GET | /users/{user_id} | Get a user |\n| PATCH | /users/{user_id} | Edit a user |\n| GET | /users/{user_id}/albums | Get all the albums that belong to a user |\n| POST | /users/{user_id}/albums | Create an album |\n| DELETE | /users/{user_id}/albums/{album_id} | Delete an album |\n| GET | /users/{user_id}/albums/{album_id} | Get a specific album |\n| PATCH | /users/{user_id}/albums/{album_id} | Edit an album |\n| GET | /users/{user_id}/albums/{album_id}/custom_thumbnails | Get all the custom upload thumbnails of an album |\n| POST | /users/{user_id}/albums/{album_id}/custom_thumbnails | Add a custom uploaded thumbnail |\n| DELETE | /users/{user_id}/albums/{album_id}/custom_thumbnails/{thumbnail_id} | Remove a custom uploaded album thumbnail |\n| GET | /users/{user_id}/albums/{album_id}/custom_thumbnails/{thumbnail_id} | Get a specific custom uploaded album thumbnail |\n| PATCH | /users/{user_id}/albums/{album_id}/custom_thumbnails/{thumbnail_id} | Replace a custom uploaded album thumbnail |\n| GET | /users/{user_id}/albums/{album_id}/logos | Get all the custom logos of an album |\n| POST | /users/{user_id}/albums/{album_id}/logos | Add a custom album logo |\n| DELETE | /users/{user_id}/albums/{album_id}/logos/{logo_id} | Remove a custom album logo |\n| GET | /users/{user_id}/albums/{album_id}/logos/{logo_id} | Get a specific custom album logo |\n| PATCH | /users/{user_id}/albums/{album_id}/logos/{logo_id} | Replace a custom album logo |\n| GET | /users/{user_id}/albums/{album_id}/videos | Get all the videos in an album |\n| PUT | /users/{user_id}/albums/{album_id}/videos | Replace all the videos in an album |\n| DELETE | /users/{user_id}/albums/{album_id}/videos/{video_id} | Remove a video from an album |\n| GET | /users/{user_id}/albums/{album_id}/videos/{video_id} | Get a specific video in an album |\n| PUT | /users/{user_id}/albums/{album_id}/videos/{video_id} | Add a specific video to an album |\n| POST | /users/{user_id}/albums/{album_id}/videos/{video_id}/set_album_thumbnail | Set a video as the album thumbnail |\n| GET | /users/{user_id}/appearances | Get all the videos in which a user appears |\n| GET | /users/{user_id}/categories | Get all the categories that a user follows |\n| DELETE | /users/{user_id}/categories/{category} | Unsubscribe a user from a category |\n| GET | /users/{user_id}/categories/{category} | Check if a user follows a category |\n| PUT | /users/{user_id}/categories/{category} | Subscribe a user to a single category |\n| GET | /users/{user_id}/channels | Get all the channels to which a user subscribes |\n| DELETE | /users/{user_id}/channels/{channel_id} | Unsubscribe a user from a specific channel |\n| GET | /users/{user_id}/channels/{channel_id} | Check if a user follows a channel |\n| PUT | /users/{user_id}/channels/{channel_id} | Subscribe a user to a specific channel |\n| GET | /users/{user_id}/customlogos | Get all the custom logos that belong to a user |\n| POST | /users/{user_id}/customlogos | Add a custom logo |\n| GET | /users/{user_id}/customlogos/{logo_id} | Get a specific custom logo |\n| GET | /users/{user_id}/feed | Get all the videos in a user's feed |\n| GET | /users/{user_id}/followers | Get all the followers of a user |\n| GET | /users/{user_id}/following | Get all the users that a user is following |\n| POST | /users/{user_id}/following | Follow a list of users |\n| DELETE | /users/{user_id}/following/{follow_user_id} | Unfollow a user |\n| GET | /users/{user_id}/following/{follow_user_id} | Check if a user is following another user |\n| PUT | /users/{user_id}/following/{follow_user_id} | Follow a specific user |\n| GET | /users/{user_id}/groups | Get all the groups that a user has joined |\n| DELETE | /users/{user_id}/groups/{group_id} | Remove a user from a group |\n| PUT | /users/{user_id}/groups/{group_id} | Add a user to a group |\n| GET | /users/{user_id}/groups/{group_id} | Check if a user has joined a group |\n| GET | /users/{user_id}/likes | Get all the videos that a user has liked |\n| DELETE | /users/{user_id}/likes/{video_id} | Cause a user to unlike a video |\n| GET | /users/{user_id}/likes/{video_id} | Check if a user has liked a video |\n| PUT | /users/{user_id}/likes/{video_id} | Cause a user to like a video |\n| GET | /users/{user_id}/ondemand/pages | Get all the On Demand pages of a user |\n| POST | /users/{user_id}/ondemand/pages | Create an On Demand page |\n| GET | /users/{user_id}/ondemand/purchases | Check if a user has made a purchase or rental from an On Demand page |\n| GET | /users/{user_id}/pictures | Get all the pictures that belong to a user |\n| POST | /users/{user_id}/pictures | Add a user picture |\n| DELETE | /users/{user_id}/pictures/{portraitset_id} | Delete a user picture |\n| GET | /users/{user_id}/pictures/{portraitset_id} | Get a specific user picture |\n| PATCH | /users/{user_id}/pictures/{portraitset_id} | Edit a user picture |\n| GET | /users/{user_id}/portfolios | Get all the portfolios that belong to a user |\n| GET | /users/{user_id}/portfolios/{portfolio_id} | Get a specific portfolio |\n| GET | /users/{user_id}/portfolios/{portfolio_id}/videos | Get all the videos in a portfolio |\n| DELETE | /users/{user_id}/portfolios/{portfolio_id}/videos/{video_id} | Remove a video from a portfolio |\n| GET | /users/{user_id}/portfolios/{portfolio_id}/videos/{video_id} | Get a specific video in a portfolio |\n| PUT | /users/{user_id}/portfolios/{portfolio_id}/videos/{video_id} | Add a video to a portfolio |\n| GET | /users/{user_id}/presets | Get all the embed presets that a user has created |\n| GET | /users/{user_id}/presets/{preset_id} | Get a specific embed preset |\n| PATCH | /users/{user_id}/presets/{preset_id} | Edit an embed preset |\n| GET | /users/{user_id}/presets/{preset_id}/videos | Get all the videos that have been added to an embed preset |\n| GET | /users/{user_id}/projects | Get all the projects that belong to a user |\n| POST | /users/{user_id}/projects | Create a project |\n| DELETE | /users/{user_id}/projects/{project_id} | Delete a project |\n| GET | /users/{user_id}/projects/{project_id} | Get a specific project |\n| PATCH | /users/{user_id}/projects/{project_id} | Edit a project |\n| DELETE | /users/{user_id}/projects/{project_id}/videos | Remove a list of videos from a project |\n| GET | /users/{user_id}/projects/{project_id}/videos | Get all the videos in a project |\n| PUT | /users/{user_id}/projects/{project_id}/videos | Add a list of videos to a project |\n| DELETE | /users/{user_id}/projects/{project_id}/videos/{video_id} | Remove a specific video from a project |\n| PUT | /users/{user_id}/projects/{project_id}/videos/{video_id} | Add a specific video to a project |\n| DELETE | /users/{user_id}/uploads/{upload_id} | Complete a user's streaming upload |\n| GET | /users/{user_id}/uploads/{upload_id} | Get a user's upload attempt |\n| GET | /users/{user_id}/videos | Get all the videos that a user has uploaded |\n| POST | /users/{user_id}/videos | Upload a video |\n| GET | /users/{user_id}/videos/{video_id} | Check if a user owns a video |\n| GET | /users/{user_id}/watchlater | Get all the videos in a user's Watch Later queue |\n| DELETE | /users/{user_id}/watchlater/{video_id} | Remove a video from a user's Watch Later queue |\n| GET | /users/{user_id}/watchlater/{video_id} | Check if a user has added a specific video to their Watch Later queue |\n| PUT | /users/{user_id}/watchlater/{video_id} | Add a video to a user's Watch Later queue |\n\n### Videos\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /videos | Search for videos |\n| DELETE | /videos/{video_id} | Delete a video |\n| GET | /videos/{video_id} | Get a specific video |\n| PATCH | /videos/{video_id} | Edit a video |\n| GET | /videos/{video_id}/available_albums | Get all the albums to which a user can add or remove a specific video |\n| GET | /videos/{video_id}/available_channels | Get all the channels to which a user can add or remove a specific video |\n| GET | /videos/{video_id}/categories | Get all the categories to which a video belongs |\n| PUT | /videos/{video_id}/categories | Suggest categories for a video |\n| GET | /videos/{video_id}/comments | Get all the comments on a video |\n| POST | /videos/{video_id}/comments | Add a comment to a video |\n| DELETE | /videos/{video_id}/comments/{comment_id} | Delete a video comment |\n| GET | /videos/{video_id}/comments/{comment_id} | Get a specific video comment |\n| PATCH | /videos/{video_id}/comments/{comment_id} | Edit a video comment |\n| GET | /videos/{video_id}/comments/{comment_id}/replies | Get all the replies to a video comment |\n| POST | /videos/{video_id}/comments/{comment_id}/replies | Add a reply to a video comment |\n| GET | /videos/{video_id}/credits | Get all the credited users in a video |\n| POST | /videos/{video_id}/credits | Credit a user in a video |\n| DELETE | /videos/{video_id}/credits/{credit_id} | Delete the credit for a user in a video |\n| GET | /videos/{video_id}/credits/{credit_id} | Get a specific credited user in a video |\n| PATCH | /videos/{video_id}/credits/{credit_id} | Edit the credit for a user in a video |\n| GET | /videos/{video_id}/likes | Get all the users who have liked a video |\n| GET | /videos/{video_id}/pictures | Get all the thumbnails of a video |\n| POST | /videos/{video_id}/pictures | Add a video thumbnail |\n| DELETE | /videos/{video_id}/pictures/{picture_id} | Delete a video thumbnail |\n| GET | /videos/{video_id}/pictures/{picture_id} | Get a specific video thumbnail |\n| PATCH | /videos/{video_id}/pictures/{picture_id} | Edit a video thumbnail |\n| DELETE | /videos/{video_id}/presets/{preset_id} | Remove an embed preset from a video |\n| GET | /videos/{video_id}/presets/{preset_id} | Check if an embed preset has been added to a video |\n| PUT | /videos/{video_id}/presets/{preset_id} | Add an embed preset to a video |\n| GET | /videos/{video_id}/privacy/domains | Get all the domains on a video's whitelist |\n| DELETE | /videos/{video_id}/privacy/domains/{domain} | Remove a domain from a video's whitelist |\n| PUT | /videos/{video_id}/privacy/domains/{domain} | Add a domain to a video's whitelist |\n| GET | /videos/{video_id}/privacy/users | Get all the users who can view a private video |\n| PUT | /videos/{video_id}/privacy/users | Permit a list of users to view a private video |\n| DELETE | /videos/{video_id}/privacy/users/{user_id} | Restrict a user from viewing a private video |\n| PUT | /videos/{video_id}/privacy/users/{user_id} | Permit a specific user to view a private video |\n| GET | /videos/{video_id}/tags | Get all the tags of a video |\n| PUT | /videos/{video_id}/tags | Add a list of tags to a video |\n| DELETE | /videos/{video_id}/tags/{word} | Remove a tag from a video |\n| GET | /videos/{video_id}/tags/{word} | Check if a tag has been added to a video |\n| PUT | /videos/{video_id}/tags/{word} | Add a specific tag to a video |\n| GET | /videos/{video_id}/texttracks | Get all the text tracks of a video |\n| POST | /videos/{video_id}/texttracks | Add a text track to a video |\n| DELETE | /videos/{video_id}/texttracks/{texttrack_id} | Delete a text track |\n| GET | /videos/{video_id}/texttracks/{texttrack_id} | Get a specific text track |\n| PATCH | /videos/{video_id}/texttracks/{texttrack_id} | Edit a text track |\n| POST | /videos/{video_id}/timelinethumbnails | Add a new timeline event thumbnail to a video |\n| GET | /videos/{video_id}/timelinethumbnails/{thumbnail_id} | Get a timeline event thumbnail |\n| POST | /videos/{video_id}/versions | Add a version to a video |\n| GET | /videos/{video_id}/videos | Get all the related videos of a video |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all resource?\" -> GET /\n- \"List all categories?\" -> GET /categories\n- \"Get category details?\" -> GET /categories/{category}\n- \"Search channels?\" -> GET /categories/{category}/channels\n- \"Search groups?\" -> GET /categories/{category}/groups\n- \"Search videos?\" -> GET /categories/{category}/videos\n- \"Get video details?\" -> GET /categories/{category}/videos/{video_id}\n- \"Create a channel?\" -> POST /channels\n- \"Delete a channel?\" -> DELETE /channels/{channel_id}\n- \"Get channel details?\" -> GET /channels/{channel_id}\n- \"Partially update a channel?\" -> PATCH /channels/{channel_id}\n- \"Delete a category?\" -> DELETE /channels/{channel_id}/categories/{category}\n- \"Update a category?\" -> PUT /channels/{channel_id}/categories/{category}\n- \"Search moderators?\" -> GET /channels/{channel_id}/moderators\n- \"Get moderator details?\" -> GET /channels/{channel_id}/moderators/{user_id}\n- \"Delete a moderator?\" -> DELETE /channels/{channel_id}/moderators/{user_id}\n- \"Update a moderator?\" -> PUT /channels/{channel_id}/moderators/{user_id}\n- \"List all users?\" -> GET /channels/{channel_id}/privacy/users\n- \"Delete a user?\" -> DELETE /channels/{channel_id}/privacy/users/{user_id}\n- \"Update a user?\" -> PUT /channels/{channel_id}/privacy/users/{user_id}\n- \"List all tags?\" -> GET /channels/{channel_id}/tags\n- \"Delete a tag?\" -> DELETE /channels/{channel_id}/tags/{word}\n- \"Get tag details?\" -> GET /channels/{channel_id}/tags/{word}\n- \"Update a tag?\" -> PUT /channels/{channel_id}/tags/{word}\n- \"Search users?\" -> GET /channels/{channel_id}/users\n- \"Delete a video?\" -> DELETE /channels/{channel_id}/videos/{video_id}\n- \"Update a video?\" -> PUT /channels/{channel_id}/videos/{video_id}\n- \"List all comments?\" -> GET /channels/{channel_id}/videos/{video_id}/comments\n- \"Create a comment?\" -> POST /channels/{channel_id}/videos/{video_id}/comments\n- \"Search credits?\" -> GET /channels/{channel_id}/videos/{video_id}/credits\n- \"Create a credit?\" -> POST /channels/{channel_id}/videos/{video_id}/credits\n- \"List all likes?\" -> GET /channels/{channel_id}/videos/{video_id}/likes\n- \"List all pictures?\" -> GET /channels/{channel_id}/videos/{video_id}/pictures\n- \"Create a picture?\" -> POST /channels/{channel_id}/videos/{video_id}/pictures\n- \"List all texttracks?\" -> GET /channels/{channel_id}/videos/{video_id}/texttracks\n- \"Create a texttrack?\" -> POST /channels/{channel_id}/videos/{video_id}/texttracks\n- \"List all contentratings?\" -> GET /contentratings\n- \"List all creativecommons?\" -> GET /creativecommons\n- \"Create a group?\" -> POST /groups\n- \"Delete a group?\" -> DELETE /groups/{group_id}\n- \"Get group details?\" -> GET /groups/{group_id}\n- \"List all languages?\" -> GET /languages\n- \"List all me?\" -> GET /me\n- \"Search albums?\" -> GET /me/albums\n- \"Create a album?\" -> POST /me/albums\n- \"Delete a album?\" -> DELETE /me/albums/{album_id}\n- \"Get album details?\" -> GET /me/albums/{album_id}\n- \"Partially update a album?\" -> PATCH /me/albums/{album_id}\n- \"Create a set_album_thumbnail?\" -> POST /me/albums/{album_id}/videos/{video_id}/set_album_thumbnail\n- \"Search appearances?\" -> GET /me/appearances\n- \"Update a channel?\" -> PUT /me/channels/{channel_id}\n- \"List all customlogos?\" -> GET /me/customlogos\n- \"Create a customlogo?\" -> POST /me/customlogos\n- \"Get customlogo details?\" -> GET /me/customlogos/{logo_id}\n- \"List all feed?\" -> GET /me/feed\n- \"Search followers?\" -> GET /me/followers\n- \"Search following?\" -> GET /me/following\n- \"Create a following?\" -> POST /me/following\n- \"Delete a following?\" -> DELETE /me/following/{follow_user_id}\n- \"Get following details?\" -> GET /me/following/{follow_user_id}\n- \"Update a following?\" -> PUT /me/following/{follow_user_id}\n- \"Update a group?\" -> PUT /me/groups/{group_id}\n- \"Search likes?\" -> GET /me/likes\n- \"Delete a like?\" -> DELETE /me/likes/{video_id}\n- \"Get like details?\" -> GET /me/likes/{video_id}\n- \"Update a like?\" -> PUT /me/likes/{video_id}\n- \"List all pages?\" -> GET /me/ondemand/pages\n- \"Create a page?\" -> POST /me/ondemand/pages\n- \"List all purchases?\" -> GET /me/ondemand/purchases\n- \"Get purchase details?\" -> GET /me/ondemand/purchases/{ondemand_id}\n- \"Delete a picture?\" -> DELETE /me/pictures/{portraitset_id}\n- \"Get picture details?\" -> GET /me/pictures/{portraitset_id}\n- \"Partially update a picture?\" -> PATCH /me/pictures/{portraitset_id}\n- \"Search portfolios?\" -> GET /me/portfolios\n- \"Get portfolio details?\" -> GET /me/portfolios/{portfolio_id}\n- \"List all videos?\" -> GET /me/portfolios/{portfolio_id}/videos\n- \"List all presets?\" -> GET /me/presets\n- \"Get preset details?\" -> GET /me/presets/{preset_id}\n- \"Partially update a preset?\" -> PATCH /me/presets/{preset_id}\n- \"List all projects?\" -> GET /me/projects\n- \"Create a project?\" -> POST /me/projects\n- \"Delete a project?\" -> DELETE /me/projects/{project_id}\n- \"Get project details?\" -> GET /me/projects/{project_id}\n- \"Partially update a project?\" -> PATCH /me/projects/{project_id}\n- \"Create a video?\" -> POST /me/videos\n- \"Search watchlater?\" -> GET /me/watchlater\n- \"Delete a watchlater?\" -> DELETE /me/watchlater/{video_id}\n- \"Get watchlater details?\" -> GET /me/watchlater/{video_id}\n- \"Update a watchlater?\" -> PUT /me/watchlater/{video_id}\n- \"Create a access_token?\" -> POST /oauth/access_token\n- \"Create a client?\" -> POST /oauth/authorize/client\n- \"Create a vimeo_oauth1?\" -> POST /oauth/authorize/vimeo_oauth1\n- \"List all verify?\" -> GET /oauth/verify\n- \"List all genres?\" -> GET /ondemand/genres\n- \"Get genre details?\" -> GET /ondemand/genres/{genre_id}\n- \"Search pages?\" -> GET /ondemand/genres/{genre_id}/pages\n- \"Get page details?\" -> GET /ondemand/genres/{genre_id}/pages/{ondemand_id}\n- \"Delete a page?\" -> DELETE /ondemand/pages/{ondemand_id}\n- \"Partially update a page?\" -> PATCH /ondemand/pages/{ondemand_id}\n- \"List all backgrounds?\" -> GET /ondemand/pages/{ondemand_id}/backgrounds\n- \"Create a background?\" -> POST /ondemand/pages/{ondemand_id}/backgrounds\n- \"Delete a background?\" -> DELETE /ondemand/pages/{ondemand_id}/backgrounds/{background_id}\n- \"Get background details?\" -> GET /ondemand/pages/{ondemand_id}/backgrounds/{background_id}\n- \"Partially update a background?\" -> PATCH /ondemand/pages/{ondemand_id}/backgrounds/{background_id}\n- \"Delete a genre?\" -> DELETE /ondemand/pages/{ondemand_id}/genres/{genre_id}\n- \"Update a genre?\" -> PUT /ondemand/pages/{ondemand_id}/genres/{genre_id}\n- \"List all promotions?\" -> GET /ondemand/pages/{ondemand_id}/promotions\n- \"Create a promotion?\" -> POST /ondemand/pages/{ondemand_id}/promotions\n- \"Delete a promotion?\" -> DELETE /ondemand/pages/{ondemand_id}/promotions/{promotion_id}\n- \"Get promotion details?\" -> GET /ondemand/pages/{ondemand_id}/promotions/{promotion_id}\n- \"List all codes?\" -> GET /ondemand/pages/{ondemand_id}/promotions/{promotion_id}/codes\n- \"List all regions?\" -> GET /ondemand/pages/{ondemand_id}/regions\n- \"Delete a region?\" -> DELETE /ondemand/pages/{ondemand_id}/regions/{country}\n- \"Get region details?\" -> GET /ondemand/pages/{ondemand_id}/regions/{country}\n- \"Update a region?\" -> PUT /ondemand/pages/{ondemand_id}/regions/{country}\n- \"List all seasons?\" -> GET /ondemand/pages/{ondemand_id}/seasons\n- \"Get season details?\" -> GET /ondemand/pages/{ondemand_id}/seasons/{season_id}\n- \"List all tutorial?\" -> GET /tutorial\n- \"Get user details?\" -> GET /users/{user_id}\n- \"Partially update a user?\" -> PATCH /users/{user_id}\n- \"List all custom_thumbnails?\" -> GET /users/{user_id}/albums/{album_id}/custom_thumbnails\n- \"Create a custom_thumbnail?\" -> POST /users/{user_id}/albums/{album_id}/custom_thumbnails\n- \"Delete a custom_thumbnail?\" -> DELETE /users/{user_id}/albums/{album_id}/custom_thumbnails/{thumbnail_id}\n- \"Get custom_thumbnail details?\" -> GET /users/{user_id}/albums/{album_id}/custom_thumbnails/{thumbnail_id}\n- \"Partially update a custom_thumbnail?\" -> PATCH /users/{user_id}/albums/{album_id}/custom_thumbnails/{thumbnail_id}\n- \"List all logos?\" -> GET /users/{user_id}/albums/{album_id}/logos\n- \"Create a logo?\" -> POST /users/{user_id}/albums/{album_id}/logos\n- \"Delete a logo?\" -> DELETE /users/{user_id}/albums/{album_id}/logos/{logo_id}\n- \"Get logo details?\" -> GET /users/{user_id}/albums/{album_id}/logos/{logo_id}\n- \"Partially update a logo?\" -> PATCH /users/{user_id}/albums/{album_id}/logos/{logo_id}\n- \"Delete a upload?\" -> DELETE /users/{user_id}/uploads/{upload_id}\n- \"Get upload details?\" -> GET /users/{user_id}/uploads/{upload_id}\n- \"Partially update a video?\" -> PATCH /videos/{video_id}\n- \"List all available_albums?\" -> GET /videos/{video_id}/available_albums\n- \"List all available_channels?\" -> GET /videos/{video_id}/available_channels\n- \"Delete a comment?\" -> DELETE /videos/{video_id}/comments/{comment_id}\n- \"Get comment details?\" -> GET /videos/{video_id}/comments/{comment_id}\n- \"Partially update a comment?\" -> PATCH /videos/{video_id}/comments/{comment_id}\n- \"List all replies?\" -> GET /videos/{video_id}/comments/{comment_id}/replies\n- \"Create a reply?\" -> POST /videos/{video_id}/comments/{comment_id}/replies\n- \"Delete a credit?\" -> DELETE /videos/{video_id}/credits/{credit_id}\n- \"Get credit details?\" -> GET /videos/{video_id}/credits/{credit_id}\n- \"Partially update a credit?\" -> PATCH /videos/{video_id}/credits/{credit_id}\n- \"Delete a preset?\" -> DELETE /videos/{video_id}/presets/{preset_id}\n- \"Update a preset?\" -> PUT /videos/{video_id}/presets/{preset_id}\n- \"List all domains?\" -> GET /videos/{video_id}/privacy/domains\n- \"Delete a domain?\" -> DELETE /videos/{video_id}/privacy/domains/{domain}\n- \"Update a domain?\" -> PUT /videos/{video_id}/privacy/domains/{domain}\n- \"Delete a texttrack?\" -> DELETE /videos/{video_id}/texttracks/{texttrack_id}\n- \"Get texttrack details?\" -> GET /videos/{video_id}/texttracks/{texttrack_id}\n- \"Partially update a texttrack?\" -> PATCH /videos/{video_id}/texttracks/{texttrack_id}\n- \"Create a timelinethumbnail?\" -> POST /videos/{video_id}/timelinethumbnails\n- \"Get timelinethumbnail details?\" -> GET /videos/{video_id}/timelinethumbnails/{thumbnail_id}\n- \"Create a version?\" -> POST /videos/{video_id}/versions\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Vimeo API\n@base https://api.vimeo.com\n@version 3.4\n@auth Bearer bearer | OAuth2\n@endpoints 328\n@hint download_for_search\n@toc root(1), categories(6), channels(43), contentratings(1), creativecommons(1), groups(9), languages(1), me(79), oauth(4), ondemand(41), tags(2), tokens(1), tutorial(1), users(88), videos(50)\n\n@group root\n@endpoint GET /\n@desc Get an API specification\n@optional {openapi: bool # Return an OpenAPI specification.}\n@returns(200) Standard request.\n\n@endgroup\n\n@group categories\n@endpoint GET /categories\n@desc Get all categories\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(last_video_featured_time/name) # The way to sort the results.}\n@returns(200) The categories were returned.\n\n@endpoint GET /categories/{category}\n@desc Get a specific category\n@required {category: str # The name of the category.}\n@returns(200) The category was returned.\n@errors {404: No such category exists.}\n\n@endpoint GET /categories/{category}/channels\n@desc Get all the channels in a category\n@required {category: str # The name of the category.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/followers/videos) # The way to sort the results.}\n@returns(200) The channels were returned.\n@errors {404: No such category exists.}\n\n@endpoint GET /categories/{category}/groups\n@desc Get all the groups in a category\n@required {category: str # The name of the category.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/members/videos) # The way to sort the results.}\n@returns(200) The groups were returned.\n@errors {404: No such category exists.}\n\n@endpoint GET /categories/{category}/videos\n@desc Get all the videos in a category\n@required {category: str # The name of the category.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str(conditional_featured/embeddable) # The attribute by which to filter the results.  Option descriptions:  * `conditional_featured` - Featured (promoted) videos, filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/duration/featured/likes/plays/relevant) # The way to sort the results.}\n@returns(200) The videos were returned.\n@errors {404: No such category exists.}\n\n@endpoint GET /categories/{category}/videos/{video_id}\n@desc Check for a video in a category\n@required {category: str # The name of the category., video_id: num # The ID of the video.}\n@returns(200) The video belongs to the category.\n@errors {404: No such category exists, or the video doesn't belong to it.}\n\n@endgroup\n\n@group channels\n@endpoint GET /channels\n@desc Get all channels\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/followers/relevant/videos) # The way to sort the results.  Option descriptions:  * `relevant` - Relevant sorting is available only for search queries.}\n@returns(200) The channels were returned.\n@errors {400: The relevant sort has no search query.}\n\n@endpoint POST /channels\n@desc Create a channel\n@returns(200) The channel was created.\n@errors {400: A parameter is invalid., 403: The authenticated user can't create a channel.}\n\n@endpoint DELETE /channels/{channel_id}\n@desc Delete a channel\n@required {channel_id: num # The ID of the channel.}\n@returns(204) The channel was deleted.\n@errors {403: The authenticated user doesn't own this channel.}\n\n@endpoint GET /channels/{channel_id}\n@desc Get a specific channel\n@required {channel_id: num # The ID of the channel.}\n@returns(200) The channel was returned.\n\n@endpoint PATCH /channels/{channel_id}\n@desc Edit a channel\n@required {channel_id: num # The ID of the channel.}\n@returns(200) The channel was edited.\n@errors {400: A parameter is invalid.}\n\n@endpoint GET /channels/{channel_id}/categories\n@desc Get all the categories in a channel\n@required {channel_id: num # The ID of the channel.}\n@returns(200) The categories were returned.\n@errors {404: No such channel exists.}\n\n@endpoint PUT /channels/{channel_id}/categories\n@desc Add a list of categories to a channel\n@required {channel_id: num # The ID of the channel., channels: [str] # The array of category URIs to add.}\n@returns(204) The categories were added.\n@errors {400: * Error code 2205: There was no request body, or the request body is malformed. * Error code 2204: You exceeded the maximum number of channel categories., 401: Error code 8003: The user credentials are invalid., 403: Error code 3200: The authenticated user can't add categories to the channel., 404: No such channel exists.}\n\n@endpoint DELETE /channels/{channel_id}/categories/{category}\n@desc Remove a category from a channel\n@required {category: str # The name of the category., channel_id: num # The ID of the channel.}\n@returns(204) The channel was removed.\n@errors {401: Error code 8003: The user credentials are invalid., 403: Error code 3200: The authenticated user doesn't own the channel or isn't a channel moderator., 404: No such channel or category exists.}\n\n@endpoint PUT /channels/{channel_id}/categories/{category}\n@desc Categorize a channel\n@required {category: str # The name of the category., channel_id: num # The ID of the channel.}\n@returns(204) The channel was categorized.\n@errors {400: Error code 2204: You exceeded the maximum number of channel categories., 401: Error code 8003: The user credentials are invalid., 403: Error code 3200: The authenticated user doesn't own the channel or isn't a channel moderator., 404: No such channel or category exists.}\n\n@endpoint DELETE /channels/{channel_id}/moderators\n@desc Remove a list of channel moderators\n@required {channel_id: num # The ID of the channel.}\n@returns(204) The moderators were removed.\n@errors {403: The authenticated user doesn't own the channel, the user isn't a moderator of the channel, or you tried to remove the owner of the channel., 404: No such channel exists, or no such user exists.}\n\n@endpoint GET /channels/{channel_id}/moderators\n@desc Get all the moderators in a channel\n@required {channel_id: num # The ID of the channel.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The moderators were returned.\n\n@endpoint PATCH /channels/{channel_id}/moderators\n@desc Replace the moderators of a channel\n@required {channel_id: num # The ID of the channel., user_uri: str # The URI of the user to add as a moderator.}\n@returns(200) The moderators were replaced.\n@errors {400: Error code 2908: The list contains more than 100 users., 403: The authenticated user owns this channel., 404: No such channel exists.}\n\n@endpoint PUT /channels/{channel_id}/moderators\n@desc Add a list of channel moderators\n@required {channel_id: num # The ID of the channel., user_uri: str # The URI of a user to add as a moderator.}\n@returns(200) The moderators were added.\n@errors {400: Error code 2908: The list contains more than 100 users., 403: The authenticated user doesn't own the channel, a user is already a moderator of the channel, or you tried to add a user that the authenticated user doesn't follow., 404: No such channel exists, or no such user exists.}\n\n@endpoint GET /channels/{channel_id}/moderators/{user_id}\n@desc Get a specific channel moderator\n@required {channel_id: num # The ID of the channel., user_id: num # The ID of the user.}\n@returns(200) The moderator was returned.\n\n@endpoint DELETE /channels/{channel_id}/moderators/{user_id}\n@desc Remove a specific channel moderator\n@required {channel_id: num # The ID of the channel., user_id: num # The ID of the user.}\n@returns(204) The moderator was removed.\n@errors {403: The authenticated user doesn't own the channel, the user isn't a moderator of the channel, or you tried to remove the owner of the channel., 404: No such channel exists, or no such user exists.}\n\n@endpoint PUT /channels/{channel_id}/moderators/{user_id}\n@desc Add a specific channel moderator\n@required {channel_id: num # The ID of the channel., user_id: num # The ID of the user.}\n@errors {403: The authenticated user doesn't own the channel, a user is already a moderator of the channel, or you tried to add a user that the authenticated user doesn't follow., 404: No such channel exists, or no such user exists.}\n\n@endpoint GET /channels/{channel_id}/privacy/users\n@desc Get all the users who can view a private channel\n@required {channel_id: num # The ID of the channel.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The users were returned.\n@errors {401: Error code 8003: The user credentials are invalid., 403: Error code 3200: The authenticated user doesn't own this channel., 404: Error code 2204: You can't add this user to a channel of this type.}\n\n@endpoint PUT /channels/{channel_id}/privacy/users\n@desc Permit a list of users to view a private channel\n@required {channel_id: num # The ID of the channel.}\n@returns(200) The users can now view the private channel.\n@errors {400: * Error code 2205: There was no request body, or the request body is malformed. * Error code 2900: At least one of the specified user accounts doesn't exist., 401: Error code 8003: The user credentials are invalid., 403: Error code 3200: The authenticated user doesn't own this channel., 404: Error code 2204: You can't add one or more of these users to a channel of this type.}\n\n@endpoint DELETE /channels/{channel_id}/privacy/users/{user_id}\n@desc Restrict a user from viewing a private channel\n@required {channel_id: num # The ID of the channel., user_id: num # The ID of the user.}\n@returns(204) The user can no longer view the private channel.\n@errors {401: Error code 8003: The user credentials are invalid., 403: Error code 3200: The authenticated user doesn't own this channel., 404: Error code 2204: You can't add this user to a channel of this type.}\n\n@endpoint PUT /channels/{channel_id}/privacy/users/{user_id}\n@desc Permit a specific user to view a private channel\n@required {channel_id: num # The ID of the channel., user_id: num # The ID of the user.}\n@returns(200) The user can now view the private channel.\n@errors {401: Error code 8003: The user credentials are invalid., 403: Error code 3200: The authenticated user doesn't own this channel., 404: Error code 2204: You can't add this user to a channel of this type.}\n\n@endpoint GET /channels/{channel_id}/tags\n@desc Get all the tags that have been added to a channel\n@required {channel_id: num # The ID of the channel.}\n@returns(200) The tags were returned.\n@errors {400: No such channel exists.}\n\n@endpoint PUT /channels/{channel_id}/tags\n@desc Add a list of tags to a channel\n@required {channel_id: num # The ID of the channel.}\n@returns(200) The tags were added.\n@errors {400: * No such channel exists, or a parameter is invalid. * Error code 2501: You tried to add more than 20 tags to the channel. * Error code 2205: There was no request body, or the request body is malformed., 401: Error code 8003: The user credentials are invalid., 403: Error code 3200: The authenticated user can't add tags to this channel.}\n\n@endpoint DELETE /channels/{channel_id}/tags/{word}\n@desc Remove a tag from a channel\n@required {channel_id: num # The ID of the channel., word: str # The word to use as the tag.}\n@returns(204) The tag was removed.\n@errors {400: The tag is invalid, or a parameter is invalid., 401: Error code 8003: The user credentials are invalid., 403: Error code 3200: The authenticated user can't remove tags from this channel.}\n\n@endpoint GET /channels/{channel_id}/tags/{word}\n@desc Check if a tag has been added to a channel\n@required {channel_id: num # The ID of the channel., word: str # The word to use as the tag.}\n@returns(204) The tag has been added to the channel.\n@errors {400: No such tag exists., 404: Error code 5000: The tag exists, but the channel isn't tagged by it.}\n\n@endpoint PUT /channels/{channel_id}/tags/{word}\n@desc Add a specific tag to a channel\n@required {channel_id: num # The ID of the channel., word: str # The word to use as the tag.}\n@returns(204) The tag was added.\n@errors {400: * The tag is invalid, or a parameter is invalid. * Error code 2501: The channel has already reached its maximum number of 20 tags., 401: Error code 8003: The user credentials are invalid., 403: Error code 3200: The authenticated user can't add tags to this channel.}\n\n@endpoint GET /channels/{channel_id}/users\n@desc Get all the followers of a channel\n@required {channel_id: num # The ID of the channel., filter: str # The attribute by which to filter the results.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The followers were returned.\n@errors {404: No such channel exists.}\n\n@endpoint DELETE /channels/{channel_id}/videos\n@desc Remove a list of videos from a channel\n@required {channel_id: num # The ID of the channel., video_uri: str # The URI of a video to remove.}\n@returns(204) {categories: [map], content_rating: [str], context: map{action: str, resource: map?, resource_type: str}, created_time: str, description: str?, duration: num, embed: any, height: num, language: str?, last_user_action_event_date: str?, license: str, link: str, metadata: map{connections: map{available_albums: map{options: [str], total: num, uri: str}, available_channels: map{options: [str], total: num, uri: str}, comments: map{options: [str], total: num, uri: str}, credits: map?{options: [str], total: num, uri: str}, likes: map{options: [str], total: num, uri: str}, ondemand: map{options: [str], resource_key: str, uri: str}, pictures: map{options: [str], total: num, uri: str}, playback: map{options: [str], uri: str}, recommendations: map?{options: [str], uri: str}, related: map?{options: [str], uri: str}, season: map{name: str, options: [str], uri: str}, texttracks: map{options: [str], total: num, uri: str}, trailer: map{options: [str], resource_key: str, uri: str}, users_with_access: map{options: [str], total: num, uri: str}, versions: map{current_uri: str, options: [str], resource_key: str, total: num, uri: str}}, interactions: map{buy: map?{currency: str?, display_price: str?, download: str, drm: bool, link: str?, price: num?, purchase_time: str?, stream: str, uri: str?}, channel: map?{options: [str], uri: str}, like: map{added: bool, added_time: str, options: [str], uri: str}, rent: map?{currency: str?, display_price: str?, drm: bool, expires_time: str?, link: str?, price: num?, purchase_time: str?, stream: str, uri: str?}, report: map{options: [str], reason: [str], uri: str}, subscribe: map?{drm: bool, expires_time: str, purchase_time: str, stream: str}, watched: map{added: bool, added_time: str, options: [str], uri: str}, watchlater: map{added: bool, added_time: str, options: [str], uri: str}}}, modified_time: str, name: str, parent_folder: any?, password: str, pictures: any, privacy: map{add: bool, comments: str, download: bool, embed: str, view: str}, release_time: str, resource_key: str, spatial: map{director_timeline: [map], field_of_view: num?, projection: str?, stereo_format: str?}, stats: map{plays: num?}, status: str?, tags: [map], transcode: map?{status: str}, type: str, upload: map?{approach: str, complete_uri: str, form: str, link: str, redirect_url: str, size: num, status: str, upload_link: str}, uri: str, user: any?, width: num} # The videos were removed.\n@errors {403: The authenticated user isn't a moderator of this channel, or you can't remove this video from the channel., 404: No such channel exists, or no such user exists.}\n\n@endpoint GET /channels/{channel_id}/videos\n@desc Get all the videos in a channel\n@required {channel_id: num # The ID of the channel.}\n@optional {containing_uri: str # The page that contains the video URI., direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(added/alphabetical/comments/date/default/duration/likes/manual/modified_time/plays) # The way to sort the results.}\n@returns(200) The videos were returned.\n@errors {304: No videos have been added to this channel since the given `If-Modified-Since` header., 400: The **sort** field is `default`, but the **direction** field has a value., 404: No such channel exists.}\n\n@endpoint PUT /channels/{channel_id}/videos\n@desc Add a list of videos to a channel\n@required {channel_id: num # The ID of the channel., video_uri: str # The URI of a video to add.}\n@returns(200) The videos were added.\n@errors {403: The authenticated user isn't a moderator of the channel, or the video can't be added to the channel., 404: No such channel exists, or no such user exists.}\n\n@endpoint DELETE /channels/{channel_id}/videos/{video_id}\n@desc Remove a specific video from a channel\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@returns(204) The video was removed.\n@errors {403: The authenticated user isn't a moderator of this channel., 404: No such channel exists, or no such video exists.}\n\n@endpoint GET /channels/{channel_id}/videos/{video_id}\n@desc Get a specific video in a channel\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@returns(200) The video was returned.\n@errors {404: No such channel exists.}\n\n@endpoint PUT /channels/{channel_id}/videos/{video_id}\n@desc Add a specific video to a channel\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@returns(204) The video was added.\n@errors {403: The video can't be added to channels, or the authenticated user isn't the moderator of this channel., 404: No such channel exists, or no such video exists.}\n\n@endpoint GET /channels/{channel_id}/videos/{video_id}/comments\n@desc Get all the comments on a video\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The comments were returned.\n\n@endpoint POST /channels/{channel_id}/videos/{video_id}/comments\n@desc Add a comment to a video\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@returns(201) The comment was added.\n@errors {400: Error code 2207: The comment text is missing., 401: Error code 8003: The user credentials are invalid., 403: * Error code 3301: The comment was flagged as spam. * Error code 3411: The authenticated user is unverified. * Error code 3412: The authenticated user can't comment. * Error code 3413: Comments are disabled for this video.}\n\n@endpoint GET /channels/{channel_id}/videos/{video_id}/credits\n@desc Get all the credited users in a video\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The credited users were returned.\n\n@endpoint POST /channels/{channel_id}/videos/{video_id}/credits\n@desc Credit a user in a video\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@returns(201) The credit was added.\n@errors {400: * A parameter is invalid. * The authenticated user has an unverified email address. * There is a user block between the video owner and the person receiving credit., 403: The authenticated user doesn't own the video.}\n\n@endpoint GET /channels/{channel_id}/videos/{video_id}/likes\n@desc Get all the users who have liked a video\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The users were returned.\n\n@endpoint GET /channels/{channel_id}/videos/{video_id}/pictures\n@desc Get all the thumbnails of a video\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The thumbnails were returned.\n\n@endpoint POST /channels/{channel_id}/videos/{video_id}/pictures\n@desc Add a video thumbnail\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@returns(201) The thumbnail was created.\n\n@endpoint GET /channels/{channel_id}/videos/{video_id}/privacy/users\n@desc Get all the users who can view a private video\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The users were returned.\n@errors {400: No users can view this private video by default.}\n\n@endpoint PUT /channels/{channel_id}/videos/{video_id}/privacy/users\n@desc Permit a list of users to view a private video\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@returns(200) The users can now view the private video.\n\n@endpoint GET /channels/{channel_id}/videos/{video_id}/texttracks\n@desc Get all the text tracks of a video\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@returns(200) The text tracks were returned.\n@errors {404: No such video exists.}\n\n@endpoint POST /channels/{channel_id}/videos/{video_id}/texttracks\n@desc Add a text track to a video\n@required {channel_id: num # The ID of the channel., video_id: num # The ID of the video.}\n@returns(201) The text track was added.\n@errors {403: * The authenticated user can't add the text track. * Error code 2204: The request contains errors.}\n\n@endgroup\n\n@group contentratings\n@endpoint GET /contentratings\n@desc Get all content ratings\n@returns(200) The content ratings were returned.\n\n@endgroup\n\n@group creativecommons\n@endpoint GET /creativecommons\n@desc Get all Creative Commons licenses\n@returns(200) The Creative Commons licenses were returned.\n\n@endgroup\n\n@group groups\n@endpoint GET /groups\n@desc Get all groups\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/followers/relevant/videos) # The way to sort the results.  Option descriptions:  * `relevant` - Relevant sorting is available only for search queries.}\n@returns(200) The groups were returned.\n\n@endpoint POST /groups\n@desc Create a group\n@returns(200) The group was created.\n@errors {400: A parameter is invalid., 403: The authenticated user can't create groups.}\n\n@endpoint DELETE /groups/{group_id}\n@desc Delete a group\n@required {group_id: num # The ID of the group.}\n@returns(204) The group was deleted.\n@errors {403: The authenticated user isn't the group owner.}\n\n@endpoint GET /groups/{group_id}\n@desc Get a specific group\n@required {group_id: num # The ID of the group.}\n@returns(200) The group was returned.\n\n@endpoint GET /groups/{group_id}/users\n@desc Get all the members of a group\n@required {group_id: num # The ID of the group.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The members were returned.\n@errors {404: No such group exists.}\n\n@endpoint GET /groups/{group_id}/videos\n@desc Get all the videos in a group\n@required {group_id: num # The ID of the group.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/duration/likes/plays) # The way to sort the results.}\n@returns(200) The videos were returned.\n@errors {304: No videos have been added to this group since the given `If-Modified-Since` header., 404: No such group exists.}\n\n@endpoint DELETE /groups/{group_id}/videos/{video_id}\n@desc Remove a video from a group\n@required {group_id: num # The ID of the group., video_id: num # The ID of the video.}\n@returns(204) The video was deleted.\n@errors {403: The authenticated user can't modify this group's videos.}\n\n@endpoint GET /groups/{group_id}/videos/{video_id}\n@desc Get a specific video in a group\n@required {group_id: num # The ID of the group., video_id: num # The ID of the video.}\n@returns(200) The video was returned.\n@errors {404: No such video or group exists.}\n\n@endpoint PUT /groups/{group_id}/videos/{video_id}\n@desc Add a video to a group\n@required {group_id: num # The ID of the group., video_id: num # The ID of the video.}\n@returns(200) The video was added.\n@returns(202) The video is in pending status.\n@errors {403: * The video is already in the group. * The authenticated user can't add videos to the group.}\n\n@endgroup\n\n@group languages\n@endpoint GET /languages\n@desc Get all languages\n@optional {filter: str # The attribute by which to filter the results.  Option descriptions:  * `texttracks` - Only return text track supported languages}\n@returns(200) The languages were returned.\n\n@endgroup\n\n@group me\n@endpoint GET /me\n@desc Get a user\n@returns(200) The user's representation was returned.\n\n@endpoint PATCH /me\n@desc Edit a user\n@returns(200) The user's representation was edited.\n\n@endpoint GET /me/albums\n@desc Get all the albums that belong to a user\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/duration/videos) # The way to sort the results.}\n@returns(200) The albums were returned.\n@errors {400: A parameter is invalid.}\n\n@endpoint POST /me/albums\n@desc Create an album\n@returns(201) The album was created.\n@errors {400: A parameter is invalid., 403: The supplied token doesn't have the proper scopes, or the authenticated user can't create an album.}\n\n@endpoint DELETE /me/albums/{album_id}\n@desc Delete an album\n@required {album_id: num # The ID of the album.}\n@returns(204) The album was deleted.\n@errors {403: The supplied token doesn't have the proper scopes, or the authenticated user can't delete the album., 404: No such album exists.}\n\n@endpoint GET /me/albums/{album_id}\n@desc Get a specific album\n@required {album_id: num # The ID of the album.}\n@returns(200) The album was returned.\n@errors {404: No such album exists.}\n\n@endpoint PATCH /me/albums/{album_id}\n@desc Edit an album\n@required {album_id: num # The ID of the album.}\n@returns(200) The album was edited.\n@errors {400: A parameter is invalid., 403: The authenticated user doesn't own the album, the supplied token doesn't have the proper scopes, or the authenticated user can't edit the album., 404: No such album exists.}\n\n@endpoint GET /me/albums/{album_id}/videos\n@desc Get all the videos in an album\n@required {album_id: num # The ID of the album.}\n@optional {containing_uri: str # The page containing the video URI., direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., password: str # The password of the album., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/default/duration/likes/manual/modified_time/plays) # The way to sort the results., weak_search: bool # Whether to include private videos in the search. Please note that a separate search service provides this functionality. The service performs a partial text search on the video's name.}\n@returns(200) The videos were returned.\n@errors {404: No such album exists.}\n\n@endpoint PUT /me/albums/{album_id}/videos\n@desc Replace all the videos in an album\n@required {album_id: num # The ID of the album., videos: str # A comma-separated list of video URIs.}\n@returns(201) The videos were added.\n@errors {403: The authenticated user can't add videos to albums., 404: No such album exists.}\n\n@endpoint DELETE /me/albums/{album_id}/videos/{video_id}\n@desc Remove a video from an album\n@required {album_id: num # The ID of the album., video_id: num # The ID of the video.}\n@returns(204) The video was removed.\n@errors {403: The supplied token doesn't have the proper scopes, or the authenticated user can't edit the album., 404: No such album exists.}\n\n@endpoint GET /me/albums/{album_id}/videos/{video_id}\n@desc Get a specific video in an album\n@required {album_id: num # The ID of the album., video_id: num # The ID of the video.}\n@optional {password: str # The password of the album.}\n@returns(200) The video was returned.\n@errors {404: No such album exists, or the video wasn't found in it.}\n\n@endpoint PUT /me/albums/{album_id}/videos/{video_id}\n@desc Add a specific video to an album\n@required {album_id: num # The ID of the album., video_id: num # The ID of the video.}\n@returns(204) The video was added.\n@errors {403: The supplied token doesn't have the proper scopes, or the authenticated user can't edit the album., 404: No such album exists.}\n\n@endpoint POST /me/albums/{album_id}/videos/{video_id}/set_album_thumbnail\n@desc Set a video as the album thumbnail\n@required {album_id: num # The ID of the album., video_id: num # The ID of the video.}\n@optional {time_code: num # The video frame time in seconds to use as the album thumbnail.}\n@returns(200) {allow_continuous_play: bool, allow_downloads: bool, allow_share: bool, autoplay: bool, brand_color: str?, created_time: str, custom_logo: any?, description: str?, domain: str?, duration: num, embed: map{html: str?}, embed_brand_color: bool?, embed_custom_logo: bool?, hide_nav: bool, hide_vimeo_logo: bool?, layout: str, link: str, loop: bool, metadata: map{connections: map{videos: map{options: [str], total: num, uri: str}}, interactions: map?{add_custom_thumbnails: map{options: [str], uri: str}, add_logos: map{options: [str], uri: str}, add_to: map?{options: [str], uri: str}, add_videos: map{options: [str], uri: str}}}, modified_time: str, name: str, pictures: any, privacy: map{password: str, view: str}, resource_key: str, review_mode: bool, share_link: str, sort: str, theme: str, uri: str, url: str?, use_custom_domain: bool, user: any, web_brand_color: bool, web_custom_logo: bool} # The album was updated with a new thumbnail.\n@errors {403: Error code 3429: The authenticated user can't edit the album., 404: Error code 5000: No such album, or user, or video exists., 500: Error code 4016: Unexpected error while setting thumbnail.}\n\n@endpoint GET /me/appearances\n@desc Get all the videos in which a user appears\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/duration/likes/plays) # The way to sort the results.}\n@returns(200) The videos were returned.\n\n@endpoint GET /me/categories\n@desc Get all the categories that a user follows\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(alphabetical/date/name) # The way to sort the results.}\n@returns(200) The categories were returned.\n@errors {403: Error code 3200: You can't view another user.}\n\n@endpoint DELETE /me/categories/{category}\n@desc Unsubscribe a user from a category\n@required {category: str # The name of the category.}\n@returns(204) The user was unsubscribed.\n\n@endpoint GET /me/categories/{category}\n@desc Check if a user follows a category\n@required {category: str # The name of the category.}\n@returns(204) The user is following the category.\n\n@endpoint PUT /me/categories/{category}\n@desc Subscribe a user to a single category\n@required {category: num # The name of the category.}\n@returns(204) The user was subscribed.\n\n@endpoint GET /me/channels\n@desc Get all the channels to which a user subscribes\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/followers/videos) # The way to sort the results.}\n@returns(200) The channels were returned.\n@errors {304: No channel has been followed since the given `If-Modified-Since` header.}\n\n@endpoint DELETE /me/channels/{channel_id}\n@desc Unsubscribe a user from a specific channel\n@required {channel_id: num # The ID of the channel.}\n@returns(204) The user is no longer a follower of the channel.\n@errors {404: No such channel exists.}\n\n@endpoint GET /me/channels/{channel_id}\n@desc Check if a user follows a channel\n@required {channel_id: num # The ID of the channel.}\n@returns(204) The user follows the channel.\n@errors {404: No such channel exists.}\n\n@endpoint PUT /me/channels/{channel_id}\n@desc Subscribe a user to a specific channel\n@required {channel_id: num # The ID of the channel.}\n@returns(204) The user is now a follower of the channel.\n@errors {404: No such channel exists.}\n\n@endpoint GET /me/customlogos\n@desc Get all the custom logos that belong to a user\n@returns(200) The custom logos were returned.\n@errors {403: * The authenticated user can't view this particular custom logo. * The authenticated user can't view custom logos in general.}\n\n@endpoint POST /me/customlogos\n@desc Add a custom logo\n@returns(201) The custom logo was created.\n@errors {403: * The authenticated user can't upload pictures to another user's video. * The authenticated user can't add a custom logo.}\n\n@endpoint GET /me/customlogos/{logo_id}\n@desc Get a specific custom logo\n@required {logo_id: num # The ID of the custom logo.}\n@returns(200) The custom logo was returned.\n@errors {403: The authenticated user can't view custom logos.}\n\n@endpoint GET /me/feed\n@desc Get all the videos in a user's feed\n@optional {offset: str # The pagination offset. We recommend that you use the pagination links in the feed response instead of working with this value directly. For more details, see our [pagination documentation](https://developer.vimeo.com/api/common-formats#using-the-pagination-parameter)., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., type: str(appears/category_featured/channel/facebook_feed/following/group/likes/ondemand_publish/share/tagged_with/twitter_timeline/uploads) # The feed type.}\n@returns(200) The videos were returned.\n\n@endpoint GET /me/followers\n@desc Get all the followers of a user\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The user's followers were returned.\n\n@endpoint GET /me/following\n@desc Get all the users that a user is following\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The followed users were returned.\n\n@endpoint POST /me/following\n@desc Follow a list of users\n@required {users: [str] # An array of user IDs for the authenticated user to follow.}\n@returns(204) The users were followed.\n@errors {400: * Error code 2205: The request body is empty, the users array is invalid, or the list of users doesn't contain URIs. * Error code 2900: A user in the list doesn't exist. * Error code 2901: The list contains more than 100 users., 401: Error code 8000: The user access token is invalid., 403: Error code 3417: The authenticated user can't follow other users., 429: Error code 9006: The authenticated user is rate-limited from following other users., 500: Error code 4005: An unexpected error occurred.}\n\n@endpoint DELETE /me/following/{follow_user_id}\n@desc Unfollow a user\n@required {follow_user_id: num # The ID of the user to unfollow.}\n@returns(204) The user was unfollowed.\n\n@endpoint GET /me/following/{follow_user_id}\n@desc Check if a user is following another user\n@required {follow_user_id: num # The ID of the user to follow.}\n@returns(204) The authenticated user follows the user in question.\n@errors {404: The authenticated user doesn't follow the user in question.}\n\n@endpoint PUT /me/following/{follow_user_id}\n@desc Follow a specific user\n@required {follow_user_id: num # The ID of the user to follow.}\n@returns(204) The user was followed.\n@errors {403: The authenticated user can't add followers.}\n\n@endpoint GET /me/groups\n@desc Get all the groups that a user has joined\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/members/videos) # The way to sort the results.}\n@returns(200) The groups were returned.\n\n@endpoint DELETE /me/groups/{group_id}\n@desc Remove a user from a group\n@required {group_id: num # The ID of the group.}\n@returns(204) The user left the group.\n@errors {403: The authenticated user owns the group. To remove this user, first apply a new group owner through PATCH.}\n\n@endpoint PUT /me/groups/{group_id}\n@desc Add a user to a group\n@required {group_id: num # The ID of the group.}\n@returns(204) The user joined the group.\n@errors {403: * The authenticated user can't join groups. * The group prohibits the authenticated user from joining, either because the group is not public or because the group's privacy setting is `members`.}\n\n@endpoint GET /me/groups/{group_id}\n@desc Check if a user has joined a group\n@required {group_id: num # The ID of the group.}\n@returns(204) The user belongs to the group.\n@errors {404: * No such group exists. * The authenticated user isn't a member of this group.}\n\n@endpoint GET /me/likes\n@desc Get all the videos that a user has liked\n@optional {filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/duration/likes/plays) # The way to sort the results.}\n@returns(200) The videos were returned.\n\n@endpoint DELETE /me/likes/{video_id}\n@desc Cause a user to unlike a video\n@required {video_id: num # The ID of the video.}\n@returns(204) The video was unliked.\n@errors {403: The authenticated user can't like videos.}\n\n@endpoint GET /me/likes/{video_id}\n@desc Check if a user has liked a video\n@required {video_id: num # The ID of the video.}\n@returns(204) The user has liked the video.\n@errors {404: The user hasn't liked the video.}\n\n@endpoint PUT /me/likes/{video_id}\n@desc Cause a user to like a video\n@required {video_id: num # The ID of the video.}\n@returns(204) The video was liked.\n@errors {400: The authenticated user owns the video., 403: The authenticated user can't like videos.}\n\n@endpoint GET /me/ondemand/pages\n@desc Get all the On Demand pages of a user\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str(film/series) # The type of On Demand pages to return., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(added/alphabetical/date/modified_time/name/publish.time/rating) # The way to sort the results.}\n@returns(200) The On Demand pages were returned.\n@errors {404: No such user exists.}\n\n@endpoint POST /me/ondemand/pages\n@desc Create an On Demand page\n@required {content_rating: str(drugs/language/nudity/safe/unrated/violence) # One or more ratings, either as a comma-separated list or as a JSON array depending on the request format., description: str # The description of the On Demand page., name: str # The name of the On Demand page., type: str(film/series) # The type of On Demand page.}\n@optional {accepted_currencies: str(AUD/CAD/CHF/DKK/EUR/GBP/JPY/KRW/NOK/PLN/SEK/USD) # An array of accepted currencies.  Option descriptions:  * `AUD` - Australian Dollar  * `CAD` - Canadian Dollar  * `CHF` - Swiss Franc  * `DKK` - Danish Krone  * `EUR` - Euro  * `GBP` - British Pound  * `JPY` - Japanese Yen  * `KRW` - South Korean Won  * `NOK` - Norwegian Krone  * `PLN` - Polish Zloty  * `SEK` - Swedish Krona  * `USD` - US Dollar, buy: map{active: bool, download: bool, price: map}, domain_link: str # The custom domain of the On Demand page., episodes: map{buy: map, rent: map}, link: str # The custom string to use in this On Demand page's Vimeo URL., rent: map{active: bool, period: str, price: map}, subscription: map{monthly: map}}\n@returns(201) {background: any?, colors: map{primary: str, secondary: str}, content_rating: [str], created_time: str, description: str?, domain_link: str?, episodes: map{buy: map{active: bool, price: num?}, rent: map{active: bool, period: str?, price: num?}}, film: any, genres: [map], link: str, metadata: map{connections: map{metadata: map{connections: map}}, interactions: any}, modified_time: str, name: str, pictures: any?, preorder: map{active: bool, cancel_time: str, publish_time: str, time: str}, published: map{enabled: bool, time: str}, rating: num?, resource_key: str, sku: str?, subscription: map?{active: bool, link: str?, period: str, price: map}, theme: str, thumbnail: any?, trailer: any?, type: str, uri: str, user: any?} # The On Demand page was created.\n\n@endpoint GET /me/ondemand/purchases\n@desc Get all the On Demand purchases and rentals that a user has made\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str(all/expiring_soon/film/important/purchased/rented/series/subscription/unwatched/watched) # The type of On Demand videos to show.  Option descriptions:  * `important` - Will show all pages which are about to expire., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(added/alphabetical/date/name/purchase_time/rating/release_date) # The way to sort the results.}\n@returns(200) The purchases and rentals were returned.\n@errors {403: The authenticated user can't view the purchases and rentals for another user's account.}\n\n@endpoint GET /me/ondemand/purchases/{ondemand_id}\n@desc Check if a user has made a purchase or rental from an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(200) You have purchased the On Demand page.\n@errors {403: The requested user isn't the same as the authenticated user., 404: No such user or On Demand page exists.}\n\n@endpoint GET /me/pictures\n@desc Get all the pictures that belong to a user\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The portrait images were returned.\n\n@endpoint POST /me/pictures\n@desc Add a user picture\n@returns(200) The portrait image was added.\n\n@endpoint DELETE /me/pictures/{portraitset_id}\n@desc Delete a user picture\n@required {portraitset_id: num # The ID of the picture.}\n@returns(204) The portrait image was removed.\n\n@endpoint GET /me/pictures/{portraitset_id}\n@desc Get a specific user picture\n@required {portraitset_id: num # The ID of the picture.}\n@returns(200) The portrait image was returned.\n\n@endpoint PATCH /me/pictures/{portraitset_id}\n@desc Edit a user picture\n@required {portraitset_id: num # The ID of the picture.}\n@returns(200) The portrait image was edited.\n\n@endpoint GET /me/portfolios\n@desc Get all the portfolios that belong to a user\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The portfolios were returned.\n\n@endpoint GET /me/portfolios/{portfolio_id}\n@desc Get a specific portfolio\n@required {portfolio_id: num # The ID of the portfolio.}\n@returns(200) The portfolio was returned.\n\n@endpoint GET /me/portfolios/{portfolio_id}/videos\n@desc Get all the videos in a portfolio\n@required {portfolio_id: num # The ID of the portfolio.}\n@optional {containing_uri: str # The page that contains the video URI., filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(alphabetical/comments/date/default/likes/manual/plays) # The way to sort the results.  Option descriptions:  * `default` - This will sort to the default sort set on the portfolio.}\n@returns(200) The videos were returned.\n\n@endpoint DELETE /me/portfolios/{portfolio_id}/videos/{video_id}\n@desc Remove a video from a portfolio\n@required {portfolio_id: num # The ID of the portfolio., video_id: num # The ID of the video.}\n@returns(204) The video was deleted.\n@errors {404: The portfolio wasn't found, or the video wasn't found.}\n\n@endpoint GET /me/portfolios/{portfolio_id}/videos/{video_id}\n@desc Get a specific video in a portfolio\n@required {portfolio_id: num # The ID of the portfolio., video_id: num # The ID of the video.}\n@returns(200) The video was returned.\n\n@endpoint PUT /me/portfolios/{portfolio_id}/videos/{video_id}\n@desc Add a video to a portfolio\n@required {portfolio_id: num # The ID of the portfolio., video_id: num # The ID of the video.}\n@returns(204) The video was added.\n@errors {404: The portfolio wasn't found, or the video wasn't found.}\n\n@endpoint GET /me/presets\n@desc Get all the embed presets that a user has created\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The embed presets were returned.\n\n@endpoint GET /me/presets/{preset_id}\n@desc Get a specific embed preset\n@required {preset_id: num # The ID of the preset.}\n@returns(200) The embed preset was returned.\n\n@endpoint PATCH /me/presets/{preset_id}\n@desc Edit an embed preset\n@required {preset_id: num # The ID of the preset.}\n@returns(200) The embed preset was edited.\n@errors {400: The outro type is invalid., 404: * The preset doesn't exist. * The authenticated user doesn't own the preset.}\n\n@endpoint GET /me/presets/{preset_id}/videos\n@desc Get all the videos that have been added to an embed preset\n@required {preset_id: num # The ID of the embed preset.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The videos were returned.\n\n@endpoint GET /me/projects\n@desc Get all the projects that belong to a user\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(date/default/modified_time/name) # The way to sort the results.}\n@returns(200) The projects were returned.\n@errors {401: Error code 8000: The user credentials are invalid.}\n\n@endpoint POST /me/projects\n@desc Create a project\n@required {name: str # The name of the project.}\n@returns(201) {created_time: str, metadata: map{connections: map{videos: map{options: [str], total: num, uri: str}}}, modified_time: str, name: str, resource_key: str, uri: str, user: any} # The project was created.\n@errors {400: * Error code 2205: The input is empty. * Error code 2204: The input is invalid., 401: Error code 8000: The user credentials are invalid., 403: Error code 3200: The authenticated user can't create projects.}\n\n@endpoint DELETE /me/projects/{project_id}\n@desc Delete a project\n@required {project_id: num # The ID of the project.}\n@optional {should_delete_clips: bool # Whether to delete all the videos in the project along with the project itself.}\n@returns(204) The project was deleted.\n@errors {401: Error code 8000: The user credentials are invalid., 403: Error code 3200: The authenticated user can't delete the project., 404: Error code 5000: No such project exists.}\n\n@endpoint GET /me/projects/{project_id}\n@desc Get a specific project\n@required {project_id: num # The ID of the project.}\n@returns(200) {created_time: str, metadata: map{connections: map{videos: map{options: [str], total: num, uri: str}}}, modified_time: str, name: str, resource_key: str, uri: str, user: any} # The project was returned.\n@errors {401: Error code 8000: The user credentials are invalid., 404: Error code 5000: No such project exists.}\n\n@endpoint PATCH /me/projects/{project_id}\n@desc Edit a project\n@required {project_id: num # The ID of the project., name: str # The name of the project.}\n@returns(200) {created_time: str, metadata: map{connections: map{videos: map{options: [str], total: num, uri: str}}}, modified_time: str, name: str, resource_key: str, uri: str, user: any} # The project was edited.\n@errors {400: * Error code 2204: The input is invalid. * Error code 2205: The input is empty., 401: Error code 8000: The user credentials are invalid., 403: Error code 3200: The authenticated user can't edit the project., 404: Error code 5000: No such project exists.}\n\n@endpoint DELETE /me/projects/{project_id}/videos\n@desc Remove a list of videos from a project\n@required {project_id: num # The ID of the project., uris: str # A comma-separated list of the video URIs to remove.}\n@optional {should_delete_clips: bool # Whether to delete the videos when removing them from the project.}\n@returns(204) The videos were removed.\n@errors {400: Error code 2204: The input is invalid., 401: Error code 8000: The user credentials are invalid., 404: Error code 5000: No such project exists.}\n\n@endpoint GET /me/projects/{project_id}/videos\n@desc Get all the videos in a project\n@required {project_id: num # The ID of the project.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(alphabetical/date/default/duration/last_user_action_event_date) # The way to sort the results.}\n@returns(200) The videos were returned.\n@errors {401: Error code 8000: The user credentials are invalid., 404: Error code 5000: No such project exists.}\n\n@endpoint PUT /me/projects/{project_id}/videos\n@desc Add a list of videos to a project\n@required {project_id: num # The ID of the project., uris: str # A comma-separated list of video URIs to add.}\n@returns(204) The videos were added.\n@errors {400: Error code 2204: The input is invalid., 401: Error code 8000: The user credentials are invalid., 404: Error code 5000: No such project or video exists.}\n\n@endpoint DELETE /me/projects/{project_id}/videos/{video_id}\n@desc Remove a specific video from a project\n@required {project_id: num # The ID of the project., video_id: num # The ID of the video.}\n@returns(204) The video was removed.\n@errors {400: Error code 2204: The input is invalid., 401: Error code 8000: The user credentials are invalid., 404: Error code 5000: No such video exists in the project.}\n\n@endpoint PUT /me/projects/{project_id}/videos/{video_id}\n@desc Add a specific video to a project\n@required {project_id: num # The ID of the project., video_id: num # The ID of the video.}\n@returns(204) The video was added.\n@errors {404: Error code 5000: No such user, project, or video exists.}\n\n@endpoint GET /me/videos\n@desc Get all the videos that a user has uploaded\n@optional {containing_uri: str # The page that contains the video URI. Available only when not paired with **query**., direction: str(asc/desc) # The sort direction of the results., filter: str(app_only/embeddable/featured/playable) # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., filter_playable: bool # Whether to filter the results by playable videos (`true`) or non-playable videos (`false`)., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/default/duration/last_user_action_event_date/likes/modified_time/plays) # The way to sort the results.}\n@returns(200) The videos were returned.\n@errors {304: The authenticated user hasn't created any videos since the given **If-Modified-Since** header.}\n\n@endpoint POST /me/videos\n@desc Upload a video\n@returns(201) The upload procedure has begun.\n@errors {400: * Error code 2205: The body of the request isn't formatted properly. * Error code 2204: The request contains invalid body parameters. * Error code 2230: The upload type is invalid. * Error code 3116: The **type** payload parameter was supplied instead of **upload.approach**. Use **upload.approach** starting from API version 3.4., 401: Error code 8002: No user is associated with the access token., 403: * Error code 4102: The authenticated user's allotted quota has been reached. * Error code 4101: The authenticated user's maximum disk space has been reached., 500: Error code 4003: There is a problem initiating the upload.}\n\n@endpoint GET /me/videos/{video_id}\n@desc Check if a user owns a video\n@required {video_id: num # The ID of the video.}\n@returns(200) The user owns the video.\n@errors {404: The authenticated user doesn't own the video.}\n\n@endpoint DELETE /me/watched/videos\n@desc Delete a user's watch history\n@returns(204) The authenticated user's watch history was deleted.\n\n@endpoint GET /me/watched/videos\n@desc Get all the videos that a user has watched\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The videos were returned.\n@errors {403: The authenticated user can't view another user's watch history.}\n\n@endpoint DELETE /me/watched/videos/{video_id}\n@desc Delete a specific video from a user's watch history\n@required {video_id: num # The ID of the video.}\n@returns(204) The video was deleted from the authenticated user's watch history.\n\n@endpoint GET /me/watchlater\n@desc Get all the videos in a user's Watch Later queue\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/duration/likes/plays) # The way to sort the results.}\n@returns(200) The videos were returned.\n@errors {304: The user hasn't added any videos to their Watch Later queue since the given `If-Modified-Since` header.}\n\n@endpoint DELETE /me/watchlater/{video_id}\n@desc Remove a video from a user's Watch Later queue\n@required {video_id: num # The ID of the video.}\n@returns(204) The video was deleted.\n\n@endpoint GET /me/watchlater/{video_id}\n@desc Check if a user has added a specific video to their Watch Later queue\n@required {video_id: num # The ID of the video.}\n@returns(200) The video appears in the user's Watch Later queue.\n@errors {404: The video doesn't appear in the user's Watch Later queue.}\n\n@endpoint PUT /me/watchlater/{video_id}\n@desc Add a video to a user's Watch Later queue\n@required {video_id: num # The ID of the video.}\n@returns(204) The video was added.\n\n@endgroup\n\n@group oauth\n@endpoint POST /oauth/access_token\n@desc Exchange an authorization code for an access token\n@returns(200) The authorization code was exchanged.\n@errors {400: * The grant type is invalid. * The authorization code is invalid. * The redirect URI doesn't match the URI to create the authorization code.}\n\n@endpoint POST /oauth/authorize/client\n@desc Authorize a client with OAuth\n@returns(200) The authorization was successful.\n@errors {401: Error code 8001: No such client secret exists.}\n\n@endpoint POST /oauth/authorize/vimeo_oauth1\n@desc Convert OAuth 1 access tokens to OAuth 2 access tokens\n@returns(200) The tokens were converted.\n@errors {400: * The token is invalid. * The token has unauthorized scopes.}\n\n@endpoint GET /oauth/verify\n@desc Verify an OAuth 2 token\n@returns(200) The token was verified.\n@errors {401: The token isn't a valid OAuth 2 token.}\n\n@endgroup\n\n@group ondemand\n@endpoint GET /ondemand/genres\n@desc Get all On Demand genres\n@returns(200) The On Demand genres were returned.\n\n@endpoint GET /ondemand/genres/{genre_id}\n@desc Get a specific On Demand genre\n@required {genre_id: str # The ID of the genre.}\n@returns(200) The On Demand genre was returned.\n@errors {404: No such On Demand genre exists.}\n\n@endpoint GET /ondemand/genres/{genre_id}/pages\n@desc Get all the On Demand pages in a genre\n@required {genre_id: str # The ID of the genre.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str(country/my_region) # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/name/publish.time/videos) # The way to sort the results.}\n@returns(200) The On Demand pages were returned.\n\n@endpoint GET /ondemand/genres/{genre_id}/pages/{ondemand_id}\n@desc Get a specific On Demand page in a genre\n@required {genre_id: str # The ID of the genre., ondemand_id: num # The ID of the On Demand.}\n@returns(200) The On Demand page belongs to the genre.\n@errors {404: No such On Demand page or genre exists.}\n\n@endpoint DELETE /ondemand/pages/{ondemand_id}\n@desc Delete a draft of an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(204) The page draft was deleted.\n@errors {403: You can't modify an On Demand page that you don't own., 404: No such On Demand page exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}\n@desc Get a specific On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(200) The On Demand page was returned.\n@errors {404: No such On Demand page exists.}\n\n@endpoint PATCH /ondemand/pages/{ondemand_id}\n@desc Edit an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(200) The On Demand page was edited.\n@errors {403: The authenticated user can't edit the On Demand page., 404: No such On Demand page exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/backgrounds\n@desc Get all the backgrounds of an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The background images were returned.\n@errors {404: No such On Demand page exists.}\n\n@endpoint POST /ondemand/pages/{ondemand_id}/backgrounds\n@desc Add a background to an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(200) The background was created.\n@errors {403: You can't modify an On Demand page that you don't own., 404: No such On Demand page exists.}\n\n@endpoint DELETE /ondemand/pages/{ondemand_id}/backgrounds/{background_id}\n@desc Remove a background from an On Demand page\n@required {background_id: num # The ID of the background., ondemand_id: num # The ID of the On Demand.}\n@returns(204) The background image was deleted.\n@errors {403: If you are attempting to modify an On Demand page you don't own., 404: No such On Demand page or background image exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/backgrounds/{background_id}\n@desc Get a specific background of an On Demand page\n@required {background_id: num # The ID of the background., ondemand_id: num # The ID of the On Demand.}\n@returns(200) The background image was returned.\n@errors {403: You can't view another user's On Demand page background., 404: No such On Demand page or background image exists.}\n\n@endpoint PATCH /ondemand/pages/{ondemand_id}/backgrounds/{background_id}\n@desc Edit a background of an On Demand page\n@required {background_id: num # The ID of the background., ondemand_id: num # The ID of the On Demand.}\n@returns(200) The background was edited.\n@errors {403: You can't modify an On Demand page that you don't own., 404: No such On Demand page or background image exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/genres\n@desc Get all the genres of an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(200) The genres were returned.\n@errors {404: No such On Demand page exists.}\n\n@endpoint DELETE /ondemand/pages/{ondemand_id}/genres/{genre_id}\n@desc Remove a genre from an On Demand page\n@required {genre_id: str # The ID of the genre., ondemand_id: num # The ID of the On Demand.}\n@returns(204) The On Demand genre was deleted.\n@errors {400: The On Demand page must belong to at least one genre., 403: You can't modify an On Demand page that you don't own., 404: No such On Demand page or genre exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/genres/{genre_id}\n@desc Check whether an On Demand page belongs to a genre\n@required {genre_id: str # The ID of the genre., ondemand_id: num # The ID of the On Demand.}\n@returns(200) The On Demand page's genre was returned.\n@errors {404: No such On Demand page or genre exists.}\n\n@endpoint PUT /ondemand/pages/{ondemand_id}/genres/{genre_id}\n@desc Add a genre to an On Demand page\n@required {genre_id: str # The ID of the genre., ondemand_id: num # The ID of the On Demand.}\n@returns(201) The genre was added.\n@errors {400: You can't add more than two genres to an On Demand page., 403: You can't modify an On Demand page that you don't own., 404: No such On Demand page or genre exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/likes\n@desc Get all the users who have liked a video on an On Demand page\n@required {ondemand_id: num # The ID of the On Demand page.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str(extra/main/trailer) # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The users were returned.\n\n@endpoint GET /ondemand/pages/{ondemand_id}/pictures\n@desc Get all the posters of an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The posters were returned.\n@errors {404: No such On Demand page exists.}\n\n@endpoint POST /ondemand/pages/{ondemand_id}/pictures\n@desc Add a poster to an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(201) The poster was added.\n@errors {403: You can't modify another user's On Demand page.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/pictures/{poster_id}\n@desc Get a specific poster of an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., poster_id: num # The ID of the picture.}\n@returns(200) The poster was returned.\n\n@endpoint PATCH /ondemand/pages/{ondemand_id}/pictures/{poster_id}\n@desc Edit a poster of an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., poster_id: num # The ID of the picture.}\n@returns(200) The poster was edited.\n\n@endpoint GET /ondemand/pages/{ondemand_id}/promotions\n@desc Get all the promotions on an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., filter: str(batch/default/single/vip) # The filter to apply to the results.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The promotions were returned.\n@errors {400: The filter is invalid., 403: You can't view promotions for an On Demand page that you don't own., 404: No such On Demand page exists.}\n\n@endpoint POST /ondemand/pages/{ondemand_id}/promotions\n@desc Add a promotion to an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(200) The promotion was added.\n@errors {400: * There are errors in the request. * The promo code already exists., 403: You can't create promotions for an On Demand page that you don't own., 404: No such On Demand page exists.}\n\n@endpoint DELETE /ondemand/pages/{ondemand_id}/promotions/{promotion_id}\n@desc Remove a promotion from an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., promotion_id: num # The ID of the promotion.}\n@returns(204) The promotion was deleted.\n@errors {403: You can't delete a promotion for an On Demand page that you not own., 404: No such On Demand page or promotion exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/promotions/{promotion_id}\n@desc Get a specific promotion on an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., promotion_id: num # The ID of the promotion.}\n@returns(200) The promotion was returned.\n@errors {403: You can't view a promotion for an On Demand page that you don't own., 404: No such On Demand page or promotion exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/promotions/{promotion_id}/codes\n@desc Get all the codes of a promotion on an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., promotion_id: num # The ID of the promotion.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The codes were returned.\n@errors {403: You can't create promotions for an On Demand page that you don't own., 404: No such On Demand page exists.}\n\n@endpoint DELETE /ondemand/pages/{ondemand_id}/regions\n@desc Remove a list of regions from an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(200) The On Demand regions were deleted.\n@errors {403: You can't modify an On Demand page that you don't own., 404: No such On Demand page or region exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/regions\n@desc Get all the regions of an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(200) The regions were returned.\n@errors {404: No such On Demand page exists.}\n\n@endpoint PUT /ondemand/pages/{ondemand_id}/regions\n@desc Add a list of regions to an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@returns(200) The list of regions was set.\n@errors {403: You can't modify an On Demand page that you don't own., 404: No such On Demand page or region exists.}\n\n@endpoint DELETE /ondemand/pages/{ondemand_id}/regions/{country}\n@desc Remove a specific region from an On Demand page\n@required {country: str # The country code., ondemand_id: num # The ID of the On Demand.}\n@returns(204) The On Demand region was deleted.\n@errors {403: You can't modify an On Demand page that you don't own., 404: No such On Demand page or region exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/regions/{country}\n@desc Get a specific region of an On Demand page\n@required {country: str # The country code., ondemand_id: num # The ID of the On Demand.}\n@returns(200) The On Demand page's region was returned.\n@errors {404: No such On Demand page or region exists.}\n\n@endpoint PUT /ondemand/pages/{ondemand_id}/regions/{country}\n@desc Add a specific region to an On Demand page\n@required {country: str # The country code., ondemand_id: num # The ID of the On Demand.}\n@returns(201) The region was added.\n@errors {403: You can't modify an On Demand page that you don't own., 404: No such On Demand page or region exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/seasons\n@desc Get all the seasons on an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(date/manual) # The way to sort the results.}\n@returns(200) The seasons were returned.\n@errors {404: No such On Demand page exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/seasons/{season_id}\n@desc Get a specific season on an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., season_id: num # The ID of the season.}\n@returns(200) The season was returned.\n@errors {404: No such On Demand page or season exists.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/seasons/{season_id}/videos\n@desc Get all the videos in a season on an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., season_id: num # The ID of the season.}\n@optional {filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(date/default/manual/name/purchase_time/release_date) # The way to sort the results.}\n@returns(200) The videos were returned.\n\n@endpoint GET /ondemand/pages/{ondemand_id}/videos\n@desc Get all the videos on an On Demand page\n@required {ondemand_id: num # The ID of the On Demand.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str(all/buy/expiring_soon/extra/main/main.viewable/rent/trailer/unwatched/viewable/watched) # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(date/default/episode/manual/name/purchase_time/release_date) # The way to sort the results.}\n@returns(200) * The videos were returned. * The videos were returned.\n\n@endpoint DELETE /ondemand/pages/{ondemand_id}/videos/{video_id}\n@desc Remove a video from an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., video_id: num # The ID of the video.}\n@returns(204) The video was deleted.\n@errors {403: You can't modify an On Demand page that you don't own.}\n\n@endpoint GET /ondemand/pages/{ondemand_id}/videos/{video_id}\n@desc Get a specific video on an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., video_id: num # The ID of the video.}\n@returns(200) The video is on the On Demand page.\n\n@endpoint PUT /ondemand/pages/{ondemand_id}/videos/{video_id}\n@desc Add a video to an On Demand page\n@required {ondemand_id: num # The ID of the On Demand., video_id: num # The ID of the video.}\n@returns(200) The video was added.\n@errors {400: You can't add the video to this On Demand page., 403: You can't modify an On Demand page that you don't own.}\n\n@endpoint GET /ondemand/regions\n@desc Get all the On Demand regions\n@returns(200) The On Demand regions were returned.\n\n@endpoint GET /ondemand/regions/{country}\n@desc Get a specific On Demand region\n@required {country: str # The country code.}\n@returns(200) The On Demand region was returned.\n@errors {404: No such On Demand region exists.}\n\n@endgroup\n\n@group tags\n@endpoint GET /tags/{word}\n@desc Get a specific tag\n@required {word: str # The tag to return.}\n@returns(200) The tag was returned.\n\n@endpoint GET /tags/{word}/videos\n@desc Get all the videos with a specific tag\n@required {word: str # The tag word.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(created_time/duration/name) # The way to sort the results.}\n@returns(200) The videos were returned.\n@errors {404: No such tag exists.}\n\n@endgroup\n\n@group tokens\n@endpoint DELETE /tokens\n@desc Revoke the current access token\n@returns(204) The token was revoked.\n@errors {400: You can't revoke access for an OAuth 1 token.}\n\n@endgroup\n\n@group tutorial\n@endpoint GET /tutorial\n@desc Get started with the Vimeo API\n\n@endgroup\n\n@group users\n@endpoint GET /users\n@desc Search for users\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/followers/relevant/videos) # The way to sort the results.}\n@returns(200) The search results were returned.\n@errors {500: There was an internal search error., 503: Search is disabled.}\n\n@endpoint GET /users/{user_id}\n@desc Get a user\n@required {user_id: num # The ID of the user.}\n@returns(200) The user's representation was returned.\n\n@endpoint PATCH /users/{user_id}\n@desc Edit a user\n@required {user_id: num # The ID of the user.}\n@returns(200) The user's representation was edited.\n\n@endpoint GET /users/{user_id}/albums\n@desc Get all the albums that belong to a user\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/duration/videos) # The way to sort the results.}\n@returns(200) The albums were returned.\n@errors {400: A parameter is invalid.}\n\n@endpoint POST /users/{user_id}/albums\n@desc Create an album\n@required {user_id: num # The ID of the user.}\n@returns(201) The album was created.\n@errors {400: A parameter is invalid., 403: The supplied token doesn't have the proper scopes, or the authenticated user can't create an album.}\n\n@endpoint DELETE /users/{user_id}/albums/{album_id}\n@desc Delete an album\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user.}\n@returns(204) The album was deleted.\n@errors {403: The supplied token doesn't have the proper scopes, or the authenticated user can't delete the album., 404: No such album exists.}\n\n@endpoint GET /users/{user_id}/albums/{album_id}\n@desc Get a specific album\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user.}\n@returns(200) The album was returned.\n@errors {404: No such album exists.}\n\n@endpoint PATCH /users/{user_id}/albums/{album_id}\n@desc Edit an album\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user.}\n@returns(200) The album was edited.\n@errors {400: A parameter is invalid., 403: The authenticated user doesn't own the album, the supplied token doesn't have the proper scopes, or the authenticated user can't edit the album., 404: No such album exists.}\n\n@endpoint GET /users/{user_id}/albums/{album_id}/custom_thumbnails\n@desc Get all the custom upload thumbnails of an album\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The custom uploaded thumbnails were returned.\n@errors {403: Error code 3200: The authenticated user cannot access uploaded thumbnails for the specified album., 404: No such album exists.}\n\n@endpoint POST /users/{user_id}/albums/{album_id}/custom_thumbnails\n@desc Add a custom uploaded thumbnail\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user.}\n@returns(201) The custom thumbnail was added to the album.\n@errors {403: The authenticated user can't modify this album., 404: No such album exists.}\n\n@endpoint DELETE /users/{user_id}/albums/{album_id}/custom_thumbnails/{thumbnail_id}\n@desc Remove a custom uploaded album thumbnail\n@required {album_id: num # The ID of the album., thumbnail_id: num # The ID of the custom thumbnail., user_id: num # The ID of the user.}\n@returns(204) The custom thumbnail was removed.\n@errors {403: The authenticated user can't modify this album., 404: No such album exists, or it doesn't contain the specified custom thumbnail.}\n\n@endpoint GET /users/{user_id}/albums/{album_id}/custom_thumbnails/{thumbnail_id}\n@desc Get a specific custom uploaded album thumbnail\n@required {album_id: num # The ID of the album., thumbnail_id: num # The ID of the custom thumbnail., user_id: num # The ID of the user.}\n@returns(200) The custom thumbnail was returned.\n@errors {403: The authenticated user can't view this custom thumbnail., 404: No such album exists, or it doesn't contain the specified custom thumbnail.}\n\n@endpoint PATCH /users/{user_id}/albums/{album_id}/custom_thumbnails/{thumbnail_id}\n@desc Replace a custom uploaded album thumbnail\n@required {album_id: num # The ID of the album., thumbnail_id: num # The ID of the custom thumbnail., user_id: num # The ID of the user.}\n@returns(200) The custom thumbnail was replaced.\n@errors {403: The authenticated user can't modify this album., 404: No such album exists, or it doesn't contain the specified custom thumbnail.}\n\n@endpoint GET /users/{user_id}/albums/{album_id}/logos\n@desc Get all the custom logos of an album\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The custom logos were returned.\n@errors {404: No such album exists.}\n\n@endpoint POST /users/{user_id}/albums/{album_id}/logos\n@desc Add a custom album logo\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user.}\n@returns(201) The logo was added to the album.\n@errors {403: The authenticated user can't modify this album., 404: No such album exists.}\n\n@endpoint DELETE /users/{user_id}/albums/{album_id}/logos/{logo_id}\n@desc Remove a custom album logo\n@required {album_id: num # The ID of the album., logo_id: num # The ID of the custom logo., user_id: num # The ID of the user.}\n@returns(204) The custom logo was removed.\n@errors {403: The authenticated user can't modify this album., 404: No such album exists, or it doesn't contain the specified custom logo.}\n\n@endpoint GET /users/{user_id}/albums/{album_id}/logos/{logo_id}\n@desc Get a specific custom album logo\n@required {album_id: num # The ID of the album., logo_id: num # The ID of the custom logo., user_id: num # The ID of the user.}\n@returns(200) The custom logo was returned.\n@errors {403: The authenticated user can't view this custom logo., 404: No such album exists, or it doesn't contain the specified custom logo.}\n\n@endpoint PATCH /users/{user_id}/albums/{album_id}/logos/{logo_id}\n@desc Replace a custom album logo\n@required {album_id: num # The ID of the album., logo_id: num # The ID of the custom logo., user_id: num # The ID of the user.}\n@returns(200) The custom logo was replaced.\n@errors {403: The authenticated user can't modify this album., 404: No such album exists, or it doesn't contain the specified custom logo.}\n\n@endpoint GET /users/{user_id}/albums/{album_id}/videos\n@desc Get all the videos in an album\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user.}\n@optional {containing_uri: str # The page containing the video URI., direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., password: str # The password of the album., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/default/duration/likes/manual/modified_time/plays) # The way to sort the results., weak_search: bool # Whether to include private videos in the search. Please note that a separate search service provides this functionality. The service performs a partial text search on the video's name.}\n@returns(200) The videos were returned.\n@errors {404: No such album exists.}\n\n@endpoint PUT /users/{user_id}/albums/{album_id}/videos\n@desc Replace all the videos in an album\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user., videos: str # A comma-separated list of video URIs.}\n@returns(201) The videos were added.\n@errors {403: The authenticated user can't add videos to albums., 404: No such album exists.}\n\n@endpoint DELETE /users/{user_id}/albums/{album_id}/videos/{video_id}\n@desc Remove a video from an album\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The video was removed.\n@errors {403: The supplied token doesn't have the proper scopes, or the authenticated user can't edit the album., 404: No such album exists.}\n\n@endpoint GET /users/{user_id}/albums/{album_id}/videos/{video_id}\n@desc Get a specific video in an album\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@optional {password: str # The password of the album.}\n@returns(200) The video was returned.\n@errors {404: No such album exists, or the video wasn't found in it.}\n\n@endpoint PUT /users/{user_id}/albums/{album_id}/videos/{video_id}\n@desc Add a specific video to an album\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The video was added.\n@errors {403: The supplied token doesn't have the proper scopes, or the authenticated user can't edit the album., 404: No such album exists.}\n\n@endpoint POST /users/{user_id}/albums/{album_id}/videos/{video_id}/set_album_thumbnail\n@desc Set a video as the album thumbnail\n@required {album_id: num # The ID of the album., user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@optional {time_code: num # The video frame time in seconds to use as the album thumbnail.}\n@returns(200) {allow_continuous_play: bool, allow_downloads: bool, allow_share: bool, autoplay: bool, brand_color: str?, created_time: str, custom_logo: any?, description: str?, domain: str?, duration: num, embed: map{html: str?}, embed_brand_color: bool?, embed_custom_logo: bool?, hide_nav: bool, hide_vimeo_logo: bool?, layout: str, link: str, loop: bool, metadata: map{connections: map{videos: map{options: [str], total: num, uri: str}}, interactions: map?{add_custom_thumbnails: map{options: [str], uri: str}, add_logos: map{options: [str], uri: str}, add_to: map?{options: [str], uri: str}, add_videos: map{options: [str], uri: str}}}, modified_time: str, name: str, pictures: any, privacy: map{password: str, view: str}, resource_key: str, review_mode: bool, share_link: str, sort: str, theme: str, uri: str, url: str?, use_custom_domain: bool, user: any, web_brand_color: bool, web_custom_logo: bool} # The album was updated with a new thumbnail.\n@errors {403: Error code 3429: The authenticated user can't edit the album., 404: Error code 5000: No such album, or user, or video exists., 500: Error code 4016: Unexpected error while setting thumbnail.}\n\n@endpoint GET /users/{user_id}/appearances\n@desc Get all the videos in which a user appears\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/duration/likes/plays) # The way to sort the results.}\n@returns(200) The videos were returned.\n\n@endpoint GET /users/{user_id}/categories\n@desc Get all the categories that a user follows\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(alphabetical/date/name) # The way to sort the results.}\n@returns(200) The categories were returned.\n@errors {403: Error code 3200: You can't view another user.}\n\n@endpoint DELETE /users/{user_id}/categories/{category}\n@desc Unsubscribe a user from a category\n@required {category: str # The name of the category., user_id: num # The ID of the user.}\n@returns(204) The user was unsubscribed.\n\n@endpoint GET /users/{user_id}/categories/{category}\n@desc Check if a user follows a category\n@required {category: str # The name of the category., user_id: num # The ID of the user.}\n@returns(204) The user is following the category.\n\n@endpoint PUT /users/{user_id}/categories/{category}\n@desc Subscribe a user to a single category\n@required {category: num # The name of the category., user_id: num # The ID of the user.}\n@returns(204) The user was subscribed.\n\n@endpoint GET /users/{user_id}/channels\n@desc Get all the channels to which a user subscribes\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/followers/videos) # The way to sort the results.}\n@returns(200) The channels were returned.\n@errors {304: No channel has been followed since the given `If-Modified-Since` header.}\n\n@endpoint DELETE /users/{user_id}/channels/{channel_id}\n@desc Unsubscribe a user from a specific channel\n@required {channel_id: num # The ID of the channel., user_id: num # The ID of the user.}\n@returns(204) The user is no longer a follower of the channel.\n@errors {404: No such channel exists.}\n\n@endpoint GET /users/{user_id}/channels/{channel_id}\n@desc Check if a user follows a channel\n@required {channel_id: num # The ID of the channel., user_id: num # The ID of the user.}\n@returns(204) The user follows the channel.\n@errors {404: No such channel exists.}\n\n@endpoint PUT /users/{user_id}/channels/{channel_id}\n@desc Subscribe a user to a specific channel\n@required {channel_id: num # The ID of the channel., user_id: num # The ID of the user.}\n@returns(204) The user is now a follower of the channel.\n@errors {404: No such channel exists.}\n\n@endpoint GET /users/{user_id}/customlogos\n@desc Get all the custom logos that belong to a user\n@required {user_id: num # The ID of the user.}\n@returns(200) The custom logos were returned.\n@errors {403: * The authenticated user can't view this particular custom logo. * The authenticated user can't view custom logos in general.}\n\n@endpoint POST /users/{user_id}/customlogos\n@desc Add a custom logo\n@required {user_id: num # The ID of the user.}\n@returns(201) The custom logo was created.\n@errors {403: * The authenticated user can't upload pictures to another user's video. * The authenticated user can't add a custom logo.}\n\n@endpoint GET /users/{user_id}/customlogos/{logo_id}\n@desc Get a specific custom logo\n@required {logo_id: num # The ID of the custom logo., user_id: num # The ID of the user.}\n@returns(200) The custom logo was returned.\n@errors {403: The authenticated user can't view custom logos.}\n\n@endpoint GET /users/{user_id}/feed\n@desc Get all the videos in a user's feed\n@required {user_id: num # The ID of the user.}\n@optional {offset: str # The pagination offset. We recommend that you use the pagination links in the feed response instead of working with this value directly. For more details, see our [pagination documentation](https://developer.vimeo.com/api/common-formats#using-the-pagination-parameter)., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., type: str(appears/category_featured/channel/facebook_feed/following/group/likes/ondemand_publish/share/tagged_with/twitter_timeline/uploads) # The feed type.}\n@returns(200) The videos were returned.\n\n@endpoint GET /users/{user_id}/followers\n@desc Get all the followers of a user\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The user's followers were returned.\n\n@endpoint GET /users/{user_id}/following\n@desc Get all the users that a user is following\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The followed users were returned.\n\n@endpoint POST /users/{user_id}/following\n@desc Follow a list of users\n@required {user_id: num # The ID of the user., users: [str] # An array of user IDs for the authenticated user to follow.}\n@returns(204) The users were followed.\n@errors {400: * Error code 2205: The request body is empty, the users array is invalid, or the list of users doesn't contain URIs. * Error code 2900: A user in the list doesn't exist. * Error code 2901: The list contains more than 100 users., 401: Error code 8000: The user access token is invalid., 403: Error code 3417: The authenticated user can't follow other users., 429: Error code 9006: The authenticated user is rate-limited from following other users., 500: Error code 4005: An unexpected error occurred.}\n\n@endpoint DELETE /users/{user_id}/following/{follow_user_id}\n@desc Unfollow a user\n@required {follow_user_id: num # The ID of the user to unfollow., user_id: num # The ID of the user.}\n@returns(204) The user was unfollowed.\n\n@endpoint GET /users/{user_id}/following/{follow_user_id}\n@desc Check if a user is following another user\n@required {follow_user_id: num # The ID of the user to follow., user_id: num # The ID of the user.}\n@returns(204) The authenticated user follows the user in question.\n@errors {404: The authenticated user doesn't follow the user in question.}\n\n@endpoint PUT /users/{user_id}/following/{follow_user_id}\n@desc Follow a specific user\n@required {follow_user_id: num # The ID of the user to follow., user_id: num # The ID of the user.}\n@returns(204) The user was followed.\n@errors {403: The authenticated user can't add followers.}\n\n@endpoint GET /users/{user_id}/groups\n@desc Get all the groups that a user has joined\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date/members/videos) # The way to sort the results.}\n@returns(200) The groups were returned.\n\n@endpoint DELETE /users/{user_id}/groups/{group_id}\n@desc Remove a user from a group\n@required {group_id: num # The ID of the group., user_id: num # The ID of the user.}\n@returns(204) The user left the group.\n@errors {403: The authenticated user owns the group. To remove this user, first apply a new group owner through PATCH.}\n\n@endpoint PUT /users/{user_id}/groups/{group_id}\n@desc Add a user to a group\n@required {group_id: num # The ID of the group., user_id: num # The ID of the user.}\n@returns(204) The user joined the group.\n@errors {403: * The authenticated user can't join groups. * The group prohibits the authenticated user from joining, either because the group is not public or because the group's privacy setting is `members`.}\n\n@endpoint GET /users/{user_id}/groups/{group_id}\n@desc Check if a user has joined a group\n@required {group_id: num # The ID of the group., user_id: num # The ID of the user.}\n@returns(204) The user belongs to the group.\n@errors {404: * No such group exists. * The authenticated user isn't a member of this group.}\n\n@endpoint GET /users/{user_id}/likes\n@desc Get all the videos that a user has liked\n@required {user_id: num # The ID of the user.}\n@optional {filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/duration/likes/plays) # The way to sort the results.}\n@returns(200) The videos were returned.\n\n@endpoint DELETE /users/{user_id}/likes/{video_id}\n@desc Cause a user to unlike a video\n@required {user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The video was unliked.\n@errors {403: The authenticated user can't like videos.}\n\n@endpoint GET /users/{user_id}/likes/{video_id}\n@desc Check if a user has liked a video\n@required {user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The user has liked the video.\n@errors {404: The user hasn't liked the video.}\n\n@endpoint PUT /users/{user_id}/likes/{video_id}\n@desc Cause a user to like a video\n@required {user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The video was liked.\n@errors {400: The authenticated user owns the video., 403: The authenticated user can't like videos.}\n\n@endpoint GET /users/{user_id}/ondemand/pages\n@desc Get all the On Demand pages of a user\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str(film/series) # The type of On Demand pages to return., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(added/alphabetical/date/modified_time/name/publish.time/rating) # The way to sort the results.}\n@returns(200) The On Demand pages were returned.\n@errors {404: No such user exists.}\n\n@endpoint POST /users/{user_id}/ondemand/pages\n@desc Create an On Demand page\n@required {user_id: num # The ID of the user., content_rating: str(drugs/language/nudity/safe/unrated/violence) # One or more ratings, either as a comma-separated list or as a JSON array depending on the request format., description: str # The description of the On Demand page., name: str # The name of the On Demand page., type: str(film/series) # The type of On Demand page.}\n@optional {accepted_currencies: str(AUD/CAD/CHF/DKK/EUR/GBP/JPY/KRW/NOK/PLN/SEK/USD) # An array of accepted currencies.  Option descriptions:  * `AUD` - Australian Dollar  * `CAD` - Canadian Dollar  * `CHF` - Swiss Franc  * `DKK` - Danish Krone  * `EUR` - Euro  * `GBP` - British Pound  * `JPY` - Japanese Yen  * `KRW` - South Korean Won  * `NOK` - Norwegian Krone  * `PLN` - Polish Zloty  * `SEK` - Swedish Krona  * `USD` - US Dollar, buy: map{active: bool, download: bool, price: map}, domain_link: str # The custom domain of the On Demand page., episodes: map{buy: map, rent: map}, link: str # The custom string to use in this On Demand page's Vimeo URL., rent: map{active: bool, period: str, price: map}, subscription: map{monthly: map}}\n@returns(201) {background: any?, colors: map{primary: str, secondary: str}, content_rating: [str], created_time: str, description: str?, domain_link: str?, episodes: map{buy: map{active: bool, price: num?}, rent: map{active: bool, period: str?, price: num?}}, film: any, genres: [map], link: str, metadata: map{connections: map{metadata: map{connections: map}}, interactions: any}, modified_time: str, name: str, pictures: any?, preorder: map{active: bool, cancel_time: str, publish_time: str, time: str}, published: map{enabled: bool, time: str}, rating: num?, resource_key: str, sku: str?, subscription: map?{active: bool, link: str?, period: str, price: map}, theme: str, thumbnail: any?, trailer: any?, type: str, uri: str, user: any?} # The On Demand page was created.\n\n@endpoint GET /users/{user_id}/ondemand/purchases\n@desc Check if a user has made a purchase or rental from an On Demand page\n@required {user_id: num # The ID of the user.}\n@returns(200) You have purchased the On Demand page.\n@errors {403: The requested user isn't the same as the authenticated user., 404: No such user or On Demand page exists.}\n\n@endpoint GET /users/{user_id}/pictures\n@desc Get all the pictures that belong to a user\n@required {user_id: num # The ID of the user.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The portrait images were returned.\n\n@endpoint POST /users/{user_id}/pictures\n@desc Add a user picture\n@required {user_id: num # The ID of the user.}\n@returns(200) The portrait image was added.\n\n@endpoint DELETE /users/{user_id}/pictures/{portraitset_id}\n@desc Delete a user picture\n@required {portraitset_id: num # The ID of the picture., user_id: num # The ID of the user.}\n@returns(204) The portrait image was removed.\n\n@endpoint GET /users/{user_id}/pictures/{portraitset_id}\n@desc Get a specific user picture\n@required {portraitset_id: num # The ID of the picture., user_id: num # The ID of the user.}\n@returns(200) The portrait image was returned.\n\n@endpoint PATCH /users/{user_id}/pictures/{portraitset_id}\n@desc Edit a user picture\n@required {portraitset_id: num # The ID of the picture., user_id: num # The ID of the user.}\n@returns(200) The portrait image was edited.\n\n@endpoint GET /users/{user_id}/portfolios\n@desc Get all the portfolios that belong to a user\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The portfolios were returned.\n\n@endpoint GET /users/{user_id}/portfolios/{portfolio_id}\n@desc Get a specific portfolio\n@required {portfolio_id: num # The ID of the portfolio., user_id: num # The ID of the user.}\n@returns(200) The portfolio was returned.\n\n@endpoint GET /users/{user_id}/portfolios/{portfolio_id}/videos\n@desc Get all the videos in a portfolio\n@required {portfolio_id: num # The ID of the portfolio., user_id: num # The ID of the user.}\n@optional {containing_uri: str # The page that contains the video URI., filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(alphabetical/comments/date/default/likes/manual/plays) # The way to sort the results.  Option descriptions:  * `default` - This will sort to the default sort set on the portfolio.}\n@returns(200) The videos were returned.\n\n@endpoint DELETE /users/{user_id}/portfolios/{portfolio_id}/videos/{video_id}\n@desc Remove a video from a portfolio\n@required {portfolio_id: num # The ID of the portfolio., user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The video was deleted.\n@errors {404: The portfolio wasn't found, or the video wasn't found.}\n\n@endpoint GET /users/{user_id}/portfolios/{portfolio_id}/videos/{video_id}\n@desc Get a specific video in a portfolio\n@required {portfolio_id: num # The ID of the portfolio., user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(200) The video was returned.\n\n@endpoint PUT /users/{user_id}/portfolios/{portfolio_id}/videos/{video_id}\n@desc Add a video to a portfolio\n@required {portfolio_id: num # The ID of the portfolio., user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The video was added.\n@errors {404: The portfolio wasn't found, or the video wasn't found.}\n\n@endpoint GET /users/{user_id}/presets\n@desc Get all the embed presets that a user has created\n@required {user_id: num # The ID of the user.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The embed presets were returned.\n\n@endpoint GET /users/{user_id}/presets/{preset_id}\n@desc Get a specific embed preset\n@required {preset_id: num # The ID of the preset., user_id: num # The ID of the user.}\n@returns(200) The embed preset was returned.\n\n@endpoint PATCH /users/{user_id}/presets/{preset_id}\n@desc Edit an embed preset\n@required {preset_id: num # The ID of the preset., user_id: num # The ID of the user.}\n@returns(200) The embed preset was edited.\n@errors {400: The outro type is invalid., 404: * The preset doesn't exist. * The authenticated user doesn't own the preset.}\n\n@endpoint GET /users/{user_id}/presets/{preset_id}/videos\n@desc Get all the videos that have been added to an embed preset\n@required {preset_id: num # The ID of the embed preset., user_id: num # The ID of the user.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The videos were returned.\n\n@endpoint GET /users/{user_id}/projects\n@desc Get all the projects that belong to a user\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(date/default/modified_time/name) # The way to sort the results.}\n@returns(200) The projects were returned.\n@errors {401: Error code 8000: The user credentials are invalid.}\n\n@endpoint POST /users/{user_id}/projects\n@desc Create a project\n@required {user_id: num # The ID of the user., name: str # The name of the project.}\n@returns(201) {created_time: str, metadata: map{connections: map{videos: map{options: [str], total: num, uri: str}}}, modified_time: str, name: str, resource_key: str, uri: str, user: any} # The project was created.\n@errors {400: * Error code 2205: The input is empty. * Error code 2204: The input is invalid., 401: Error code 8000: The user credentials are invalid., 403: Error code 3200: The authenticated user can't create projects.}\n\n@endpoint DELETE /users/{user_id}/projects/{project_id}\n@desc Delete a project\n@required {project_id: num # The ID of the project., user_id: num # The ID of the user.}\n@optional {should_delete_clips: bool # Whether to delete all the videos in the project along with the project itself.}\n@returns(204) The project was deleted.\n@errors {401: Error code 8000: The user credentials are invalid., 403: Error code 3200: The authenticated user can't delete the project., 404: Error code 5000: No such project exists.}\n\n@endpoint GET /users/{user_id}/projects/{project_id}\n@desc Get a specific project\n@required {project_id: num # The ID of the project., user_id: num # The ID of the user.}\n@returns(200) {created_time: str, metadata: map{connections: map{videos: map{options: [str], total: num, uri: str}}}, modified_time: str, name: str, resource_key: str, uri: str, user: any} # The project was returned.\n@errors {401: Error code 8000: The user credentials are invalid., 404: Error code 5000: No such project exists.}\n\n@endpoint PATCH /users/{user_id}/projects/{project_id}\n@desc Edit a project\n@required {project_id: num # The ID of the project., user_id: num # The ID of the user., name: str # The name of the project.}\n@returns(200) {created_time: str, metadata: map{connections: map{videos: map{options: [str], total: num, uri: str}}}, modified_time: str, name: str, resource_key: str, uri: str, user: any} # The project was edited.\n@errors {400: * Error code 2204: The input is invalid. * Error code 2205: The input is empty., 401: Error code 8000: The user credentials are invalid., 403: Error code 3200: The authenticated user can't edit the project., 404: Error code 5000: No such project exists.}\n\n@endpoint DELETE /users/{user_id}/projects/{project_id}/videos\n@desc Remove a list of videos from a project\n@required {project_id: num # The ID of the project., user_id: num # The ID of the user., uris: str # A comma-separated list of the video URIs to remove.}\n@optional {should_delete_clips: bool # Whether to delete the videos when removing them from the project.}\n@returns(204) The videos were removed.\n@errors {400: Error code 2204: The input is invalid., 401: Error code 8000: The user credentials are invalid., 404: Error code 5000: No such project exists.}\n\n@endpoint GET /users/{user_id}/projects/{project_id}/videos\n@desc Get all the videos in a project\n@required {project_id: num # The ID of the project., user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(alphabetical/date/default/duration/last_user_action_event_date) # The way to sort the results.}\n@returns(200) The videos were returned.\n@errors {401: Error code 8000: The user credentials are invalid., 404: Error code 5000: No such project exists.}\n\n@endpoint PUT /users/{user_id}/projects/{project_id}/videos\n@desc Add a list of videos to a project\n@required {project_id: num # The ID of the project., user_id: num # The ID of the user., uris: str # A comma-separated list of video URIs to add.}\n@returns(204) The videos were added.\n@errors {400: Error code 2204: The input is invalid., 401: Error code 8000: The user credentials are invalid., 404: Error code 5000: No such project or video exists.}\n\n@endpoint DELETE /users/{user_id}/projects/{project_id}/videos/{video_id}\n@desc Remove a specific video from a project\n@required {project_id: num # The ID of the project., user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The video was removed.\n@errors {400: Error code 2204: The input is invalid., 401: Error code 8000: The user credentials are invalid., 404: Error code 5000: No such video exists in the project.}\n\n@endpoint PUT /users/{user_id}/projects/{project_id}/videos/{video_id}\n@desc Add a specific video to a project\n@required {project_id: num # The ID of the project., user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The video was added.\n@errors {404: Error code 5000: No such user, project, or video exists.}\n\n@endpoint DELETE /users/{user_id}/uploads/{upload_id}\n@desc Complete a user's streaming upload\n@required {upload_id: num # The ID of the upload attempt., user_id: num # The ID of the user., signature: str # The crypto signature of the completed upload., video_file_id: num # The ID of the uploaded file.}\n@returns(201) The streaming upload is complete.\n@errors {400: Error code 2502: The format of the video file is invalid., 404: * Error code 5006: No such video file exists. * Error code 5007: No such signature exists. * Error code 8400: The signature is invalid., 500: Error code 4011: The upload server returned an HTTP status code other than 200.}\n\n@endpoint GET /users/{user_id}/uploads/{upload_id}\n@desc Get a user's upload attempt\n@required {upload_id: num # The ID of the upload attempt., user_id: num # The ID of the user.}\n@returns(200) The upload attempt was returned.\n\n@endpoint GET /users/{user_id}/videos\n@desc Get all the videos that a user has uploaded\n@required {user_id: num # The ID of the user.}\n@optional {containing_uri: str # The page that contains the video URI. Available only when not paired with **query**., direction: str(asc/desc) # The sort direction of the results., filter: str(app_only/embeddable/featured/playable) # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., filter_playable: bool # Whether to filter the results by playable videos (`true`) or non-playable videos (`false`)., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/default/duration/last_user_action_event_date/likes/modified_time/plays) # The way to sort the results.}\n@returns(200) The videos were returned.\n@errors {304: The authenticated user hasn't created any videos since the given **If-Modified-Since** header.}\n\n@endpoint POST /users/{user_id}/videos\n@desc Upload a video\n@required {user_id: num # The ID of the user.}\n@returns(201) The upload procedure has begun.\n@errors {400: * Error code 2205: The body of the request isn't formatted properly. * Error code 2204: The request contains invalid body parameters. * Error code 2230: The upload type is invalid. * Error code 3116: The **type** payload parameter was supplied instead of **upload.approach**. Use **upload.approach** starting from API version 3.4., 401: Error code 8002: No user is associated with the access token., 403: * Error code 4102: The authenticated user's allotted quota has been reached. * Error code 4101: The authenticated user's maximum disk space has been reached., 500: Error code 4003: There is a problem initiating the upload.}\n\n@endpoint GET /users/{user_id}/videos/{video_id}\n@desc Check if a user owns a video\n@required {user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(200) The user owns the video.\n@errors {404: The authenticated user doesn't own the video.}\n\n@endpoint GET /users/{user_id}/watchlater\n@desc Get all the videos in a user's Watch Later queue\n@required {user_id: num # The ID of the user.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str # The attribute by which to filter the results., filter_embeddable: bool # Whether to filter the results by embeddable videos (`true`) or non-embeddable videos (`false`). Required only if **filter** is `embeddable`., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/comments/date/duration/likes/plays) # The way to sort the results.}\n@returns(200) The videos were returned.\n@errors {304: The user hasn't added any videos to their Watch Later queue since the given `If-Modified-Since` header.}\n\n@endpoint DELETE /users/{user_id}/watchlater/{video_id}\n@desc Remove a video from a user's Watch Later queue\n@required {user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The video was deleted.\n\n@endpoint GET /users/{user_id}/watchlater/{video_id}\n@desc Check if a user has added a specific video to their Watch Later queue\n@required {user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(200) The video appears in the user's Watch Later queue.\n@errors {404: The video doesn't appear in the user's Watch Later queue.}\n\n@endpoint PUT /users/{user_id}/watchlater/{video_id}\n@desc Add a video to a user's Watch Later queue\n@required {user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The video was added.\n\n@endgroup\n\n@group videos\n@endpoint GET /videos\n@desc Search for videos\n@required {query: str # The search query.}\n@optional {direction: str(asc/desc) # The sort direction of the results., filter: str(CC/CC-BY/CC-BY-NC/CC-BY-NC-ND/CC-BY-NC-SA/CC-BY-ND/CC-BY-SA/CC0/categories/duration/in-progress/minimum_likes/trending/upload_date) # The attribute by which to filter the results. `CC` and related filters target videos with the corresponding Creative Commons licenses. For more information, see our [Creative Commons](https://vimeo.com/creativecommons) page., links: str # A comma-separated list of video URLs to find., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(alphabetical/comments/date/duration/likes/plays/relevant) # The way to sort the results., uris: str # A comma-separated list of video URIs to find.}\n@returns(200) The search results were returned.\n@errors {400: * Error code 2101: Either the **uris** or **links** parameter has filtering or sorting arguments. * Error code 2204: A problem occurred with the batch request., 503: * Search is disabled. * Error code 7300: An internal search error occurred.}\n\n@endpoint DELETE /videos/{video_id}\n@desc Delete a video\n@required {video_id: num # The ID of the video.}\n@returns(204) The video was deleted.\n@errors {403: The authenticated user doesn't own the video and can't delete it.}\n\n@endpoint GET /videos/{video_id}\n@desc Get a specific video\n@required {video_id: num # The ID of the video.}\n@returns(200) The video was returned.\n@errors {404: No such video exists.}\n\n@endpoint PATCH /videos/{video_id}\n@desc Edit a video\n@required {video_id: num # The ID of the video.}\n@returns(200) The video was edited.\n@errors {400: A parameter is invalid., 403: * The authenticated user doesn't own the video. * The **privacy** field is `disable`, and the authenticated user can't set extra embed options. * The **privacy** field is `contacts`, and the authenticated user can't follow creators. * The authenticated user has an opted-out Pro account, and **privacy.view** is `users`, `password`, `nobody`, or `public`.}\n\n@endpoint GET /videos/{video_id}/available_albums\n@desc Get all the albums to which a user can add or remove a specific video\n@required {video_id: num # The ID of the video.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The albums were returned.\n@errors {403: Error code 3433: The authenticated user can't add this video to collections.}\n\n@endpoint GET /videos/{video_id}/available_channels\n@desc Get all the channels to which a user can add or remove a specific video\n@required {video_id: num # The ID of the video.}\n@returns(200) The channels were returned.\n@errors {403: The authenticated user can't add or remove this video from any channel., 404: The authenticated user can't moderate channels.}\n\n@endpoint GET /videos/{video_id}/categories\n@desc Get all the categories to which a video belongs\n@required {video_id: num # The ID of the video.}\n@returns(200) The categories were returned.\n@errors {404: No such video exists.}\n\n@endpoint PUT /videos/{video_id}/categories\n@desc Suggest categories for a video\n@required {video_id: num # The ID of the video.}\n@returns(201) The categories were suggested.\n@errors {403: You don't own this video., 404: No such video exists, or no such category exists.}\n\n@endpoint GET /videos/{video_id}/comments\n@desc Get all the comments on a video\n@required {video_id: num # The ID of the video.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The comments were returned.\n\n@endpoint POST /videos/{video_id}/comments\n@desc Add a comment to a video\n@required {video_id: num # The ID of the video.}\n@returns(201) The comment was added.\n@errors {400: Error code 2207: The comment text is missing., 401: Error code 8003: The user credentials are invalid., 403: * Error code 3301: The comment was flagged as spam. * Error code 3411: The authenticated user is unverified. * Error code 3412: The authenticated user can't comment. * Error code 3413: Comments are disabled for this video.}\n\n@endpoint DELETE /videos/{video_id}/comments/{comment_id}\n@desc Delete a video comment\n@required {comment_id: num # The ID of the comment., video_id: num # The ID of the video.}\n@returns(204) The comment was deleted.\n@errors {403: Error code 3415: The authenticated user didn't write this comment and can't delete it., 404: * No such video or comment exists. * Error code 5000: The comment wasn't deleted and still exists.}\n\n@endpoint GET /videos/{video_id}/comments/{comment_id}\n@desc Get a specific video comment\n@required {comment_id: num # The ID of the comment., video_id: num # The ID of the video.}\n@returns(200) The comment was returned.\n@errors {404: No such video or comment exists.}\n\n@endpoint PATCH /videos/{video_id}/comments/{comment_id}\n@desc Edit a video comment\n@required {comment_id: num # The ID of the comment., video_id: num # The ID of the video.}\n@returns(200) The comment was edited.\n@errors {400: Error code 2207: The comment text is missing., 403: * Error code 3301: The comment was flagged as spam. * Error code 3411: The authenticated user is unverified. * Error code 3412: The authenticated user can't post comments. * Error code 3414: The authenticated user didn't write the comment and can't edit it.}\n\n@endpoint GET /videos/{video_id}/comments/{comment_id}/replies\n@desc Get all the replies to a video comment\n@required {comment_id: num # The ID of the comment., video_id: num # The ID of the video.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The replies were returned.\n@errors {404: No such video or comment exists.}\n\n@endpoint POST /videos/{video_id}/comments/{comment_id}/replies\n@desc Add a reply to a video comment\n@required {comment_id: num # The ID of the comment., video_id: num # The ID of the video.}\n@returns(201) The reply was added.\n@errors {400: Error code 2207: The comment text is missing., 403: * Error code 3301: The comment was flagged as spam. * Error code 3411: The authenticated user is unverified. * Error code 3412: The authenticated user can't comment. * Error code 3413: Comments are disabled on this video.}\n\n@endpoint GET /videos/{video_id}/credits\n@desc Get all the credited users in a video\n@required {video_id: num # The ID of the video.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., query: str # The search query to use to filter the results., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The credited users were returned.\n\n@endpoint POST /videos/{video_id}/credits\n@desc Credit a user in a video\n@required {video_id: num # The ID of the video.}\n@returns(201) The credit was added.\n@errors {400: * A parameter is invalid. * The authenticated user has an unverified email address. * There is a user block between the video owner and the person receiving credit., 403: The authenticated user doesn't own the video.}\n\n@endpoint DELETE /videos/{video_id}/credits/{credit_id}\n@desc Delete the credit for a user in a video\n@required {credit_id: num # The ID of the credit., video_id: num # The ID of the video.}\n@returns(204) The credit was deleted.\n@errors {400: The authenticated user is neither the creator of the credit nor the credited user.}\n\n@endpoint GET /videos/{video_id}/credits/{credit_id}\n@desc Get a specific credited user in a video\n@required {credit_id: num # The ID of the credit., video_id: num # The ID of the video.}\n@returns(200) The credit was returned.\n@errors {404: No such video or credit exists.}\n\n@endpoint PATCH /videos/{video_id}/credits/{credit_id}\n@desc Edit the credit for a user in a video\n@required {credit_id: num # The ID of the credit., video_id: num # The ID of the video.}\n@returns(200) The credit was edited.\n@errors {400: A parameter is invalid., 404: No such video or credit exists.}\n\n@endpoint GET /videos/{video_id}/likes\n@desc Get all the users who have liked a video\n@required {video_id: num # The ID of the video.}\n@optional {direction: str(asc/desc) # The sort direction of the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100., sort: str(alphabetical/date) # The way to sort the results.}\n@returns(200) The users were returned.\n\n@endpoint GET /videos/{video_id}/pictures\n@desc Get all the thumbnails of a video\n@required {video_id: num # The ID of the video.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The thumbnails were returned.\n\n@endpoint POST /videos/{video_id}/pictures\n@desc Add a video thumbnail\n@required {video_id: num # The ID of the video.}\n@returns(201) The thumbnail was created.\n\n@endpoint DELETE /videos/{video_id}/pictures/{picture_id}\n@desc Delete a video thumbnail\n@required {picture_id: num # The ID of the thumbnail., video_id: num # The ID of the video.}\n@returns(204) The thumbnail was deleted.\n\n@endpoint GET /videos/{video_id}/pictures/{picture_id}\n@desc Get a specific video thumbnail\n@required {picture_id: num # The ID of the thumbnail., video_id: num # The ID of the video.}\n@returns(200) The thumbnail was returned.\n\n@endpoint PATCH /videos/{video_id}/pictures/{picture_id}\n@desc Edit a video thumbnail\n@required {picture_id: num # The ID of the thumbnail., video_id: num # The ID of the video.}\n@returns(200) The thumbnail was edited.\n\n@endpoint DELETE /videos/{video_id}/presets/{preset_id}\n@desc Remove an embed preset from a video\n@required {preset_id: num # The ID of the preset., video_id: num # The ID of the video.}\n@returns(204) The embed preset was removed.\n@errors {404: No such video or embed preset exists.}\n\n@endpoint GET /videos/{video_id}/presets/{preset_id}\n@desc Check if an embed preset has been added to a video\n@required {preset_id: num # The ID of the preset., video_id: num # The ID of the video.}\n@returns(204) The embed preset has been added to the video.\n@errors {404: No such video or embed preset exists.}\n\n@endpoint PUT /videos/{video_id}/presets/{preset_id}\n@desc Add an embed preset to a video\n@required {preset_id: num # The ID of the preset., video_id: num # The ID of the video.}\n@returns(204) The embed preset was assigned.\n\n@endpoint GET /videos/{video_id}/privacy/domains\n@desc Get all the domains on a video's whitelist\n@required {video_id: num # The ID of the video.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The domains were returned.\n@errors {403: There are no domains on which the video can be embedded.}\n\n@endpoint DELETE /videos/{video_id}/privacy/domains/{domain}\n@desc Remove a domain from a video's whitelist\n@required {domain: str # The domain name., video_id: num # The ID of the video.}\n@returns(204) The domain was removed.\n@errors {403: The video's embed privacy setting isn't `whitelist`., 404: No such domain exists.}\n\n@endpoint PUT /videos/{video_id}/privacy/domains/{domain}\n@desc Add a domain to a video's whitelist\n@required {domain: str # The domain name., video_id: num # The ID of the video.}\n@returns(204) The video is now embeddable on the domain.\n@errors {403: The video doesn't have a user-defined access list.}\n\n@endpoint GET /videos/{video_id}/privacy/users\n@desc Get all the users who can view a private video\n@required {video_id: num # The ID of the video.}\n@optional {page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The users were returned.\n@errors {400: No users can view this private video by default.}\n\n@endpoint PUT /videos/{video_id}/privacy/users\n@desc Permit a list of users to view a private video\n@required {video_id: num # The ID of the video.}\n@returns(200) The users can now view the private video.\n\n@endpoint DELETE /videos/{video_id}/privacy/users/{user_id}\n@desc Restrict a user from viewing a private video\n@required {user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(204) The user was disallowed from viewing the private video.\n@errors {403: The video isn't set to a user-defined access list., 404: No such user exists.}\n\n@endpoint PUT /videos/{video_id}/privacy/users/{user_id}\n@desc Permit a specific user to view a private video\n@required {user_id: num # The ID of the user., video_id: num # The ID of the video.}\n@returns(200) The user can now view the private video.\n@returns(204) The user can already view this private video.\n@errors {403: The video doesn't have a user-defined access list.}\n\n@endpoint GET /videos/{video_id}/tags\n@desc Get all the tags of a video\n@required {video_id: num # The ID of the video.}\n@returns(200) The tags were returned.\n\n@endpoint PUT /videos/{video_id}/tags\n@desc Add a list of tags to a video\n@required {video_id: num # The ID of the video.}\n@returns(200) The tags were added.\n@errors {400: * The request body wasn't supplied. * A parameter is invalid. * The request body doesn't contain a JSON-encoded list of tags.., 403: * The authenticated user can't add tags to a video. * The total number of tags can't exceed 20.}\n\n@endpoint DELETE /videos/{video_id}/tags/{word}\n@desc Remove a tag from a video\n@required {video_id: num # The ID of the video., word: str # The tag word.}\n@returns(204) The tag was deleted.\n@errors {400: * A parameter is invalid. * The tag is invalid.}\n\n@endpoint GET /videos/{video_id}/tags/{word}\n@desc Check if a tag has been added to a video\n@required {video_id: num # The ID of the video., word: str # The tag word.}\n@returns(200) The tag has been added to the video.\n@errors {400: * A parameter is invalid. * The tag is invalid., 404: No such tag exists within the video.}\n\n@endpoint PUT /videos/{video_id}/tags/{word}\n@desc Add a specific tag to a video\n@required {video_id: num # The ID of the video., word: str # The tag word.}\n@returns(200) The tag was added.\n@errors {400: * The tag is invalid. * An unsupported parameter was supplied., 403: The total number of tags can't exceed 20.}\n\n@endpoint GET /videos/{video_id}/texttracks\n@desc Get all the text tracks of a video\n@required {video_id: num # The ID of the video.}\n@returns(200) The text tracks were returned.\n@errors {404: No such video exists.}\n\n@endpoint POST /videos/{video_id}/texttracks\n@desc Add a text track to a video\n@required {video_id: num # The ID of the video.}\n@returns(201) The text track was added.\n@errors {403: * The authenticated user can't add the text track. * Error code 2204: The request contains errors.}\n\n@endpoint DELETE /videos/{video_id}/texttracks/{texttrack_id}\n@desc Delete a text track\n@required {texttrack_id: num # The ID of the text track., video_id: num # The ID of the video.}\n@returns(204) The text track was deleted.\n@errors {403: * Error code 3430: The authenticated user doesn't have permission to access the text track. * Error code 3431: This text track is disabled., 404: * No such video or text track exists. * The authenticated user can't delete the text track. * Error code 5014: The specified text track doesn't exist. * Error code 5015: The specified text track belongs to a different video.}\n\n@endpoint GET /videos/{video_id}/texttracks/{texttrack_id}\n@desc Get a specific text track\n@required {texttrack_id: num # The ID of the text track., video_id: num # The ID of the video.}\n@returns(200) The text track was returned.\n@errors {403: * Error code 3430: The authenticated user doesn't have permission to access the text track. * Error code 3431: This text track is disabled., 404: * No such video or text track exists. * Error code 5014: The specified text track doesn't exist. * Error code 5015: The specified text track belongs to a different video.}\n\n@endpoint PATCH /videos/{video_id}/texttracks/{texttrack_id}\n@desc Edit a text track\n@required {texttrack_id: num # The ID of the text track., video_id: num # The ID of the video.}\n@returns(200) The text track was edited.\n@errors {403: * The authenticated user can't edit the text track. * Error code 2204: There are errors in the request. * Error code 3430: The authenticated user doesn't have permission to access the text track. * Error code 3431: This text track is disabled., 404: * No such video or text track exists. * Error code 5014: The specified text track doesn't exist. * Error code 5015: The specified text track belongs to a different video.}\n\n@endpoint POST /videos/{video_id}/timelinethumbnails\n@desc Add a new timeline event thumbnail to a video\n@required {video_id: num # The ID of the video.}\n@returns(201) The timeline event thumbnail was created.\n@errors {403: The authenticated user can't upload pictures to another user's video., 404: No such video exists.}\n\n@endpoint GET /videos/{video_id}/timelinethumbnails/{thumbnail_id}\n@desc Get a timeline event thumbnail\n@required {thumbnail_id: num # The ID of the timeline event thumbnail., video_id: num # The ID of the video.}\n@returns(200) The timeline event thumbnail was returned.\n@errors {403: The authenticated user can't view this timeline event thumbnail.}\n\n@endpoint POST /videos/{video_id}/versions\n@desc Add a version to a video\n@required {video_id: num # The ID of the video.}\n@returns(201) The version was added.\n@errors {400: Error code 2204: The request input contains invalid versions data., 403: Error code 3427: The authenticated user can't edit the video., 404: * Error code 5011: An upload isn't associated with this version. * Error code 5012: A video isn't associated with this upload. * Error code 5013: The endpoint isn't available, because the specified version of the API is less than 3.4 and **upload.approach** isn't `tus`.}\n\n@endpoint GET /videos/{video_id}/videos\n@desc Get all the related videos of a video\n@required {video_id: num # The ID of the video.}\n@optional {filter: str # The attribute by which to filter the results., page: num # The page number of the results to show., per_page: num # The number of items to show on each page of results, up to a maximum of 100.}\n@returns(200) The related videos were returned.\n@errors {400: The value of **filter** isn't `related`.}\n\n@endgroup\n\n@end\n"}}