---
title: "Update Video Library"
method: POST
path: "/videolibrary/{id}"
tags: ["Stream Video Library"]
---

# Update Video Library

`POST /videolibrary/{id}`

## Request

- Base URL: `https://api.bunny.net`
- URL: `https://api.bunny.net/videolibrary/{id}`
- Auth: one of:
  - API key in header `AccessKey`
  - API key in header `Authorization`
- TypeScript: <https://skmtc.dev/bunny/apis/bunny-net-api/docs/videolibrary/:id/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `id` integer, required

## Request body

- VideoLibraryUpdateModel
  - `Name` string, nullable: (Optional) Sets name of the video library
  - `CustomHTML` string, nullable: (Optional) Sets the player custom HTML code
  - `PlayerKeyColor` string, nullable: (Optional) Sets the player key control color
  - `EnableTokenAuthentication` boolean, nullable: (Optional) Determines if the token authentication should be enabled
  - `EnableTokenIPVerification` boolean, nullable: (Optional) Determines if the token IP verification should be enabled
  - `ResetToken` boolean, nullable: (Optional) Set to true to reset the CDN and embed view token key
  - `WatermarkPositionLeft` integer, nullable: (Optional) Sets the left offset of the watermark position (in %)
  - `WatermarkPositionTop` integer, nullable: (Optional) Sets the top offset of the watermark position (in %)
  - `WatermarkWidth` integer, nullable: (Optional) Sets the width of the watermark (in %)
  - `WatermarkHeight` integer, nullable: (Optional) Sets the height of the watermark (in %)
  - `EnabledResolutions` string, nullable: (Optional) Sets the enabled resolutions for the transcoding. At least one resolution should be enabled. Possible values: 240p, 360p, 480p, 720p, 1080p, 1440p, 2160p
  - `ViAiPublisherId` string, nullable: (Optional) Sets the vi.ai publisher ID
  - `VastTagUrl` string, nullable: (Optional) Sets the Vast tag URL
  - `WebhookUrl` string, nullable: (Optional) Sets the webhook API url
  - `CaptionsFontSize` integer, nullable: (Optional) Sets the captions display font size
  - `CaptionsFontColor` string, nullable: (Optional) Sets the captions display font color
  - `CaptionsBackground` string, nullable: (Optional) Sets the captions display background color
  - `UILanguage` string, nullable: (Optional) Sets the UI language of the video player.
  - `AllowEarlyPlay` boolean, nullable: (Optional) Determines if the Early-Play feature should be enabled. Setting it to true also sets ExposeOriginals to true. Cannot be true while EnableDRM is true, and EnableDRM cannot be set to true while this is true, because Early Play serves the original file, which is not protected by DRM.
  - `PlayerTokenAuthenticationEnabled` boolean, nullable: (Optional) Determines if the token authentication should be enabled.
  - `BlockNoneReferrer` boolean, nullable: (Optional) Determines if requests without a referer should be blocked.
  - `EnableMP4Fallback` boolean, nullable: (Optional) Determines if MP4 fallback should be enabled for this library.
  - `KeepOriginalFiles` boolean, nullable: (Optional) Determines if the original file should be kept after the video is processed.
  - `AllowDirectPlay` boolean, nullable: (Optional) Determines if direct play URLs should be enabled for the library
  - `EnableDRM` boolean, nullable: (Optional) Determines if MediaCage DRM should be enabled for this library. Cannot be set to true while AllowEarlyPlay or ExposeOriginals is true; set them to false first or in the same request, because original files are not protected by DRM.
  - `DrmVersion` 0 | 1 | 2: 0 = Basic 1 = Enterprise 2 = Basic V2
  - `Controls` string, nullable: (Optional) A comma-separated list of controls to display in the video player. Possible values: play-large, play, progress, current-time, duration, mute, volume, captions, settings, pip, airplay, fullscreen, rewind, fast-forward, and chromecast. Set Controls to 0 to remove all player UI controls.
  - `PlaybackSpeeds` string, nullable: (Optional) The comma separated list of playback speeds that will be available in the video player. Possible values: 0.25,0.5,0.75,1.0,1.25,1.5,1.75,2.0,2.5,3,3.5,4
  - `Bitrate240p` integer, nullable: (Optional) The bitrate used for encoding 240p videos
  - `Bitrate360p` integer, nullable: (Optional) The bitrate used for encoding 360p videos
  - `Bitrate480p` integer, nullable: (Optional) The bitrate used for encoding 480p videos
  - `Bitrate720p` integer, nullable: (Optional) The bitrate used for encoding 720p videos
  - `Bitrate1080p` integer, nullable: (Optional) The bitrate used for encoding 1080p videos
  - `Bitrate1440p` integer, nullable: (Optional) The bitrate used for encoding 1440p videos
  - `Bitrate2160p` integer, nullable: (Optional) The bitrate used for encoding 2160p videos
  - `ShowHeatmap` boolean, nullable: (Optional) Determines if the video watch heatmap should be displayed in the player.
  - `EnableContentTagging` boolean, nullable: (Optional) Determines if content tagging should be enabled for this library.
  - `FontFamily` string, nullable: (Optional) The captions font family.
  - `EnableTranscribing` boolean, nullable: (Optional) Determines if the automatic audio transcribing is currently enabled for this zone.
  - `EnableTranscribingTitleGeneration` boolean, nullable: (Optional) Determines if automatic transcribing title generation is currently enabled.
  - `EnableTranscribingDescriptionGeneration` boolean, nullable: (Optional) Determines if automatic transcribing description generation is currently enabled.
  - `EnableTranscribingChaptersGeneration` boolean, nullable: (Optional) Determines if automatic transcribing chapters generation is currently enabled.
  - `EnableTranscribingMomentsGeneration` boolean, nullable: (Optional) Determines if automatic transcribing moments generation is currently enabled.
  - `TranscribingCaptionLanguages` string[], nullable: (Optional) The list of languages that the captions will be automatically transcribed to.
  - `EnableCaptionsInPlaylist` boolean, nullable: (Optional) Determines if any associated captions will be automatically signaled in the HLS master playlist via EXT-X-MEDIA tags, allowing client players to show captions.
  - `RememberPlayerPosition` boolean, nullable: (Optional) Determines if the player will automatically remember the playback position.
  - `EnableMultiAudioTrackSupport` boolean, nullable: (Optional) Determines if multiple output audio track support is enabled on video library.
  - `UseSeparateAudioStream` boolean, nullable: (Optional) Determines whether output audio stream should be split from video stream segments.
  - `JitEncodingEnabled` boolean, nullable: (Optional) Determines whether JIT encoding should be used for the library. Supported in premium encoding only.
  - `EncodingTier` 0 | 1: 0 = Free 1 = Premium
  - `OutputCodecs` string, nullable: (Optional) Specifies which video codecs are used for encoding, provided as a comma-separated (CSV) string. Free encoding tier supports only x264. A premium encoding tier adds support for vp9, hevc, and av1.
  - `AppleFairPlayDrm` AppleFairPlayDrmUpdateModel
    - `Enabled` boolean, nullable: (Optional) Enables or disables Apple FairPlay Enterprise DRM
  - `GoogleWidevineDrm` GoogleWidevineDrmUpdateModel
    - `Enabled` boolean, nullable: (Optional) Enables or disables Google Widevine Enterprise DRM
    - `SdOnlyForL3` boolean, nullable: (Optional) Only allow audio and SD access to Widevine L3 clients
    - `MinClientSecurityLevel` 0 | 1 | 2 | 3: 0 = None 1 = L1 2 = L2 3 = L3
  - `PlayerVersion` integer, nullable: (Optional) Sets player version used for this library
  - `RemoveMetadataFromFallbackVideos` boolean, nullable: (Optional) Marks whether all potential video metadata should be removed from the fallback files
  - `ScaleVideoUsingBothDimensions` boolean, nullable: (Optional) Marks whether videos should be scaled using both dimensions. Prevents videos being upscaled or unexpected aspect ratio changes.
  - `ExposeOriginals` boolean, nullable: (Optional) Marks whether original video files should be exposed via CDN. Original files are not protected by DRM, so this cannot be true while EnableDRM is true, and EnableDRM cannot be set to true while this is true. Setting AllowEarlyPlay to true sets this to true.
  - `ExposeVideoMetadata` boolean, nullable: (Optional) Marks whether video metadata in form of schema meta tags and LD+JSON should be exposed.
  - `EnableCompactControls` boolean, nullable: (Optional) Marks whether compact controls should be enabled for the player.
  - `GeoBlocking` VideoGeoBlockingUpdateModel
    - `Enabled` boolean, nullable: (Optional) Whether geo-blocking is enabled for the video library
    - `AllowedCountries` string[], nullable: (Optional) The list of countries allowed to access the video library, 2 letter ISO 3166-1 code
    - `BlockedCountries` string[], nullable: (Optional) The list of countries blocked from accessing the video library, 2 letter ISO 3166-1 code

