---
title: "Permit a specific user to view a private video"
method: PUT
path: "/videos/{video_id}/privacy/users/{user_id}"
tags: ["Videos\\Viewing privacy"]
---

# Permit a specific user to view a private video

`PUT /videos/{video_id}/privacy/users/{user_id}`

## Request

- Base URL: `https://api.vimeo.com`
- URL: `https://api.vimeo.com/videos/{video_id}/privacy/users/{user_id}`
- Auth: OAuth 2
  - Authorization code: `/oauth/authorize`, token URL `/oauth/access_token`
  - Client credentials, token URL `/oauth/authorize/client`
  - Scopes: `edit`
- TypeScript: <https://skmtc.dev/vimeo/apis/vimeo-api/docs/videos/:video_id/privacy/users/:user_id/put.ts> (a function with typed inputs; its response is checked against the schema)

This method gives a single user permission to view the specified private video.

## Path parameters

- `user_id` number, required
- `video_id` number, required

## Response `200`

The user can now view the private video.

- User
  - `account` 'basic' | 'business' | 'live_business' | 'live_premium' | 'live_pro' | 'plus' | 'pro' | 'pro_unlimited' | 'producer', required: The user's account type: Option descriptions: * `basic` - The user has a Vimeo Basic subscription. * `business` - The user has a Vimeo Business subscription. * `live_business` - The user has a Vimeo Business Live subscription. * `live_premium` - The user has a Vimeo Premium subscription. * `live_pro` - The user has a Vimeo PRO Live subscription. * `plus` - The user has a Vimeo Plus subscription. * `pro` - The user has a Vimeo Pro subscription. * `pro_unlimited` - The user has a Vimeo PRO Unlimited subscription. * `producer` - The user has a Vimeo Producer subscription.
  - `bio` string, nullable, required: The user's bio.
  - `content_filter` string[]: The user's content filters: Option descriptions: * `drugs` - Drugs or alcohol use. * `language` - Profanity or sexually suggestive content. * `nudity` - Nudity. * `safe` - Suitable for all audiences. * `unrated` - No rating. * `violence` - Violent or graphic content.
  - `created_time` string, required: The time in ISO 8601 format when the user account was created.
  - `email` string: The user's email address. This data requires a bearer token with the `email` scope.
  - `link` string, required: The absolute URL of this user's profile page.
  - `location` string, nullable, required: The user's location.
  - `metadata` object, required: The user's metadata.
    - `connections` object, required: The list of resource URIs related to the user.
      - `albums` object, required: Information about the albums created by this user.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of albums on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `appearances` object, required: Information about the appearances of this user in other videos.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of appearances on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `block` object, required: Information on the users that the current user has blocked. This data requires a bearer token with the `private` scope.
        - `options` string[], required: An array of HTTP methods permitted on this URI. This data requires a bearer token with the `private` scope.
        - `total` number, required: The total number of blocked users on this connection. This data requires a bearer token with the `private` scope.
        - `uri` string, required: The API URI that resolves to the connection data. This data requires a bearer token with the `private` scope.
      - `categories` object, required: Information about this user's followed categories.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of categories on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `channels` object, required: Information about this user's subscribed channels.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of channels on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `feed` object, required: Information about this user's feed.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `folders` object, required: Information about this user's folders.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of folders on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `followers` object, required: Information about the user's followers.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of followers on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `following` object, required: Information about the users that the current user is following.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of users on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `groups` object, required: Information about the groups created by this user.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of groups on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `likes` object, required: Information about the videos that this user has liked.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of likes on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `moderated_channels` object, required: Information about the channels that this user moderates.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of channels on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `pictures` object, required: Information about this user's portraits.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of pictures on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `portfolios` object, required: Information about this user's portfolios.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of portfolios on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `recommended_channels` object, required: A collection of recommended channels for the current user to follow. This data requires a bearer token with the `private` scope.
        - `options` string[], required: An array of HTTP methods permitted on this URI. This data requires a bearer token with the `private` scope.
        - `total` number, required: The total number of channels on this connection. This data requires a bearer token with the `private` scope.
        - `uri` string, required: The API URI that resolves to the connection data. This data requires a bearer token with the `private` scope.
      - `recommended_users` object, required: A Collection of recommended users for the current user to follow. This data requires a bearer token with the `private` scope.
        - `options` string[], required: An array of HTTP methods permitted on this URI. This data requires a bearer token with the `private` scope.
        - `total` number, required: The total number of users on this connection. This data requires a bearer token with the `private` scope.
        - `uri` string, required: The API URI that resolves to the connection data. This data requires a bearer token with the `private` scope.
      - `shared` object, required: Information about the videos that have been shared with this user.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of videos on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `videos` object, required: Information about the videos uploaded by this user.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of videos on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `watched_videos` object, required: Information about the videos that this user has watched.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of videos on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
      - `watchlater` object, required: Information about the videos that this user wants to watch later.
        - `options` string[], required: An array of HTTP methods permitted on this URI.
        - `total` number, required: The total number of videos on this connection.
        - `uri` string, required: The API URI that resolves to the connection data.
    - `interactions` object, required
      - `add_privacy_user` object
        - `options` string[]: An array of the HTTP methods permitted on this URI. This data requires a bearer token with the `private` scope.
        - `uri` string: The API URI that resolves to the connection data. This data requires a bearer token with the `private` scope.
      - `block` object, required: Information related to the block status of this user.
        - `added` boolean, required: Whether a user is blocking the current user.
        - `added_time` string, nullable, required: The time in ISO 8601 format when the block occurred, or the null value if no block exists.
        - `options` string[], required: An array of the HTTP methods permitted on this URI.
        - `uri` string, required: The URI to block or unblock the user.
      - `follow` object, required: Information related to the followed status of this user.
        - `added` boolean, required: Whether a user is following the current user.
        - `options` string[], required: An array of the HTTP methods permitted on this URI.
        - `uri` string, required: The URI to follow the user.
      - `report` object, required: Information regarding where and how to report a user.
        - `options` string[], required: An array of the HTTP methods permitted on this URI.
        - `reason` string[], required: List of valid reasons for reporting a video.
        - `uri` string, required: The API URI that resolves to the connection data.
  - `name` string, required: The user's display name.
  - `pictures` Picture, required
    - `active` boolean, required: Whether this picture is the active picture for its parent resource.
    - `link` string: The upload URL for the picture. This field appears when you create the picture resource for the first time.
    - `resource_key` string, required: The picture's resource key string.
    - `sizes` object[], required: An array containing reference information about all available image files.
      - `height` number, nullable, required: The height of the image.
      - `link` string, required: The direct link to the image.
      - `link_with_play_button` string: The direct link to the image with a play button overlay.
      - `width` number, required: The width of the image.
    - `type` 'caution' | 'custom' | 'default', required: The type of the picture: Option descriptions: * `caution` - An image that is appropriate for all ages. * `custom` - A custom image for the video. * `default` - The default image for the video.
    - `uri` string, required: The picture's URI.
  - `preferences` object
    - `videos` object
      - `privacy` object
        - `add` boolean: Whether other users can add the user's videos.
        - `comments` 'anybody' | 'contacts' | 'nobody': The user's privacy preference for comments: Option descriptions: * `anybody` - Anyone can comment on the user's videos. * `contacts` - Only contacts can comment on the user's videos. * `nobody` - No one can comment on the user's videos.
        - `download` boolean: Whether other users can download the user's videos.
        - `embed` 'private' | 'public' | 'whitelist': The user's privacy preference for embeds: Option descriptions: * `private` - Only the user can embed their own videos. * `public` - Anyone can embed the user's videos. * `whitelist` - Only those on the whitelist can embed the user's videos.
        - `view` 'anybody' | 'contacts' | 'disable' | 'nobody' | 'password' | 'unlisted' | 'users': The user's privacy preference for views: Option descriptions: * `anybody` - Anyone can view the user's videos. * `contacts` - Only contacts can view the user's videos. * `disable` - Views are disabled for the user's videos. * `nobody` - No one except the user can view the user's videos. * `password` - Only those with the password can view the user's videos. * `unlisted` - Anybody can view the user's videos if they have a link. * `users` - Only other Vimeo members can view the user's videos.
  - `resource_key` string, required: The user's resource key string.
  - `upload_quota` object, required: Appears only when the user has upload access and is looking at their own user record.
    - `lifetime` object, required: Information about the user's lifetime upload usage.
      - `free` number, nullable, required: The number of bytes remaining in your lifetime maximum.
      - `max` number, nullable, required: The total number of bytes that you can upload across the lifetime of your account.
      - `used` number, nullable, required: The number of bytes that you've already uploaded against your lifetime limit.
    - `periodic` object, required: Information about the user's usage for the current period.
      - `free` number, nullable, required: The number of bytes remaining in your upload quota for the current period.
      - `max` number, nullable, required: The total number of bytes that you can upload per period.
      - `reset_date` string, nullable, required: The time in ISO 8601 format when your upload quota resets.
      - `used` number, nullable, required: The number of bytes that you've already uploaded against your quota in the current period.
    - `space` object, required: Information about the user's upload space remaining for the current period.
      - `free` number, required: The number of bytes remaining in your upload quota.
      - `max` number, nullable, required: The maximum number of bytes allotted to your upload quota.
      - `showing` 'lifetime' | 'periodic', required: Whether the values of the upload_quota.space fields are for the lifetime quota or the periodic quota.
      - `used` number, required: The number of bytes that you've already uploaded against your quota.
  - `uri` string, required: The user's canonical relative URI.
  - `websites` object[], required: The user's websites.
    - `description` string, nullable, required: The website's description.
    - `link` string, required: The URL of the website.
    - `name` string, nullable, required: The name of the website.

## Other responses

- `204`: The user can already view this private video.
- `403`: The video doesn't have a user-defined access list.

## Changes

- **2019-04-12** `80428f626f3e`: 2 info
  - api tag `Videos\Viewing privacy` added
  - api tag `Videos\Viewing Privacy` removed
- **2018-12-05** `26f856a94041`: 2 info
  - api tag `Videos\Viewing Privacy` added
  - api tag `Videos\Viewing privacy` removed

[Operation history](https://skmtc.dev/vimeo/apis/vimeo-api/changes/videos/:video_id/privacy/users/:user_id/put.md)

---

[API](https://skmtc.dev/vimeo/apis/vimeo-api.md) - [All operations](https://skmtc.dev/vimeo/apis/vimeo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vimeo/apis/vimeo-api/revisions/ea882e0224a4?raw)
