> ## 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.
# Add Video Library
## OpenAPI
````yaml https://core-api-public-docs.b-cdn.net/docs/v3/public.json post /videolibrary
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:
post:
tags:
- Stream Video Library
summary: Add Video Library
operationId: AddVideoLibraryEndpoint_AddVideoLibrary
requestBody:
x-name: videoLibraryModel
content:
application/json:
schema:
$ref: '#/components/schemas/VideoLibraryCreateModel'
required: true
x-position: 1
responses:
'201':
description: The added video library
content:
application/json:
schema:
$ref: '#/components/schemas/VideoLibraryModel'
'400':
description: Failed to add video library
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorData'
'401':
description: The request authorization failed
'500':
description: Internal Server Error
security:
- AccessKey:
- User
- UserApi
- SubuserAPIStream
- SubuserStream
- SubuserManage
- SubuserAPIManage
- ScopedApiKey
- bearer:
- User
- UserApi
- SubuserAPIStream
- SubuserStream
- SubuserManage
- SubuserAPIManage
- ScopedApiKey
components:
schemas:
VideoLibraryCreateModel:
type: object
additionalProperties: false
required:
- Name
properties:
Name:
type: string
description: The name of the Video Library.
minLength: 1
ReplicationRegions:
type: array
description: The geo-replication regions of the underlying storage zone
nullable: true
items:
type: string
PlayerVersion:
type: integer
description: (Optional) Sets player version used for this library
format: int32
nullable: true
EncodingTier:
description: >-
(Optional) Defines encoding tier. Premium is a paid tier that offers
prioritized encoding and extra codec support.
0 = Free
1 = Premium
nullable: true
oneOf:
- $ref: '#/components/schemas/EncodingTier'
JitEncodingEnabled:
type: boolean
description: >-
(Optional) Determines whether JIT encoding should be used for the
library. Supported in premium encoding only.
nullable: true
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
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
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
EnableMultiAudioTrackSupport:
type: boolean
description: >-
(Optional) Determines if multiple output audio track support is
enabled on video library.
nullable: true
EnableTranscribing:
type: boolean
description: (Optional) Enables automatic audio transcribing for this library.
nullable: true
TranscribingCaptionLanguages:
type: array
description: >-
(Optional) Languages that captions will be automatically transcribed
to.
nullable: true
items:
type: string
EnableTranscribingTitleGeneration:
type: boolean
description: >-
(Optional) Determines if automatic transcribing title generation is
enabled for this library. Enabling any smart generation feature
turns on transcribing automatically.
nullable: true
EnableTranscribingDescriptionGeneration:
type: boolean
description: >-
(Optional) Determines if automatic transcribing description
generation is enabled for this library. Enabling any smart
generation feature turns on transcribing automatically.
nullable: true
EnableTranscribingChaptersGeneration:
type: boolean
description: >-
(Optional) Determines if automatic transcribing chapters generation
is enabled for this library. Enabling any smart generation feature
turns on transcribing automatically.
nullable: true
EnableTranscribingMomentsGeneration:
type: boolean
description: >-
(Optional) Determines if automatic transcribing moments generation
is enabled for this library. Enabling any smart generation feature
turns on transcribing automatically.
nullable: true
AllowEarlyPlay:
type: boolean
description: >-
(Optional) Enables Early Play. Enabling this also exposes originals
via CDN settings consistent with the video library update API.
nullable: true
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
EncodingTier:
type: integer
description: |-
0 = Free
1 = Premium
x-enumNames:
- Free
- Premium
enum:
- 0
- 1
DrmVersion:
type: integer
description: |-
0 = Basic
1 = Enterprise
2 = Basic V2
x-enumNames:
- Basic
- Enterprise
- BasicV2
enum:
- 0
- 1
- 2
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.