## Response `200`

The updated video library

- VideoLibraryModel
  - `Id` integer
  - `Name` string, nullable: The name of the Video Library.
  - `VideoCount` integer: The number of videos in the video library
  - `LiveStreamCount` integer, nullable: The total number of live streams contained by the video library
  - `TotalCount` integer: The total number of items contained by the video library
  - `TrafficUsage` integer: The amount of traffic usage this month
  - `StorageUsage` integer: The total amount of storage used by the library
  - `DateCreated` string, date-time: The date when the video library was created
  - `DateModified` string, date-time: The date when the video library was last modified
  - `ReplicationRegions` string[], nullable: The geo-replication regions of the underlying storage zone
  - `ApiKey` string, nullable: The API key used for authenticating with the video library
  - `ReadOnlyApiKey` string, nullable: The read-only API key used for authenticating with the video library
  - `HasWatermark` boolean: Determines if the video library has a watermark configured
  - `WatermarkPositionLeft` integer: The left offset of the watermark position (in %)
  - `WatermarkPositionTop` integer: The top offset of the watermark position (in %)
  - `WatermarkWidth` integer: The width of the watermark (in %)
  - `PullZoneId` integer: The ID of the connected underlying pull zone
  - `StorageZoneId` integer: The ID of the connected underlying storage zone
  - `WatermarkHeight` integer: The height of the watermark (in %)
  - `EnabledResolutions` string, nullable: The comma separated list of enabled resolutions
  - `ViAiPublisherId` string, nullable: The vi.ai publisher id for advertising configuration
  - `VastTagUrl` string, nullable: The URL of the VAST tag endpoint for advertising configuration
  - `WebhookUrl` string, nullable: The webhook URL of the video library
  - `CaptionsFontSize` integer: The captions display font size
  - `CaptionsFontColor` string, nullable: The captions display font color
  - `CaptionsBackground` string, nullable: The captions display background color
  - `UILanguage` string, nullable: The UI language of the player
  - `AllowEarlyPlay` boolean, nullable: Determines if the Early-Play feature is enabled. Always false while EnableDRM is true.
  - `PlayerTokenAuthenticationEnabled` boolean: Determines if the player token authentication is enabled
  - `AllowedReferrers` string[], nullable: The list of allowed referrer domains allowed to access the library
  - `BlockedReferrers` string[], nullable: The list of blocked referrer domains blocked from accessing the library
  - `BlockNoneReferrer` boolean: Determines if the requests without a referrer are blocked
  - `EnableMP4Fallback` boolean: Determines if the MP4 fallback feature is enabled
  - `KeepOriginalFiles` boolean: Determines if the original video files should be stored after encoding
  - `AllowDirectPlay` boolean: Determines direct play URLs are enabled for the library
  - `EnableDRM` boolean: Determines if MediaCage DRM is enabled. While true, AllowEarlyPlay and ExposeOriginals are always false.
  - `DrmVersion` 0 | 1 | 2: 0 = Basic 1 = Enterprise 2 = Basic V2
  - `AppleFairPlayDrm` AppleFairPlayDrm
    - `Enabled` boolean
    - `CertificateId` integer, nullable
    - `CertificateExpirationDate` string, date-time, nullable
    - `Provider` string, nullable
  - `GoogleWidevineDrm` GoogleWidevineDrm
    - `Enabled` boolean
    - `CertificateId` integer, nullable
    - `CertificateExpirationDate` string, date-time, nullable
    - `Provider` string, nullable
    - `SdOnlyForL3` boolean
    - `MinClientSecurityLevel` 0 | 1 | 2 | 3: 0 = None 1 = L1 2 = L2 3 = L3
  - `Bitrate240p` integer: The bitrate used for encoding 240p videos
  - `Bitrate360p` integer: The bitrate used for encoding 360p videos
  - `Bitrate480p` integer: The bitrate used for encoding 480p videos
  - `Bitrate720p` integer: The bitrate used for encoding 720p videos
  - `Bitrate1080p` integer: The bitrate used for encoding 1080p videos
  - `Bitrate1440p` integer: The bitrate used for encoding 1440p videos
  - `Bitrate2160p` integer: The bitrate used for encoding 2160p videos
  - `ApiAccessKey` string, nullable
  - `ShowHeatmap` boolean: Determines if the video watch heatmap should be displayed in the player.
  - `EnableContentTagging` boolean: Determines if content tagging should be enabled for this library.
  - `PullZoneType` 0 | 1: 0 = Premium 1 = Volume
  - `CustomHTML` string, nullable: The custom HTMl that is added into the head of the HTML player.
  - `Controls` string, nullable: The comma-separated list of controls displayed in the video player. Possible values: play-large, play, progress, current-time, duration, mute, volume, captions, settings, pip, airplay, fullscreen, rewind, fast-forward, and chromecast. Empty when all player UI controls are removed.
  - `PlaybackSpeeds` string, nullable: The list of playback speeds available in the video player.
  - `PlayerKeyColor` string, nullable: The key color of the player.
  - `FontFamily` string, nullable: The captions font family.
  - `WatermarkVersion` integer
  - `EnableTranscribing` boolean: Determines if the automatic audio transcribing is currently enabled for this zone.
  - `EnableTranscribingTitleGeneration` boolean: Determines if automatic transcribing title generation is currently enabled.
  - `EnableTranscribingDescriptionGeneration` boolean: Determines if automatic transcribing description generation is currently enabled.
  - `EnableTranscribingChaptersGeneration` boolean: Determines if automatic transcribing chapters generation is currently enabled.
  - `EnableTranscribingMomentsGeneration` boolean: Determines if automatic transcribing moments generation is currently enabled.
  - `TranscribingCaptionLanguages` string[], nullable: The list of languages that the captions will be automatically transcribed to.
  - `EnableCaptionsInPlaylist` boolean, nullable: Determines if any associated captions will be automatically signaled in the HLS master playlist via EXT-X-MEDIA tags, allowing client players to show captions.
  - `RememberPlayerPosition` boolean: Determines if the player will automatically remember the playback position.
  - `EnableMultiAudioTrackSupport` boolean: Determines if multiple output audio track support is enabled on video library.
  - `UseSeparateAudioStream` boolean: Determines whether output audio stream should be split from video stream segments.
  - `JitEncodingEnabled` boolean: Determines whether JIT encoding should be used for the library. Supported in premium encoding only.
  - `EncodingTier` 0 | 1: 0 = Free 1 = Premium
  - `OutputCodecs` string, nullable: Specifies which video codecs are used for encoding, provided as a comma-separated (CSV) string. Free encoding tier supports only x264. A premium encoding tier adds support for vp9, hevc, and av1.
  - `DrmBasePriceOverride` number, nullable: DRM (enterprise) monthly base price for this video library if it differs from list price.
  - `DrmCostPerLicenseOverride` number, nullable: DRM (enterprise) cost per license for this video library if it differs from list price.
  - `TranscribingPriceOverride` number, nullable
  - `PremiumEncodingPriceOverride` number, nullable
  - `MonthlyChargesTranscribing` number
  - `MonthlyChargesPremiumEncoding` number
  - `MonthlyChargesEnterpriseDrm` number
  - `FeatureFlags` string, nullable
  - `PlayerVersion` integer
  - `RemoveMetadataFromFallbackVideos` boolean: Marks whether all potential video metadata should be removed from the fallback files. Default false.
  - `ScaleVideoUsingBothDimensions` boolean: Marks whether videos should be scaled using both dimensions. Prevents videos being upscaled or unexpected aspect ratio changes. Default true.
  - `ExposeOriginals` boolean: Marks whether original video files are exposed via CDN. Always false while EnableDRM is true; original files are not protected by DRM.
  - `ExposeVideoMetadata` boolean: Marks whether video metadata in form of schema meta tags and LD+JSON should be exposed.
  - `EnableCompactControls` boolean: Marks whether compact controls should be enabled for the player.
  - `GeoBlocking` VideoGeoBlocking
    - `Enabled` boolean: Whether geo-blocking is enabled for the video library
    - `AllowedCountries` string[], nullable: The list of countries allowed to access the video library, 2 letter ISO 3166-1 code
    - `BlockedCountries` string[], nullable: The list of countries blocked from accessing the video library, 2 letter ISO 3166-1 code

