# Update a video's metadata This operation updates a video's metadata. To replace the video file, use the PUT /video/ID. Endpoint: PATCH /videos/{id} Version: v2.0 ## Path parameters: - `id` (string, required) Unique identifier for the video. Example: "51cd5c07-1583-4f5e-bd81-f1aa11510ea9" ## Request fields (application/json): - `video` (object) - `video.name` (string) The video name. Can be displayed in the player. If not specified, it will default to the input file's name. Example: "My video" - `video.description` (string) The video description. Can be displayed in the player. Example: "A new video for my business." - `video.unpublish` (boolean) If true the unpublished_at is respected and the video will not be available after unpublished_at. If false the video will not be unpublished. - `video.unpublished_at` (string) Date and time, in ISO-8601, format when video no longer is available for publishing. After this date, the video is not visible in the player if using ovp-plugin to request the video. Example: "2025-01-01T12:33:22Z" - `video.published` (boolean) Determines, together with published_at and unpublished_at, if this video will be visible in public listings such as MRSS-feeds, endscreens and playlists. If true, and if published_at and unpublished_at allows, the video will be visible. - `video.published_at` (string) Date and time, in ISO-8601 format, when video is available for publishing. Before this date the video is not visible in the player if using ovp-plugin to request the video. Example: "2024-01-01T12:33:22Z" - `video.tags` (array) An array of tags. Example: ["foo","bar"] - `video.category_id` (string) The unique identifier for the category that the video belongs to. - `video.ad_insertion_points` (array) A list of ad insertion points specified for a video. Ad insertion points are pre-defined locations in a video where advertisements are placed during playback. Ads can be inserted at pre-roll (at the beginning of the video), mid-roll (during the video), or post-roll (at the end of the video) position(s). Note: Ad insertion points are only applicable for client-side ad insertion. If you create mid-roll ad insertion points for a video, for example, they overwrite any mid-roll ad positions created using the Video Ad Serving Template ad schedule form. This is because the ad insertion points created using the Wowza Video 2.0 API are time-specific and more accurate than the percentages chosen in the Video Ad Serving Template ad schedule page. - `video.ad_insertion_points.offset_from_start_in_ms` (integer, required) Specifies the time offset from the start of the video in milliseconds. This parameter determines the point in the video at which the ad break begins. Example: 20000 - `video.ad_insertion_points.description` (string) The description of the ad position. For example, it can be an ad position in a video such as pre-roll, mid-roll, and post-roll. Example: "mid-roll" - `video.no_ads` (boolean) When set to true, no ads will be displayed during this video. Note: This feature only works for Iframe embeds. - `video.ad_keywords` (string) Used for replacing the ad_keywords macro in the VAST-tag in any player that plays the video. Example: "special_ads" - `video.playback_token_behavior` (string) Specifies the behavior of token authentication for the video, determining the level of access control. Use this security when distributing sensitive or valuable video content to audiences. It ensures that only authorized users can access the content within the intended application. enum: - NO_TOKEN: Video files are accessible and can be downloaded and played by anyone at any time. This is the default. - BASIC_TOKEN: The platform automatically creates tokenized video URLs. This setting makes it hard for a viewer to extract the video URL and store it for usage in unintended applications over time since the embed URL, which has the token as part of the URL, will only be playable for 48 hours. The token autorenews after 48 hours when used in the intended application. - ADVANCED_TOKEN: You add the stream's JS embed code and a token to your site to provide tokenization. The protections are similar to those for the Basic Token option except you customize the time limit, geographical limits, etc. during token creation. You must either: - Customize and generate a token via the Wowza Video 2.0 API to add to your site before you can use this enum. You'll need to, first, generate a key id to create and sign the token. - Customize and generate a standard common access token (CAT) through the means you usually use to create tokens before you can use this enum. You must, first, generate a key id and key via the Wowza Video 2.0 API, to create and sign the token. - FOLLOW_DEFAULT: The token behavior is based on the Default Playback Token Behavior setting you select for your Wowza account. See the Org Settings page in Wowza Video article for where to set this configuration. Example: "NO_TOKEN" ## Response 200 fields (application/json): - `video` (object) - `video.id` (string) The unique identifier for the video. Example: "2aa3343e-2fb5-42c3-8671-b52c24b7c3e2" - `video.name` (string) The video name. Can be displayed in the player. If not specified, it will default to the input file's name. Example: "My video" - `video.description` (string) The video description. Can be displayed in the player. Example: "A new video for my business." - `video.duration_in_ms` (integer) Duration of the video in milliseconds. - `video.unpublish` (boolean) If true, the unpublish_date is respected and the video will not be available after unpublish_date. If false, the video will not be unpublished. - `video.unpublished_at` (string) Date and time, in ISO-8601 format, when video no longer is available for publishing. After this date the video is not visible in the player if using ovp-plugin to request the video. Example: "2025-01-01T12:33:22Z" - `video.published` (boolean) This field, together with publish_date and unpublish_date, determines if this video will be visible in public listings such as MRSS-feeds, endscreens, and playlists. If true and publish_date and unpublish_date allows, the video will be visible. - `video.published_at` (string) Date and time, in ISO-8601 format, when video is available for publishing. Before this date the video is not visible in the player if using ovp-plugin to request the video. Example: "2024-01-01T12:33:22Z" - `video.tags` (array) An array of tags. Example: ["foo","bar"] - `video.category_id` (string) The unique identifier for the category that the video belongs to. - `video.ad_insertion_points` (array) A list of ad insertion points specified for a video. Ad insertion points are pre-defined locations in a video where advertisements are placed during playback. Ads can be inserted at pre-roll (at the beginning of the video), mid-roll (during the video), or post-roll (at the end of the video) position(s). Note: Ad insertion points are only applicable for client-side ad insertion. If you create mid-roll ad insertion points for a video, for example, they overwrite any mid-roll ad positions created using the Video Ad Serving Template ad schedule form. This is because the ad insertion points created using the Wowza Video 2.0 API are time-specific and more accurate than the percentages chosen in the Video Ad Serving Template ad schedule page. - `video.ad_insertion_points.offset_from_start_in_ms` (integer) Specifies the time offset from the start of the video in milliseconds. This parameter determines the point in the video at which the ad break begins. Example: 20000 - `video.ad_insertion_points.description` (string) The description of the ad position. For example, it can be an ad position in a video such as pre-roll, mid-roll, and post-roll. Example: "mid-roll" - `video.no_ads` (boolean) When set to true, no ads will be displayed during this video. Note: This feature only works for Iframe embeds. - `video.ad_keywords` (string) Used for replacing the ad_keywords macro in the VAST-tag in any Player that plays the video. Example: "special_ads" - `video.created_at` (string) Date and time, in ISO-8601 format, when video was created. Example: "2024-01-01T12:33:22Z" - `video.updated_at` (string) Date and time, in ISO-8601 format, when video was updated. Example: "2024-01-01T12:33:22Z" - `video.state` (string) The current state of the video. The state reflects the current status of the video files for the video asset. Possible states listed below: | State | Description | |-----------|-------| | UPLOADING | The source file is currently being uploaded or waiting to be downloaded by our API. | | WAITING_FOR_ENCODER | The source file was successfully downloaded by the platform and is in queue to be encoded. | | PROCESSING | Source file for the asset is encoding. The current encoding progress can be found on encoding_progress property. | | FINISHED | The encoding is done and the encoded files can be fetched. In this state it's possible to embed the video. | | ERROR | If the platform, for some reason, could not download the source file or failed during the encoding process. error_messsage property can give more information about why it errored. | | DELETED | The video files have been deleted. Usually the video asset have been deleted when this state is reached and because of that it's very uncommon to see assets with this state. | Example: "FINISHED" - `video.encoding_progress` (number) Progress of video encoding, in percentage. The the max value, 100, is reached when all video files have been encoded. - `video.upload_progress` (number) Progress of source file upload, in percentage. If the value is 100 the source file is uploaded. - `video.error_message` (string) If the platform failed to encode the source file, a message describing the error reason will be presented in this property. - `video.deactivated` (boolean) If true, this video has been deactivated and is no longer available for embedding. This usually happens if the account was cancelled or trial limits were exceeded. - `video.images` (array) Images used together with the video in the platform and the player. For platform video images specified in create and update requests, these are uploaded and delivered through the platform. For remote assets the specified image URLs are just passed along to the player using the URL specified in the request. - `video.images.type` (string) Image type where valid values are thumbnail or image. thumbnail is a smaller image and image is larger. Size of the images depends on the size of the uploaded image. Enum: "thumbnail", "image", "image_0", "image_1", "image_2", "image_3", "image_4", "image_5" - `video.images.url` (string) The URL to the image. We accept HTTP and HTTPS addresses. Example: "https://example.com/image.jpg" - `video.encodings` (array) Array containing all available video files and their metadata. - `video.encodings.audio_bitrate_in_kbps` (integer) Audio bitrate in kb/s. Example: 2300 - `video.encodings.audio_channel` (integer) Number of audio channels. Example: 2 - `video.encodings.audio_codec` (string) Audio codec used in the file. Example: "aac" - `video.encodings.audio_sample_rate` (integer) Audio sample rate for this file. Refers to the number of samples of audio taken per second, measured in hertz (Hz). It determines the audio's frequency range and quality, where a higher sample rate captures more detail. Example: 44100 - `video.encodings.height` (integer) Height of the video in pixels. Example: 1080 - `video.encodings.width` (integer) Width of the video in pixels. Example: 1920 - `video.encodings.video_file_url` (string) URL to the video file. We accept HTTP and HTTPS addresses. Example: "https://flowplayer.com/video.mp4" - `video.encodings.video_container` (string) Video container type used for this video file. Example: "mp4" - `video.encodings.video_codec` (string) Video codec used in this video file. Example: "h264" - `video.encodings.total_bitrate_in_kbps` (integer) Total bitrate, video+audio, for the file in kb/s. Example: 1023 - `video.encodings.created_at` (string) Creation timestamp of the file. - `video.encodings.size_in_bytes` (integer) Total file size including both audio and video in bytes. For segmented files, such as DASH and HLS, this is the complete size covering all segments and renditions. Example: 8325555 - `video.drm` (object) Contains all DRM configurations for one video. - `video.drm.com.widevine.alpha` (object) Contains configuration for one DRM provider. - `video.drm.com.widevine.alpha.license_server` (string) URL to the license server that can validate the license. - `video.drm.com.widevine.alpha.certificate` (string) Note: This field is only needed for Fairplay DRM. URL to the Fairplay certificate. - `video.drm.com.apple.fps.1_0` (object) Contains configuration for one DRM provider. - `video.drm.com.microsoft.playready` (object) Contains configuration for one DRM provider. - `video.shallow_copy` (boolean) Whether this video is a shallow copy of another video. A shallow copy uses Video files controlled by another Video, usually on another Workspace. Videos that are shallow copies can't use all features available for normal videos. For example, it's not possible to upload a new version of the video. Another difference is that deleting the video will not delete any video files. If the video asset that is the source of the copy is deleted, the files will no longer be available for this asset. - `video.shallow_copy_source_id` (string) If the video is a shallow copy, this field contains the ID of the source Video entity. Note: There are cases where it is not possible to identify the source and in those cases this value will be null. - `video.multiple_audio_tracks` (boolean) If true, this video has several different audio tracks available for the player. For example, there may be audio tracks in different languages. - `video.audio_only` (boolean) If true, this video has no video track but only audio tracks. - `video.version` (integer) Tracks the number of times a new source file was uploaded for this video asset. For each time a new source file is uploaded, the value increases by one. - `video.thumbnails` (object) Link to the VTT file used by the Thumbnails plug-in. See [Thumbnails](https://developer.wowza.com/docs/wowza-flowplayer/plugins/preview-thumbnails/) to learn more. - `video.thumbnails.src` (string) Link to the VTT file. - `video.animated_previews` (array) The animated previews for the video. - `video.animated_previews.url` (string) - `video.animated_previews.type` (string) - `video.animated_previews.height` (integer) Height of the animated preview in pixels. Example: 1080 - `video.animated_previews.width` (integer) Width of the animated preview in pixels. Example: 1920 - `video.playback_token_behavior` (string) Specifies the behavior of token authentication for the video, determining the level of access control. Use this security when distributing sensitive or valuable video content to audiences. It ensures that only authorized users can access the content within the intended application. enum: - NO_TOKEN: Video files are accessible and can be downloaded and played by anyone at any time. This is the default. - BASIC_TOKEN: The platform automatically creates tokenized video URLs. This setting makes it hard for a viewer to extract the video URL and store it for usage in unintended applications over time since the embed URL, which has the token as part of the URL, will only be playable for 48 hours. The token autorenews after 48 hours when used in the intended application. - ADVANCED_TOKEN: You add the stream's JS embed code and a token to your site to provide tokenization. The protections are similar to those for the Basic Token option except you customize the time limit, geographical limits, etc. during token creation. You must either: - Customize and generate a token via the Wowza Video 2.0 API to add to your site before you can use this enum. You'll need to, first, generate a key id to create and sign the token. - Customize and generate a standard common access token (CAT) through the means you usually use to create tokens before you can use this enum. You must, first, generate a key id and key via the Wowza Video 2.0 API, to create and sign the token. - FOLLOW_DEFAULT: The token behavior is based on the Default Playback Token Behavior setting you select for your Wowza account. See the Org Settings page in Wowza Video article for where to set this configuration. Example: "NO_TOKEN" - `video.origin` (object) The origin of the video. - `video.origin.id` (string) The unique alphanumeric string that identifies the live stream or the real-time stream from which the video originated. Send this ID as the origin_id in GET /videos to return all the videos associated with this stream. Example: "wqrs0k75" - `video.origin.type` (string) The type of the stream from which the video originated. Enum: "live_stream", "real_time_stream" - `video.origin.uptime_id` (string) The unique identifier associated with a specific uptime period of a transcoder. Note: uptime_id is returned only if the stream from which the video originated is a live stream. Example: "hvpcp3kn" ## Response 401 fields (application/json): - `meta` (object, required) - `meta.status` (integer) - `meta.code` (string) - `meta.title` (string) - `meta.message` (string) - `meta.description` (string) - `meta.links` (array) ## Response 403 fields (application/json): - `meta` (object, required) - `meta.status` (integer) - `meta.code` (string) - `meta.title` (string) - `meta.message` (string) - `meta.description` (string) - `meta.links` (array) ## Response 404 fields (application/json): - `meta` (object, required) - `meta.status` (integer) - `meta.code` (string) - `meta.title` (string) - `meta.message` (string) - `meta.description` (string) - `meta.links` (array) ## Response 410 fields (application/json): - `meta` (object, required) - `meta.status` (integer) - `meta.code` (string) - `meta.title` (string) - `meta.message` (string) - `meta.description` (string) - `meta.links` (array) ## Response 422 fields (application/json): - `meta` (object, required) - `meta.status` (integer) - `meta.code` (string) - `meta.title` (string) - `meta.message` (string) - `meta.description` (string) - `meta.links` (array)