> ## Documentation Index
> Fetch the complete documentation index at: https://bunny.net/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Update Video Library
## OpenAPI
````yaml https://core-api-public-docs.b-cdn.net/docs/v3/public.json post /videolibrary/{id}
openapi: 3.0.0
info:
title: bunny.net API
description: >-
Learn how to use the [bunny.net](https://bunny.net "bunny.net - The content delivery platform that truly hops.") API. Everything that can be done with the control panel can also be achieved with our API documented on this page. To learn how to use the storage API, have a look at our storage API documentation
Third party API clients:
We currently do not maintain an official API library, but you can use one of the third party ones provided here:
https://github.com/codewithmark/bunnycdn (bunny.net PHP library, thanks to Code With Mark)
Note that third party clients are not maintained or developed by bunny.net so we unfortunately cannot offer support for them.
termsOfService: https://bunny.net/tos
contact:
name: bunny.net
url: https://docs.bunny.net
email: support@bunny.net
version: 1.0.0
servers:
- url: https://api.bunny.net
description: bunny.net API Server
security:
- AccessKey: []
tags:
- name: Stream Video Library
- name: User
- name: AuditLog
- name: Storage Zone
- name: Statistics
- name: Search
- name: Pull Zone
- name: Pricing
- name: Load Balancer
- name: DNS Zone
- name: DNSSEC
- name: Billing
- name: API Keys
- name: Affiliate
- name: Countries
- name: Purge
- name: Region
paths:
/videolibrary/{id}:
post:
tags:
- Stream Video Library
summary: Update Video Library
operationId: UpdateVideoLibraryEndpoint_UpdateVideoLibrary
parameters:
- name: id
in: path
required: true
description: The ID of the Video Library to update
schema:
type: integer
format: int64
x-position: 1
requestBody:
x-name: model
content:
application/json:
schema:
$ref: '#/components/schemas/VideoLibraryUpdateModel'
required: true
x-position: 2
responses:
'200':
description: The updated video library
content:
application/json:
schema:
$ref: '#/components/schemas/VideoLibraryModel'
'400':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorData'
'401':
description: The request authorization failed
'404':
description: The Video Library with the requested ID does not exist
'500':
description: Internal Server Error
security:
- AccessKey:
- User
- UserApi
- SubuserAPIStream
- SubuserStream
- SubuserManage
- SubuserAPIManage
- ScopedApiKey
- bearer:
- User
- UserApi
- SubuserAPIStream
- SubuserStream
- SubuserManage
- SubuserAPIManage
- ScopedApiKey
components:
schemas:
VideoLibraryUpdateModel:
type: object
additionalProperties: false
properties:
Name:
type: string
description: (Optional) Sets name of the video library
nullable: true
CustomHTML:
type: string
description: (Optional) Sets the player custom HTML code
nullable: true
PlayerKeyColor:
type: string
description: (Optional) Sets the player key control color
nullable: true
EnableTokenAuthentication:
type: boolean
description: (Optional) Determines if the token authentication should be enabled
nullable: true
EnableTokenIPVerification:
type: boolean
description: (Optional) Determines if the token IP verification should be enabled
nullable: true
ResetToken:
type: boolean
description: (Optional) Set to true to reset the CDN and embed view token key
nullable: true
WatermarkPositionLeft:
type: integer
description: (Optional) Sets the left offset of the watermark position (in %)
format: int32
nullable: true
WatermarkPositionTop:
type: integer
description: (Optional) Sets the top offset of the watermark position (in %)
format: int32
nullable: true
WatermarkWidth:
type: integer
description: (Optional) Sets the width of the watermark (in %)
format: int32
nullable: true
WatermarkHeight:
type: integer
description: (Optional) Sets the height of the watermark (in %)
format: int32
nullable: true
EnabledResolutions:
type: string
description: >-
(Optional) Sets the enabled resolutions for the transcoding. At
least one resolution should be enabled. Possible values: 240p, 360p,
480p, 720p, 1080p, 1440p, 2160p
nullable: true
ViAiPublisherId:
type: string
description: (Optional) Sets the vi.ai publisher ID
nullable: true
VastTagUrl:
type: string
description: (Optional) Sets the Vast tag URL
nullable: true
WebhookUrl:
type: string
description: (Optional) Sets the webhook API url
nullable: true
CaptionsFontSize:
type: integer
description: (Optional) Sets the captions display font size
format: int32
nullable: true
CaptionsFontColor:
type: string
description: (Optional) Sets the captions display font color
nullable: true
CaptionsBackground:
type: string
description: (Optional) Sets the captions display background color
nullable: true
UILanguage:
type: string
description: (Optional) Sets the UI language of the video player.
nullable: true
AllowEarlyPlay:
type: boolean
description: >-
(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.
nullable: true
PlayerTokenAuthenticationEnabled:
type: boolean
description: (Optional) Determines if the token authentication should be enabled.
nullable: true
BlockNoneReferrer:
type: boolean
description: >-
(Optional) Determines if requests without a referer should be
blocked.
nullable: true
EnableMP4Fallback:
type: boolean
description: >-
(Optional) Determines if MP4 fallback should be enabled for this
library.
nullable: true
KeepOriginalFiles:
type: boolean
description: >-
(Optional) Determines if the original file should be kept after the
video is processed.
nullable: true
AllowDirectPlay:
type: boolean
description: >-
(Optional) Determines if direct play URLs should be enabled for the
library
nullable: true
EnableDRM:
type: boolean
description: >-
(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.
nullable: true
DrmVersion:
description: >-
(Optional) Determines MediaCage DRM version to be used for this
library
0 = Basic
1 = Enterprise
2 = Basic V2
nullable: true
oneOf:
- $ref: '#/components/schemas/DrmVersion'
Controls:
type: string
description: >-
(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.
nullable: true
PlaybackSpeeds:
type: string
description: >-
(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
nullable: true
Bitrate240p:
type: integer
description: (Optional) The bitrate used for encoding 240p videos
format: int32
nullable: true
Bitrate360p:
type: integer
description: (Optional) The bitrate used for encoding 360p videos
format: int32
nullable: true
Bitrate480p:
type: integer
description: (Optional) The bitrate used for encoding 480p videos
format: int32
nullable: true
Bitrate720p:
type: integer
description: (Optional) The bitrate used for encoding 720p videos
format: int32
nullable: true
Bitrate1080p:
type: integer
description: (Optional) The bitrate used for encoding 1080p videos
format: int32
nullable: true
Bitrate1440p:
type: integer
description: (Optional) The bitrate used for encoding 1440p videos
format: int32
nullable: true
Bitrate2160p:
type: integer
description: (Optional) The bitrate used for encoding 2160p videos
format: int32
nullable: true
ShowHeatmap:
type: boolean
description: >-
(Optional) Determines if the video watch heatmap should be displayed
in the player.
nullable: true
EnableContentTagging:
type: boolean
description: >-
(Optional) Determines if content tagging should be enabled for this
library.
nullable: true
FontFamily:
type: string
description: (Optional) The captions font family.
nullable: true
EnableTranscribing:
type: boolean
description: >-
(Optional) Determines if the automatic audio transcribing is
currently enabled for this zone.
nullable: true
EnableTranscribingTitleGeneration:
type: boolean
description: >-
(Optional) Determines if automatic transcribing title generation is
currently enabled.
nullable: true
EnableTranscribingDescriptionGeneration:
type: boolean
description: >-
(Optional) Determines if automatic transcribing description
generation is currently enabled.
nullable: true
EnableTranscribingChaptersGeneration:
type: boolean
description: >-
(Optional) Determines if automatic transcribing chapters generation
is currently enabled.
nullable: true
EnableTranscribingMomentsGeneration:
type: boolean
description: >-
(Optional) Determines if automatic transcribing moments generation
is currently enabled.
nullable: true
TranscribingCaptionLanguages:
type: array
description: >-
(Optional) The list of languages that the captions will be
automatically transcribed to.
nullable: true
items:
type: string
EnableCaptionsInPlaylist:
type: boolean
description: >-
(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.
nullable: true
RememberPlayerPosition:
type: boolean
description: >-
(Optional) Determines if the player will automatically remember the
playback position.
nullable: true
EnableMultiAudioTrackSupport:
type: boolean
description: >-
(Optional) Determines if multiple output audio track support is
enabled on video library.
nullable: true
UseSeparateAudioStream:
type: boolean
description: >-
(Optional) Determines whether output audio stream should be split
from video stream segments.
nullable: true
JitEncodingEnabled:
type: boolean
description: >-
(Optional) Determines whether JIT encoding should be used for the
library. Supported in premium encoding only.
nullable: true
EncodingTier:
description: >-
(Optional) Defines encoding tier to be used with video library.
premium is a paid tier that offers either JIT encoding or
prioritized encoding and extra codec support.
0 = Free
1 = Premium
nullable: true
oneOf:
- $ref: '#/components/schemas/EncodingTier'
OutputCodecs:
type: string
description: >-
(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.
nullable: true
AppleFairPlayDrm:
description: >-
(Optional) Configure Apple FairPlay DRM. Works only if Enterprise
DRM is set up.
nullable: true
oneOf:
- $ref: '#/components/schemas/AppleFairPlayDrmUpdateModel'
GoogleWidevineDrm:
description: >-
(Optional) Configure Google Widevine DRM. Works only if Enterprise
DRM is set up.
nullable: true
oneOf:
- $ref: '#/components/schemas/GoogleWidevineDrmUpdateModel'
PlayerVersion:
type: integer
description: (Optional) Sets player version used for this library
format: int32
nullable: true
RemoveMetadataFromFallbackVideos:
type: boolean
description: >-
(Optional) Marks whether all potential video metadata should be
removed from the fallback files
nullable: true
ScaleVideoUsingBothDimensions:
type: boolean
description: >-
(Optional) Marks whether videos should be scaled using both
dimensions. Prevents videos being upscaled or unexpected aspect
ratio changes.
nullable: true
ExposeOriginals:
type: boolean
description: >-
(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.
nullable: true
ExposeVideoMetadata:
type: boolean
description: >-
(Optional) Marks whether video metadata in form of schema meta tags
and LD+JSON should be exposed.
nullable: true
EnableCompactControls:
type: boolean
description: >-
(Optional) Marks whether compact controls should be enabled for the
player.
nullable: true
GeoBlocking:
description: (Optional) Geo-blocking settings for the video library.
nullable: true
oneOf:
- $ref: '#/components/schemas/VideoGeoBlockingUpdateModel'
VideoLibraryModel:
type: object
additionalProperties: false
properties:
Id:
type: integer
format: int64
Name:
type: string
description: The name of the Video Library.
nullable: true
VideoCount:
type: integer
description: The number of videos in the video library
format: int64
LiveStreamCount:
type: integer
description: The total number of live streams contained by the video library
format: int64
nullable: true
TotalCount:
type: integer
description: The total number of items contained by the video library
format: int64
TrafficUsage:
type: integer
description: The amount of traffic usage this month
format: int64
StorageUsage:
type: integer
description: The total amount of storage used by the library
format: int64
DateCreated:
type: string
description: The date when the video library was created
format: date-time
DateModified:
type: string
description: The date when the video library was last modified
format: date-time
ReplicationRegions:
type: array
description: The geo-replication regions of the underlying storage zone
nullable: true
items:
type: string
ApiKey:
type: string
description: The API key used for authenticating with the video library
nullable: true
ReadOnlyApiKey:
type: string
description: The read-only API key used for authenticating with the video library
nullable: true
HasWatermark:
type: boolean
description: Determines if the video library has a watermark configured
WatermarkPositionLeft:
type: integer
description: The left offset of the watermark position (in %)
format: int32
WatermarkPositionTop:
type: integer
description: The top offset of the watermark position (in %)
format: int32
WatermarkWidth:
type: integer
description: The width of the watermark (in %)
format: int32
PullZoneId:
type: integer
description: The ID of the connected underlying pull zone
format: int64
StorageZoneId:
type: integer
description: The ID of the connected underlying storage zone
format: int64
WatermarkHeight:
type: integer
description: The height of the watermark (in %)
format: int32
EnabledResolutions:
type: string
description: The comma separated list of enabled resolutions
nullable: true
ViAiPublisherId:
type: string
description: The vi.ai publisher id for advertising configuration
nullable: true
VastTagUrl:
type: string
description: The URL of the VAST tag endpoint for advertising configuration
nullable: true
WebhookUrl:
type: string
description: The webhook URL of the video library
nullable: true
CaptionsFontSize:
type: integer
description: The captions display font size
format: int32
CaptionsFontColor:
type: string
description: The captions display font color
nullable: true
CaptionsBackground:
type: string
description: The captions display background color
nullable: true
UILanguage:
type: string
description: The UI language of the player
nullable: true
AllowEarlyPlay:
type: boolean
description: >-
Determines if the Early-Play feature is enabled. Always false while
EnableDRM is true.
nullable: true
PlayerTokenAuthenticationEnabled:
type: boolean
description: Determines if the player token authentication is enabled
AllowedReferrers:
type: array
description: The list of allowed referrer domains allowed to access the library
nullable: true
items:
type: string
BlockedReferrers:
type: array
description: >-
The list of blocked referrer domains blocked from accessing the
library
nullable: true
items:
type: string
BlockNoneReferrer:
type: boolean
description: Determines if the requests without a referrer are blocked
EnableMP4Fallback:
type: boolean
description: Determines if the MP4 fallback feature is enabled
KeepOriginalFiles:
type: boolean
description: >-
Determines if the original video files should be stored after
encoding
AllowDirectPlay:
type: boolean
description: Determines direct play URLs are enabled for the library
EnableDRM:
type: boolean
description: >-
Determines if MediaCage DRM is enabled. While true, AllowEarlyPlay
and ExposeOriginals are always false.
DrmVersion:
description: |-
DRM version (basic or enterprise)
0 = Basic
1 = Enterprise
2 = Basic V2
oneOf:
- $ref: '#/components/schemas/DrmVersion'
AppleFairPlayDrm:
description: Described Apple FairPlay DRM
nullable: true
oneOf:
- $ref: '#/components/schemas/AppleFairPlayDrm'
GoogleWidevineDrm:
description: Describes Google Widevine DRM
nullable: true
oneOf:
- $ref: '#/components/schemas/GoogleWidevineDrm'
Bitrate240p:
type: integer
description: The bitrate used for encoding 240p videos
format: int32
Bitrate360p:
type: integer
description: The bitrate used for encoding 360p videos
format: int32
Bitrate480p:
type: integer
description: The bitrate used for encoding 480p videos
format: int32
Bitrate720p:
type: integer
description: The bitrate used for encoding 720p videos
format: int32
Bitrate1080p:
type: integer
description: The bitrate used for encoding 1080p videos
format: int32
Bitrate1440p:
type: integer
description: The bitrate used for encoding 1440p videos
format: int32
Bitrate2160p:
type: integer
description: The bitrate used for encoding 2160p videos
format: int32
ApiAccessKey:
type: string
deprecated: true
x-deprecatedMessage: >-
The API access key for the library. Should use the ApiKey as the
value is the same.
nullable: true
ShowHeatmap:
type: boolean
description: >-
Determines if the video watch heatmap should be displayed in the
player.
EnableContentTagging:
type: boolean
description: Determines if content tagging should be enabled for this library.
PullZoneType:
description: |-
The type of the pull zone attached
0 = Premium
1 = Volume
oneOf:
- $ref: '#/components/schemas/PullZoneType'
CustomHTML:
type: string
description: The custom HTMl that is added into the head of the HTML player.
nullable: true
Controls:
type: string
description: >-
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.
nullable: true
PlaybackSpeeds:
type: string
description: The list of playback speeds available in the video player.
nullable: true
PlayerKeyColor:
type: string
description: The key color of the player.
nullable: true
FontFamily:
type: string
description: The captions font family.
nullable: true
WatermarkVersion:
type: integer
format: int64
EnableTranscribing:
type: boolean
description: >-
Determines if the automatic audio transcribing is currently enabled
for this zone.
EnableTranscribingTitleGeneration:
type: boolean
description: >-
Determines if automatic transcribing title generation is currently
enabled.
EnableTranscribingDescriptionGeneration:
type: boolean
description: >-
Determines if automatic transcribing description generation is
currently enabled.
EnableTranscribingChaptersGeneration:
type: boolean
description: >-
Determines if automatic transcribing chapters generation is
currently enabled.
EnableTranscribingMomentsGeneration:
type: boolean
description: >-
Determines if automatic transcribing moments generation is currently
enabled.
TranscribingCaptionLanguages:
type: array
description: >-
The list of languages that the captions will be automatically
transcribed to.
nullable: true
items:
type: string
EnableCaptionsInPlaylist:
type: boolean
description: >-
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.
nullable: true
RememberPlayerPosition:
type: boolean
description: >-
Determines if the player will automatically remember the playback
position.
EnableMultiAudioTrackSupport:
type: boolean
description: >-
Determines if multiple output audio track support is enabled on
video library.
UseSeparateAudioStream:
type: boolean
description: >-
Determines whether output audio stream should be split from video
stream segments.
JitEncodingEnabled:
type: boolean
description: >-
Determines whether JIT encoding should be used for the library.
Supported in premium encoding only.
EncodingTier:
description: >-
Defines encoding tier to be used with video library. premium is a
paid tier that offers either JIT encoding or prioritized encoding
and extra codec support.
0 = Free
1 = Premium
oneOf:
- $ref: '#/components/schemas/EncodingTier'
OutputCodecs:
type: string
description: >-
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.
nullable: true
DrmBasePriceOverride:
type: number
description: >-
DRM (enterprise) monthly base price for this video library if it
differs from list price.
format: decimal
nullable: true
DrmCostPerLicenseOverride:
type: number
description: >-
DRM (enterprise) cost per license for this video library if it
differs from list price.
format: decimal
nullable: true
TranscribingPriceOverride:
type: number
format: decimal
nullable: true
PremiumEncodingPriceOverride:
type: number
format: decimal
nullable: true
MonthlyChargesTranscribing:
type: number
format: decimal
MonthlyChargesPremiumEncoding:
type: number
format: decimal
MonthlyChargesEnterpriseDrm:
type: number
format: decimal
FeatureFlags:
type: string
nullable: true
PlayerVersion:
type: integer
format: int32
RemoveMetadataFromFallbackVideos:
type: boolean
description: >-
Marks whether all potential video metadata should be removed from
the fallback files. Default false.
ScaleVideoUsingBothDimensions:
type: boolean
description: >-
Marks whether videos should be scaled using both dimensions.
Prevents videos being upscaled or unexpected aspect ratio changes.
Default true.
ExposeOriginals:
type: boolean
description: >-
Marks whether original video files are exposed via CDN. Always false
while EnableDRM is true; original files are not protected by DRM.
ExposeVideoMetadata:
type: boolean
description: >-
Marks whether video metadata in form of schema meta tags and LD+JSON
should be exposed.
EnableCompactControls:
type: boolean
description: Marks whether compact controls should be enabled for the player.
GeoBlocking:
description: Geo-blocking settings for the video library.
nullable: true
oneOf:
- $ref: '#/components/schemas/VideoGeoBlocking'
ApiErrorData:
type: object
additionalProperties: false
properties:
ErrorKey:
type: string
nullable: true
Field:
type: string
nullable: true
Message:
type: string
nullable: true
DrmVersion:
type: integer
description: |-
0 = Basic
1 = Enterprise
2 = Basic V2
x-enumNames:
- Basic
- Enterprise
- BasicV2
enum:
- 0
- 1
- 2
EncodingTier:
type: integer
description: |-
0 = Free
1 = Premium
x-enumNames:
- Free
- Premium
enum:
- 0
- 1
AppleFairPlayDrmUpdateModel:
type: object
additionalProperties: false
properties:
Enabled:
type: boolean
description: (Optional) Enables or disables Apple FairPlay Enterprise DRM
nullable: true
GoogleWidevineDrmUpdateModel:
type: object
additionalProperties: false
properties:
Enabled:
type: boolean
description: (Optional) Enables or disables Google Widevine Enterprise DRM
nullable: true
SdOnlyForL3:
type: boolean
description: (Optional) Only allow audio and SD access to Widevine L3 clients
nullable: true
MinClientSecurityLevel:
description: >-
(Optional) Minimum Client Security Level (1 being most secure, 3
least secure and is default)
0 = None
1 = L1
2 = L2
3 = L3
nullable: true
oneOf:
- $ref: '#/components/schemas/WidevineMinClientSecurityLevel'
VideoGeoBlockingUpdateModel:
type: object
additionalProperties: false
properties:
Enabled:
type: boolean
description: (Optional) Whether geo-blocking is enabled for the video library
nullable: true
AllowedCountries:
type: array
description: >-
(Optional) The list of countries allowed to access the video
library, 2 letter ISO 3166-1 code
nullable: true
items:
type: string
BlockedCountries:
type: array
description: >-
(Optional) The list of countries blocked from accessing the video
library, 2 letter ISO 3166-1 code
nullable: true
items:
type: string
AppleFairPlayDrm:
type: object
additionalProperties: false
properties:
Enabled:
type: boolean
CertificateId:
type: integer
format: int64
nullable: true
CertificateExpirationDate:
type: string
format: date-time
nullable: true
Provider:
type: string
nullable: true
GoogleWidevineDrm:
type: object
additionalProperties: false
properties:
Enabled:
type: boolean
CertificateId:
type: integer
format: int64
nullable: true
CertificateExpirationDate:
type: string
format: date-time
nullable: true
Provider:
type: string
nullable: true
SdOnlyForL3:
type: boolean
MinClientSecurityLevel:
description: |-
0 = None
1 = L1
2 = L2
3 = L3
nullable: true
oneOf:
- $ref: '#/components/schemas/WidevineMinClientSecurityLevel'
PullZoneType:
type: integer
description: |-
0 = Premium
1 = Volume
x-enumNames:
- Premium
- Volume
enum:
- 0
- 1
VideoGeoBlocking:
type: object
additionalProperties: false
properties:
Enabled:
type: boolean
description: Whether geo-blocking is enabled for the video library
AllowedCountries:
type: array
description: >-
The list of countries allowed to access the video library, 2 letter
ISO 3166-1 code
nullable: true
items:
type: string
BlockedCountries:
type: array
description: >-
The list of countries blocked from accessing the video library, 2
letter ISO 3166-1 code
nullable: true
items:
type: string
WidevineMinClientSecurityLevel:
type: integer
description: |-
0 = None
1 = L1
2 = L2
3 = L3
x-enumNames:
- None
- L1
- L2
- L3
enum:
- 0
- 1
- 2
- 3
securitySchemes:
AccessKey:
type: apiKey
description: API Access Key authorization header
name: AccessKey
in: header
bearer:
type: apiKey
description: Bearer token authorization header
name: Authorization
in: header
````
This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.