## Other responses

- `400`: Validation error
- `401`: The request authorization failed
- `404`: The Video Library with the requested ID does not exist
- `500`: Internal Server Error

## Changes

- **2026-10-27** `2096a6606d8d`: 4 info
  - added the new optional request property `GeoBlocking`
  - added the optional property `GeoBlocking` to the response with the `200` status
  - added the optional property `LiveStreamCount` to the response with the `200` status
  - added the optional property `TotalCount` to the response with the `200` status
- **2026-08-07** `205129a7ebd5`: 2 info
  - the security scope `ScopedApiKey` was added to the endpoint's security scheme `AccessKey`
  - the security scope `ScopedApiKey` was added to the endpoint's security scheme `bearer`
- **2026-04-23** `30efa45cf436`: 2 info
  - added the new optional request property `EnableCompactControls`
  - added the optional property `EnableCompactControls` to the response with the `200` status
- **2026-04-12** `9123bf5c2354`: 5 breaking, 63 info
  - the request's body became not nullable
  - request body became required
  - removed `#/components/schemas/VideoLibraryUpdateModel` from the request body `oneOf` list
  - the request's body type changed from no type to `object`
  - …64 more

[Operation history](https://skmtc.dev/bunny/apis/bunny-net-api/changes/videolibrary/:id/post.md)

---

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