Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://api.vimeo.com
/
This method returns the full OpenAPI specification for the Vimeo API.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| openapi | query | optional | boolean | Return an OpenAPI specification. |
| version | query | optional | string | Return an OpenAPI specification for the specified API version. This overwrites the version field provided in the Accept header. |
Standard request.
GET /
/oauth/authorize/client
This method uses the OAuth protocol to authorize a client. For details on OAuth client authorization, see our Working with Authentication guide or the OAuth spec.
application/vnd.vimeo.auth+json
ClientAuthRequest
| Property | Type | Required |
|---|---|---|
| scope | string | required |
| grant_type | string | required |
The authorization was successful.
Error code 8001: No such client secret exists.
POST /oauth/authorize/client
/oauth/authorize/vimeo_oauth1
This method exchanges a legacy Advanced API OAuth 1 token for an API v3 OAuth 2 token.
application/vnd.vimeo.auth+json
AuthenticationExtrasConvertOAuth1ToOAuth2Request
| Property | Type | Required |
|---|---|---|
| token | string | required |
| grant_type | string | required |
| token_secret | string | required |
The token was converted.
POST /oauth/authorize/vimeo_oauth1
/oauth/verify
This method verifies that an OAuth 2 access token exists.
The token was verified.
The token isn’t a valid OAuth 2 token.
GET /oauth/verify
/tokens
This method revokes the access token that the requesting app is currently using. The token must be of the OAuth 2 type.
The token was revoked.
Access can’t be revoked for an OAuth 1 token.
DELETE /tokens
/oauth/access_token
This method exchanges an OAuth authorization code for an OAuth access token.
application/vnd.vimeo.auth+json
AuthenticationExtrasExchangeOAuthCodeExchangeRequest
| Property | Type | Required |
|---|---|---|
| code | string | required |
| grant_type | string | required |
| redirect_uri | string | required |
The authorization code was exchanged.
POST /oauth/access_token
/categories/{category}/channels
This method returns every channel that belongs to the specified category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| query | query | optional | string | The search query to use to filter the results. |
| sort | query | optional | string | The way to sort the results. Option descriptions:
|
The channels were returned.
No such category exists.
GET /categories/{category}/channels
/categories
This method returns every available category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| sort | query | optional | string | The way to sort the results. |
The categories were returned.
GET /categories
/categories/{category}
This method returns the specified category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
The category was returned.
No such category exists.
GET /categories/{category}
/categories/{category}/groups
This method returns every group that belongs to the specified category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| query | query | optional | string | The search query to use to filter the results. |
| sort | query | optional | string | The way to sort the results. Option descriptions:
|
The groups were returned.
No such category exists.
GET /categories/{category}/groups
/me/categories
This method returns every category that the authenticated user follows.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| sort | query | optional | string | The way to sort the results. Option descriptions:
|
The categories were returned.
Error code 3200: Only the authenticated user can access this information.
GET /me/categories
/me/categories/{category}
This method causes the authenticated user to stop following the specified category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
The user has stopped following the category.
DELETE /me/categories/{category}
/me/categories/{category}
This method determines whether the authenticated user follows the specified category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
The user is following the category.
GET /me/categories/{category}
/me/categories/{category}
This method causes the authenticated user to follow the specified category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | number | The name of the category. |
The user is following the category.
PUT /me/categories/{category}
/users/{user_id}/categories
This method returns every category that the authenticated user follows.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| user_id | path | required | number | The ID of the user. |
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| sort | query | optional | string | The way to sort the results. Option descriptions:
|
The categories were returned.
Error code 3200: Only the authenticated user can access this information.
GET /users/{user_id}/categories
/users/{user_id}/categories/{category}
This method causes the authenticated user to stop following the specified category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
| user_id | path | required | number | The ID of the user. |
The user has stopped following the category.
DELETE /users/{user_id}/categories/{category}
/users/{user_id}/categories/{category}
This method determines whether the authenticated user follows the specified category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
| user_id | path | required | number | The ID of the user. |
The user is following the category.
GET /users/{user_id}/categories/{category}
/users/{user_id}/categories/{category}
This method causes the authenticated user to follow the specified category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | number | The name of the category. |
| user_id | path | required | number | The ID of the user. |
The user is following the category.
PUT /users/{user_id}/categories/{category}
/categories/{category}/videos
This method returns every video that belongs to the specified category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| filter | query | optional | string | The attribute by which to filter the results. Option descriptions:
|
| filter_embeddable | query | optional | boolean | Whether to filter the results by embeddable videos ( |
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| query | query | optional | string | The search query to use to filter the results. |
| sort | query | optional | string | The way to sort the results. Option descriptions:
|
The videos were returned.
No such category exists.
GET /categories/{category}/videos
/categories/{category}/videos/{video_id}
This method returns a single video in the specified category. You can use this method to determine whether the video belongs to the category.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
| video_id | path | required | number | The ID of the video. |
The video was returned.
No such category exists, or the video doesn’t belong to it.
GET /categories/{category}/videos/{video_id}
/videos/{video_id}/categories
This method returns every category that contains the specified video.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| video_id | path | required | number | The ID of the video. |
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
The categories were returned.
No such video exists.
GET /videos/{video_id}/categories
/videos/{video_id}/categories
This method sets multiple categories and subcategories for the specified video. Include the categories as a JSON block in the body of the request using the category field, like this: [{ "category": "Tech" }, { "category": "Music" }]. The authenticated user must have edit access to the video. For more information on batch requests like this one, see Using Common Formats and Parameters.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| video_id | path | required | number | The ID of the video. |
application/vnd.vimeo.category+json
CategoriesVideosSetVideoCategoriesRequest
| Property | Type | Required |
|---|---|---|
| category | array | required |
The categories were suggested.
The authenticated user doesn’t own this video.
No such video exists, or no such category exists.
PUT /videos/{video_id}/categories
/channels/{channel_id}/categories
This method returns every category to which the specified channel belongs.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
The categories were returned.
No such channel exists.
GET /channels/{channel_id}/categories
/channels/{channel_id}/categories
This method adds the specified channel to multiple categories.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
application/json
ChannelsCategoriesAddChannelToMultipleCategoriesRequest
| Property | Type | Required |
|---|---|---|
| channels | array | required |
The channel was added to the categories.
Error code 8003: The user credentials are invalid.
Error code 3200: The authenticated user can’t add categories to the channel.
No such channel exists.
PUT /channels/{channel_id}/categories
/channels/{channel_id}/categories/{category}
This method removes a channel from the specified category. The authenticated user must be the owner of the channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
| channel_id | path | required | number | The ID of the channel. |
The channel was removed.
Error code 8003: The user credentials are invalid.
Error code 3200: The authenticated user doesn’t own the channel or isn’t a channel moderator.
No such channel or category exists.
DELETE /channels/{channel_id}/categories/{category}
/channels/{channel_id}/categories/{category}
This method adds the specified channel to a single category. The authenticated user must be the owner of the channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| category | path | required | string | The name of the category. |
| channel_id | path | required | number | The ID of the channel. |
The channel was added to the category.
Error code 2204: You exceeded the maximum number of channel categories.
Error code 8003: The user credentials are invalid.
Error code 3200: The authenticated user doesn’t own the channel or isn’t a channel moderator.
No such channel or category exists.
PUT /channels/{channel_id}/categories/{category}
/channels
This method returns all available channels.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| filter | query | optional | string | The attribute by which to filter the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| query | query | optional | string | The search query to use to filter the results. |
| sort | query | optional | string | The way to sort the results. Option descriptions:
|
The channels were returned.
The relevant sort has no search query.
GET /channels
/channels
This method creates a new channel.
application/vnd.vimeo.channel+json
CreateChannelRequest
| Property | Type | Required |
|---|---|---|
| link | string | optional |
| name | string | required |
| privacy | string | required |
| description | string | optional |
The channel was created.
A parameter is invalid.
The authenticated user can’t create channels.
POST /channels
/channels/{channel_id}
This method deletes the specified channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
The channel was deleted.
The authenticated user doesn’t own this channel.
DELETE /channels/{channel_id}
/channels/{channel_id}
This method returns a single channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
The channel was returned.
GET /channels/{channel_id}
/channels/{channel_id}
This method edits the specified channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
application/vnd.vimeo.channel+json
EditChannelRequest
| Property | Type | Required |
|---|---|---|
| link | string | optional |
| name | string | optional |
| privacy | string | optional |
| description | string | optional |
The channel was edited.
A parameter is invalid.
PATCH /channels/{channel_id}
/me/channels
This method returns all the channels to which the specified user subscribes.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| filter | query | optional | string | The attribute by which to filter the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| query | query | optional | string | The search query to use to filter the results. |
| sort | query | optional | string | The way to sort the results. Option descriptions:
|
The channels were returned.
No channel has been followed since the given If-Modified-Since header.
GET /me/channels
/users/{user_id}/channels
This method returns all the channels to which the specified user subscribes.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| user_id | path | required | number | The ID of the user. |
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| filter | query | optional | string | The attribute by which to filter the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| query | query | optional | string | The search query to use to filter the results. |
| sort | query | optional | string | The way to sort the results. Option descriptions:
|
The channels were returned.
No channel has been followed since the given If-Modified-Since header.
GET /users/{user_id}/channels
/channels/{channel_id}/moderators
This method removes multiple moderators from the specified channel. The authenticated user must be the owner of the channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
application/vnd.vimeo.user+json
ChannelsModeratorsRemoveMultipleFromChannelRequest
| Property | Type | Required |
|---|---|---|
| user_uri | string | required |
The moderators were removed.
The authenticated user doesn’t own the channel, a requested user isn’t a moderator of the channel, or a requested user is the owner of the channel.
No such channel exists, or no such user exists.
DELETE /channels/{channel_id}/moderators
/channels/{channel_id}/moderators
This method returns every moderator of the specified channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| query | query | optional | string | The search query to use to filter the results. |
| sort | query | optional | string | The way to sort the results. Option descriptions:
|
The moderators were returned.
GET /channels/{channel_id}/moderators
/channels/{channel_id}/moderators
This method replaces the current list of channel moderators with a new list. The authenticated user must be the owner of the channel and a follower of each requested user to add them as a channel moderator.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
application/json
ChannelsModeratorsReplaceModeratorsRequest
| Property | Type | Required |
|---|---|---|
| user_uri | string | required |
The moderators were replaced.
Error code 2908: The list contains more than 100 users.
The authenticated user doesn’t own the channel.
No such channel exists.
PATCH /channels/{channel_id}/moderators
/channels/{channel_id}/moderators
This method adds multiple users as moderators to the specified channel. Include the users by their URI as a JSON array in the body of the request using the user_uri field, like this: [{ "user_uri": "/users/1234" }, { "user_uri": "/users/1235" }]. The authenticated user must be a follower of a requested user to add this person as a moderator. For more information on batch requests like this one, see Using Common Formats and Parameters.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
The moderators were added.
Error code 2908: The list contains more than 100 users.
The authenticated user doesn’t own the channel, a requested user is already a moderator of the channel, or the authenticated user doesn’t follow a requested user.
No such channel exists, or no such user exists.
PUT /channels/{channel_id}/moderators
/channels/{channel_id}/moderators/{user_id}
This method removes a single moderator from the specified channel. The authenticated user must be the owner of the channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
| user_id | path | required | number | The ID of the user. |
The moderator was removed.
The authenticated user doesn’t own the channel, the requested user isn’t a moderator of the channel, or the requested user is the owner of the channel.
No such channel exists, or no such user exists.
DELETE /channels/{channel_id}/moderators/{user_id}
/channels/{channel_id}/moderators/{user_id}
This method returns a single moderator of the specified channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
| user_id | path | required | number | The ID of the user. |
The moderator was returned.
GET /channels/{channel_id}/moderators/{user_id}
/channels/{channel_id}/moderators/{user_id}
This method adds a single user as a moderator to the specified channel. The authenticated user must be a follower of the requested user to add them as a channel moderator.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
| user_id | path | required | number | The ID of the user. |
OK
The authenticated user doesn’t own the channel, the requested user is already a moderator of the channel, or the authenticated user doesn’t follow the requested user.
No such channel exists, or no such user exists.
PUT /channels/{channel_id}/moderators/{user_id}
/channels/{channel_id}/privacy/users
This method returns all the users who have access to the specified private channel. The authenticated user must be the owner of the channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
The users were returned.
Error code 8003: The user credentials are invalid.
Error code 3200: The authenticated user doesn’t own this channel.
GET /channels/{channel_id}/privacy/users
/channels/{channel_id}/privacy/users
This method gives multiple users access to the specified private channel. The authenticated user must be the owner of the channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
application/vnd.vimeo.user+json
ChannelsPrivateChannelMembersPermitUserAccessRequest
| Property | Type | Required |
|---|---|---|
| users | array | required |
The users can access the private channel.
Error code 8003: The user credentials are invalid.
Error code 3200: The authenticated user doesn’t own this channel.
Error code 2204: A requested user can’t have access to the channel.
PUT /channels/{channel_id}/privacy/users
/channels/{channel_id}/privacy/users/{user_id}
This method prevents a single user from being able to access the specified private channel. The authenticated user must be the owner of the channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
| user_id | path | required | number | The ID of the user. |
The user can’t acceess the private channel.
Error code 8003: The user credentials are invalid.
Error code 3200: The authenticated user doesn’t own the channel.
DELETE /channels/{channel_id}/privacy/users/{user_id}
/channels/{channel_id}/privacy/users/{user_id}
This method gives a single user access to the specified private channel. The authenticated user must be the owner of the channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
| user_id | path | required | number | The ID of the user. |
The user can now view the private channel.
Error code 8003: The user credentials are invalid.
Error code 3200: The authenticated user doesn’t own the channel.
PUT /channels/{channel_id}/privacy/users/{user_id}
/channels/{channel_id}/users
This method returns every follower of the specified channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
| direction | query | optional | string | The sort direction of the results. Option descriptions:
|
| filter | query | required | string | The attribute by which to filter the results. Option descriptions:
|
| page | query | optional | number | The page number of the results to show. |
| per_page | query | optional | number | The number of items to show on each page of results, up to a maximum of 100. |
| query | query | optional | string | The search query to use to filter the results. |
| sort | query | optional | string | The way to sort the results. Option descriptions:
|
The followers were returned.
No such channel exists.
GET /channels/{channel_id}/users
/me/channels/{channel_id}
This method unsubscribes the authenticated user from the specified channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
The user is unsubscribed from the channel.
No such channel exists.
DELETE /me/channels/{channel_id}
/me/channels/{channel_id}
This method determines whether the specified user is a follower of a particular channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
The user follows the channel.
No such channel exists.
GET /me/channels/{channel_id}
/me/channels/{channel_id}
This method subscribes the authenticated user to the specified channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
The user is subscribed to the channel.
No such channel exists.
PUT /me/channels/{channel_id}
/users/{user_id}/channels/{channel_id}
This method unsubscribes the authenticated user from the specified channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
| user_id | path | required | number | The ID of the user. |
The user is unsubscribed from the channel.
No such channel exists.
DELETE /users/{user_id}/channels/{channel_id}
/users/{user_id}/channels/{channel_id}
This method determines whether the specified user is a follower of a particular channel.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| channel_id | path | required | number | The ID of the channel. |
| user_id | path | required | number | The ID of the user. |
The user follows the channel.
No such channel exists.
GET /users/{user_id}/channels/{channel_id}
AuthenticationExtrasConvertOAuth1ToOAuth2Request
{
"type": "object",
"required": [
"grant_type",
"token",
"token_secret"
],
"properties": {
"token": {
"type": "string",
"example": "58037c0078d5f54e15e638cc0dd882a570b13c50",
"description": "The OAuth 1 token."
},
"grant_type": {
"enum": [
"vimeo_oauth1"
],
"type": "string",
"description": "The grant type. The value of this field must be `vimeo_oauth1`."
},
"token_secret": {
"type": "string",
"example": "NTgwMzdjMDA3OGQ1ZjU0ZTE1ZTYzOGNjMGRkODgyYTU3MGIxM2M1MA==",
"description": "The OAuth 1 token secret."
}
}
}
AuthenticationExtrasExchangeOAuthCodeExchangeRequest
{
"type": "object",
"required": [
"code",
"grant_type",
"redirect_uri"
],
"properties": {
"code": {
"type": "string",
"example": "1234abcd",
"description": "The authorization code received from the authorization server."
},
"grant_type": {
"enum": [
"authorization_code"
],
"type": "string",
"description": "The grant type. The value of this field must be `authorization_code`."
},
"redirect_uri": {
"type": "string",
"example": "https://example.com",
"description": "The redirect URI. The value of this field must match the URI from `/oauth/authorize`."
}
}
}
AvailableUsersResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/user"
}
}
CategoriesChannelsListInCategoryResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/channel"
}
}
CategoriesGroupsGetAllGroupsResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/group"
}
}
CategoriesUsersListFollowedCategories200Response
{
"type": "array",
"items": {
"$ref": "#/components/schemas/category"
}
}
CategoriesUsersListFollowedCategoriesResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/category"
}
}
CategoriesVideosGetAllVideoCategoriesResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/category"
}
}
CategoriesVideosListVideosInCategoryResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/video"
}
}
CategoriesVideosSetVideoCategoriesRequest
{
"type": "object",
"required": [
"category"
],
"properties": {
"category": {
"type": "array",
"items": {
"type": "string"
},
"description": "An array of the names of the desired categories."
}
}
}
ChannelsCategoriesAddChannelToMultipleCategoriesRequest
{
"type": "object",
"required": [
"channels"
],
"properties": {
"channels": {
"type": "array",
"items": {
"type": "string"
},
"description": "The array of category URIs to add."
}
}
}
ChannelsCategoriesGetBelongingCategoriesResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/category"
}
}
ChannelsEssentialsGetUserSubscriptions200Response
{
"type": "array",
"items": {
"$ref": "#/components/schemas/channel"
}
}
ChannelsEssentialsGetUserSubscriptionsResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/channel"
}
}
ChannelsModeratorsListByChannelResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/user"
}
}
ChannelsModeratorsRemoveMultipleFromChannelRequest
{
"type": "object",
"required": [
"user_uri"
],
"properties": {
"user_uri": {
"type": "string",
"example": "/users/152184",
"description": "The URI of a user to remove as a moderator."
}
}
}
ChannelsModeratorsReplaceModeratorsRequest
{
"type": "object",
"required": [
"user_uri"
],
"properties": {
"user_uri": {
"type": "string",
"example": "/users/152184",
"description": "The URI of the user to add as a moderator."
}
}
}
ChannelsModeratorsReplaceModeratorsResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/user"
}
}
ChannelsPrivateChannelMembersGetAccessibleUsersResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/user"
}
}
ChannelsPrivateChannelMembersPermitUserAccessRequest
{
"type": "object",
"required": [
"users"
],
"properties": {
"users": {
"type": "array",
"items": {
"type": "string"
},
"description": "The array of either the user URIs or the user IDs to permit to access the private channel."
}
}
}
ChannelsPrivateChannelMembersPermitUserAccessResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/user"
}
}
ChannelsSubscriptionsAndSubscribersListChannelFollowersResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/user"
}
}
ChannelsTagsAddMultipleTagsToChannelRequest
{
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the tag to assign."
}
}
}
}
ChannelsTagsAddMultipleTagsToChannelResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/tag"
}
}
ChannelsTagsGetAllChannelTagsResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/tag"
}
}
ChannelsVideosAddMultipleToChannelRequest
{
"type": "object",
"required": [
"video_uri"
],
"properties": {
"video_uri": {
"type": "string",
"example": "/videos/258684937",
"description": "A member of an array representing the URIs of the videos to add. For each member in the array, use the format `{\"video_uri\":\"x\"}` where **x** is a video URI. For more information on batch requests like this, see [Using Common Formats and Parameters](https://developer.vimeo.com/api/common-formats#working-with-batch-requests)."
}
}
}
ChannelsVideosGetAccessibleChannelsResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/channel"
}
}
ChannelsVideosListInChannelResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/video"
}
}
ChannelsVideosRemoveMultipleFromChannelRequest
{
"type": "object",
"required": [
"video_uri"
],
"properties": {
"video_uri": {
"type": "string",
"example": "/videos/258684937",
"description": "The URI of a video to remove."
}
}
}
ClientAuthRequest
{
"type": "object",
"required": [
"grant_type",
"scope"
],
"properties": {
"scope": {
"type": "string",
"example": "public",
"description": "A space-separated list of the authentication scopes to access. The default is `public`."
},
"grant_type": {
"enum": [
"client_credentials"
],
"type": "string",
"description": "The grant type. The value of this field must be `client_credentials`."
}
}
}
ClipTrimRequest
{
"type": "object",
"properties": {
"trim_end": {
"type": "string",
"example": "2.0",
"description": "The end position in seconds of the trim in the video."
},
"trim_start": {
"type": "string",
"example": "1.0",
"description": "The start position in seconds of the trim in the video."
}
}
}
CreateChannelRequest
{
"type": "object",
"required": [
"name",
"privacy"
],
"properties": {
"link": {
"type": "string",
"example": "staffpicks",
"description": "The link to access the channel. You can use a custom name in the URL in place of a numeric channel ID, as in `/channels/{url_custom}`."
},
"name": {
"type": "string",
"example": "Vimeo Staff Picks",
"description": "The name of the channel."
},
"privacy": {
"enum": [
"anybody",
"moderators",
"user"
],
"type": "string",
"description": "The privacy level of the channel.\n\nOption descriptions:\n * `anybody` - Anyone can access the channel.\n * `moderators` - Only moderators can access the channel.\n * `user` - Only moderators and designated users can access the channel.\n"
},
"description": {
"type": "string",
"example": "We really love videos, and these are the videos we really, really love.",
"description": "The description of the channel."
}
}
}
CreateChapterRequest
{
"type": "object",
"properties": {
"title": {
"type": "string",
"example": "Chapter 1",
"nullable": true,
"description": "The title of the chapter."
},
"timecode": {
"type": "number",
"example": 140,
"nullable": true,
"description": "The timecode of the chapter in seconds from the start of the video."
},
"thumbnail_uris": {
"type": "array",
"items": {
"type": "string"
},
"description": "An array of URIs of the thumbnails associated with the video chapter."
},
"active_thumbnail_uri": {
"type": "string",
"example": "/videos/12345678/chapters/12345/pictures/24kjh4h4g38175db9f59fae9f7g9ekhg",
"description": "The URI of the chapter's active thumbnail."
}
}
}
CreateCommentRequest
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"example": "I love this!",
"description": "The text of the comment."
}
}
}
CreateGroupRequest
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"example": "Vimeo Weekend Challenge",
"description": "The name of the group."
},
"description": {
"type": "string",
"example": "Want to participate in our weekly challenges? Join the group to receive messages and new challenges!",
"description": "The description of the group."
}
}
}
CreateProjectRequest
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"example": "Rough cuts",
"description": "The name of the folder."
},
"parent_folder_uri": {
"type": "string",
"example": "/users/12345/projects/6789",
"description": "The URI of the parent folder."
}
}
}
CreateShowcaseRequest
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"example": "Vimeo Holiday Videos!",
"description": "The name of the showcase."
},
"sort": {
"enum": [
"added_first",
"added_last",
"alphabetical",
"arranged",
"comments",
"likes",
"newest",
"oldest",
"plays"
],
"type": "string",
"description": "The default sort order of the videos as they appear in the showcase.\n\nOption descriptions:\n * `added_first` - The videos appear according to when they were added to the showcase, with the most recently added first.\n * `added_last` - The videos appear according to when they were added to the showcase, with the most recently added last.\n * `alphabetical` - The videos appear alphabetically by their title.\n * `arranged` - The videos appear as arranged by the owner of the showcase.\n * `comments` - The videos appear according to their number of comments.\n * `likes` - The videos appear according to their number of likes.\n * `newest` - The videos appear in chronological order with the newest first.\n * `oldest` - The videos appear in chronological order with the oldest first.\n * `plays` - The videos appear according to their number of plays.\n"
},
"theme": {
"enum": [
"dark",
"standard"
],
"type": "string",
"description": "The color theme of the showcase.\n\nOption descriptions:\n * `dark` - The showcase uses the dark theme.\n * `standard` - The showcase uses the standard theme.\n"
},
"layout": {
"enum": [
"grid",
"player"
],
"type": "string",
"description": "The type of layout for presenting the showcase.\n\nOption descriptions:\n * `grid` - The videos appear in a grid.\n * `player` - The videos appear in the player.\n"
},
"privacy": {
"enum": [
"anybody",
"embed_only",
"nobody",
"password",
"team",
"unlisted"
],
"type": "string",
"description": "The privacy level of the showcase.\n\nOption descriptions:\n * `anybody` - Anyone can access the showcase, either on Vimeo or through an embed.\n * `embed_only` - The showcase doesn't appear on Vimeo, but it can be embedded on other sites.\n * `nobody` - No one can access the showcase, including the authenticated user.\n * `password` - Only those with the password can access the showcase.\n * `team` - Only members of the authenticated user's team can access the showcase.\n * `unlisted` - The showcase can't be accessed if the URL omits its unlisted hash.\n"
},
"hide_nav": {
"type": "boolean",
"example": true,
"description": "Whether to hide Vimeo navigation when displaying the showcase."
},
"password": {
"type": "string",
"example": "hunter1",
"description": "The showcase's password. This field is required only when **privacy** is `password`."
},
"brand_color": {
"type": "string",
"example": "ff66ee",
"description": "The hexadecimal code for the color of the player buttons and showcase controls."
},
"description": {
"type": "string",
"example": "Vimeo holiday videos!",
"description": "The description of the showcase."
},
"review_mode": {
"type": "boolean",
"example": true,
"description": "Whether showcase videos use the review mode URL."
},
"hide_upcoming": {
"type": "boolean",
"example": false,
"description": "Whether to include the upcoming event in the showcase."
},
"hide_from_vimeo": {
"type": "boolean",
"example": false,
"description": "Whether the showcase should be hidden from Vimeo when unlisted."
}
}
}
CreateVodRequest
{
"type": "object",
"required": [
"content_rating",
"description",
"name",
"type"
],
"properties": {
"buy": {
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"AUD": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in Australian dollars."
},
"CAD": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in Canadian dollars."
},
"CHF": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in Swiss francs."
},
"DKK": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in Danish krone."
},
"EUR": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in euros."
},
"GBP": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in British pounds."
},
"JPY": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in Japanese yen."
},
"KRW": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in South Korean won."
},
"NOK": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in Norwegian krone."
},
"PLN": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in Polish zloty."
},
"SEK": {
"type": "number",
"example": 2.99,
"description": "The purchase price of the video in Swedish krona."
},
"USD": {
"type": "number",
"example": 2.99,
"description": "When **type** is `film`, the purchase price of the video in United States dollars. When **type** is `series`, the purchase price of the entire collection in United States dollars."
}
}
},
"active": {
"type": "boolean",
"example": true,
"description": "Whether the video can be purchased. This parameter is required when **rent.active** is `false`."
},
"download": {
"type": "boolean",
"example": true,
"description": "Whether people who buy the video can download it. To use this parameter, **type** must be `film`."
}
}
},
"link": {
"type": "string",
"example": "darbyforever",
"description": "The custom string to use in the Vimeo URL of the On Demand page."
},
"name": {
"type": "string",
"example": "Darby Forever",
"description": "The name of the On Demand page."
},
"rent": {
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"AUD": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in Australian dollars."
},
"CAD": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in Canadian dollars."
},
"CHF": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in Swiss francs."
},
"DKK": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in Danish krone."
},
"EUR": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in euros."
},
"GBP": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in British pounds."
},
"JPY": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in Japanese yen."
},
"KRW": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in South Korean won."
},
"NOK": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in Norwegian krone."
},
"PLN": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in Polish zloty."
},
"SEK": {
"type": "number",
"example": 0.99,
"description": "The rental price of the video in Swedish krona."
},
"USD": {
"type": "number",
"example": 0.99,
"description": "When **type** is `film`, the rental price of the video in United States dollars. When **type** is `series`, the rental price of the entire collection in United States dollars."
}
}
},
"active": {
"type": "boolean",
"example": true,
"description": "Whether the video can be rented. This parameter is required when **episodes.rent.active** is `true`."
},
"period": {
"enum": [
"1 week",
"1 year",
"24 hour",
"3 month",
"30 day",
"48 hour",
"6 month",
"72 hour"
],
"type": "string",
"description": "The rental period of the video.\n\nOption descriptions:\n * `1 week` - The video can be rented for a maximum of 1 week.\n * `1 year` - The video can be rented for a maximum of 1 year.\n * `24 hour` - The video can be rented for a maximum of 24 hours.\n * `3 month` - The video can be rented for a maximum of 3 months.\n * `30 day` - The video can be rented for a maximum of 30 days.\n * `48 hour` - The video can be rented for a maximum of 48 hours.\n * `6 month` - The video can be rented for a maximum of 6 months.\n * `72 hour` - The video can be rented for a maximum of 72 hours.\n"
}
}
},
"type": {
"enum": [
"film",
"series"
],
"type": "string",
"description": "The type of the On Demand page.\n\nOption descriptions:\n * `film` - The On Demand page is a film.\n * `series` - The On Demand page is a series.\n"
},
"episodes": {
"type": "object",
"properties": {
"buy": {
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"USD": {
"type": "number",
"example": 1.99,
"description": "The purchase price per episode in United States dollars. This parameter is required when **episodes.buy.active** is `true`."
}
}
},
"active": {
"type": "boolean",
"example": true,
"description": "Whether episodes can be purchased."
},
"download": {
"type": "boolean",
"example": true,
"description": "Whether people who buy episodes can download them. To use this parameter, **type** must be `series`."
}
}
},
"rent": {
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"USD": {
"type": "number",
"example": 0.99,
"description": "The rental price per episode in United States dollars. This parameter is applicable only when **type** is `series`, and it's required when **episode.rent.active** is `true`."
}
}
},
"active": {
"type": "boolean",
"example": true,
"description": "Whether episodes can be rented."
},
"period": {
"enum": [
"1 week",
"1 year",
"24 hour",
"3 month",
"30 day",
"48 hour",
"6 month",
"72 hour"
],
"type": "string",
"description": "The rental period of the episode.\n\nOption descriptions:\n * `1 week` - The episode can be rented for a maximum of 1 week.\n * `1 year` - The episode can be rented for a maximum of 1 year.\n * `24 hour` - The episode can be rented for a maximum of 24 hours.\n * `3 month` - The episode can be rented for a maximum of 3 months.\n * `30 day` - The episode can be rented for a maximum of 30 days.\n * `48 hour` - The episode can be rented for a maximum of 48 hours.\n * `6 month` - The episode can be rented for a maximum of 6 months.\n * `72 hour` - The episode can be rented for a maximum of 72 hours.\n"
}
}
}
}
},
"description": {
"type": "string",
"example": "DARBY FOREVER follows the fantasies of Darby, a shopgirl at \"Bobbins & Notions\".",
"description": "The description of the On Demand page."
},
"domain_link": {
"type": "string",
"example": "https://example.com",
"description": "The custom domain of the On Demand page."
},
"subscription": {
"type": "object",
"properties": {
"monthly": {
"type": "object",
"properties": {
"price": {
"type": "object",
"properties": {
"USD": {
"type": "number",
"example": 9.99,
"description": "The monthly subscription price in United States dollars. This parameter is required when **rent.active** and **buy.active** are `false`."
}
}
},
"active": {
"type": "boolean",
"example": true,
"description": "Whether a monthly subscription is active. This parameter is required when **rent.active** and **buy.active** are `false`."
}
}
}
}
},
"content_rating": {
"enum": [
"drugs",
"language",
"nudity",
"safe",
"unrated",
"violence"
],
"type": "string",
"description": "The content rating of the video, given either as a comma-separated list or as a JSON array, depending on the request format.\n\nOption descriptions:\n * `drugs` - The video contains drug or alcohol use.\n * `language` - The video contains profanity or sexually suggestive content.\n * `nudity` - The video contains nudity.\n * `safe` - The video is suitable for all audiences.\n * `unrated` - The video hasn't been rated.\n * `violence` - The video contains violent or graphic content.\n"
},
"accepted_currencies": {
"enum": [
"AUD",
"CAD",
"CHF",
"DKK",
"EUR",
"GBP",
"JPY",
"KRW",
"NOK",
"PLN",
"SEK",
"USD"
],
"type": "string",
"description": "An array of accepted currencies.\n\nOption descriptions:\n * `AUD` - The currency is in Australian dollars.\n * `CAD` - The currency is in Canadian dollars.\n * `CHF` - The currency is in Swiss francs.\n * `DKK` - The currency is in Danish krone.\n * `EUR` - The currency is in euros.\n * `GBP` - The currency is in British pounds.\n * `JPY` - The currency is in Japanese yen.\n * `KRW` - The currency is in South Korean won.\n * `NOK` - The currency is in Norwegian krone.\n * `PLN` - The currency is in Polish zloty.\n * `SEK` - The currency is in Swedish krona.\n * `USD` - The currency is in United States dollars.\n"
}
}
}
CreateWebinarRequest
{
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"example": "Interviews Daily",
"description": "The title of the webinar."
},
"privacy": {
"type": "object",
"properties": {
"view": {
"enum": [
"anybody",
"nobody",
"password",
"team"
],
"type": "string",
"example": "anybody",
"description": "The initial privacy of the webinar.\n\nOption descriptions:\n * `anybody` - Anyone can access the webinar. This privacy setting appears as `Public` on the Vimeo front end.\n * `nobody` - No one except the owner can access the webinar. This privacy setting appears as `Private` on the Vimeo front end.\n * `password` - Only those with the password can access the event.\n * `team` - Only members of the authenticated user's team can access the webinar.\n"
},
"embed": {
"enum": [
"private",
"public",
"whitelist"
],
"type": "string",
"example": "private",
"description": "The initial embed privacy of the webinar.\n\nOption descriptions:\n * `private` - The webinar can't be embedded on any domain.\n * `public` - The webinar can be embedded on any domain.\n * `whitelist` - The webinar can be embedded on whitelisted domains only.\n"
}
},
"description": "The privacy settings of the webinar."
},
"password": {
"type": "string",
"example": "gogo",
"description": "The password when **privacy.view** is `password`. Anyone with the password can view the videos generated by streaming to the webinar event."
},
"schedule": {
"type": "object",
"properties": {
"type": {
"enum": [
"single",
"weekly"
],
"type": "string",
"example": "weekly",
"description": "How often the webinar is expected to be live.\n\nOption descriptions:\n * `single` - The webinar is live one time only.\n * `weekly` - The webinar is live on a weekly basis. _This field is deprecated._\n"
},
"end_time": {
"type": "string",
"example": "2019-06-21T14:00:00+00:00",
"description": "The time in ISO 8601 format when the webinar is expected to end, with support for different time offsets. This parameter is required when **schedule.type** is `single`."
},
"weekdays": {
"type": "array",
"items": {
"type": "string"
},
"description": "A non-empty array of weekdays on which the webinar is expected to be live. Weekdays can range from 1 to 7, where 1 is Monday and 7 is Sunday. This parameter is required when **schedule.type** is `weekly`. _This field is deprecated._"
},
"daily_time": {
"type": "string",
"example": "14:00:00Z",
"description": "The time in ISO 8601 format when the webinar is expected to be live, with the zero UTC offset `Z`. This parameter is required when **schedule.type** is `weekly`. _This field is deprecated._"
},
"start_time": {
"type": "string",
"example": "2018-06-21T14:00:00+00:00",
"description": "The time in ISO 8601 format when the webinar is expected to be live, with support for different time offsets. This parameter is required when **schedule.type** is `single`."
}
},
"description": "Information about the time or times that the webinar is expected to be live."
},
"time_zone": {
"type": "string",
"example": "America/New_York",
"description": "The time zone used in resolving the timestamps that are included in the automatically generated video titles for the webinar."
},
"folder_uri": {
"type": "number",
"example": 0,
"description": "The URI of the webinar's folder."
},
"description": {
"type": "string",
"example": "In this episode, we interview a surprise guest",
"description": "The description of the webinar."
},
"email_settings": {
"type": "object",
"properties": {
"from": {
"type": "string",
"example": "Vimeo",
"description": "The name of the sender for emails that are sent about the webinar. _This field is deprecated._"
},
"logo_uri": {
"type": "string",
"example": "/users/123/team_logos_2343",
"description": "The URI of the logo image to include in emails that are sent about the webinar. _This field is deprecated._"
},
"custom_link": {
"type": "string",
"example": "https://xyz.com",
"description": "The custom link for emails that are sent about the webinar. _This field is deprecated._"
},
"reply_email": {
"type": "string",
"example": "test@vimeo.com",
"description": "The sender's reply email address. _This field is deprecated._"
},
"accent_color": {
"type": "string",
"example": "#000fff",
"description": "The accent color scheme for emails that are sent about the webinar. _This field is deprecated._"
},
"sender_address": {
"type": "string",
"example": "Bangalore, India",
"description": "The sender's physical address. _This field is deprecated._"
},
"use_custom_link": {
"type": "boolean",
"example": false,
"description": "Whether to include a custom link in emails that are sent about the webinar. _This field is deprecated._"
},
"use_reply_email": {
"type": "boolean",
"example": false,
"description": "Whether to include a reply link in the footer of emails that are sent about the webinar. _This field is deprecated._"
},
"email_preferences": {
"type": "object",
"properties": {
"email_event_reminder_1_hrs": {
"type": "boolean",
"description": "Whether to send a reminder email 1 hour before the webinar starts. _This field is deprecated._"
},
"email_post_event_thank_you": {
"type": "boolean",
"description": "Whether to send post-event thank-you emails. _This field is deprecated._"
},
"email_event_reminder_15_min": {
"type": "boolean",
"description": "Whether to send a reminder email 15 minutes before the webinar starts. _This field is deprecated._"
},
"email_event_reminder_24_hrs": {
"type": "boolean",
"description": "Whether to send a reminder email 24 hours before the webinar starts. _This field is deprecated._"
},
"email_registration_confirmation": {
"type": "boolean",
"description": "Whether to send a registration confirmation email after webinar registration. _This field is deprecated._"
},
"email_post_event_no_show_thank_you": {
"type": "boolean",
"description": "Whether to send post-event thank-you emails to no-shows. _This field is deprecated._"
}
},
"description": "The preferences for emails that are sent about the webinar. _This field is deprecated._"
},
"sender_policy_url": {
"type": "string",
"example": "vimeo.com/policy",
"description": "The URL of the sender's privacy policy. _This field is deprecated._"
},
"use_sender_address": {
"type": "boolean",
"example": false,
"description": "Whether to include the sender's physical address in the footer of emails that are sent about the webinar. _This field is deprecated._"
},
"use_sender_policy_url": {
"type": "boolean",
"example": false,
"description": "Whether to include the URL of the sender's privacy policy in the footer of emails that are sent about the webinar. _This field is deprecated._"
}
},
"description": "The settings for emails that are sent about the webinar. _This field is deprecated._"
}
}
}
EditChannelRequest
{
"type": "object",
"properties": {
"link": {
"type": "string",
"example": "staffpicks",
"description": "The link to access the channel. You can use a custom name in the URL in place of a numeric channel ID, as in `/channels/{url_custom}`. Submitting `\"\"` for this field removes the link alias."
},
"name": {
"type": "string",
"example": "Vimeo Staff Picks",
"description": "The name of the channel."
},
"privacy": {
"enum": [
"anybody",
"moderators",
"users"
],
"type": "string",
"description": "The privacy level of the channel.\n\nOption descriptions:\n * `anybody` - Anyone can access the channel.\n * `moderators` - Only moderators can access the channel.\n * `users` - Only moderators and designated users can access the channel.\n"
},
"description": {
"type": "string",
"example": "We really love videos, and these are the videos we really, really love.",
"description": "The description of the channel."
}
}
}
EditChapterRequest
{
"type": "object",
"properties": {
"title": {
"type": "string",
"example": "Chapter 1",
"nullable": true,
"description": "The title of the chapter."
},
"timecode": {
"type": "number",
"example": 140,
"nullable": true,
"description": "The timecode of the chapter in seconds from the start of the video."
},
"active_thumbnail_uri": {
"type": "string",
"example": "/videos/12345678/chapters/12345/pictures/24kjh4h4g38175db9f59fae9f7g9ekhg",
"description": "The URI of the chapter's active thumbnail."
}
}
}
EditCommentRequest
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"example": "I love this!",
"description": "The new comment text."
}
}
}
EditPictureRequest
{
"type": "object",
"properties": {
"active": {
"type": "boolean",
"example": true,
"description": "Whether the picture is the authenticated user's active portrait."
}
}
}
EditProjectRequest
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"example": "Rough cuts",
"description": "The name of the folder."
}
}
}
EditShowcaseRequest
{
"type": "object",
"properties": {
"url": {
"type": "string",
"example": "my-custom-url",
"nullable": true,
"description": "The custom Vimeo URL of the showcase."
},
"name": {
"type": "string",
"example": "Vimeo Holiday Videos!",
"description": "The name of the showcase."
},
"sort": {
"enum": [
"added_first",
"added_last",
"alphabetical",
"arranged",
"comments",
"likes",
"newest",
"oldest",
"plays"
],
"type": "string",
"description": "The default sort order of the videos as they appear in the showcase.\n\nOption descriptions:\n * `added_first` - The videos appear according to when they were added to the showcase, with the most recently added first.\n * `added_last` - The videos appear according to when they were added to the showcase, with the most recently added last.\n * `alphabetical` - The videos appear alphabetically by their title.\n * `arranged` - The videos appear as arranged by the owner of the showcase.\n * `comments` - The videos appear according to their number of comments.\n * `likes` - The videos appear according to their number of likes.\n * `newest` - The videos appear in chronological order with the newest first.\n * `oldest` - The videos appear in chronological order with the oldest first.\n * `plays` - The videos appear according to their number of plays.\n"
},
"theme": {
"enum": [
"dark",
"standard"
],
"type": "string",
"description": "The color theme of the showcase.\n\nOption descriptions:\n * `dark` - The showcase uses the dark theme.\n * `standard` - The showcase uses the standard theme.\n"
},
"domain": {
"type": "string",
"example": "mycustomdomain.com",
"nullable": true,
"description": "The custom domain of the showcase."
},
"layout": {
"enum": [
"grid",
"player"
],
"type": "string",
"description": "The type of layout for presenting the showcase.\n\nOption descriptions:\n * `grid` - The videos appear in a grid.\n * `player` - The videos appear in the player.\n"
},
"privacy": {
"enum": [
"anybody",
"embed_only",
"nobody",
"password",
"team",
"unlisted"
],
"type": "string",
"description": "The privacy level of the showcase.\n\nOption descriptions:\n * `anybody` - Anyone can access the showcase, either on Vimeo or through an embed.\n * `embed_only` - The showcase doesn't appear on Vimeo, but it can be embedded on other sites.\n * `nobody` - No one can access the showcase, including the authenticated user.\n * `password` - Only people with the password can access the showcase.\n * `team` - Only members of the authenticated user's team can access the showcase.\n * `unlisted` - The showcase can't be accessed if the URL omits its unlisted hash.\n"
},
"hide_nav": {
"type": "boolean",
"example": true,
"description": "Whether to hide Vimeo navigation when displaying the showcase."
},
"password": {
"type": "string",
"example": "hunter1",
"description": "The showcase's password. This field is required only when **privacy** is `password`."
},
"brand_color": {
"type": "string",
"example": "ff66ee",
"description": "The hexadecimal code for the color of the player buttons and showcase controls."
},
"description": {
"type": "string",
"example": "Vimeo holiday videos!",
"description": "The description of the showcase."
},
"review_mode": {
"type": "boolean",
"example": true,
"description": "Whether showcase videos use the review mode URL."
},
"hide_upcoming": {
"type": "boolean",
"example": false,
"description": "Whether to include the upcoming event in the showcase."
},
"use_custom_domain": {
"type": "boolean",
"example": true,
"description": "Whether the user has opted for a custom domain for their showcase."
}
}
}
EditUserRequest
{
"type": "object",
"properties": {
"bio": {
"type": "string",
"example": "This is where you will find videos and news updates from the staff",
"description": "The user's bio."
},
"link": {
"type": "string",
"example": "staff",
"description": "The user's custom Vimeo URL."
},
"name": {
"type": "string",
"example": "Vimeo Staff",
"description": "The user's display name."
},
"gender": {
"enum": [
"f",
"m",
"n",
"o"
],
"type": "string",
"description": "The authenticated user's gender.\n\nOption descriptions:\n * `f` - The user's preferred pronouns are she and her.\n * `m` - The user's preferred pronouns are he and him.\n * `n` - The user would rather not give preferred pronouns.\n * `o` - The user's preferred pronouns are they and them.\n"
},
"videos": {
"type": "object",
"properties": {
"privacy": {
"type": "object",
"properties": {
"add": {
"type": "boolean",
"example": true,
"description": "Whether the user can add videos to showcases, channels, or groups by default."
},
"view": {
"enum": [
"anybody",
"contacts",
"disable",
"nobody",
"password",
"unlisted",
"users"
],
"type": "string",
"description": "Who can access the user's videos by default.\n\nOption descriptions:\n * `anybody` - Anyone can access the videos. This privacy setting appears as `Public` on the Vimeo front end.\n * `contacts` - Only the user's contacts can access the videos. _This field is deprecated._\n * `disable` - The videos are disabled. This privacy setting appears as `Hide from Vimeo` on the Vimeo front end.\n * `nobody` - No one can access the videos. This privacy setting appears as `Private` on the Vimeo front end.\n * `password` - Only those with the password can access the videos.\n * `unlisted` - The videos are unlisted.\n * `users` - Only other Vimeo members can access the videos. _This field is deprecated._\n"
},
"embed": {
"enum": [
"private",
"public",
"whitelist"
],
"type": "string",
"description": "The privacy for the user's embedded videos. The whitelist value enables you to define all valid embeddable domains. See our [Interacting with Videos](https://developer.vimeo.com/api/guides/videos/interact#set-off-site-privacy) guide for details on adding and removing domains.\n\nOption descriptions:\n * `private` - The videos can't be embedded on any domain.\n * `public` - The videos can be embedded on any domain.\n * `whitelist` - The videos can be embedded on the specified domains only.\n"
},
"comments": {
"enum": [
"anybody",
"contacts",
"nobody"
],
"type": "string",
"description": "Who can comment on the user's video uploads by default.\n\nOption descriptions:\n * `anybody` - Anyone can comment.\n * `contacts` - Only the user's contacts can comment.\n * `nobody` - No one can comment.\n"
},
"download": {
"type": "boolean",
"example": true,
"description": "Whether the user can download videos. This value becomes the default download setting for all future videos that the user uploads."
}
}
}
}
},
"location": {
"type": "string",
"example": "New York City",
"description": "The user's location."
},
"password": {
"type": "string",
"example": "hunter1",
"description": "The default password for all future videos that this user uploads. To use this field, the **videos.privacy.view** field must be `password`."
},
"content_filter": {
"type": "array",
"items": {
"type": "string"
},
"description": "A list of values describing the content in the user's videos. Find the full list in the [/contentratings](https://developer.vimeo.com/api/reference/videos#get_content_ratings) endpoint. You must provide a comma-separated list if you're using a query string or an array if you're using JSON."
}
}
}
EditVideoRequest
{
"type": "object",
"properties": {
"name": {
"type": "string",
"example": "Celebrating 10 Years of Staff Picks",
"description": "The title of the video. This field can hold a maximum of 128 characters."
},
"embed": {
"type": "object",
"properties": {
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The UUID of the card."
},
"url": {
"type": "string",
"description": "The URL of the card."
},
"teaser": {
"type": "string",
"description": "The description of the card."
},
"headline": {
"type": "string",
"description": "The title of the card."
},
"timecode": {
"type": "number",
"description": "The playback timestamp, given in seconds, when the card appears."
},
"image_url": {
"type": "string",
"description": "The URL of the thumbnail for the card."
},
"display_time": {
"type": "number",
"description": "The number of seconds for which the card appears."
}
}
},
"description": "A collection of cards associated with the selected video."
},
"color": {
"type": "string",
"example": "#1ab7ea",
"description": "The main color of the embeddable player."
},
"logos": {
"type": "object",
"properties": {
"vimeo": {
"type": "boolean",
"example": true,
"description": "Whether to show the Vimeo logo on the embeddable player."
},
"custom": {
"type": "object",
"properties": {
"id": {
"type": "number",
"example": 462119,
"nullable": true,
"description": "The ID of the custom logo that will show on the emeddable player."
},
"link": {
"type": "string",
"example": "https://example.com",
"nullable": true,
"description": "The URL that loads when the user clicks the custom logo."
},
"active": {
"type": "boolean",
"example": true,
"description": "Whether to show the active custom logo on the embeddable player."
},
"sticky": {
"type": "boolean",
"example": true,
"description": "Whether the custom logo is always visible on the embeddable player (`true`) or whether the logo appears and disappears with the rest of the UI (`false`)."
}
}
}
}
},
"title": {
"type": "object",
"properties": {
"name": {
"enum": [
"hide",
"show",
"user"
],
"type": "string",
"description": "How to handle the video title in the title bar of the embeddable player.\n\nOption descriptions:\n * `hide` - Hide the video title.\n * `show` - Show the video title.\n * `user` - Enable the user to decide.\n"
},
"owner": {
"enum": [
"hide",
"show",
"user"
],
"type": "string",
"description": "How to handle the owner information in the title bar of the embeddable player.\n\nOption descriptions:\n * `hide` - Hide the owner info.\n * `show` - Show the owner info.\n * `user` - Enable the user to decide.\n"
},
"portrait": {
"enum": [
"hide",
"show",
"user"
],
"type": "string",
"description": "How to handle the owner portrait in the title bar of the embeddable player.\n\nOption descriptions:\n * `hide` - Hide the portrait.\n * `show` - Show the portrait.\n * `user` - Enable the user to decide.\n"
}
}
},
"volume": {
"type": "boolean",
"example": true,
"description": "Whether to show the volume selector on the embeddable player."
},
"airplay": {
"type": "boolean",
"example": true,
"description": "Whether AirPlay is enabled in the embeddable player."
},
"buttons": {
"type": "object",
"properties": {
"hd": {
"type": "boolean",
"example": true,
"description": "Whether to show the `HD` button on the embeddable player."
},
"like": {
"type": "boolean",
"example": true,
"description": "Whether to show the `like` button on the embeddable player."
},
"embed": {
"type": "boolean",
"example": true,
"description": "Whether to show the `embed` button on the embeddable player."
},
"share": {
"type": "boolean",
"example": true,
"description": "Whether to show the `share` button on the embeddable player."
},
"scaling": {
"type": "boolean",
"example": true,
"description": "Whether to show the `scaling` button on the embeddable player in fullscreen mode."
},
"fullscreen": {
"type": "boolean",
"example": true,
"description": "Whether to show the `fullscreen` button on the embeddable player."
},
"watchlater": {
"type": "boolean",
"example": true,
"description": "Whether to show the `watch later` button on the embeddable player."
}
}
},
"playbar": {
"type": "boolean",
"example": true,
"description": "Whether to show the playbar on the embeddable player."
},
"chapters": {
"type": "boolean",
"example": true,
"description": "Whether chapters are enabled in the embeddable player."
},
"chromecast": {
"type": "boolean",
"example": true,
"description": "Whether the Chromecast button appears in the embeddable player."
},
"end_screen": {
"type": "object",
"properties": {
"type": {
"enum": [
"empty",
"loop",
"share",
"thumbnail"
],
"type": "string",
"description": "The end screen type.\n\nOption descriptions:\n * `empty` - The end screen is empty.\n * `loop` - The end screen loops the video playback.\n * `share` - The end screen includes sharing options.\n * `thumbnail` - The end screen includes the thumbnail of the video.\n"
}
}
},
"transcript": {
"type": "boolean",
"example": true,
"description": "Whether the transcript controls appear in the embeddable player."
},
"play_button": {
"type": "object",
"properties": {
"position": {
"enum": [
"auto",
"bottom",
"center"
],
"type": "string",
"description": "The position of the play button within the embeddable player.\n\nOption descriptions:\n * `auto` - Use Vimeo's default positioning for the play button.\n * `bottom` - The play button is positioned at the bottom of the player, except when in tiny mode.\n * `center` - The play button is positioned in the center of the player.\n"
}
},
"description": "An object representing the play button's settings."
},
"audio_tracks": {
"type": "boolean",
"example": true,
"description": "Whether multiple audio tracks can appear in the embeddable player."
},
"closed_captions": {
"type": "boolean",
"example": true,
"description": "Whether closed captions are enabled in the embeddable player."
},
"quality_selector": {
"type": "boolean",
"example": true,
"description": "Whether to show the quality selector in the embeddable player."
}
}
},
"locale": {
"type": "string",
"example": "en-US",
"description": "The video's default language. For a full list of supported languages, use the [`/languages?filter=texttracks`](https://developer.vimeo.com/api/reference/videos#get_languages) endpoint."
},
"license": {
"enum": [
"by",
"by-nc",
"by-nc-nd",
"by-nc-sa",
"by-nd",
"by-sa",
"cc0"
],
"type": "string",
"description": "The Creative Commons license under which the video is offered.\n\nOption descriptions:\n * `by` - The video is offered under CC BY, or the attibution-only license.\n * `by-nc` - The video is offered under CC BY-NC, or the Attribution-NonCommercial license.\n * `by-nc-nd` - The video is offered under CC BY-NC-ND, or the Attribution-NonCommercian-NoDerivs license.\n * `by-nc-sa` - The video is offered under CC BY-NC-SA, or the Attribution-NonCommercial-ShareAlike licence.\n * `by-nd` - The video is offered under CC BY-ND, or the Attribution-NoDerivs license.\n * `by-sa` - The video is offered under CC BY-SA, or the Attribution-ShareAlike license.\n * `cc0` - The video is offered under CC0, or public domain, videos.\n"
},
"privacy": {
"type": "object",
"properties": {
"add": {
"type": "boolean",
"example": true,
"description": "Whether a user can add the video to a showcase, channel, or group."
},
"view": {
"enum": [
"anybody",
"contacts",
"disable",
"nobody",
"password",
"unlisted",
"users"
],
"type": "string",
"description": "The video's privacy setting. When this value is `users`, `application/json` is the only valid content type. Also, some privacy settings are unavailable to Vimeo Free members; for more information, see our [Help Center](https://vimeo.zendesk.com/hc/en-us/articles/224817847).\n\nOption descriptions:\n * `anybody` - Anyone can access the video. This privacy setting appears as `Public` on the Vimeo front end.\n * `contacts` - Only those who follow the owner on Vimeo can access the video. _This field is deprecated._\n * `disable` - The video is embeddable, but it's hidden on Vimeo and can't be played. This privacy setting appears as `Hide from Vimeo` on the Vimeo front end. _This field is deprecated._\n * `nobody` - No one except the owner can access the video. This privacy setting appears as `Private` on the Vimeo front end.\n * `password` - Only those with the password can access the video.\n * `unlisted` - Only those with the private link can access the video.\n * `users` - Only Vimeo members can access the video. _This field is deprecated._\n"
},
"embed": {
"enum": [
"private",
"public",
"whitelist"
],
"type": "string",
"description": "The video's embed setting. Specify the `whitelist` value to restrict embedding to a specific set of domains. For more information, see our [Interacting with Videos](https://developer.vimeo.com/api/guides/videos/interact#set-off-site-privacy) guide.\n\nOption descriptions:\n * `private` - The video can't be embedded.\n * `public` - The video can be embedded.\n * `whitelist` - The video can be embedded on the specified domains only.\n"
},
"comments": {
"enum": [
"anybody",
"contacts",
"nobody"
],
"type": "string",
"description": "The privacy level required to comment on the video.\n\nOption descriptions:\n * `anybody` - Anyone can comment on the video.\n * `contacts` - Only the owner's contacts can comment on the video.\n * `nobody` - No one can comment on the video.\n"
},
"download": {
"type": "boolean",
"example": true,
"description": "Whether a user can download the video. This field isn't available to Vimeo Free members."
}
}
},
"spatial": {
"type": "object",
"properties": {
"projection": {
"enum": [
"cubical",
"cylindrical",
"dome",
"equirectangular",
"pyramid"
],
"type": "string",
"description": "The 360 spatial projection.\n\nOption descriptions:\n * `cubical` - Use cubical projection.\n * `cylindrical` - Use cylindrical projection.\n * `dome` - Use dome projection.\n * `equirectangular` - Use equirectangular projection.\n * `pyramid` - Use pyramid projection.\n"
},
"field_of_view": {
"type": "number",
"example": 50,
"description": "The 360 field of view. This value must be between 30 and 90. The default is 50."
},
"stereo_format": {
"enum": [
"left-right",
"mono",
"top-bottom"
],
"type": "string",
"description": "The 360 spatial stereo format.\n\nOption descriptions:\n * `left-right` - Use left-right stereo.\n * `mono` - Use monaural audio.\n * `top-bottom` - Use top-bottom stereo.\n"
},
"director_timeline": {
"type": "array",
"items": {
"type": "object",
"required": [
"pitch",
"time_code",
"yaw"
],
"properties": {
"yaw": {
"type": "number",
"example": 125,
"description": "The 360 director timeline yaw. This value must be between 0 and 360, and you must specify it only when **spatial.director_timeline** is defined."
},
"roll": {
"type": "number",
"description": "The 360 director timeline roll."
},
"pitch": {
"type": "number",
"example": 70,
"description": "The 360 director timeline pitch. This value must be between −90 and 90, and you must specify it only when **spatial.director_timeline** is defined."
},
"time_code": {
"type": "number",
"example": 5,
"description": "The 360 director timeline time code. This paramater is required only when **spatial.director_timeline** is defined."
}
}
},
"description": "An array representing the 360 director timeline."
}
}
},
"password": {
"type": "string",
"example": "hunter1",
"description": "The password. When you set **privacy.view** to `password`, you must provide the password as an additional parameter. This field can hold a maximum of 32 characters."
},
"custom_url": {
"type": "string",
"example": "puppies",
"description": "The custom link of the video. This link doesn't include the base URL and the username or user ID of the video's owner."
},
"description": {
"type": "string",
"example": "A celebration of 10 years of Staff Picks.",
"description": "The description of the video. This field can hold a maximum of 5000 characters."
},
"review_page": {
"type": "object",
"properties": {
"active": {
"type": "boolean",
"example": true,
"description": "Whether to enable video review."
}
}
},
"embed_domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "The complete list of domains the video can be embedded on. This field overwrites existing domains and requires that **privacy_embed** have the value `whitelist`."
},
"content_rating": {
"type": "array",
"items": {
"type": "string"
},
"description": "A list of values describing the content in this video. For a full list of values, use the [`/contentratings`](https://developer.vimeo.com/api/reference/videos#get_content_ratings) endpoint."
},
"hide_from_vimeo": {
"type": "boolean",
"example": false,
"description": "Whether to hide the video from everyone except the video's owner. When the value is `true`, unlisted video links work only for the video's owner."
},
"embed_domains_add": {
"type": "array",
"items": {
"type": "string"
},
"description": "A list of domains intended to be added to an existing set of domains. This field requires that **privacy_embed** have the value `whitelist`."
},
"embed_domains_delete": {
"type": "array",
"items": {
"type": "string"
},
"description": "A list of domains intended to be removed from an existing set of domains. This field requires that **privacy_embed** have the value `whitelist`."
}
}
}
EditVodRequest
{
"type": "object",
"properties": {
"link": {
"type": "string",
"example": "darbyforever",
"description": "The custom string to use in the Vimeo URL of the On Demand page."
},
"publish": {
"type": "object",
"properties": {
"active": {
"type": "boolean",
"example": true,
"description": "Whether to publish the On Demand page."
}
}
},
"preorder": {
"type": "object",
"properties": {
"active": {
"type": "boolean",
"example": true,
"description": "Whether to enable preorders on the On Demand page."
},
"publish_time": {
"type": "string",
"example": "2017-05-16T15:05:43+00:00",
"description": "The time in ISO 8601 format when the On Demand page will be published. This parameter is required when **preorder.active** is `true`."
}
}
},
"publish_when_ready": {
"type": "boolean",
"example": true,
"description": "Whether to publish the On Demand page automatically after all videos have finished transcoding."
}
}
}
EmbedPresetsCustomLogosListResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/picture"
}
}
EmbedPresetsCustomLogosListUserLogosResponse
{
"type": "array",
"items": {
"$ref": "#/components/schemas/picture"
}
}