> ## 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. # List Videos ## OpenAPI ````yaml https://video.bunnycdn.com/openapi/bunnynet-video-api.public.json get /library/{libraryId}/videos openapi: 3.0.0 info: title: Stream API termsOfService: https://bunny.net/tos contact: name: bunny.net url: https://docs.bunny.net email: support@bunny.net version: 1.6.21 servers: - url: https://video.bunnycdn.com security: [] tags: - name: Manage Collections - name: Encoding Statistics - name: Manage Videos paths: /library/{libraryId}/videos: get: tags: - Manage Videos summary: List Videos operationId: Video_List parameters: - name: libraryId in: path required: true description: The ID of the video library. schema: type: integer format: int64 x-position: 1 - name: page in: query description: The page number to return, 1-based; values below 1 are treated as 1. schema: type: integer format: int32 default: 1 x-position: 2 - name: itemsPerPage in: query description: >- The number of items to return per page, clamped to a range of 10-1000. schema: type: integer format: int32 default: 100 x-position: 3 - name: search in: query description: Filters videos by title, case-insensitive substring match. schema: type: string default: '' nullable: true x-position: 4 - name: collection in: query description: Filters videos by collection ID. schema: type: string default: '' nullable: true x-position: 5 - name: orderBy in: query description: >- The field to order results by. Possible values: date, title — any other value falls back to date. schema: type: string default: date nullable: true x-position: 6 responses: '200': description: The list of videos for the current parameters content: application/json: schema: $ref: '#/components/schemas/PaginationListOfVideoModel' '400': description: Search is not available for this library content: application/json: schema: $ref: '#/components/schemas/StatusModel' '401': description: The request authentication failed content: application/json: schema: $ref: '#/components/schemas/StatusModel' '500': description: Internal Server Error '503': description: The search database is temporarily unavailable, retry the request content: application/json: schema: $ref: '#/components/schemas/StatusModel' security: - AccessKey: [] components: schemas: PaginationListOfVideoModel: type: object additionalProperties: false properties: totalItems: type: integer description: >- The total number of items across all pages matching the query, not just the current page. format: int64 currentPage: type: integer description: The current page number of the result set (1-based). format: int64 itemsPerPage: type: integer description: >- The effective page size after clamping the requested value; the last page may contain fewer items. format: int32 items: type: array description: >- The items on the current page, in the order returned by the query; an empty list if no results match. nullable: true items: $ref: '#/components/schemas/VideoModel' StatusModel: type: object additionalProperties: false properties: success: type: boolean description: Determines if the request was successful message: type: string description: >- Human-readable message describing the result, typically populated with error details when Success is false. nullable: true statusCode: type: integer description: The HTTP status code corresponding to the result of the request. format: int32 VideoModel: type: object additionalProperties: false required: - videoLibraryId - guid - title - dateUploaded - views - isPublic - length - status - framerate - width - height - outputCodecs - thumbnailCount - encodeProgress - storageSize - hasMP4Fallback - averageWatchTime - totalWatchTime properties: videoLibraryId: type: integer description: The ID of the video library that the video belongs to format: int64 guid: type: string description: The unique ID of the video minLength: 1 title: type: string description: The title of the video minLength: 1 description: type: string description: The description of the video nullable: true dateUploaded: type: string description: The date when the video was uploaded format: date-time minLength: 1 views: type: integer description: The number of views the video received format: int64 isPublic: type: boolean description: Determines if the video is publically accessible length: type: integer description: The duration of the video in seconds format: int32 status: description: The status of the video. See VideoModelStatus. oneOf: - $ref: '#/components/schemas/VideoModelStatus' framerate: type: number description: The framerate of the video format: double rotation: type: integer description: >- Rotation of the source file in degrees as read from container metadata (e.g. 90, -90, 180, 270); null when no rotation metadata is present. nullable: true width: type: integer description: The width of the original video file format: int32 height: type: integer description: The height of the original video file format: int32 availableResolutions: type: string description: >- Comma-separated list of resolution labels (e.g. "360p,720p,1080p") that have finished encoding and are available for playback. nullable: true outputCodecs: type: string description: >- Comma-separated list of output codecs generated for this video (e.g. "x264,vp9"). See EncoderOutputCodec for possible values. minLength: 1 thumbnailCount: type: integer description: The number of thumbnails generated for this video format: int32 encodeProgress: type: integer description: >- Encoding progress as a percentage from 0 to 100; reaches 100 when transcoding finishes. format: int32 storageSize: type: integer description: Total storage used by this video, in bytes. format: int64 captions: type: array description: The list of captions available for the video nullable: true items: $ref: '#/components/schemas/CaptionModel' hasMP4Fallback: type: boolean description: Determines if the video has MP4 fallback files generated collectionId: type: string description: The ID of the collection where the video belongs nullable: true thumbnailFileName: type: string description: The file name of the thumbnail inside of the storage nullable: true thumbnailUrl: type: string description: The CDN URL of the thumbnail nullable: true thumbnailBlurhash: type: string description: >- Thumbnail blurhash to show while the actual thumbnail is being loaded nullable: true averageWatchTime: type: integer description: The average watch time of the video in seconds format: int64 totalWatchTime: type: integer description: The total video watch time in seconds format: int64 category: type: string description: >- Automatically detected content category label; "untagged" when no category has been determined yet. nullable: true chapters: type: array description: The list of chapters available for the video nullable: true items: $ref: '#/components/schemas/ChapterModel' moments: type: array description: The list of moments available for the video nullable: true items: $ref: '#/components/schemas/MomentModel' metaTags: type: array description: The list of meta tags that have been added to the video nullable: true items: $ref: '#/components/schemas/MetaTagModel' transcodingMessages: type: array description: >- The list of transcoding messages that describe potential issues while the video was transcoding nullable: true items: $ref: '#/components/schemas/TranscodingMessageModel' jitEncodingEnabled: type: boolean description: >- Whether just-in-time encoding is enabled for this specific video, overriding the video library's default JitEncodingEnabled setting when set. Null means the library default applies. nullable: true smartGenerateStatus: description: >- Aggregate smart generate status derived from per-feature statuses when present: InProgress, then Queued, then Failed, then Finished; otherwise the stored legacy value. See SmartGenerateFeaturesStatus. nullable: true oneOf: - $ref: '#/components/schemas/SmartGenerateStatus' smartGenerateFeaturesStatus: description: >- Per-feature smart generate statuses (title, description, chapters, moments). Null for a feature on legacy rows. nullable: true oneOf: - $ref: '#/components/schemas/SmartGenerateFeaturesStatusModel' hasOriginal: type: boolean description: Determines if video has the original file available in storage nullable: true originalHash: type: string description: Original uploaded file SHA256 hash nullable: true hasHighQualityPreview: type: boolean description: >- Whether a high-quality animated preview has been generated for this video. nullable: true VideoModelStatus: type: integer description: '' oneOf: - title: Created type: integer enum: - 0 - title: Uploaded type: integer enum: - 1 - title: Processing type: integer enum: - 2 - title: Transcoding type: integer enum: - 3 - title: Finished type: integer enum: - 4 - title: Error type: integer enum: - 5 - title: UploadFailed type: integer enum: - 6 - title: JitSegmenting type: integer enum: - 7 - title: JitPlaylistsCreated type: integer enum: - 8 CaptionModel: type: object additionalProperties: false properties: srclang: type: string description: The unique srclang shortcode for the caption nullable: true label: type: string description: The text description label for the caption nullable: true version: type: integer description: >- Increments each time this caption is replaced; useful as a cache-busting value for the caption file URL. format: int32 ChapterModel: type: object additionalProperties: false required: - title properties: title: type: string description: The title of the chapter, up to 255 characters. minLength: 1 start: type: integer description: >- The start time of the chapter in seconds. Must be less than End and within the video's duration; chapters must not overlap each other. format: int32 end: type: integer description: >- The end time of the chapter in seconds. Must be greater than Start and within the video's duration; chapters must not overlap each other. format: int32 MomentModel: type: object additionalProperties: false required: - label properties: label: type: string description: The text description label for the moment, up to 255 characters. minLength: 1 timestamp: type: integer description: >- The timestamp of the moment in seconds. Must be within the video's duration. format: int32 MetaTagModel: type: object additionalProperties: false properties: property: type: string description: >- The meta tag key. Must match ^[A-Za-z0-9._:'"-]+$. Setting a tag with the property "description" also updates the video's Description field. nullable: true value: type: string description: >- The meta tag value. HTML/markup is stripped and the value is stored as plain text. nullable: true TranscodingMessageModel: type: object additionalProperties: false properties: timeStamp: type: string description: Date and time when this message was added (UTC). format: date-time level: description: Message severity. See Severity. oneOf: - $ref: '#/components/schemas/Severity' issueCode: description: >- Issue code identifying the specific transcoding problem. See IssueCodes. oneOf: - $ref: '#/components/schemas/IssueCodes' message: type: string description: Human-readable description of the issue. nullable: true value: type: string description: >- Additional context value for the issue, if applicable; otherwise empty. nullable: true SmartGenerateStatus: type: integer description: '' oneOf: - title: None type: integer enum: - 0 - title: Queued type: integer enum: - 1 - title: InProgress type: integer enum: - 2 - title: Finished type: integer enum: - 3 - title: Failed type: integer enum: - 4 SmartGenerateFeaturesStatusModel: type: object additionalProperties: false properties: title: description: Smart generate status for the video title, when applicable. nullable: true oneOf: - $ref: '#/components/schemas/SmartGenerateStatus' description: description: Smart generate status for the video description, when applicable. nullable: true oneOf: - $ref: '#/components/schemas/SmartGenerateStatus' chapters: description: Smart generate status for chapters, when applicable. nullable: true oneOf: - $ref: '#/components/schemas/SmartGenerateStatus' moments: description: Smart generate status for moments, when applicable. nullable: true oneOf: - $ref: '#/components/schemas/SmartGenerateStatus' Severity: type: integer description: '' oneOf: - title: Undefined type: integer description: Shouldn't be used enum: - 0 - title: Information type: integer description: An info message to the user, shouldn't break anythying enum: - 1 - title: Warning type: integer description: >- A warning message, for example that the transcoded video may break when playing enum: - 2 - title: Error type: integer description: An error, meaning that the video will most likely not be playable enum: - 3 IssueCodes: type: integer description: '' oneOf: - title: Undefined type: integer description: Shouldn't be used enum: - 0 - title: StreamLengthsDifference type: integer description: >- Marks that there is a mismatch between lengths of audio and video streams in the transcoded file enum: - 1 - title: TranscodingWarnings type: integer description: Marks that transcoding completed with warnings enum: - 2 - title: IncompatibleResolution type: integer description: >- Marks that original video file has incompatible resolution or isn't a video stream enum: - 3 - title: InvalidFramerate type: integer description: Marks that original video file has invalid framerate enum: - 4 - title: VideoExceededMaxDuration type: integer description: Marks that video stream exceeded max duration enum: - 5 - title: AudioExceededMaxDuration type: integer description: Marks that audio stream exceeded max duration enum: - 6 - title: OriginalCorrupted type: integer description: >- Marks that video file is corrupted and couldn't be processed properly enum: - 7 - title: TranscriptionFailed type: integer description: >- Marks that video transcription finished with errors and might not be complete enum: - 8 - title: JitIncompatible type: integer description: Marks that video file is not compatible with JIT encoding enum: - 9 - title: JitFailed type: integer description: Marks that video failed JIT encoding enum: - 10 - title: CaptionGenerationFailed type: integer description: Marks that captions generation failed enum: - 11 - title: UnsupportedFileType type: integer description: >- Marks that the uploaded or fetched file is not video or audio, for example a photo or a document enum: - 12 securitySchemes: AccessKey: type: apiKey description: AccessKey based authentication name: AccessKey in: header ```` This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.