openapi: 3.1.0 info: title: Mux API description: Mux is how developers build online video. This API encompasses both Mux Video and Mux Data functionality to help you build your video-related projects better and faster than ever before. version: v1 contact: name: Mux DevEx url: https://docs.mux.com email: devex@mux.com servers: - url: https://api.mux.com description: Mux Production API - url: https://image.mux.com - url: https://stream.mux.com - url: https://stats.mux.com tags: - name: Transcription Vocabularies description: Transcription Vocabularies allows you to provide collections of phrases like proper nouns, technical jargon, and uncommon words as part of captioning workflows. When using Auto-Generated Captions, Transcription Vocabularies increase the likelihood of correct speech recognition for these words and phrases. x-displayName: Transcription Vocabularies - name: Assets description: 'An asset refers to a piece of media content that is stored or is being live streamed through the Mux system. An asset always has a duration and one or more tracks (audio, video, and text data). The media content of an asset cannot be updated once created, however an asset can be used to create another asset, and can be modified within that process.' x-displayName: Assets - name: Live Streams description: 'A Live Stream represents a unique live stream of video being pushed to Mux. It includes configuration details (a Stream Key) for live broadcasting software/hardware and a Playback ID for playing the stream anywhere. Currently, RTMP is the only supported method of ingesting video. Use rtmp://global-live.mux.com:5222/app with the Live Stream''s Stream Key for getting the video into Mux, and use https://stream.mux.com with the Live Stream''s Playback ID for playback. A Live Stream can be used once for a specific event, or re-used forever. If you''re building an application like Facebook Live or Twitch, you could create one Live Stream per user. This allows them to configure their broadcasting software once, and the Live Stream Playback ID will always show their latest stream. Each RTMP session creates a new video asset automatically. You can set up a webhook to be notified each time a broadcast (or Live Stream RTMP session) begins or ends with the video.live_stream.active and video.live_stream.idle events respectively. Assets that are created from a Live Stream have the same behavior as other Assets you create. Learn more about [how to go live in our guides](https://docs.mux.com/guides/start-live-streaming).' x-displayName: Live Streams - name: URL Signing Keys description: A URL signing key is used as the secret when signing any Mux URL. Mux requires a [JSON Web Token](https://jwt.io/) as the value of the token query parameter. The token query parameter must be set for URLs that reference a playback ID with a signed playback policy. x-displayName: URL Signing Keys - name: Direct Uploads description: 'Direct upload allows you to push assets directly to Mux storage instead of needing to go through your own first. When you create a new direct upload, we''ll give you back a signed URL for a Google Cloud Storage bucket. Their storage API is S3 compatible, so whatever tool you use to upload to either GCS or S3 should work, just remember you''re probably uploading large video files and should [take advantage of things like resumable or multipart uploads](https://cloud.google.com/storage/docs/json_api/v1/how-tos/resumable-upload). Particularly for customers that deal with a lot of user-generated content, it''s common to expect quite a few abandoned uploads. To keep those abandoned uploads from cluttering up your asset lists, we don''t create an asset for you until the upload is complete. Once that asset is created, you can expect all of the normal asset-related webhooks.' x-displayName: Direct Uploads - name: Delivery Usage description: 'The Delivery Usage API allows you to get delivery/streaming usage details for each asset and across all assets. Delivery usage details are aggregated every hour at the top of the hour and can be requested for a specified time window within the last 90 days starting at 12 hours prior to when the request is made. Assets are ordered by delivery usage starting with the one with the highest usage. Only assets with delivery usage greater than 0 seconds are returned in the response.' x-displayName: Delivery Usage - name: Playback Restrictions description: Playback Restrictions allows you to set additional rules for playing videos. You can set the domains/hostnames allowed to play your videos. For instance, viewers can play videos embedded on the `https://example.com` website when you set the Playback Restrictions with `example.com` as an allowed domain. Any Video requests from other websites are denied. Additionally, you can set rules for what user agents to allow. Please see [Using User-Agent HTTP header for validation](https://docs.mux.com/guides/secure-video-playback#using-user-agent-http-header-for-validation) for more details on this feature. x-displayName: Playback Restrictions - name: DRM Configurations description: DRM Configurations allow you to adjust the security level of content delivered through Mux Video's Digital Rights Management (DRM) feature. x-displayName: DRM Configurations - name: Playback ID description: Operations related to the manipulation of playback IDs, through which users are able to stream videos and live streams from Mux. x-displayName: Playback ID - name: Video Views description: An individual video view tracked by Mux Data. For the full list of properties for each view please refer to the table of data fields in the [Export raw video view data guide](https://docs.mux.com/guides/export-raw-video-view-data). x-displayName: Video Views - name: Errors description: Playback errors are tracked and aggregated by Mux Data. Errors can be listed by the API, which contains data about the error code, message, and how often the error occurred. x-displayName: Errors - name: Filters description: Deprecated, please refer to the Dimensions APIs. x-displayName: Filters - name: Dimensions description: Dimensions are the types of metadata that can be collected for a video view. Some dimensions are collected automatically based on the playback or device, such as the viewer's Country or the device information. Other dimensions are specified by the developer when configuring a Mux Data video view such as the video title. The Dimensions APIs allow you to get a list of the supported dimensions and their values. x-displayName: Dimensions - name: Exports description: Exports allow you to download the daily CSV files that are generated from the video views that occurred in the previous day. Please contact [support](mailto:support@mux.com) for information about enabling exports for your organization. x-displayName: Exports - name: Metrics description: 'Historical metrics are used for tracking KPIs, diagnosing issues, and measuring viewers'' quality of experience. Metrics are calculated using the video views that have been completed and are bucketed on the view end time for quality of experience metrics and view start time for engagement metrics. Historical metrics provide a large collection of dimensions that can be used to aggregate quality of experience based on view metadata. You can also easily compare experiences across viewer populations to, for example, find issues with specific devices or geographies. Historical metrics are similar but not directly comparable to the real-time metrics in the Real-time APIs. These metrics are aggregated for long-term storage historical reporting and are generated using different viewer populations. ' x-displayName: Metrics - name: Monitoring description: 'Monitoring metrics are used for operational monitoring of a video platform. The metrics are aggregated in five second intervals, across the views that are currently being watched. The real-time metrics'' timeline, breakdown, and histogram representations are available via the APIs. Monitoring metrics are similar but not directly comparable to the historical metrics in the Metrics APIs. These metrics are aggregated to provide the most operational detail possible used for resolving operational issues. Mux Data Monitoring metrics are available to Mux Data customers on a Media plan. ' x-displayName: Monitoring - name: Real-Time description: 'The Mux Data Real-time API has been deprecated, please refer to the Mux Data `Monitoring` APIs which provide the same functionality. Mux Data Monitoring metrics are available to Mux Data customers on a Media plan. ' x-displayName: Real-Time - name: Incidents description: Incidents occur when an anomaly alert is triggered in Mux Data. The Incidents API provides operations related to the raising and managing of alerting incidents. x-displayName: Incidents - name: Annotations description: Annotations allow you to add notes at a specific datetime to view in the Mux Data dashboard. x-displayName: Annotations - name: Signing Keys description: Signing keys are used to sign JSON Web Tokens (JWTs) for securing certain requests, such as secure playback URLs and access to real-time viewer counts in Mux Data. **One signing key can be used to sign multiple requests - you probably only need one active at a time.** However, you can create multiple signing keys to enable key rotation, creating a new key and deleting the old only after any existing signed requests have expired. x-displayName: Signing Keys - name: Utilities description: Collection of utility methods for using Mux APIs. There's only one thing in here right now, maybe there will be more later. x-displayName: Utilities - name: Jobs description: List and cancel jobs across all workflows. x-displayName: Jobs - name: Ask Questions description: Ask questions about a video and get structured answers. x-displayName: Ask Questions - name: Edit Captions description: Edit an existing caption track with find-and-replace edits and optional profanity censoring. This workflow is currently in beta. x-displayName: Edit Captions - name: Find Key Moments description: Identify key moments in a video. x-displayName: Find Key Moments - name: Generate Chapters description: Generate chapters for a video. x-displayName: Generate Chapters - name: Moderate description: Analyze a video for inappropriate content. x-displayName: Moderate - name: Summarize description: Generate a title, description, and tags for a video. x-displayName: Summarize - name: Translate Captions description: Translate captions from one language to another. x-displayName: Translate Captions - name: Thumbnails description: APIs for retrieving still thumbnails from videos hosted using Mux. x-displayName: Thumbnails - name: Animated Images description: APIs for retrieving animated images from videos hosted using Mux. x-displayName: Animated Images - name: Storyboards description: APIs for retrieving storyboards, sprites, and metadata about the storyboards from videos hosted using Mux. x-displayName: Storyboards - name: Streaming description: APIs for streaming video content via HLS and MP4 with customizable playback options. x-displayName: Streaming - name: Captions and Transcripts description: APIs for retrieving captions and transcripts from videos hosted using Mux that have had captions generated automatically. x-displayName: Captions and Transcripts - name: View and Viewer Counts description: API for retrieving the real-time count of views and viewers based on ID as collected by Mux Data. x-displayName: View and Viewer Counts - name: Live Stream Health Info x-displayName: Live Stream Health Info paths: /video/v1/transcription-vocabularies: post: tags: - Transcription Vocabularies summary: Create a Transcription Vocabulary description: Create a new Transcription Vocabulary. operationId: create-transcription-vocabulary servers: - url: https://api.mux.com parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateTranscriptionVocabularyRequest' example: name: Mux API Vocabulary phrases: - Mux - Live Stream - Playback ID - video encoding responses: '201': description: Transcription Vocabulary Created content: application/json: schema: $ref: '#/components/schemas/TranscriptionVocabularyResponse' example: data: id: VDm3npt2eaEDvz9emzun8Q name: Mux API Vocabulary phrases: - Mux - Live Stream - Playback ID - video encoding created_at: '1609869152' updated_at: '1609869152' security: - accessToken: [] - authorizationToken: [] get: tags: - Transcription Vocabularies summary: List Transcription Vocabularies description: List all Transcription Vocabularies. operationId: list-transcription-vocabularies servers: - url: https://api.mux.com parameters: - name: limit in: query description: Number of items to include in the response required: false schema: type: integer format: int32 default: 10 maximum: 10 - $ref: '#/components/parameters/page' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListTranscriptionVocabulariesResponse' example: data: - id: VDm3npt2eaEDvz9emzun8Q name: Mux API Vocabulary phrases: - Mux - Live Stream - Playback ID - video encoding created_at: '1609869152' updated_at: '1609870000' - id: M1lDlzSP102NgukTnyQyLqw name: Video Codecs phrases: - h.264 - HEVC - AV1 created_at: '1609869152' updated_at: '1609870000' security: - accessToken: [] - authorizationToken: [] /video/v1/transcription-vocabularies/{TRANSCRIPTION_VOCABULARY_ID}: get: tags: - Transcription Vocabularies summary: Retrieve a Transcription Vocabulary description: Retrieves the details of a Transcription Vocabulary that has previously been created. Supply the unique Transcription Vocabulary ID and Mux will return the corresponding Transcription Vocabulary information. The same information is returned when creating a Transcription Vocabulary. operationId: get-transcription-vocabulary servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/transcription_vocabulary_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TranscriptionVocabularyResponse' example: data: id: VDm3npt2eaEDvz9emzun8Q name: Mux API Vocabulary phrases: - Mux - Live Stream - Playback ID - video encoding created_at: '1609869152' updated_at: '1609870000' security: - accessToken: [] - authorizationToken: [] delete: tags: - Transcription Vocabularies summary: Delete a Transcription Vocabulary description: Deletes a Transcription Vocabulary. The Transcription Vocabulary's ID will be disassociated from any live streams using it. Transcription Vocabularies can be deleted while associated live streams are active. However, the words and phrases in the deleted Transcription Vocabulary will remain attached to those streams while they are active. operationId: delete-transcription-vocabulary servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/transcription_vocabulary_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] put: tags: - Transcription Vocabularies summary: Update a Transcription Vocabulary description: Updates the details of a previously-created Transcription Vocabulary. Updates to Transcription Vocabularies are allowed while associated live streams are active. However, updates will not be applied to those streams while they are active. operationId: update-transcription-vocabulary servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/transcription_vocabulary_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateTranscriptionVocabularyRequest' example: name: Mux API Vocabulary - Updated phrases: - Mux - Live Stream - RTMP - Stream Key responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TranscriptionVocabularyResponse' example: data: id: VDm3npt2eaEDvz9emzun8Q name: Mux API Vocabulary - Updated phrases: - Mux - Live Stream - RTMP - Stream Key created_at: '1609869152' updated_at: '1609870000' security: - accessToken: [] - authorizationToken: [] /video/v1/assets: post: tags: - Assets summary: Create an Asset description: Create a new Mux Video asset. operationId: create-asset servers: - url: https://api.mux.com parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateAssetRequest' example: inputs: - url: https://muxed.s3.amazonaws.com/leds.mp4 playback_policies: - public video_quality: basic responses: '201': description: Asset Created content: application/json: schema: $ref: '#/components/schemas/AssetResponse' example: data: status: preparing playback_ids: - policy: public id: uNbxnGLKJ00yfbijDO8COxTOyVKT01xpxW master_access: none id: SqQnqz6s5MBuXGvJaUWdXuXM93J9Q2yv encoding_tier: baseline video_quality: basic created_at: '1607452572' max_resolution_tier: 1080p progress: state: ingesting progress: 0 security: - accessToken: [] - authorizationToken: [] get: tags: - Assets summary: List Assets description: List all Mux assets. operationId: list-assets servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/cursor' - $ref: '#/components/parameters/list_asset_live_stream_id' - $ref: '#/components/parameters/list_asset_upload_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListAssetsResponse' example: next_cursor: tF601CUtCLmnYuHW01Vwl6BWcWTNv001uoaiK4C01jqk1acX802plAjZhTQ data: - tracks: - type: video max_width: 1920 max_height: 800 max_frame_rate: 24 id: HK01Bq7FrEQmIu3QpRiZZ98HQOOZjm6BYyg17eEunlyo duration: 734.166667 - type: audio max_channels: 2 id: nNKHJqw2G9cE019AoK16CJr3O27gGnbtW4w525hJWqWw duration: 734.143991 status: ready playback_ids: - policy: public id: 85g23gYz7NmQu02YsY81ihuod6cZMxCp017ZrfglyLCKc max_stored_resolution: HD resolution_tier: 1080p max_stored_frame_rate: 24 master_access: none id: 8jd7M77xQgf2NzuocJRPYdSdEfY5dLlcRwFARtgQqU4 encoding_tier: baseline video_quality: basic duration: 734.25 created_at: '1609869152' aspect_ratio: '12:5' max_resolution_tier: 1080p progress: state: completed progress: 100 - tracks: - type: video max_width: 1920 max_height: 1080 max_frame_rate: 29.97 id: RiyQPM31a1SPtfI802bEP2zD02F5FQVNL801FRHeE5t01G4 duration: 23.8238 - type: audio max_channels: 2 id: LvINTciHVoC017knMCH01y9pSi5OrDLCRaBPNDAoNJcmg duration: 23.823792 status: ready playback_ids: - policy: public id: vAFLI2eKFFicXX00iHBS2vqt5JjJGg5HV6fQ4Xijgt1I max_stored_resolution: HD resolution_tier: 1080p max_stored_frame_rate: 29.97 master_access: none id: lJ4bGGsp7ZlPf02nMg015W02iHQLN9XnuuLRBsPS00xqd68 encoding_tier: smart video_quality: plus duration: 23.857167 created_at: '1609868768' aspect_ratio: '16:9' max_resolution_tier: 1080p progress: state: completed progress: 100 security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}: get: tags: - Assets summary: Retrieve an Asset description: Retrieves the details of an asset that has previously been created. Supply the unique asset ID that was returned from your previous request, and Mux will return the corresponding asset information. The same information is returned when creating an asset. operationId: get-asset servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AssetResponse' example: data: tracks: - type: video max_width: 1920 max_height: 1080 max_frame_rate: 29.97 id: RiyQPM31a1SPtfI802bEP2zD02F5FQVNL801FRHeE5t01G4 duration: 23.8238 - type: audio max_channels: 2 id: LvINTciHVoC017knMCH01y9pSi5OrDLCRaBPNDAoNJcmg duration: 23.823792 status: ready resolution_tier: 1080p playback_ids: - policy: public id: vAFLI2eKFFicXX00iHBS2vqt5JjJGg5HV6fQ4Xijgt1I passthrough: example max_stored_resolution: HD max_stored_frame_rate: 29.97 max_resolution_tier: 1080p progress: state: completed progress: 100 master_access: none id: lJ4bGGsp7ZlPf02nMg015W02iHQLN9XnuuLRBsPS00xqd68 encoding_tier: baseline video_quality: basic duration: 23.857167 created_at: '1609868768' aspect_ratio: '16:9' security: - accessToken: [] - authorizationToken: [] delete: tags: - Assets summary: Delete an Asset description: Deletes a video asset and all its data. operationId: delete-asset servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] patch: tags: - Assets summary: Update an Asset description: Updates the details of an existing Asset with the provided Asset ID. This API currently only supports the `passthrough` and `meta` fields. operationId: update-asset servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAssetRequest' example: passthrough: Example responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AssetResponse' example: data: tracks: - type: video max_width: 1920 max_height: 1080 max_frame_rate: 29.97 id: RiyQPM31a1SPtfI802bEP2zD02F5FQVNL801FRHeE5t01G4 duration: 23.8238 - type: audio max_channels: 2 id: LvINTciHVoC017knMCH01y9pSi5OrDLCRaBPNDAoNJcmg duration: 23.823792 status: ready playback_ids: - policy: public id: vAFLI2eKFFicXX00iHBS2vqt5JjJGg5HV6fQ4Xijgt1I max_stored_resolution: HD resolution_tier: 1080p max_stored_frame_rate: 29.97 master_access: none id: lJ4bGGsp7ZlPf02nMg015W02iHQLN9XnuuLRBsPS00xqd68 encoding_tier: baseline video_quality: basic duration: 23.857167 created_at: '1609868768' updated_at: '1609869000' aspect_ratio: '16:9' passthrough: Example max_resolution_tier: 1080p progress: state: completed progress: 100 security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}/input-info: get: tags: - Assets summary: Retrieve Asset Input Info description: Returns a list of the input objects that were used to create the asset along with any settings that were applied to each input. operationId: get-asset-input-info servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetAssetInputInfoResponse' example: data: - settings: url: https://muxed.s3.amazonaws.com/leds.mp4 file: container_format: mp4 tracks: - type: video duration: 120 width: 1280 height: 720 frame_rate: 30 encoding: h.264 - type: audio duration: 120 sample_rate: 16000 sample_size: 24 encoding: aac - settings: url: https://example.com/myVideo_en.srt file: container_format: srt security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}/playback-ids: post: tags: - Assets summary: Create a Playback ID description: Creates a playback ID that can be used to stream the asset to a viewer. operationId: create-asset-playback-id servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePlaybackIDRequest' example: policy: public responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/CreatePlaybackIDResponse' example: data: policy: public id: Lj02VZDorh9hCV00flNqPli8fmwf6KEppug01w8zDEYVlQ security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}/playback-ids/{PLAYBACK_ID}: get: tags: - Assets summary: Retrieve a Playback ID description: Retrieves information about the specified playback ID. operationId: get-asset-playback-id servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' - $ref: '#/components/parameters/playback_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetAssetPlaybackIDResponse' example: data: policy: public id: vAFLI2eKFFicXX00iHBS2vqt5JjJGg5HV6fQ4Xijgt1I security: - accessToken: [] - authorizationToken: [] delete: tags: - Assets summary: Delete a Playback ID description: Deletes a playback ID, rendering it nonfunctional for viewing an asset's video content. Please note that deleting the playback ID removes access to the underlying asset; a viewer who started playback before the playback ID was deleted may be able to watch the entire video for a limited duration. operationId: delete-asset-playback-id servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' - $ref: '#/components/parameters/playback_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}/mp4-support: put: tags: - Assets summary: Update MP4 Support operationId: update-asset-mp4-support servers: - url: https://api.mux.com deprecated: true description: 'This method has been deprecated. Please see the [Static Rendition API](https://www.mux.com/docs/guides/enable-static-mp4-renditions#after-asset-creation). Allows you to add or remove mp4 support for assets that were created without it. The values supported are `capped-1080p`, `audio-only`, `audio-only,capped-1080p`, `standard`(deprecated), and `none`. `none` means that an asset *does not* have mp4 support, so submitting a request with `mp4_support` set to `none` will delete the mp4 assets from the asset in question. ' parameters: - $ref: '#/components/parameters/asset_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAssetMP4SupportRequest' example: mp4_support: capped-1080p responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AssetResponse' example: data: tracks: - type: video max_width: 1920 max_height: 1080 max_frame_rate: 29.97 id: RiyQPM31a1SPtfI802bEP2zD02F5FQVNL801FRHeE5t01G4 duration: 23.8238 - type: audio max_channels: 2 id: LvINTciHVoC017knMCH01y9pSi5OrDLCRaBPNDAoNJcmg duration: 23.823792 status: ready static_renditions: status: preparing playback_ids: - policy: public id: Lj02VZDorh9hCV00flNqPli8fmwf6KEppug01w8zDEYVlQ mp4_support: capped-1080p max_stored_resolution: HD resolution_tier: 1080p max_stored_frame_rate: 29.97 master_access: none id: lJ4bGGsp7ZlPf02nMg015W02iHQLN9XnuuLRBsPS00xqd68 encoding_tier: smart video_quality: plus duration: 23.857167 created_at: '1609868768' aspect_ratio: '16:9' max_resolution_tier: 1080p progress: state: completed progress: 100 security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}/master-access: put: tags: - Assets summary: Update Master Access operationId: update-asset-master-access servers: - url: https://api.mux.com description: 'Allows you to add temporary access to the master (highest-quality) version of the asset in MP4 format. A URL will be created that can be used to download the master version for 24 hours. After 24 hours Master Access will revert to "none". This master version is not optimized for web and not meant to be streamed, only downloaded for purposes like archiving or editing the video offline.' parameters: - $ref: '#/components/parameters/asset_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAssetMasterAccessRequest' example: master_access: temporary responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AssetResponse' example: data: tracks: - type: video max_width: 1920 max_height: 1080 max_frame_rate: 29.97 id: RiyQPM31a1SPtfI802bEP2zD02F5FQVNL801FRHeE5t01G4 duration: 23.8238 - type: audio max_channels: 2 id: LvINTciHVoC017knMCH01y9pSi5OrDLCRaBPNDAoNJcmg duration: 23.823792 status: ready playback_ids: - policy: public id: Lj02VZDorh9hCV00flNqPli8fmwf6KEppug01w8zDEYVlQ max_stored_resolution: HD resolution_tier: 1080p max_stored_frame_rate: 29.97 master_access: temporary master: status: preparing id: lJ4bGGsp7ZlPf02nMg015W02iHQLN9XnuuLRBsPS00xqd68 encoding_tier: baseline video_quality: basic duration: 23.857167 created_at: '1609868768' aspect_ratio: '16:9' max_resolution_tier: 1080p progress: state: completed progress: 100 security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}/static-renditions: post: tags: - Assets summary: Create a Static Rendition for an Asset description: Creates a static rendition (i.e. MP4) for an asset operationId: create-asset-static-rendition servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateStaticRenditionRequest' example: resolution: highest responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/CreateStaticRenditionResponse' example: data: id: lJ4bGGsp7ZlPf02nMg015W02iHQLN9XnuuLRBsPS00xqd68 type: standard ext: mp4 status: preparing resolution: highest name: highest.mp4 security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}/static-renditions/{STATIC_RENDITION_ID}: delete: tags: - Assets summary: Delete a Single Static Rendition for an Asset description: Deletes a single static rendition for an asset operationId: delete-asset-static-rendition servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' - $ref: '#/components/parameters/static_rendition_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}/tracks: post: tags: - Assets summary: Create an Asset Track description: Adds an asset track (for example, subtitles, or an alternate audio track) to an asset. Assets must be in the `ready` state before tracks can be added. operationId: create-asset-track servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateTrackRequest' example: url: https://example.com/myVideo_en.srt type: text text_type: subtitles language_code: en-US name: English closed_captions: true passthrough: English responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/CreateTrackResponse' example: data: type: text text_type: subtitles status: preparing passthrough: English name: English language_code: en-US id: xBe7u01029ipxBLQhYzZCJ1cke01zCkuUsgnYtH0017nNzbpv2YcsoMDmw closed_captions: true security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}/tracks/{TRACK_ID}: delete: tags: - Assets summary: Delete an Asset Track description: Removes a text or additional audio track from an asset. Neither video nor the primary audio track can be removed. operationId: delete-asset-track servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' - $ref: '#/components/parameters/track_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] patch: tags: - Assets summary: Update an Asset Track description: Updates the details of an existing Asset Track with the provided Asset ID and Track ID. operationId: update-asset-track servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' - $ref: '#/components/parameters/track_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAssetTrackRequest' example: language_code: en-US name: English responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateAssetTrackResponse' example: data: type: text text_type: subtitles status: ready passthrough: passthrough value name: English language_code: en-US id: xBe7u01029ipxBLQhYzZCJ1cke01zCkuUsgnYtH0017nNzbpv2YcsoMDmw closed_captions: true security: - accessToken: [] - authorizationToken: [] /video/v1/assets/{ASSET_ID}/tracks/{TRACK_ID}/generate-subtitles: post: tags: - Assets summary: Generate Track Subtitles description: Generates subtitles (captions) for a given audio track. [See docs for more information.](https://mux.com/docs/guides/add-autogenerated-captions-and-use-transcripts#retroactively-enable-auto-generated-captions) operationId: generate-asset-track-subtitles servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/asset_id' - $ref: '#/components/parameters/track_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GenerateTrackSubtitlesRequest' example: generated_subtitles: - language_code: en name: English (generated) passthrough: English (generated) responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/GenerateTrackSubtitlesResponse' example: data: - type: text text_type: subtitles status: preparing passthrough: English (generated) name: English (generated) language_code: en id: hXhnqUq0054k9SBFB5aczHhj6xMbOTlriTG7gqRn8kikv101lkFUgKNw security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams: post: tags: - Live Streams summary: Create a Live Stream description: Creates a new live stream. Once created, an encoder can connect to Mux via the specified stream key and begin streaming to an audience. operationId: create-live-stream servers: - url: https://api.mux.com parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateLiveStreamRequest' example: playback_policies: - public new_asset_settings: playback_policies: - public responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/LiveStreamResponse' example: data: stream_key: abcdefgh status: idle reconnect_window: 60 playback_ids: - policy: public id: HNRDuwff3K2VjTZZAPuvd2Kx6D01XUQFv02GFBHPUka018 new_asset_settings: playback_policies: - public id: ZEBrNTpHC02iUah025KM3te6ylM7W4S4silsrFtUkn3Ag created_at: '1609937654' latency_mode: standard max_continuous_duration: 43200 security: - accessToken: [] - authorizationToken: [] get: tags: - Live Streams summary: List Live Streams description: Lists the live streams that currently exist in the current environment. operationId: list-live-streams servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/stream_key' - name: status in: query description: Filter response to return live streams with the specified status only required: false schema: $ref: '#/components/schemas/LiveStreamStatus' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListLiveStreamsResponse' example: data: - stream_key: 831b5bde-cd8a-5bc4-115d-4ba34b19f481 status: idle reconnect_window: 60 playback_ids: - policy: public id: HNRDuwff3K2VjTZZAPuvd2Kx6D01XUQFv02GFBHPUka018 new_asset_settings: playback_policies: - public id: ZEBrNTpHC02iUah025KM3te6ylM7W4S4silsrFtUkn3Ag created_at: '1609937654' latency_mode: standard max_continuous_duration: 43200 - stream_key: d273c65e-1fc8-27dc-e9ef-56144cbceb3a status: idle reconnect_window: 60 recent_asset_ids: - SZs02xxHgYdkHp00OSCjJiHUHqzVQZNU332XPXRxe341o - e4J9cwb5tjVxMeeV8201dC00i800ThPKKGT2SEN002dHH2s playback_ids: - policy: public id: 00zOcribkUmXqXHzBTpflk2771BRTcKATqPjWf7JHpuM new_asset_settings: playback_policies: - public id: B65hEUWW01ErVKDDGImKcBquYhwEAkjW6Ic3lPY0299Cc created_at: '1607587513' latency_mode: standard max_continuous_duration: 43200 security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}: get: tags: - Live Streams summary: Retrieve a Live Stream description: Retrieves the details of a live stream that has previously been created. Supply the unique live stream ID that was returned from your previous request, and Mux will return the corresponding live stream information. The same information is returned when creating a live stream. operationId: get-live-stream servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LiveStreamResponse' example: data: stream_key: 831b5bde-cd8a-5bc4-115d-4ba34b19f481 status: idle reconnect_window: 60 playback_ids: - policy: public id: HNRDuwff3K2VjTZZAPuvd2Kx6D01XUQFv02GFBHPUka018 new_asset_settings: playback_policies: - public id: ZEBrNTpHC02iUah025KM3te6ylM7W4S4silsrFtUkn3Ag created_at: '1609937654' latency_mode: standard max_continuous_duration: 43200 security: - accessToken: [] - authorizationToken: [] delete: tags: - Live Streams summary: Delete a Live Stream description: Deletes a live stream from the current environment. If the live stream is currently active and being streamed to, ingest will be terminated and the encoder will be disconnected. operationId: delete-live-stream servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] patch: tags: - Live Streams summary: Update a Live Stream description: Updates the parameters of a previously-created live stream. This currently supports a subset of variables. Supply the live stream ID and the updated parameters and Mux will return the corresponding live stream information. The information returned will be the same after update as for subsequent get live stream requests. operationId: update-live-stream servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateLiveStreamRequest' example: latency_mode: standard reconnect_window: 30 max_continuous_duration: 1200 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LiveStreamResponse' example: data: stream_key: 831b5bde-cd8a-5bc4-115d-4ba34b19f481 status: idle reconnect_window: 30 playback_ids: - policy: public id: HNRDuwff3K2VjTZZAPuvd2Kx6D01XUQFv02GFBHPUka018 new_asset_settings: playback_policies: - public id: ZEBrNTpHC02iUah025KM3te6ylM7W4S4silsrFtUkn3Ag created_at: '1609937654' latency_mode: standard max_continuous_duration: 1200 security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/playback-ids: post: tags: - Live Streams summary: Create a Live Stream Playback ID description: Create a new playback ID for this live stream, through which a viewer can watch the streamed content of the live stream. operationId: create-live-stream-playback-id servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePlaybackIDRequest' example: policy: signed responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/CreatePlaybackIDResponse' example: data: policy: public id: 4O902oOPU100s7XIQgOeY01U7dHzYlBe26zi3Sq01EJqnxw security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/playback-ids/{PLAYBACK_ID}: get: tags: - Live Streams summary: Retrieve a Live Stream Playback ID description: Fetches information about a live stream's playback ID, through which a viewer can watch the streamed content from this live stream. operationId: get-live-stream-playback-id servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' - $ref: '#/components/parameters/playback_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetLiveStreamPlaybackIDResponse' example: data: policy: public id: 4O902oOPU100s7XIQgOeY01U7dHzYlBe26zi3Sq01EJqnxw security: - accessToken: [] - authorizationToken: [] delete: tags: - Live Streams summary: Delete a Live Stream Playback ID description: Deletes the playback ID for the live stream. This will not disable ingest (as the live stream still exists). New attempts to play back the live stream will fail immediately. However, current viewers will be able to continue watching the stream for some period of time. operationId: delete-live-stream-playback-id servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' - $ref: '#/components/parameters/playback_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/reset-stream-key: post: tags: - Live Streams summary: Reset a Live Stream's Stream Key description: Reset a live stream key if you want to immediately stop the current stream key from working and create a new stream key that can be used for future broadcasts. operationId: reset-stream-key servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/LiveStreamResponse' example: data: stream_key: acaf2ca1-ba9c-5ffe-8c9c-a02bbf0009a6 status: idle reconnect_window: 60 playback_ids: - policy: public id: HNRDuwff3K2VjTZZAPuvd2Kx6D01XUQFv02GFBHPUka018 - policy: public id: 4O902oOPU100s7XIQgOeY01U7dHzYlBe26zi3Sq01EJqnxw new_asset_settings: playback_policies: - public id: ZEBrNTpHC02iUah025KM3te6ylM7W4S4silsrFtUkn3Ag created_at: '1609937654' latency_mode: standard max_continuous_duration: 43200 security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/complete: put: tags: - Live Streams summary: Signal a Live Stream Is Finished description: '(Optional) End the live stream recording immediately instead of waiting for the reconnect_window. `EXT-X-ENDLIST` tag is added to the HLS manifest which notifies the player that this live stream is over. Mux does not close the encoder connection immediately. Encoders are often configured to re-establish connections immediately which would result in a new recorded asset. For this reason, Mux waits for 60s before closing the connection with the encoder. This 60s timeframe is meant to give encoder operators a chance to disconnect from their end. ' operationId: signal-live-stream-complete servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' responses: '200': description: OK security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/disable: put: tags: - Live Streams summary: Disable a Live Stream description: 'Disables a live stream, making it reject incoming RTMP streams until re-enabled. The API also ends the live stream recording immediately when active. Ending the live stream recording adds the `EXT-X-ENDLIST` tag to the HLS manifest which notifies the player that this live stream is over. Mux also closes the encoder connection immediately. Any attempt from the encoder to re-establish connection will fail till the live stream is re-enabled. ' operationId: disable-live-stream servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' responses: '200': description: OK security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/enable: put: tags: - Live Streams summary: Enable a Live Stream description: Enables a live stream, allowing it to accept an incoming RTMP stream. operationId: enable-live-stream servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' responses: '200': description: OK security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/embedded-subtitles: put: tags: - Live Streams summary: Update a Live Stream's Embedded Subtitles description: 'Configures a live stream to receive embedded closed captions. The resulting Asset''s subtitle text track will have `closed_captions: true` set. ' operationId: update-live-stream-embedded-subtitles servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateLiveStreamEmbeddedSubtitlesRequest' example: embedded_subtitles: - passthrough: Example responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LiveStreamResponse' example: data: stream_key: acaf2ca1-ba9c-5ffe-8c9c-a02bbf0009a6 status: idle reconnect_window: 60 playback_ids: - policy: public id: HNRDuwff3K2VjTZZAPuvd2Kx6D01XUQFv02GFBHPUka018 - policy: public id: 4O902oOPU100s7XIQgOeY01U7dHzYlBe26zi3Sq01EJqnxw new_asset_settings: playback_policies: - public id: ZEBrNTpHC02iUah025KM3te6ylM7W4S4silsrFtUkn3Ag created_at: '1609937654' embedded_subtitles: - name: English CC language_code: en language_channel: cc1 passthrough: Example latency_mode: standard max_continuous_duration: 43200 security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/generated-subtitles: put: tags: - Live Streams summary: Update a Live Stream's Generated Subtitles description: 'Updates a live stream''s automatic-speech-recognition-generated subtitle configuration. Automatic speech recognition subtitles can be removed by sending an empty array in the request payload. ' operationId: update-live-stream-generated-subtitles servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateLiveStreamGeneratedSubtitlesRequest' example: generated_subtitles: - name: English CC (ASR) language_code: en passthrough: Example responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LiveStreamResponse' example: data: stream_key: acaf2ca1-ba9c-5ffe-8c9c-a02bbf0009a6 status: idle reconnect_window: 60 playback_ids: - policy: public id: HNRDuwff3K2VjTZZAPuvd2Kx6D01XUQFv02GFBHPUka018 - policy: public id: 4O902oOPU100s7XIQgOeY01U7dHzYlBe26zi3Sq01EJqnxw new_asset_settings: playback_policies: - public id: ZEBrNTpHC02iUah025KM3te6ylM7W4S4silsrFtUkn3Ag created_at: '1609937654' generated_subtitles: - name: English CC (ASR) language_code: en passthrough: Example latency_mode: standard max_continuous_duration: 43200 security: - accessToken: [] - authorizationToken: [] /video/v1/playback-ids/{PLAYBACK_ID}: get: tags: - Playback ID summary: Retrieve an Asset or Live Stream ID description: Retrieves the Identifier of the Asset or Live Stream associated with the Playback ID. operationId: get-asset-or-livestream-id servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/playback_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetAssetOrLiveStreamIdResponse' example: data: id: a1B2c3D4e5F6g7H8i9 policy: public object: type: asset id: '123456789012345678' security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/simulcast-targets: post: tags: - Live Streams summary: Create a Live Stream Simulcast Target description: Create a simulcast target for the parent live stream. Simulcast target can only be created when the parent live stream is in idle state. Only one simulcast target can be created at a time with this API. operationId: create-live-stream-simulcast-target servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateSimulcastTargetRequest' example: url: rtmp://live.example.com/app stream_key: abcdefgh passthrough: Example responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/SimulcastTargetResponse' example: data: url: rtmp://live.example.com/app stream_key: abcdefgh status: idle passthrough: Example id: le1axfGDc9ETqh6trHNTxGQ9XEhj02fOnX0200aAh24fwlmwzqKCYNJgw security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/simulcast-targets/{SIMULCAST_TARGET_ID}: delete: tags: - Live Streams summary: Delete a Live Stream Simulcast Target description: Delete the simulcast target using the simulcast target ID returned when creating the simulcast target. Simulcast Target can only be deleted when the parent live stream is in idle state. operationId: delete-live-stream-simulcast-target servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' - $ref: '#/components/parameters/simulcast_target_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] get: tags: - Live Streams summary: Retrieve a Live Stream Simulcast Target description: Retrieves the details of the simulcast target created for the parent live stream. Supply the unique live stream ID and simulcast target ID that was returned in the response of create simulcast target request, and Mux will return the corresponding information. operationId: get-live-stream-simulcast-target servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' - $ref: '#/components/parameters/simulcast_target_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SimulcastTargetResponse' example: data: url: rtmp://live.example.com/app stream_key: abcdefgh status: idle passthrough: Example id: 02FU00rPq00fC9S6kygrqlxygGMdpW1lk00BkFpCfc2kGregEIr7brt7CQ security: - accessToken: [] - authorizationToken: [] /video/v1/live-streams/{LIVE_STREAM_ID}/new-asset-settings/static-renditions: put: tags: - Live Streams summary: Update Live Stream Static Renditions for New Assets description: Updates a live stream's static renditions settings for new assets. Further assets made via this live stream will create static renditions per the settings provided. You must provide all static renditions desired. operationId: update-live-stream-new-asset-settings-static-renditions servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateLiveStreamNewAssetSettingsStaticRenditionsRequest' example: static_renditions: - resolution: audio-only - resolution: highest responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LiveStreamResponse' example: data: stream_key: abcdefgh status: idle reconnect_window: 60 playback_ids: - policy: public id: HNRDuwff3K2VjTZZAPuvd2Kx6D01XUQFv02GFBHPUka018 new_asset_settings: playback_policies: - public static_renditions: - resolution: audio-only - resolution: highest id: ZEBrNTpHC02iUah025KM3te6ylM7W4S4silsrFtUkn3Ag created_at: '1609937654' latency_mode: standard max_continuous_duration: 43200 security: - accessToken: [] - authorizationToken: [] delete: tags: - Live Streams summary: Delete a Live Stream's Static Renditions Setting for New Assets description: Deletes a live stream's static renditions settings for new assets. Further assets made via this live stream will not create static renditions unless re-added. operationId: delete-live-stream-new-asset-settings-static-renditions servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/livestream_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] /video/v1/signing-keys: post: deprecated: true tags: - URL Signing Keys summary: Create a URL Signing Key description: 'This route is now deprecated, please use the `Signing Keys` API. Creates a new signing key pair. When creating a new signing key, the API will generate a 2048-bit RSA key-pair and return the private key and a generated key-id; the public key will be stored at Mux to validate signed tokens. Note: Any new access tokens authenticating this route will be required to have `System` level permissions. ' operationId: create-url-signing-key servers: - url: https://api.mux.com responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/SigningKeyCreateResponse' example: data: private_key: abcd123= id: vI5KTQ78ohYriuvWKHY6COtZWXexHGLllxksOdZuya8 created_at: '1610108345' security: - accessToken: [] - authorizationToken: [] get: deprecated: true tags: - URL Signing Keys summary: List URL Signing Keys description: 'This route is now deprecated, please use the `Signing Keys` API. Returns a list of URL signing keys. Note: Any new access tokens authenticating this route will be required to have `System` level permissions. ' operationId: list-url-signing-keys servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListSigningKeysResponse' example: data: - id: vI5KTQ78ohYriuvWKHY6COtZWXexHGLllxksOdZuya8 created_at: '1610108345' - id: jc6lJiCLMjyC202EXtRQ644sShzDv6x5tWJrbvUFpvmo created_at: '1608632647' security: - accessToken: [] - authorizationToken: [] /video/v1/signing-keys/{SIGNING_KEY_ID}: get: deprecated: true tags: - URL Signing Keys summary: Retrieve a URL Signing Key description: 'This route is now deprecated, please use the `Signing Keys` API. Retrieves the details of a URL signing key that has previously been created. Supply the unique signing key ID that was returned from your previous request, and Mux will return the corresponding signing key information. **The private key is not returned in this response.** Note: Any new access tokens authenticating this route will be required to have `System` level permissions. ' operationId: get-url-signing-key servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/signing_key_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SigningKeyResponse' example: data: id: jc6lJiCLMjyC202EXtRQ644sShzDv6x5tWJrbvUFpvmo created_at: '1608632647' security: - accessToken: [] - authorizationToken: [] delete: deprecated: true tags: - URL Signing Keys summary: Delete a URL Signing Key description: 'This route is now deprecated, please use the `Signing Keys` API. Deletes an existing signing key. Use with caution, as this will invalidate any existing signatures and no URLs can be signed using the key again. Note: Any new access tokens authenticating this route will be required to have `System` level permissions. ' operationId: delete-url-signing-key servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/signing_key_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] /video/v1/uploads: post: operationId: create-direct-upload servers: - url: https://api.mux.com description: Creates a new direct upload, through which video content can be uploaded for ingest to Mux. summary: Create a New Direct Upload URL requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateUploadRequest' example: cors_origin: https://example.com/ new_asset_settings: playback_policies: - public tags: - Direct Uploads responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/UploadResponse' example: data: url: https://storage.googleapis.com/video-storage-us-east1-uploads/zd01Pe2bNpYhxbrwYABgFE01twZdtv4M00kts2i02GhbGjc?Expires=1610112458&GoogleAccessId=mux-direct-upload%40mux-cloud.iam.gserviceaccount.com&Signature=LCu4PMoKUo%2BJkWQAUwB9WU4bWVVfW3K5bZxSxEptBz3DrjbFxNyGvs0sriyJupZh9Jdb6FxKWFIRbxEetfnAAiesOvSPH%2F1GlIichmGg3YfebfxiX77%2B6ToFF6FMkJucBo284PD90AVLHhKagOea2VsbdO0fh78MAxGH9sEspyQ2uJEfYWjHFqYQ9smJyIuM3CYOmN5HKPgRWy2yUqzV7OTMe%2FivPO4%2FX6XiiN2J4nTmy83252CJUsHIvbiGctfKxcNI6b23UVN4B1tJTVgyxTOZiBQCkMLkD%2FEe5OhoAkvJgkqENRr0q3swO0IChDDWjrh7OTMwqvWGwAoVXEGiHg%3D%3D&upload_id=ABg5-UznTdib1HhOAMjdHhWIYqBbwmSYM6dVKyPe3v33uTeEE8gkN5QzvR3cei6uSZOSrjPn7bdvvDH3nhsrLBq8AjWY2qE4UQ timeout: 3600 status: waiting new_asset_settings: playback_policies: - public video_quality: basic id: zd01Pe2bNpYhxbrwYABgFE01twZdtv4M00kts2i02GhbGjc cors_origin: https://example.com/ security: - accessToken: [] - authorizationToken: [] get: operationId: list-direct-uploads servers: - url: https://api.mux.com description: Lists direct uploads in the current environment. summary: List Direct Uploads tags: - Direct Uploads parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListUploadsResponse' example: data: - url: https://storage.googleapis.com/video-storage-us-east1-uploads/zd01Pe2bNpYhxbrwYABgFE01twZdtv4M00kts2i02GhbGjc?Expires=1610112458&GoogleAccessId=mux-direct-upload%40mux-cloud.iam.gserviceaccount.com&Signature=LCu4PMoKUo%2BJkWQAUwB9WU4bWVVfW3K5bZxSxEptBz3DrjbFxNyGvs0sriyJupZh9Jdb6FxKWFIRbxEetfnAAiesOvSPH%2F1GlIichmGg3YfebfxiX77%2B6ToFF6FMkJucBo284PD90AVLHhKagOea2VsbdO0fh78MAxGH9sEspyQ2uJEfYWjHFqYQ9smJyIuM3CYOmN5HKPgRWy2yUqzV7OTMe%2FivPO4%2FX6XiiN2J4nTmy83252CJUsHIvbiGctfKxcNI6b23UVN4B1tJTVgyxTOZiBQCkMLkD%2FEe5OhoAkvJgkqENRr0q3swO0IChDDWjrh7OTMwqvWGwAoVXEGiHg%3D%3D&upload_id=ABg5-UznTdib1HhOAMjdHhWIYqBbwmSYM6dVKyPe3v33uTeEE8gkN5QzvR3cei6uSZOSrjPn7bdvvDH3nhsrLBq8AjWY2qE4UQ timeout: 3600 status: waiting new_asset_settings: playback_policies: - public video_quality: basic id: zd01Pe2bNpYhxbrwYABgFE01twZdtv4M00kts2i02GhbGjc cors_origin: https://example.com/ - timeout: 3600 status: asset_created new_asset_settings: playback_policies: - public video_quality: basic id: YzoCL01HHOtAVYq4Ds9zekdHJ2XqL9e8ukPWbr01KhtvM asset_id: AnFVqAVXfb7vVL3ypSQDMnJZunnb8nkwe02O00p2gK8P00 cors_origin: https://example.com/ - timeout: 10800 status: cancelled new_asset_settings: playback_policies: - public video_quality: basic id: AZcWu0201SqVW01LMdmVxE00m3gEWUFZPItvni1sTqF800dQ cors_origin: https://example.com/ security: - accessToken: [] - authorizationToken: [] /video/v1/uploads/{UPLOAD_ID}: get: operationId: get-direct-upload servers: - url: https://api.mux.com description: Fetches information about a single direct upload in the current environment. summary: Retrieve a Single Direct Upload's Info tags: - Direct Uploads parameters: - $ref: '#/components/parameters/upload_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UploadResponse' example: data: timeout: 3600 status: asset_created new_asset_settings: playback_policies: - public video_quality: basic id: YzoCL01HHOtAVYq4Ds9zekdHJ2XqL9e8ukPWbr01KhtvM asset_id: AnFVqAVXfb7vVL3ypSQDMnJZunnb8nkwe02O00p2gK8P00 cors_origin: https://example.com/ security: - accessToken: [] - authorizationToken: [] /video/v1/uploads/{UPLOAD_ID}/cancel: put: operationId: cancel-direct-upload servers: - url: https://api.mux.com summary: Cancel a Direct Upload description: 'Cancels a direct upload and marks it as cancelled. If a pending upload finishes after this request, no asset will be created. This request will only succeed if the upload is still in the `waiting` state. ' tags: - Direct Uploads parameters: - $ref: '#/components/parameters/upload_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UploadResponse' example: data: timeout: 3600 status: cancelled new_asset_settings: playback_policies: - public video_quality: basic id: zd01Pe2bNpYhxbrwYABgFE01twZdtv4M00kts2i02GhbGjc cors_origin: https://example.com/ '403': description: Cancellation no longer possible security: - accessToken: [] - authorizationToken: [] /video/v1/delivery-usage: get: tags: - Delivery Usage summary: List Usage description: Returns a list of delivery usage records and their associated Asset IDs or Live Stream IDs. operationId: list-delivery-usage servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/delivery_usage_limit' - $ref: '#/components/parameters/delivery_usage_asset_id' - $ref: '#/components/parameters/delivery_usage_live_stream_id' - $ref: '#/components/parameters/delivery_usage_timeframe' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListDeliveryUsageResponse' example: total_row_count: 2 timeframe: - 1607817600 - 1607990400 page: 1 limit: 100 data: - live_stream_id: B65hEUWW01ErVKDDGImKcBquYhwEAkjW6Ic3lPY0299Cc delivered_seconds: 206.366667 delivered_seconds_by_resolution: tier_1080p: 100 tier_720p: 100 tier_audio_only: 6.366667 deleted_at: '1607945257' created_at: '1607939184' asset_state: deleted asset_id: Ww4v2q2H4MNbHIAM2wApKb3cmrh7eHjGLUjdKohR5wM asset_duration: 154.366667 asset_resolution_tier: 1080p asset_encoding_tier: baseline asset_video_quality: basic - delivered_seconds: 30 delivered_seconds_by_resolution: tier_1080p: 10 tier_720p: 10 tier_audio_only: 10 deleted_at: '1607935288' created_at: '1607617107' asset_state: deleted asset_id: Qlb007on1TwN43XLIG027QJlUxm3jd01v5PRi1aXhnyFZY asset_duration: 98.773667 asset_resolution_tier: 1080p asset_encoding_tier: smart asset_video_quality: plus security: - accessToken: [] - authorizationToken: [] /video/v1/playback-restrictions: post: tags: - Playback Restrictions summary: Create a Playback Restriction description: Create a new Playback Restriction. operationId: create-playback-restriction servers: - url: https://api.mux.com requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePlaybackRestrictionRequest' example: referrer: allowed_domains: - '*.example.com' allow_no_referrer: true user_agent: allow_no_user_agent: false allow_high_risk_user_agent: false responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/PlaybackRestrictionResponse' example: data: id: 9dbEg8o00uqQzZbzJT6NXdqNA00SdnSo8O updated_at: '1607945257' created_at: '1607945257' referrer: allowed_domains: - '*.example.com' allow_no_referrer: true user_agent: allow_no_user_agent: false allow_high_risk_user_agent: false security: - accessToken: [] - authorizationToken: [] get: tags: - Playback Restrictions summary: List Playback Restrictions description: Returns a list of all Playback Restrictions. operationId: list-playback-restrictions servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/limit' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListPlaybackRestrictionsResponse' example: total_row_count: 2 page: 1 limit: 100 data: - id: 9dbEg8o00uqQzZbzJT6NXdqNA00SdnSo8O updated_at: '1607945257' created_at: '1607939184' referrer: allowed_domains: - '*.example.com' allow_no_referrer: false user_agent: allow_no_user_agent: false allow_high_risk_user_agent: false - id: 012uTQqPygDYWz3jey8cyOX9n01Bd5SDH1 updated_at: '1607945980' created_at: '1607939188' referrer: allowed_domains: - a.example.com - b.example.com allow_no_referrer: true user_agent: allow_no_user_agent: false allow_high_risk_user_agent: false security: - accessToken: [] - authorizationToken: [] /video/v1/playback-restrictions/{PLAYBACK_RESTRICTION_ID}: delete: tags: - Playback Restrictions summary: Delete a Playback Restriction description: Deletes a single Playback Restriction. operationId: delete-playback-restriction servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/playback_restriction_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] get: tags: - Playback Restrictions summary: Retrieve a Playback Restriction description: Retrieves a Playback Restriction associated with the unique identifier. operationId: get-playback-restriction servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/playback_restriction_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PlaybackRestrictionResponse' example: data: id: 9dbEg8o00uqQzZbzJT6NXdqNA00SdnSo8O updated_at: '1607945257' created_at: '1607939184' referrer: allowed_domains: - '*.example.com' allow_no_referrer: false user_agent: allow_no_user_agent: false allow_high_risk_user_agent: false security: - accessToken: [] - authorizationToken: [] /video/v1/playback-restrictions/{PLAYBACK_RESTRICTION_ID}/referrer: put: tags: - Playback Restrictions summary: Update the Referrer Playback Restriction description: Allows you to modify the list of domains or change how Mux validates playback requests without the `Referer` HTTP header. The Referrer restriction fully replaces the old list with this new list of domains. operationId: update-referrer-domain-restriction servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/playback_restriction_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateReferrerDomainRestrictionRequest' example: allowed_domains: - '*.example.com' allow_no_referrer: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PlaybackRestrictionResponse' example: data: id: 9dbEg8o00uqQzZbzJT6NXdqNA00SdnSo8O updated_at: '1607945257' created_at: '1607939184' referrer: allowed_domains: - '*.example.com' allow_no_referrer: true user_agent: allow_no_user_agent: false allow_high_risk_user_agent: false security: - accessToken: [] - authorizationToken: [] /video/v1/playback-restrictions/{PLAYBACK_RESTRICTION_ID}/user_agent: put: tags: - Playback Restrictions summary: Update the User Agent Restriction description: Allows you to modify how Mux validates playback requests with different user agents. Please see [Using User-Agent HTTP header for validation](https://docs.mux.com/guides/secure-video-playback#using-user-agent-http-header-for-validation) for more details on this feature. operationId: update-user-agent-restriction servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/playback_restriction_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateUserAgentRestrictionRequest' example: allow_no_user_agent: false allow_high_risk_user_agent: false responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PlaybackRestrictionResponse' example: data: id: 9dbEg8o00uqQzZbzJT6NXdqNA00SdnSo8O updated_at: '1607945257' created_at: '1607939184' referrer: allowed_domains: - '*.example.com' allow_no_referrer: true user_agent: allow_no_user_agent: false allow_high_risk_user_agent: false security: - accessToken: [] - authorizationToken: [] /video/v1/drm-configurations: get: tags: - DRM Configurations summary: List DRM Configurations description: Returns a list of DRM Configurations operationId: list-drm-configurations servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/limit' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListDRMConfigurationsResponse' example: total_row_count: 2 page: 1 limit: 100 data: - id: 9dbEg8o00uqQzZbzJT6NXdqNA00SdnSo8O - id: 012uTQqPygDYWz3jey8cyOX9n01Bd5SDH1 security: - accessToken: [] - authorizationToken: [] /video/v1/drm-configurations/{DRM_CONFIGURATION_ID}: get: tags: - DRM Configurations summary: Retrieve a DRM Configuration description: Retrieves a single DRM Configuration. operationId: get-drm-configuration servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/drm_configuration_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DRMConfigurationResponse' example: data: id: lJ4bGGsp7ZlPf02nMg015W02iHQLN9XnuuLRBsPS00xqd68 security: - accessToken: [] - authorizationToken: [] /data/v1/video-views: get: tags: - Video Views summary: List Video Views description: Returns a list of video views which match the filters and have a `view_end` within the specified timeframe. operationId: list-video-views servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/viewer_id' - $ref: '#/components/parameters/error_id' - $ref: '#/components/parameters/order_direction' - $ref: '#/components/parameters/filters' - $ref: '#/components/parameters/metric_filters' - $ref: '#/components/parameters/timeframe' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListVideoViewsResponse' example: total_row_count: 4 timeframe: - 1610025789 - 1610112189 data: - viewer_os_family: OS X viewer_application_name: Chrome view_start: '2021-01-07T20:34:06Z' view_end: '2021-01-07T20:46:04Z' video_title: my-title total_row_count: 4 player_error_message: null player_error_code: null id: JpA81zBfGaGZ85C6aGF3bptyD4CKwpdNgamr error_type_id: 1 country_code: US viewer_experience_score: 0.8 watch_time: 1000 playback_failure: false - viewer_os_family: OS X viewer_application_name: Chrome view_start: '2021-01-07T20:21:53Z' view_end: '2021-01-07T20:34:03Z' video_title: '' total_row_count: 4 player_error_message: null player_error_code: null id: jPVLR5giYMrLYbHM88Tkn3cM3qCRDk0jL114 error_type_id: 1 country_code: US viewer_experience_score: 0.8 watch_time: 1000 playback_failure: false - viewer_os_family: OS X viewer_application_name: Chrome view_start: '2021-01-07T15:16:06Z' view_end: '2021-01-07T15:17:06Z' video_title: Video Test Title 12.14.20 total_row_count: 4 player_error_message: this is an error message from the player player_error_code: '1001' id: pdLDVKBuPZJJ9YsPVmtmB9FG9gsWBWMmYar4 error_type_id: 1 country_code: US viewer_experience_score: 0.8 watch_time: 1000 playback_failure: true - viewer_os_family: OS X viewer_application_name: Chrome view_start: '2021-01-07T15:15:09Z' view_end: '2021-01-07T15:15:17Z' video_title: Video Test Title 12.14.20 total_row_count: 4 player_error_message: null player_error_code: null id: zbZPowWtD3z54jcGMLCJJpF79zCjB03bV7o8 error_type_id: 1 country_code: US viewer_experience_score: 0.8 watch_time: 1000 playback_failure: false security: - accessToken: [] - authorizationToken: [] /data/v1/video-views/{VIDEO_VIEW_ID}: get: tags: - Video Views summary: Get a Video View description: Returns the details of a video view. operationId: get-video-view servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/video_view_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/VideoViewResponse' example: total_row_count: null timeframe: - 1643133378 - 1643219778 data: id: LOpk9M00bMWgOJ3hcTcCHmz1JjxMFRRI ad_attempt_count: null ad_break_count: null ad_break_error_count: null ad_break_error_percentage: null ad_error_count: null ad_error_percentage: null ad_exit_before_start_count: null ad_exit_before_start_percentage: null ad_impression_count: null ad_playback_failure_error_type_id: null ad_preroll_startup_time: null ad_startup_error_count: null ad_startup_error_percentage: null asn: 11427 asn_name: null asset_id: rmp7fvw5lPD01l8PZ2aN74js84XrTWxHy audio_codec: null audio_codec_initial: null buffering_count: null buffering_duration: null buffering_rate: null cdn: null city: Austin client_application_name: null client_application_version: null continent_code: null country_code: US country_name: United States custom_1: null custom_2: null custom_3: null custom_4: null custom_5: null custom_6: null custom_7: null custom_8: null custom_9: null custom_10: null environment_id: envid123 error_type_id: null events: - viewer_time: 1643216891851 playback_time: 0 name: playerready event_time: 1643216898061 details: {} - viewer_time: 1643216891853 playback_time: 0 name: viewstart event_time: 1643216898101 details: {} exit_before_video_start: false experiment_name: null inserted_at: '2022-01-26T17:08:18Z' isp: null latitude: null live_stream_id: null live_stream_latency: null long_rebuffering: false long_resume: false longitude: null metro: null mux_api_version: v1 mux_embed: null mux_embed_version: null mux_viewer_id: abc123viewerid page_load_time: null page_type: null page_url: null platform_description: null platform_summary: null playback_business_exception_error_type_id: null playback_failure: false playback_failure_error_type_id: null playback_id: null playback_score: null player_autoplay: false player_error_code: '1001' player_error_context: error context player_error_message: error from player player_height: null player_instance_id: null player_language: null player_load_time: null player_mux_plugin_name: apple-mux player_mux_plugin_version: null player_name: null player_poster: null player_preload: false player_remote_played: null player_software: null player_software_version: null player_source_domain: null player_source_duration: null player_source_height: null player_source_host_name: stream.mux.com player_source_stream_type: null player_source_type: null player_source_url: https://stream.mux.com/ax9qwyTIaUDLdmhesYDKir5kfE4Ve215.m3u8 player_source_width: null player_startup_time: null player_version: null player_view_count: null player_width: null preroll_ad_asset_hostname: null preroll_ad_tag_hostname: null preroll_played: null preroll_requested: null property_id: 1234 quality_score: null rebuffer_percentage: null rebuffering_score: null region: null rendition_change_count: null rendition_downshift_count: null rendition_upshift_count: null requests_for_first_preroll: null session_id: b97d7b4a-8de7-4b18-8984-1f9ec3d3b5bc short_time: '2022-01-26T17:08:18Z' startup_score: null sub_property_id: null time_shift_enabled: false time_to_first_frame: null updated_at: '2022-01-26T17:56:12Z' used_captions: false used_fullscreen: false used_pip: false video_affiliate: null video_brand: null video_cdn_trace: [] video_codec: null video_codec_initial: null video_content_type: null video_creator_id: null video_duration: null video_dynamic_range_type: null video_dynamic_range_type_initial: null video_encoding_variant: null video_id: rmp7fvw5lPD01l8PZ2aN74js84XrTWxHy video_language: null video_producer: null video_series: null video_source_bitrate: null video_source_bitrate_initial: null video_source_fps: null video_source_fps_initial: null video_source_height: null video_source_height_initial: null video_source_width: null video_source_width_initial: null video_startup_business_exception_error_type_id: null video_startup_failure: false video_startup_preroll_load_time: null video_startup_preroll_request_time: null video_stream_type: null video_title: null video_variant_id: null video_variant_name: null view_average_request_latency: null view_average_request_throughput: null view_cdn_edge_pop: null view_cdn_origin: null view_content_startup_time: null view_drm_level: null view_drm_type: null view_dropped: false view_dropped_frame_count: null view_end: '2022-01-26T17:56:12Z' view_error_id: null view_has_ad: false view_id: 8d00a0ca-8456-4e55-9ff8-dc501814a6b1 view_max_downscale_percentage: '0.32222223' view_max_playhead_position: '41126' view_max_request_latency: null view_max_upscale_percentage: '0' view_playing_time: '58134' view_seek_count: null view_seek_duration: null view_session_id: null view_start: '2022-01-26T17:08:18Z' view_total_content_playback_time: 37521 view_total_downscaling: null view_total_upscaling: null viewer_application_engine: null viewer_application_name: null viewer_application_version: null viewer_connection_type: null viewer_device_category: null viewer_device_manufacturer: null viewer_device_model: iPhone10,4 viewer_device_name: null viewer_experience_score: null viewer_os_architecture: null viewer_os_family: null viewer_os_version: '15.1' viewer_plan: null viewer_plan_category: null viewer_plan_status: null viewer_user_agent: null viewer_user_id: null watch_time: null watched: true weighted_average_bitrate: 697078 security: - accessToken: [] - authorizationToken: [] /data/v1/errors: get: tags: - Errors summary: List Errors description: Returns a list of errors. operationId: list-errors servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/filters' - $ref: '#/components/parameters/metric_filters' - $ref: '#/components/parameters/timeframe' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListErrorsResponse' example: total_row_count: 1 timeframe: - 1610027061 - 1610113461 data: - percentage: 30 notes: a helpful note message: an error message last_seen: '2021-01-08T13:42:39Z' id: 1 description: a description for this error count: 1 code: 100 player_error_code: '100' security: - accessToken: [] - authorizationToken: [] /data/v1/filters: get: deprecated: true tags: - Filters summary: List Filters description: 'The API has been replaced by the list-dimensions API call. Lists all the filters broken out into basic and advanced. ' operationId: list-filters servers: - url: https://api.mux.com responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListFiltersResponse' example: total_row_count: 1 timeframe: - 1610027251 - 1610113651 data: basic: - browser - operating_system - player_remote_played - player_software - player_software_version - player_mux_plugin_name - player_mux_plugin_version - player_autoplay - player_preload - video_title - video_id - stream_type - source_type - source_hostname - continent_code - country - player_error_code - asset_id - live_stream_id - playback_id - video_content_type - page_type - view_drm_type - view_has_ad - custom_1 - custom_2 - custom_3 - custom_4 - custom_5 - custom_6 - custom_7 - custom_8 - custom_9 - custom_10 - view_dropped advanced: - browser_version - operating_system_version - viewer_device_name - viewer_device_model - viewer_device_category - viewer_device_manufacturer - player_name - player_version - video_series - video_encoding_variant - experiment_name - sub_property_id - asn - cdn - viewer_connection_type - view_session_id - region - viewer_user_id - exit_before_video_start - video_startup_failure - playback_failure - preroll_ad_asset_hostname - preroll_ad_tag_hostname - preroll_played - preroll_requested - playback_business_exception - video_startup_business_exception - ad_playback_failure - content_playback_failure security: - accessToken: [] - authorizationToken: [] /data/v1/filters/{FILTER_ID}: get: deprecated: true tags: - Filters summary: Lists Values for a Specific Filter description: 'The API has been replaced by the list-dimension-values API call. Lists the values for a filter along with a total count of related views. ' operationId: list-filter-values servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/filter_id' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/filters' - $ref: '#/components/parameters/timeframe' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListFilterValuesResponse' example: total_row_count: 1 timeframe: - 1610028123 - 1610114523 data: - value: Chrome total_count: 5 security: - accessToken: [] - authorizationToken: [] /data/v1/dimensions: get: tags: - Dimensions summary: List Dimensions description: 'List all available dimensions. Note: This API replaces the list-filters API call. ' operationId: list-dimensions servers: - url: https://api.mux.com responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListDimensionsResponse' example: data: advanced: - asn - audio_codec - audio_codec_initial - browser_version - client_application_name - client_application_version - country - custom_1 - custom_2 - custom_3 - custom_4 - custom_5 - custom_6 - custom_7 - custom_8 - custom_9 - custom_10 - custom_11 - custom_12 - custom_13 - custom_14 - custom_15 - custom_16 - custom_17 - custom_18 - custom_19 - custom_20 - experiment_name - environment_id - operating_system_version - page_type - page_url - playback_failure - playback_business_exception - player_autoplay - player_error_code - player_language - player_mux_plugin_name - player_mux_plugin_version - player_poster - player_preload - player_remote_played - player_software_version - player_version - region - source_hostname - time_shift_enabled - used_captions - used_pip - video_affiliate - video_brand - video_cdn_trace - video_codec - video_codec_initial - video_creator_id - video_dynamic_range_type - video_dynamic_range_type_initial - video_encoding_variant - video_language - video_producer - video_source_bitrate - video_source_bitrate_initial - video_source_fps - video_source_fps_initial - video_source_height - video_source_height_initial - video_source_width - video_source_width_initial - video_startup_business_exception - video_variant_id - video_variant_name - view_cdn_edge_pop - view_cdn_origin - view_drm_type - view_dropped - view_dropped_frame_count - view_session_id - viewer_connection_type - viewer_device_model - viewer_user_id - viewer_plan - viewer_plan_status - viewer_plan_category - view_drm_level basic: - asset_id - browser - cdn - continent_code - exit_before_video_start - live_stream_id - operating_system - playback_id - player_name - player_software - source_type - stream_type - sub_property_id - video_content_type - video_id - video_series - video_startup_failure - video_title - view_has_ad - viewer_device_category - viewer_device_manufacturer - viewer_device_name timeframe: - 1610033879 - 1610120279 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/dimensions/{DIMENSION_ID}: get: tags: - Dimensions summary: Lists the Values for a Specific Dimension description: 'Lists the values for a dimension along with a total count of related views. Note: This API replaces the list-filter-values API call. ' operationId: list-dimension-values servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/dimension_id' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/filters' - $ref: '#/components/parameters/metric_filters' - $ref: '#/components/parameters/timeframe' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListDimensionValuesResponse' example: data: - total_count: 10000 value: FR - total_count: 5000 value: ES - total_count: 2000 value: PT - total_count: 100 value: DE - total_count: 1 value: BE timeframe: - 1610033976 - 1610120376 total_row_count: 5 security: - accessToken: [] - authorizationToken: [] /data/v1/dimensions/{DIMENSION_ID}/elements: get: tags: - Dimensions summary: Lists Elements for a Trace Dimension description: 'Lists the elements (values) for a trace dimension along with their total counts. This endpoint is specifically designed for trace dimensions like video_cdn_trace that contain arrays of values. ' operationId: list-dimension-elements servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/dimension_id' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/filters' - $ref: '#/components/parameters/metric_filters' - $ref: '#/components/parameters/timeframe' - $ref: '#/components/parameters/order_by' - $ref: '#/components/parameters/order_direction' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListDimensionValuesResponse' example: total_row_count: 25 timeframe: - 1755069000 - 1755155999 data: - value: cdn_a total_count: 2640882 - value: cdn_b total_count: 1368812 - value: cdn_c total_count: 154541 security: - accessToken: [] - authorizationToken: [] /data/v1/exports: get: deprecated: true tags: - Exports summary: List Property Video View Export Links description: 'The API has been replaced by the list-exports-views API call. Lists the available video view exports along with URLs to retrieve them. ' operationId: list-exports servers: - url: https://api.mux.com responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListExportsResponse' example: total_row_count: 10 timeframe: - 1610024528 - 1610110928 data: - https://s3.amazonaws.com/mux-data-exports/1/2021_01_01.csv.gz?...signature... - https://s3.amazonaws.com/mux-data-exports/1/2021_01_02.csv.gz?...signature... - https://s3.amazonaws.com/mux-data-exports/1/2021_01_03.csv.gz?...signature... security: - accessToken: [] - authorizationToken: [] /data/v1/exports/views: get: tags: - Exports summary: List Available Property View Exports description: Lists the available video view exports along with URLs to retrieve them. operationId: list-exports-views servers: - url: https://api.mux.com responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListVideoViewExportsResponse' example: total_row_count: 7 timeframe: - 1626296941 - 1626383341 data: - files: - version: 2 type: csv path: https://s3.amazonaws.com/mux-data-exports/1/2021_01_03.csv.gz?...signature... export_date: '2021-01-03' - files: - version: 2 type: csv path: https://s3.amazonaws.com/mux-data-exports/1/2021_01_02.csv.gz?...signature... export_date: '2021-01-02' - files: - version: 2 type: csv path: https://s3.amazonaws.com/mux-data-exports/1/2021_01_01.csv.gz?...signature... export_date: '2021-01-01' security: - accessToken: [] - authorizationToken: [] /data/v1/metrics/{METRIC_ID}/breakdown: get: tags: - Metrics summary: List Breakdown Values description: List the breakdown values for a specific metric. operationId: list-breakdown-values servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/metric_id' - $ref: '#/components/parameters/group_by' - $ref: '#/components/parameters/measurement' - $ref: '#/components/parameters/filters' - $ref: '#/components/parameters/metric_filters' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/order_by' - $ref: '#/components/parameters/order_direction' - $ref: '#/components/parameters/timeframe' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListBreakdownValuesResponse' example: total_row_count: 1 timeframe: - 1610028298 - 1610114698 meta: aggregation: view_end data: - views: 5 value: 4 total_watch_time: 513934 total_playing_time: 413934 negative_impact: 1 field: US security: - accessToken: [] - authorizationToken: [] /data/v1/metrics/{METRIC_ID}/overall: get: tags: - Metrics summary: Get Overall Values description: Returns the overall value for a specific metric, as well as the total view count, watch time, and the Mux Global metric value for the metric. operationId: get-overall-values servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/metric_id' - $ref: '#/components/parameters/timeframe' - $ref: '#/components/parameters/filters' - $ref: '#/components/parameters/metric_filters' - $ref: '#/components/parameters/measurement' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetOverallValuesResponse' example: total_row_count: 1 timeframe: - 1610029525 - 1610115925 meta: aggregation: view_end data: value: 4 total_watch_time: 513934 total_playing_time: 413934 total_views: 5 global_value: 1169.1832095168065 security: - accessToken: [] - authorizationToken: [] /data/v1/metrics/{METRIC_ID}/insights: get: tags: - Metrics summary: List Insights description: Returns a list of insights for a metric. These are the worst performing values across all breakdowns sorted by how much they negatively impact a specific metric. operationId: list-insights servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/metric_id' - $ref: '#/components/parameters/measurement' - $ref: '#/components/parameters/order_direction_deprecated' - $ref: '#/components/parameters/timeframe' - $ref: '#/components/parameters/filters' - $ref: '#/components/parameters/metric_filters' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListInsightsResponse' example: total_row_count: 18 timeframe: - 1610029610 - 1610116010 meta: aggregation: view_end data: - total_watch_time: 351144 total_playing_time: 341144 total_views: 1 negative_impact_score: -5 metric: 9 filter_value: '' filter_column: video_title - total_watch_time: 513934 total_playing_time: 413934 total_views: 5 negative_impact_score: 0 metric: 4 filter_value: US filter_column: country security: - accessToken: [] - authorizationToken: [] /data/v1/metrics/{METRIC_ID}/timeseries: get: tags: - Metrics summary: Get Metric Timeseries Data description: "Returns timeseries data for a specific metric.\n\nEach interval represented in the data array contains an array with the following values:\n * the first element is the interval time\n\ \ * the second element is the calculated metric value\n * the third element is the number of views in the interval that have a valid metric value\n" operationId: get-metric-timeseries-data servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/metric_id' - $ref: '#/components/parameters/timeframe' - $ref: '#/components/parameters/filters' - $ref: '#/components/parameters/metric_filters' - $ref: '#/components/parameters/measurement' - $ref: '#/components/parameters/order_direction' - $ref: '#/components/parameters/timeseries_group_by' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetMetricTimeseriesDataResponse' example: total_row_count: 2 timeframe: - 1610029711 - 1610116111 meta: aggregation: view_end data: - - '2021-01-07T14:00:00Z' - '0.8743536882994202' - '154240' - - '2021-01-07T15:00:00Z' - '0.8929105055911401' - '156056' security: - accessToken: [] - authorizationToken: [] /data/v1/metrics/comparison: get: tags: - Metrics summary: List All Metric Values description: List all of the values across every breakdown for a specific metric. operationId: list-all-metric-values servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/timeframe' - $ref: '#/components/parameters/filters' - $ref: '#/components/parameters/metric_filters' - $ref: '#/components/parameters/dimension' - $ref: '#/components/parameters/value' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListAllMetricValuesResponse' example: total_row_count: 1 timeframe: - 1610029906 - 1610116306 data: - watch_time: 513934 view_count: 5 started_views: 6 ended_views: 5 unique_viewers: 6 total_playing_time: 503934 name: totals - value: 6 type: number name: Views metric: views items: - value: 6 type: number name: Unique Viewers metric: unique_viewers - value: 503934 type: milliseconds name: Playing Time metric: playing_time - value: 0 type: number name: Ad Attempts (total) metric: ad_attempt_count measurement: avg - value: 0 type: number name: Ad Attempts (average) metric: ad_attempt_count measurement: avg - value: 0 type: number name: Ad Breaks (total) metric: ad_break_count measurement: avg - value: 0 type: number name: Ad Breaks (average) metric: ad_break_count measurement: avg - value: 0 type: number name: Ad Impressions (total) metric: ad_impression_count measurement: avg - value: 0 type: number name: Ad Impressions (average) metric: ad_impression_count measurement: avg - value: 0.7803472280502319 type: score name: Overall Score metric: viewer_experience_score - value: 0.8 type: score name: Playback Failure Score metric: playback_failure_score items: - value: 0.2 type: percentage name: Playback Failure Percentage metric: playback_failure_percentage - value: 0 type: percentage name: Video Startup Failure Percentage metric: video_startup_failure_percentage - value: 0 type: percentage name: Exits Before Video Start metric: exits_before_video_start - value: 0 type: percentage name: View Dropped Percentage metric: view_dropped_percentage - value: 0 type: number name: Ad Errors (total) metric: ad_error_count measurement: sum - value: 0 type: number name: Ad Errors (average) metric: ad_error_count measurement: avg - value: 0 type: percentage name: Ad Error Percentage (average) metric: ad_error_percentage measurement: avg - value: 0 type: number name: Ad Break Errors (total) metric: ad_break_error_count measurement: sum - value: 0 type: number name: Ad Break Errors (average) metric: ad_break_error_count measurement: avg - value: 0 type: percentage name: Ad Break Error Percentage (average) metric: ad_break_error_percentage measurement: avg - value: 0 type: percentage name: Ad Startup Error Percentage (average) metric: ad_startup_error_percentage measurement: avg - value: 0 type: percentage name: Ad Exit Before Start Percentage (average) metric: ad_exit_before_start_percentage measurement: avg - value: 0 type: percentage name: Playback Business Exception Percentage (average) metric: playback_business_exception_percentage measurement: avg - value: 0 type: percentage name: Video Startup Business Exception Percentage (average) metric: video_startup_business_exception_percentage measurement: avg - value: 0.9991008877754212 type: score name: Startup Time Score metric: startup_time_score items: - value: 4 type: milliseconds name: Video Startup Time (median) metric: video_startup_time measurement: median - value: 9 type: milliseconds name: Video Startup Time (95th %) metric: video_startup_time measurement: 95th - value: 52.5625 type: milliseconds name: Player Startup Time (median) metric: player_startup_time measurement: median - value: 60.0625 type: milliseconds name: Player Startup Time (95th %) metric: player_startup_time measurement: 95th - value: 122.37890625 type: milliseconds name: Page Load Time (median) metric: page_load_time measurement: median - value: 264.0625 type: milliseconds name: Page Load Time (95th %) metric: page_load_time measurement: 95th - value: 182.25 type: milliseconds name: Aggregate Startup Time (median) metric: aggregate_startup_time measurement: median - value: 319.515625 type: milliseconds name: Aggregate Startup Time (95th %) metric: aggregate_startup_time measurement: 95th - value: 3042 type: milliseconds name: Seek Latency metric: seek_latency - value: 1000 type: milliseconds name: Content Startup Time (median) metric: view_content_startup_time measurement: median - value: 1403 type: milliseconds name: Content Startup Time (95th %) metric: view_content_startup_time measurement: 95th - value: 800 type: milliseconds name: Ad Preroll Startup Time (median) metric: ad_preroll_startup_time measurement: median - value: 1243 type: milliseconds name: Ad Preroll Startup Time (95th %) metric: ad_preroll_startup_time measurement: 95th - value: 0.9523247838020324 type: score name: Rebuffer Score metric: rebuffer_score items: - value: 0.0005564916895943838 type: percentage name: Rebuffer Percentage metric: rebuffer_percentage - value: 0.11674650830651406 type: per_minute name: Rebuffer Frequency metric: rebuffer_frequency - value: 0 type: milliseconds name: Rebuffer Duration (median) metric: rebuffer_duration measurement: median - value: 256 type: milliseconds name: Rebuffer Duration (95th %) metric: rebuffer_duration measurement: 95th - value: 0 type: number name: Rebuffer Count (median) metric: rebuffer_count measurement: median - value: 1 type: number name: Rebuffer Count (95th %) metric: rebuffer_count measurement: 95th - value: 1 type: score name: Video Quality Score metric: video_quality_score items: - value: 0 type: percentage name: Upscale Percentage (median) metric: upscale_percentage measurement: median - value: 0 type: percentage name: Upscale Percentage (95th %) metric: upscale_percentage measurement: 95th - value: 0 type: percentage name: Upscale Percentage (average) metric: upscale_percentage measurement: avg - value: 0.007 type: percentage name: Downscale Percentage (median) metric: downscale_percentage measurement: median - value: 0.449 type: percentage name: Downscale Percentage (95th %) metric: downscale_percentage measurement: 95th - value: 0.11813909473676262 type: percentage name: Downscale Percentage (average) metric: downscale_percentage measurement: avg - value: 0 type: percentage name: Max Upscale Percentage (median) metric: max_upscale_percentage measurement: median - value: 0 type: percentage name: Max Upscale Percentage (95th %) metric: max_upscale_percentage measurement: 95th - value: 0.007 type: percentage name: Max Downscale Percentage (median) metric: max_downscale_percentage measurement: median - value: 0.449 type: percentage name: Max Downscale Percentage (95th %) metric: max_downscale_percentage measurement: 95th - value: 851582.91015625 type: mbps name: Weighted Average Bitrate (median) metric: weighted_average_bitrate measurement: median - value: 697016.265625 type: mbps name: Weighted Average Bitrate (95th %) metric: weighted_average_bitrate measurement: 95th - value: 2195 type: milliseconds name: Live Stream Latency (median) metric: live_stream_latency measurement: median - value: 3523 type: milliseconds name: Live Stream Latency (95th %) metric: live_stream_latency measurement: 95th security: - accessToken: [] - authorizationToken: [] /data/v1/monitoring/dimensions: get: tags: - Monitoring summary: List Monitoring Dimensions description: Lists available monitoring dimensions. operationId: list-monitoring-dimensions servers: - url: https://api.mux.com responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListMonitoringDimensionsResponse' example: data: - display_name: ASN name: asn - display_name: CDN name: cdn - display_name: Country name: country - display_name: Operating system name: operating_system - display_name: Player name name: player_name - display_name: Region / State name: region - display_name: Stream type name: stream_type - display_name: Sub property ID name: sub_property_id - display_name: Video series name: video_series - display_name: Video title name: video_title - display_name: View has ad name: view_has_ad timeframe: - 1610034823 - 1610121223 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/monitoring/metrics: get: tags: - Monitoring summary: List Monitoring Metrics description: Lists available monitoring metrics. operationId: list-monitoring-metrics servers: - url: https://api.mux.com responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListMonitoringMetricsResponse' example: data: - display_name: Current Average Bitrate name: current-average-bitrate - display_name: Current Concurrent Viewers (CCV) name: current-concurrent-viewers - display_name: Current Rebuffering Percentage name: current-rebuffering-percentage - display_name: Exits Before Video Start name: exits-before-video-start - display_name: Playback Failure Percentage name: playback-failure-percentage - display_name: Video Startup Failure Percentage name: video-startup-failure-percentage - display_name: Video Startup Time name: video-startup-time timeframe: - 1610034858 - 1610121258 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/monitoring/metrics/{MONITORING_METRIC_ID}/breakdown: get: tags: - Monitoring summary: Get Monitoring Breakdown description: Gets breakdown information for a specific dimension and metric along with the number of concurrent viewers and negative impact score. operationId: get-monitoring-breakdown servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/monitoring_metric_id' - $ref: '#/components/parameters/monitoring_dimension' - $ref: '#/components/parameters/timestamp' - $ref: '#/components/parameters/monitoring_filters' - $ref: '#/components/parameters/order_by' - $ref: '#/components/parameters/order_direction' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetMonitoringBreakdownResponse' example: data: - concurrent_viewers: 2680 metric_value: 0.008195679660675846 negative_impact: 1 starting_up_viewers: 10 value: FR - concurrent_viewers: 36 metric_value: 0.010317417106767573 negative_impact: 4 starting_up_viewers: 1 value: ES - concurrent_viewers: 30 metric_value: 0.06408818534303201 negative_impact: 2 starting_up_viewers: 1 value: RE - concurrent_viewers: 26 metric_value: 0.008232510579858339 negative_impact: 7 starting_up_viewers: 1 value: GB - concurrent_viewers: 10 metric_value: 0 negative_impact: 26 starting_up_viewers: 0 value: BE timeframe: - 1610121421 - 1610121421 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/monitoring/metrics/{MONITORING_METRIC_ID}/breakdown-timeseries: get: tags: - Monitoring summary: Get Monitoring Breakdown Timeseries description: Gets timeseries of breakdown information for a specific dimension and metric. Each datapoint in the response represents 5 seconds worth of data. operationId: get-monitoring-breakdown-timeseries servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/monitoring_metric_id' - $ref: '#/components/parameters/monitoring_dimension' - $ref: '#/components/parameters/monitoring_timeseries_timeframe' - $ref: '#/components/parameters/monitoring_filters' - $ref: '#/components/parameters/monitoring_timeseries_limit' - $ref: '#/components/parameters/order_by' - $ref: '#/components/parameters/order_direction' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetMonitoringBreakdownTimeseriesResponse' example: data: - values: - value: FR metric_value: 0.008195679660675846 concurrent_viewers: 2680 starting_up_viewers: 10 - value: ES metric_value: 0.010317417106767573 concurrent_viewers: 36 starting_up_viewers: 1 - value: GB metric_value: 0.008232510579858339 concurrent_viewers: 26 starting_up_viewers: 1 date: '2023-05-18T19:36:30Z' - values: - value: FR metric_value: 0.00724579660675846 concurrent_viewers: 2690 starting_up_viewers: 1 - value: ES metric_value: 0.014317417106767573 concurrent_viewers: 35 starting_up_viewers: 15 - value: GB metric_value: 0.007232510579851874 concurrent_viewers: 24 starting_up_viewers: 1 date: '2023-05-18T19:36:35Z' timeframe: - 1684438590 - 1684438600 total_row_count: 2 security: - accessToken: [] - authorizationToken: [] /data/v1/monitoring/metrics/{MONITORING_HISTOGRAM_METRIC_ID}/histogram-timeseries: get: tags: - Monitoring summary: Get Monitoring Histogram Timeseries description: Gets histogram timeseries information for a specific metric. operationId: get-monitoring-histogram-timeseries servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/monitoring_histogram_metric_id' - $ref: '#/components/parameters/monitoring_filters' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetMonitoringHistogramTimeseriesResponse' example: data: - average: 5298.1612903225805 bucket_values: - count: 3 percentage: 0.0967741935483871 - count: 0 percentage: 0 - count: 0 percentage: 0 - count: 1 percentage: 0.03225806451612903 - count: 16 percentage: 0.5161290322580645 - count: 7 percentage: 0.22580645161290322 - count: 4 percentage: 0.12903225806451613 max_percentage: 0.5161290322580645 median: 4463 p95: 14834 sum: 31 timestamp: '2021-01-08T15:30:00Z' - average: 3828.4146341463415 bucket_values: - count: 5 percentage: 0.12195121951219512 - count: 0 percentage: 0 - count: 0 percentage: 0 - count: 4 percentage: 0.0975609756097561 - count: 18 percentage: 0.43902439024390244 - count: 12 percentage: 0.2926829268292683 - count: 2 percentage: 0.04878048780487805 max_percentage: 0.43902439024390244 median: 2625 p95: 7378 sum: 41 timestamp: '2021-01-08T15:31:00Z' meta: bucket_unit: milliseconds buckets: - end: 100 start: 0 - end: 500 start: 100 - end: 1000 start: 500 - end: 2000 start: 1000 - end: 5000 start: 2000 - end: 10000 start: 5000 - end: 15000 start: 10000 timeframe: - 1610119800 - 1610121540 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/monitoring/metrics/{MONITORING_METRIC_ID}/timeseries: get: tags: - Monitoring summary: Get Monitoring Timeseries description: Gets Time series information for a specific metric along with the number of concurrent viewers. operationId: get-monitoring-timeseries servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/monitoring_metric_id' - $ref: '#/components/parameters/monitoring_filters' - $ref: '#/components/parameters/monitoring_timeseries_timestamp' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetMonitoringTimeseriesResponse' example: data: - concurrent_viewers: 2790 date: '2021-01-08T15:31:20Z' value: 2790 - concurrent_viewers: 2788 date: '2021-01-08T15:31:25Z' value: 2788 - concurrent_viewers: 2791 date: '2021-01-08T15:31:30Z' value: 2791 - concurrent_viewers: 2791 date: '2021-01-08T15:31:35Z' value: 2791 - concurrent_viewers: 2792 date: '2021-01-08T15:31:40Z' value: 2792 timeframe: - 1610119880 - 1610121675 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/realtime/dimensions: get: deprecated: true tags: - Real-Time summary: List Real-Time Dimensions description: Lists available real-time dimensions. This API is now deprecated, please use the `List Monitoring Dimensions` API. operationId: list-realtime-dimensions servers: - url: https://api.mux.com responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListRealTimeDimensionsResponse' example: data: - display_name: ASN name: asn - display_name: CDN name: cdn - display_name: Country name: country - display_name: Operating system name: operating_system - display_name: Player name name: player_name - display_name: Region / State name: region - display_name: Stream type name: stream_type - display_name: Sub property ID name: sub_property_id - display_name: Video series name: video_series - display_name: Video title name: video_title timeframe: - 1610034823 - 1610121223 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/realtime/metrics: get: deprecated: true tags: - Real-Time summary: List Real-Time Metrics description: Lists available real-time metrics. This API is now deprecated, please use the `List Monitoring Metrics` API. operationId: list-realtime-metrics servers: - url: https://api.mux.com responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListRealTimeMetricsResponse' example: data: - display_name: Current Average Bitrate name: current-average-bitrate - display_name: Current Concurrent Viewers (CCV) name: current-concurrent-viewers - display_name: Current Rebuffering Percentage name: current-rebuffering-percentage - display_name: Exits Before Video Start name: exits-before-video-start - display_name: Playback Failure Percentage name: playback-failure-percentage - display_name: Video Startup Time name: video-startup-time timeframe: - 1610034858 - 1610121258 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/realtime/metrics/{REALTIME_METRIC_ID}/breakdown: get: deprecated: true tags: - Real-Time summary: Get Real-Time Breakdown description: Gets breakdown information for a specific dimension and metric along with the number of concurrent viewers and negative impact score. This API is now deprecated, please use the `Get Monitoring Breakdown` API. operationId: get-realtime-breakdown servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/realtime_metric_id' - $ref: '#/components/parameters/realtime_dimension' - $ref: '#/components/parameters/timestamp' - $ref: '#/components/parameters/monitoring_filters' - $ref: '#/components/parameters/order_by' - $ref: '#/components/parameters/order_direction' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetRealTimeBreakdownResponse' example: data: - concurrent_viewers: 2680 metric_value: 0.008195679660675846 negative_impact: 1 starting_up_viewers: 10 value: FR - concurrent_viewers: 36 metric_value: 0.010317417106767573 negative_impact: 4 starting_up_viewers: 1 value: ES - concurrent_viewers: 30 metric_value: 0.06408818534303201 negative_impact: 2 starting_up_viewers: 1 value: RE - concurrent_viewers: 26 metric_value: 0.008232510579858339 negative_impact: 7 starting_up_viewers: 1 value: GB - concurrent_viewers: 10 metric_value: 0 negative_impact: 26 starting_up_viewers: 0 value: BE timeframe: - 1610121421 - 1610121421 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/realtime/metrics/{REALTIME_HISTOGRAM_METRIC_ID}/histogram-timeseries: get: deprecated: true tags: - Real-Time summary: Get Real-Time Histogram Timeseries description: Gets histogram timeseries information for a specific metric. This API is now deprecated, please use the `Get Monitoring Histogram Timeseries` API. operationId: get-realtime-histogram-timeseries servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/realtime_histogram_metric_id' - $ref: '#/components/parameters/monitoring_filters' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetRealTimeHistogramTimeseriesResponse' example: data: - average: 5298.1612903225805 bucket_values: - count: 3 percentage: 0.0967741935483871 - count: 0 percentage: 0 - count: 0 percentage: 0 - count: 1 percentage: 0.03225806451612903 - count: 16 percentage: 0.5161290322580645 - count: 7 percentage: 0.22580645161290322 - count: 4 percentage: 0.12903225806451613 max_percentage: 0.5161290322580645 median: 4463 p95: 14834 sum: 31 timestamp: '2021-01-08T15:30:00Z' - average: 3828.4146341463415 bucket_values: - count: 5 percentage: 0.12195121951219512 - count: 0 percentage: 0 - count: 0 percentage: 0 - count: 4 percentage: 0.0975609756097561 - count: 18 percentage: 0.43902439024390244 - count: 12 percentage: 0.2926829268292683 - count: 2 percentage: 0.04878048780487805 max_percentage: 0.43902439024390244 median: 2625 p95: 7378 sum: 41 timestamp: '2021-01-08T15:31:00Z' meta: bucket_unit: milliseconds buckets: - end: 100 start: 0 - end: 500 start: 100 - end: 1000 start: 500 - end: 2000 start: 1000 - end: 5000 start: 2000 - end: 10000 start: 5000 - end: 15000 start: 10000 timeframe: - 1610119800 - 1610121540 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/realtime/metrics/{REALTIME_METRIC_ID}/timeseries: get: deprecated: true tags: - Real-Time summary: Get Real-Time Timeseries description: Gets Time series information for a specific metric along with the number of concurrent viewers. This API is now deprecated, please use the `Get Monitoring Timeseries` API. operationId: get-realtime-timeseries servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/realtime_metric_id' - $ref: '#/components/parameters/monitoring_filters' - $ref: '#/components/parameters/monitoring_timeseries_timestamp' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetRealTimeTimeseriesResponse' example: data: - concurrent_viewers: 2790 date: '2021-01-08T15:31:20Z' value: 2790 - concurrent_viewers: 2788 date: '2021-01-08T15:31:25Z' value: 2788 - concurrent_viewers: 2791 date: '2021-01-08T15:31:30Z' value: 2791 - concurrent_viewers: 2791 date: '2021-01-08T15:31:35Z' value: 2791 - concurrent_viewers: 2792 date: '2021-01-08T15:31:40Z' value: 2792 timeframe: - 1610119880 - 1610121675 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/incidents: get: tags: - Incidents summary: List Incidents description: Returns a list of incidents. operationId: list-incidents servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/order_by' - $ref: '#/components/parameters/order_direction' - $ref: '#/components/parameters/incident_status' - $ref: '#/components/parameters/severity' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListIncidentsResponse' example: data: - affected_views: 71 affected_views_per_hour: 29 affected_views_per_hour_on_open: 75 breakdowns: - id: abcdef name: error_type_id value: '697070' description: Something is broken error_description: No seriously, something is really really broken :( id: 4u13td impact: '*71 views* were affected at a rate of *29 per hour*' incident_key: 5312a7c0bbb5d8353bd88602f01fe58eb15e9febac8fd2f0d8ce8f1cb138145c measured_value: 5.9 measured_value_on_close: 0.1 measurement: error_rate notification_rules: [] notifications: - attempted_at: '2021-01-05T09:52:15.119040Z' id: 103014 queued_at: '2021-01-05T09:52:14.945157Z' - attempted_at: '2021-01-05T11:31:08.244462Z' id: 102025 queued_at: '2021-01-05T11:31:08.061924Z' resolved_at: '2021-01-05T11:31:04.000000Z' sample_size: 1000 sample_size_unit: views severity: alert started_at: '2021-01-05T09:04:46.000000Z' status: closed threshold: 5 - affected_views: 132 affected_views_per_hour: 11 affected_views_per_hour_on_open: 65 breakdowns: - id: abcdef name: video_title value: Layla the dog video 1337 - id: abcdef name: error_type_id value: '697065' description: Something else is broken error_description: 'Detailed error: On no!' id: rd9579 impact: '*132 views* were affected at a rate of *11 per hour*' incident_key: fd9add7a85a013d768f4039f9e726133eddb476c2f16b22ebfe56f18f7c03b27 measured_value: 97 measured_value_on_close: 1 measurement: error_rate notification_rules: [] notifications: - attempted_at: '2020-12-31T09:26:19.416919Z' id: 102198 queued_at: '2020-12-31T09:26:18.987717Z' - attempted_at: '2020-12-31T20:23:57.279325Z' id: 101269 queued_at: '2020-12-31T20:23:56.997068Z' resolved_at: '2020-12-31T20:22:54.000000Z' sample_size: 100 sample_size_unit: views severity: alert started_at: '2020-12-31T07:56:22.000000Z' status: closed threshold: 96 timeframe: - 1610035979 - 1610122379 total_row_count: 2 security: - accessToken: [] - authorizationToken: [] /data/v1/incidents/{INCIDENT_ID}: get: tags: - Incidents summary: Get an Incident description: Returns the details of an incident. operationId: get-incident servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/incident_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/IncidentResponse' example: data: affected_views: 2026 affected_views_per_hour: 84 affected_views_per_hour_on_open: 12857 breakdowns: - id: abcdef name: error_type_id value: '499680' - id: abcdef name: video_title value: Cute dogs description: This video is erroring a lot error_description: Error Type ID 499680 id: g7q2df impact: '*2026 views* were affected at a rate of *84 per hour*' incident_key: 045dfcbefdb68c6003aaf3bf5ed217493772519f28f14d129f95eaff159ea6d6b measured_value: 100 measured_value_on_close: 8 measurement: error_rate notification_rules: [] notifications: - attempted_at: '2020-05-14T17:23:08.034662Z' id: 63293 queued_at: '2020-05-14T17:23:07.944457Z' - attempted_at: '2020-05-13T17:22:30.444389Z' id: 62212 queued_at: '2020-05-13T17:22:30.354828Z' resolved_at: '2020-05-14T17:22:30.000000Z' sample_size: 100 sample_size_unit: views severity: alert started_at: '2020-05-13T17:21:54.000000Z' status: closed threshold: 100 timeframe: - 1610036456 - 1610122856 total_row_count: 1 security: - accessToken: [] - authorizationToken: [] /data/v1/incidents/{INCIDENT_ID}/related: get: tags: - Incidents summary: List Related Incidents description: Returns all the incidents that seem related to a specific incident. operationId: list-related-incidents servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/incident_id' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/order_by' - $ref: '#/components/parameters/order_direction' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListRelatedIncidentsResponse' example: data: - affected_views: 71 affected_views_per_hour: 29 affected_views_per_hour_on_open: 75 breakdowns: - id: abcdef name: error_type_id value: '697070' description: Something is broken error_description: No seriously, something is really really broken :( id: 4u13td impact: '*71 views* were affected at a rate of *29 per hour*' incident_key: 5312a7c0bbb5d8353bd88602f01fe58eb15e9febac8fd2f0d8ce8f1cb138145c measured_value: 5.9 measured_value_on_close: 0.1 measurement: error_rate notification_rules: [] notifications: - attempted_at: '2021-01-05T09:52:15.119040Z' id: 103014 queued_at: '2021-01-05T09:52:14.945157Z' - attempted_at: '2021-01-05T11:31:08.244462Z' id: 102025 queued_at: '2021-01-05T11:31:08.061924Z' resolved_at: '2021-01-05T11:31:04.000000Z' sample_size: 1000 sample_size_unit: views severity: alert started_at: '2021-01-05T09:04:46.000000Z' status: closed threshold: 5 - affected_views: 132 affected_views_per_hour: 11 affected_views_per_hour_on_open: 65 breakdowns: - id: abcdef name: video_title value: Layla the dog video 1337 - id: abcdef name: error_type_id value: '697065' description: Something else is broken error_description: 'Detailed error: On no!' id: rd9579 impact: '*132 views* were affected at a rate of *11 per hour*' incident_key: fd9add7a85a013d768f4039f9e726133eddb476c2f16b22ebfe56f18f7c03b27 measured_value: 97 measured_value_on_close: 1 measurement: error_rate notification_rules: [] notifications: - attempted_at: '2020-12-31T09:26:19.416919Z' id: 102198 queued_at: '2020-12-31T09:26:18.987717Z' - attempted_at: '2020-12-31T20:23:57.279325Z' id: 101269 queued_at: '2020-12-31T20:23:56.997068Z' resolved_at: '2020-12-31T20:22:54.000000Z' sample_size: 100 sample_size_unit: views severity: alert started_at: '2020-12-31T07:56:22.000000Z' status: closed threshold: 96 timeframe: - 1610035979 - 1610122379 total_row_count: 2 security: - accessToken: [] - authorizationToken: [] /data/v1/annotations: get: tags: - Annotations summary: List Annotations description: Returns a list of annotations. operationId: list-annotations servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/order_direction' - $ref: '#/components/parameters/timeframe' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListAnnotationsResponse' example: data: - id: 123e4567-e89b-12d3-a456-426614174000 note: This is one note date: '2025-04-23T19:10:00Z' sub_property_id: '123456' - id: 234e4567-e89b-12d3-a456-426614174000 note: This is another note date: '2025-04-23T19:20:00Z' sub_property_id: null total_row_count: 2 timeframe: - 1745434800 - 1745438400 security: - accessToken: [] - authorizationToken: [] post: tags: - Annotations summary: Create Annotation description: Creates a new annotation. operationId: create-annotation servers: - url: https://api.mux.com requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AnnotationInput' example: note: This is a note date: 1745438400 sub_property_id: '123456' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/AnnotationResponse' example: data: id: 123e4567-e89b-12d3-a456-426614174000 note: This is a note date: '2025-04-23T20:00:00Z' sub_property_id: '123456' total_row_count: 1 timeframe: - 1745434800 - 1745438400 security: - accessToken: [] - authorizationToken: [] /data/v1/annotations/{ANNOTATION_ID}: get: tags: - Annotations summary: Get Annotation description: Returns the details of a specific annotation. operationId: get-annotation servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/annotation_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AnnotationResponse' example: data: id: 123e4567-e89b-12d3-a456-426614174000 note: This is a note date: '2025-04-23T19:10:00Z' sub_property_id: '123456' total_row_count: 1 timeframe: - 1745434800 - 1745438400 security: - accessToken: [] - authorizationToken: [] patch: tags: - Annotations summary: Update Annotation description: Updates an existing annotation. operationId: update-annotation servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/annotation_id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AnnotationInput' example: note: This is a note date: 1745438400 sub_property_id: '123456' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AnnotationResponse' example: data: id: 123e4567-e89b-12d3-a456-426614174000 note: This is a note date: '2025-04-23T20:00:00Z' sub_property_id: '123456' total_row_count: 1 timeframe: - 1745434800 - 1745438400 security: - accessToken: [] - authorizationToken: [] delete: tags: - Annotations summary: Delete Annotation description: Deletes an annotation. operationId: delete-annotation servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/annotation_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] /system/v1/whoami: get: summary: Retrieve Information About Your Current Access Token. description: Retrieve information about your current access token, including organization, environment, and permissions. Note that this can only be access with an access token, and _all_ access tokens can access this route, regardless of what permissions they have assigned. operationId: get-whoami servers: - url: https://api.mux.com tags: - Utilities responses: '200': description: Information retrieved successfully content: application/json: schema: $ref: '#/components/schemas/WhoAmIResponse' example: data: permissions: - video:read - data:read organization_name: Mux organization_id: orgid123 environment_type: development environment_name: Development environment_id: envid123 access_token_name: Development access token '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedResponse' example: error: type: unauthorized messages: - Unauthorized request '429': description: Rate limited content: application/json: schema: $ref: '#/components/schemas/RateLimitedResponse' example: errors: - Too many requests, retry later. security: - accessToken: [] - authorizationToken: [] /system/v1/signing-keys: post: tags: - Signing Keys summary: Create a Signing Key description: Creates a new signing key pair. When creating a new signing key, the API will generate a 2048-bit RSA key-pair and return the private key and a generated key-id; the public key will be stored at Mux to validate signed tokens. operationId: create-signing-key servers: - url: https://api.mux.com responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/SigningKeyResponse' example: data: private_key: abcd123= id: vI5KTQ78ohYriuvWKHY6COtZWXexHGLllxksOdZuya8 created_at: '1610108345' security: - accessToken: [] - authorizationToken: [] get: tags: - Signing Keys summary: List Signing Keys description: Returns a list of signing keys. operationId: list-signing-keys servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListSigningKeysResponse' example: data: - id: vI5KTQ78ohYriuvWKHY6COtZWXexHGLllxksOdZuya8 created_at: '1610108345' - id: jc6lJiCLMjyC202EXtRQ644sShzDv6x5tWJrbvUFpvmo created_at: '1608632647' security: - accessToken: [] - authorizationToken: [] /system/v1/signing-keys/{SIGNING_KEY_ID}: get: tags: - Signing Keys summary: Retrieve a Signing Key description: 'Retrieves the details of a signing key that has previously been created. Supply the unique signing key ID that was returned from your previous request, and Mux will return the corresponding signing key information. **The private key is not returned in this response.** ' operationId: get-signing-key servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/signing_key_id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SigningKeyResponse' example: data: id: jc6lJiCLMjyC202EXtRQ644sShzDv6x5tWJrbvUFpvmo created_at: '1608632647' security: - accessToken: [] - authorizationToken: [] delete: tags: - Signing Keys summary: Delete a Signing Key description: Deletes an existing signing key. Use with caution, as this will invalidate any existing signatures and no JWTs can be signed using the key again. operationId: delete-signing-key servers: - url: https://api.mux.com parameters: - $ref: '#/components/parameters/signing_key_id' responses: '204': description: No Content security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs: get: operationId: list-jobs summary: List Jobs description: Returns a paginated list of Robots jobs, with optional filters for workflow, status, and asset_id. Jobs are automatically deleted after 30 days. tags: - Jobs parameters: - schema: type: string enum: - summarize - moderate - generate-chapters - edit-captions - translate-captions - ask-questions - find-key-moments description: Filter by workflow name required: false description: Filter by workflow name name: workflow in: query - schema: allOf: - $ref: '#/components/schemas/JobStatus' - description: Filter by job status required: false description: Filter by job status name: status in: query - schema: type: string minLength: 1 description: Filter by Mux asset ID required: false description: Filter by Mux asset ID name: asset_id in: query - schema: type: integer minimum: 1 maximum: 100 default: 25 description: Maximum number of jobs to return (default 25, max 100) required: false description: Maximum number of jobs to return (default 25, max 100) name: limit in: query - schema: type: integer minimum: 1 default: 1 description: Page number (default 1) required: false description: Page number (default 1) name: page in: query responses: '200': description: List of jobs content: application/json: schema: $ref: '#/components/schemas/ListJobsResponse' '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/{JOB_ID}/cancel: post: operationId: cancel-job summary: Cancel a Job description: Cancels a job that is currently pending or processing. tags: - Jobs parameters: - schema: type: string minLength: 1 maxLength: 255 required: true name: JOB_ID in: path responses: '200': description: Job cancelled successfully content: application/json: schema: $ref: '#/components/schemas/CancelJobResponse' '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Job not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: Job is already in a terminal state content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/ask-questions: post: operationId: create-ask-questions-job summary: Create an 'ask-Questions' Job description: Creates a new job that uses AI to answer questions about a Mux Video asset. tags: - Ask Questions requestBody: description: Ask questions parameters content: application/json: schema: $ref: '#/components/schemas/CreateAskQuestionsJobRequest' example: parameters: asset_id: mux_asset_123abc questions: - question: Is this video about glasses? - question: What is the primary subject? answer_options: - glasses - watches - shoes - hats - question: Describe the primary subject in one sentence. free_form_reply: true max_free_form_answer_length: 300 responses: '202': description: Ask questions job queued content: application/json: schema: $ref: '#/components/schemas/AskQuestionsJobResponse' example: data: id: rjob_example123 workflow: ask-questions status: pending units_consumed: 0 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc questions: - question: Is this video about glasses? - question: What is the primary subject? answer_options: - glasses - watches - shoes - hats - question: Describe the primary subject in one sentence. free_form_reply: true max_free_form_answer_length: 300 '401': description: Missing Mux credentials content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Asset not found or missing playback ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/ask-questions/{JOB_ID}: get: operationId: get-ask-questions-job summary: Get an 'ask-Questions' Job description: Retrieves the current status and results of an 'ask-questions' job. Jobs are automatically deleted after 30 days. tags: - Ask Questions parameters: - schema: type: string minLength: 1 maxLength: 255 required: true name: JOB_ID in: path responses: '200': description: Current status for the requested job content: application/json: schema: $ref: '#/components/schemas/AskQuestionsJobResponse' example: data: id: rjob_example123 workflow: ask-questions status: completed units_consumed: 1 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc questions: - question: Is this video about glasses? - question: What is the primary subject? answer_options: - glasses - watches - shoes - hats - question: Describe the primary subject in one sentence. free_form_reply: true max_free_form_answer_length: 300 outputs: answers: - question: Is this video about glasses? answer: 'no' confidence: 0.92 reasoning: No glasses appear on screen and the narration does not mention eyewear. skipped: false - question: What is the primary subject? answer: watches confidence: 0.88 reasoning: Multiple wristwatches are featured prominently throughout the video. skipped: false - question: Describe the primary subject in one sentence. answer: A close-up showcase of luxury wristwatches arranged on a wooden display. confidence: 0.86 reasoning: Visual evidence shows several wristwatches displayed against a wooden backdrop with no other competing subjects. skipped: false '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No job exists for the supplied id content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/edit-captions: post: operationId: create-edit-captions-job summary: Create an 'edit-Captions' Job description: Creates a new job that edits an existing Mux text track using static replacements and optional profanity censoring. Provide at least one of `replacements` or `auto_censor_profanity`. tags: - Edit Captions requestBody: description: Caption editing parameters content: application/json: schema: $ref: '#/components/schemas/CreateEditCaptionsJobRequest' example: parameters: asset_id: mux_asset_123abc track_id: text_track_456def replacements: - find: Mucks replace: Mux case_sensitive: true - find: gonna replace: going to upload_to_mux: true delete_original_track: true responses: '202': description: Caption editing job queued content: application/json: schema: $ref: '#/components/schemas/EditCaptionsJobResponse' example: data: id: rjob_example123 workflow: edit-captions status: pending units_consumed: 0 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc track_id: text_track_456def replacements: - find: Mucks replace: Mux case_sensitive: true - find: gonna replace: going to upload_to_mux: true delete_original_track: true '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Missing Mux credentials content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Asset not found, no playback ID, or the requested text track is not ready content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/edit-captions/{JOB_ID}: get: operationId: get-edit-captions-job summary: Get an 'edit-Captions' Job description: Retrieves the current status and results of an 'edit-captions' job. tags: - Edit Captions parameters: - schema: type: string minLength: 1 maxLength: 255 required: true name: JOB_ID in: path responses: '200': description: Current status for the requested job content: application/json: schema: $ref: '#/components/schemas/EditCaptionsJobResponse' example: data: id: rjob_example123 workflow: edit-captions status: completed units_consumed: 1 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc track_id: text_track_456def replacements: - find: Mucks replace: Mux case_sensitive: true - find: gonna replace: going to upload_to_mux: true delete_original_track: true outputs: total_replacement_count: 5 uploaded_track_id: text_track_789ghi temporary_vtt_url: https://s3.example.com/edited.vtt?sig=abc '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No job exists for the supplied id content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/find-key-moments: post: operationId: create-find-key-moments-job summary: Create a 'find-Key-Moments' Job description: Creates a new job that uses AI to identify key moments in a Mux Video asset. tags: - Find Key Moments requestBody: description: Key moments extraction parameters content: application/json: schema: $ref: '#/components/schemas/CreateFindKeyMomentsJobRequest' example: parameters: asset_id: mux_asset_123abc max_moments: 5 target_duration_ms: min: 15000 max: 45000 responses: '202': description: Key moments job queued content: application/json: schema: $ref: '#/components/schemas/FindKeyMomentsJobResponse' example: data: id: rjob_example123 workflow: find-key-moments status: pending units_consumed: 0 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc max_moments: 5 target_duration_ms: min: 15000 max: 45000 '401': description: Missing Mux credentials for transcript access content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Asset not found, missing playback ID, or no transcript content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/find-key-moments/{JOB_ID}: get: operationId: get-find-key-moments-job summary: Get a 'find-Key-Moments' Job description: Retrieves the current status and results of a 'find-key-moments' job. Jobs are automatically deleted after 30 days. tags: - Find Key Moments parameters: - schema: type: string minLength: 1 maxLength: 255 required: true name: JOB_ID in: path responses: '200': description: Current status for the requested job content: application/json: schema: $ref: '#/components/schemas/FindKeyMomentsJobResponse' example: data: id: rjob_example123 workflow: find-key-moments status: completed units_consumed: 1 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc max_moments: 5 target_duration_ms: min: 15000 max: 45000 outputs: moments: - start_ms: 15000 end_ms: 45000 cues: - start_ms: 15000 end_ms: 20000 text: This is the moment everything changed. - start_ms: 20000 end_ms: 30000 text: We realized the entire approach was wrong. overall_score: 0.92 title: The Pivotal Realization audible_narrative: The speaker describes the turning point that reshaped the project direction. notable_audible_concepts: - pivotal realization moment - project direction change visual_narrative: The speaker gestures emphatically at a whiteboard diagram while the camera zooms in. notable_visual_concepts: - concept: whiteboard diagram emphasis score: 0.88 rationale: The diagram directly illustrates the pivotal realization being described. - concept: speaker emphatic gestures score: 0.75 rationale: Body language reinforces the emotional weight of the turning point. '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No job exists for the supplied id content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/generate-chapters: post: operationId: create-generate-chapters-job summary: Create a 'generate-Chapters' Job description: Creates a new job that uses AI to generate chapters for a Mux Video asset. tags: - Generate Chapters requestBody: description: Chapters parameters content: application/json: schema: $ref: '#/components/schemas/CreateGenerateChaptersJobRequest' example: parameters: asset_id: mux_asset_123abc responses: '202': description: Chapters job queued content: application/json: schema: $ref: '#/components/schemas/GenerateChaptersJobResponse' example: data: id: rjob_example123 workflow: generate-chapters status: pending units_consumed: 0 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc '401': description: Missing Mux credentials content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Asset not found, missing playback ID, or no transcript content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/generate-chapters/{JOB_ID}: get: operationId: get-generate-chapters-job summary: Get a 'generate-Chapters' Job description: Retrieves the current status and results of a 'generate-chapters' job. Jobs are automatically deleted after 30 days. tags: - Generate Chapters parameters: - schema: type: string minLength: 1 maxLength: 255 required: true name: JOB_ID in: path responses: '200': description: Current status for the requested job content: application/json: schema: $ref: '#/components/schemas/GenerateChaptersJobResponse' example: data: id: rjob_example123 workflow: generate-chapters status: completed units_consumed: 1 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc outputs: chapters: - start_time: 0 title: Introduction - start_time: 45 title: Setting Up the Workspace - start_time: 180 title: Core Implementation - start_time: 420 title: Testing and Debugging - start_time: 600 title: Wrap-Up and Next Steps '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No job exists for the supplied id content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/moderate: post: operationId: create-moderate-job summary: Create a 'moderate' Job description: Creates a new job that uses AI to analyze a Mux Video asset for inappropriate content. tags: - Moderate requestBody: description: Moderation parameters content: application/json: schema: $ref: '#/components/schemas/CreateModerateJobRequest' example: parameters: asset_id: mux_asset_123abc thresholds: sexual: 0.7 violence: 0.8 responses: '202': description: Moderation job queued content: application/json: schema: $ref: '#/components/schemas/ModerateJobResponse' example: data: id: rjob_example123 workflow: moderate status: pending units_consumed: 0 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc thresholds: sexual: 0.7 violence: 0.8 '401': description: Missing Mux credentials content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Asset not found or missing playback ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/moderate/{JOB_ID}: get: operationId: get-moderate-job summary: Get a 'moderate' Job description: Retrieves the current status and results of a 'moderate' job. Jobs are automatically deleted after 30 days. tags: - Moderate parameters: - schema: type: string minLength: 1 maxLength: 255 required: true name: JOB_ID in: path responses: '200': description: Current status for the requested job content: application/json: schema: $ref: '#/components/schemas/ModerateJobResponse' example: data: id: rjob_example123 workflow: moderate status: completed units_consumed: 1 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc thresholds: sexual: 0.7 violence: 0.8 outputs: thumbnail_scores: - time: 0 sexual: 0.01 violence: 0.02 - time: 30 sexual: 0.03 violence: 0.15 - time: 60 sexual: 0.02 violence: 0.05 max_scores: sexual: 0.03 violence: 0.15 exceeds_threshold: false '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No job exists for the supplied id content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/summarize: post: operationId: create-summarize-job summary: Create a 'summarize' Job description: Creates a new job that uses AI to generate a title, description, and tags for a Mux Video asset. tags: - Summarize requestBody: description: Summarization parameters content: application/json: schema: $ref: '#/components/schemas/CreateSummarizeJobRequest' example: parameters: asset_id: mux_asset_123abc tone: neutral tag_count: 10 responses: '202': description: Summarize job queued content: application/json: schema: $ref: '#/components/schemas/SummarizeJobResponse' example: data: id: rjob_example123 workflow: summarize status: pending units_consumed: 0 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc tone: neutral tag_count: 10 '401': description: Missing Mux credentials content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Asset not found or missing playback ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/summarize/{JOB_ID}: get: operationId: get-summarize-job summary: Get a 'summarize' Job description: Retrieves the current status and results of a 'summarize' job. Jobs are automatically deleted after 30 days. tags: - Summarize parameters: - schema: type: string minLength: 1 maxLength: 255 required: true name: JOB_ID in: path responses: '200': description: Current status for the requested job content: application/json: schema: $ref: '#/components/schemas/SummarizeJobResponse' example: data: id: rjob_example123 workflow: summarize status: completed units_consumed: 1 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc tone: neutral tag_count: 10 outputs: title: How to Build a Sustainable Garden in Your Backyard description: This video walks through the step-by-step process of creating a sustainable backyard garden, covering soil preparation, plant selection, and organic pest control methods. tags: - gardening - sustainability - backyard - organic - soil preparation - composting - pest control - beginner - how-to - plants '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No job exists for the supplied id content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/translate-captions: post: operationId: create-translate-captions-job summary: Create a 'translate-Captions' Job description: Creates a new job that translates captions on a Mux Video asset from one language to another. tags: - Translate Captions requestBody: description: Caption translation parameters content: application/json: schema: $ref: '#/components/schemas/CreateTranslateCaptionsJobRequest' example: parameters: asset_id: mux_asset_123abc track_id: track_en_abc123 to_language_code: es upload_to_mux: true responses: '202': description: Caption translation job queued content: application/json: schema: $ref: '#/components/schemas/TranslateCaptionsJobResponse' example: data: id: rjob_example123 workflow: translate-captions status: pending units_consumed: 0 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc track_id: track_en_abc123 to_language_code: es upload_to_mux: true '401': description: Missing Mux credentials content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '422': description: Asset not found, missing playback ID, or no ready text track matching the provided track ID content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /robots/v0/jobs/translate-captions/{JOB_ID}: get: operationId: get-translate-captions-job summary: Get a 'translate-Captions' Job description: Retrieves the current status and results of a 'translate-captions' job. Jobs are automatically deleted after 30 days. tags: - Translate Captions parameters: - schema: type: string minLength: 1 maxLength: 255 required: true name: JOB_ID in: path responses: '200': description: Current status for the requested job content: application/json: schema: $ref: '#/components/schemas/TranslateCaptionsJobResponse' example: data: id: rjob_example123 workflow: translate-captions status: completed units_consumed: 1 created_at: 1700000000 updated_at: 1700000060 parameters: asset_id: mux_asset_123abc track_id: track_en_abc123 to_language_code: es upload_to_mux: true outputs: track_id: track_en_abc123 uploaded_track_id: track_es_abc123 temporary_vtt_url: https://storage.example.com/translations/es/captions.vtt?token=abc123 '403': description: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: No job exists for the supplied id content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://api.mux.com security: - accessToken: [] - authorizationToken: [] /{PLAYBACK_ID}/thumbnail.{EXTENSION}: get: summary: Retrieve a Video Thumbnail description: '[Fetch a thumbnail image from a video](https://docs.mux.com/guides/get-images-from-a-video) at a specified time with optional transformations.' operationId: get-thumbnail servers: - url: https://image.mux.com tags: - Thumbnails parameters: - $ref: '#/components/parameters/playback_id' - $ref: '#/components/parameters/token' - name: EXTENSION in: path required: true description: The image file extension, either 'jpg', 'png', or 'webp'. schema: type: string enum: - jpg - png - webp - name: time in: query description: The time (in seconds) of the video timeline where the image should be pulled. Defaults to the middle of the original video. schema: type: number format: float - name: width in: query description: The width of the thumbnail (in pixels). Defaults to the width of the original video. schema: type: integer - name: height in: query description: The height of the thumbnail (in pixels). Defaults to the height of the original video. schema: type: integer - name: rotate in: query description: Rotate the image clockwise by the given number of degrees. schema: type: integer enum: - 90 - 180 - 270 - name: fit_mode in: query description: How to fit a thumbnail within the specified width + height. schema: type: string enum: - preserve - stretch - crop - smartcrop - pad - name: flip_v in: query description: Flip the image top-bottom after performing all other transformations. schema: type: boolean - name: flip_h in: query description: Flip the image left-right after performing all other transformations. schema: type: boolean - name: program_time in: query description: Set the time of the thumbnail for an asset created from a live stream when using the [instant clipping feature](https://docs.mux.com/guides/create-instant-clips). The timestamp should be provided as an epoch integer, and is compared to the program date time (PDT) generated by a live stream. schema: type: integer - name: latest in: query description: When set to `true`, pulls the latest thumbnail from the playback ID of an ongoing live stream. Can only be used with live streams. Can be used to build moderation and classification workflows, [see documentation for more details](https://mux.com/docs/guides/get-images-from-a-video#getting-the-latest-thumbnail-from-a-live-stream). schema: type: boolean responses: '200': description: Thumbnail image retrieved successfully. content: image/jpeg: schema: type: string format: binary image/png: schema: type: string format: binary image/webp: schema: type: string format: binary '400': description: Bad request due to invalid parameters. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D~1storyboard.vtt/get/responses/400/content/application~1json/schema' example: code: 3 message: Unrecognized fit-mode '404': description: Video asset not found. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D~1storyboard.vtt/get/responses/400/content/application~1json/schema' example: code: 5 message: Not Found /{PLAYBACK_ID}/animated.{EXTENSION}: get: summary: Retrieve an Animated Image from a Video description: '[Fetch an animated GIF or WebP image](https://docs.mux.com/guides/get-images-from-a-video#get-an-animated-gif-from-a-video) from a video segment with optional transformations.' operationId: get-animated servers: - url: https://image.mux.com tags: - Animated Images parameters: - $ref: '#/components/parameters/playback_id' - $ref: '#/components/parameters/token' - name: EXTENSION in: path required: true description: The image file extension, either 'gif' or 'webp'. schema: type: string enum: - gif - webp - name: start in: query description: The time (in seconds) of the video timeline where the animated GIF should begin. Defaults to 0. schema: type: number format: float - name: end in: query description: The time (in seconds) of the video timeline where the GIF ends. Defaults to 5 seconds after the start. Maximum total duration of GIF is limited to 10 seconds; minimum total duration of GIF is 250ms. schema: type: number format: float - name: width in: query description: The width in pixels of the animated GIF. Default is 320px, or if height is provided, the width is determined by preserving aspect ratio with the height. Max width is 640px. schema: type: integer - name: height in: query description: The height in pixels of the animated GIF. The default height is determined by preserving aspect ratio with the width provided. Maximum height is 640px. schema: type: integer - name: fps in: query description: The frame rate of the generated GIF. Defaults to 15 fps. Max 30 fps. schema: type: integer responses: '200': description: Animated image retrieved successfully. content: image/gif: schema: type: string format: binary image/webp: schema: type: string format: binary '400': description: Bad request due to invalid parameters. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D~1storyboard.vtt/get/responses/400/content/application~1json/schema' example: code: 3 message: Invalid parameter '404': description: Video asset not found. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D~1storyboard.vtt/get/responses/400/content/application~1json/schema' example: code: 5 message: Not Found /{PLAYBACK_ID}/storyboard.{EXTENSION}: get: summary: Retrieve a Storyboard Image for Timeline Hover Previews description: Fetch a storyboard image composed of multiple thumbnails for use in [timeline hover previews](https://docs.mux.com/guides/create-timeline-hover-previews). operationId: get-image-storyboard servers: - url: https://image.mux.com tags: - Storyboards parameters: - $ref: '#/components/parameters/playback_id' - $ref: '#/components/parameters/token' - name: EXTENSION in: path required: true description: The storyboard image extension, either 'jpg', 'png', or 'webp'. schema: type: string enum: - jpg - png - webp - $ref: '#/components/parameters/program_start_time' - $ref: '#/components/parameters/program_end_time' - $ref: '#/components/parameters/asset_start_time' - $ref: '#/components/parameters/asset_end_time' responses: '200': description: Storyboard image retrieved successfully. content: image/jpeg: schema: type: string format: binary image/png: schema: type: string format: binary image/webp: schema: type: string format: binary '400': description: Bad request due to invalid parameters. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D~1storyboard.vtt/get/responses/400/content/application~1json/schema' example: code: 3 message: Invalid parameter '404': description: Video asset not found. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D~1storyboard.vtt/get/responses/400/content/application~1json/schema' example: code: 5 message: Not Found /{PLAYBACK_ID}/storyboard.vtt: get: summary: Retrieve Storyboard Metadata in WebVTT Format description: Fetch metadata for the [storyboard image in WebVTT format](https://docs.mux.com/guides/create-timeline-hover-previews#webvtt), detailing the coordinates and time ranges of each thumbnail. operationId: get-vtt-storyboard servers: - url: https://image.mux.com tags: - Storyboards parameters: - $ref: '#/components/parameters/playback_id' - $ref: '#/components/parameters/token' - $ref: '#/components/parameters/program_start_time' - $ref: '#/components/parameters/program_end_time' - $ref: '#/components/parameters/asset_start_time' - $ref: '#/components/parameters/asset_end_time' responses: '200': description: WebVTT metadata retrieved successfully. content: text/vtt: schema: type: string '400': description: Bad request due to invalid parameters. content: application/json: schema: type: object properties: error: type: object required: - message properties: message: type: string description: Description of the error messages: type: array items: type: string description: Description of the errors type: type: string description: Category of the error code: type: integer format: int32 description: Internal error code code: type: integer format: int32 description: Internal error code message: type: string description: Description of the error example: code: 3 message: Invalid parameter '404': description: Video asset not found. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D~1storyboard.vtt/get/responses/400/content/application~1json/schema' example: code: 5 message: Not Found /{PLAYBACK_ID}/storyboard.json: get: summary: Retrieve Storyboard Metadata in JSON Format description: Fetch metadata for the [storyboard image in JSON format](https://docs.mux.com/guides/create-timeline-hover-previews#json), detailing the coordinates and time ranges of each thumbnail. operationId: get-json-storyboard servers: - url: https://image.mux.com tags: - Storyboards parameters: - $ref: '#/components/parameters/playback_id' - $ref: '#/components/parameters/token' - $ref: '#/components/parameters/program_start_time' - $ref: '#/components/parameters/program_end_time' - $ref: '#/components/parameters/asset_start_time' - $ref: '#/components/parameters/asset_end_time' - name: format in: query description: The format of the storyboard image URL in the response. Can be either 'jpg', 'png', or 'webp'. Defaults to 'jpg'. schema: type: string enum: - jpg - png - webp responses: '200': description: JSON storyboard retrieved successfully. content: application/json: schema: type: string '400': description: Bad request due to invalid parameters. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D~1storyboard.vtt/get/responses/400/content/application~1json/schema' example: code: 3 message: Invalid parameter '404': description: Video asset not found. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D~1storyboard.vtt/get/responses/400/content/application~1json/schema' example: code: 5 message: Not Found /{PLAYBACK_ID}.m3u8: get: summary: Retrieve HLS Manifest description: Fetch an HLS (HTTP Live Streaming) playlist for the specified video asset, with optional query parameters to [modify playback behavior](https://docs.mux.com/guides/modify-playback-behavior). operationId: get-hls-manifest servers: - url: https://stream.mux.com tags: - Streaming parameters: - $ref: '#/components/parameters/playback_id' - $ref: '#/components/parameters/token' - name: redundant_streams in: query description: Include [HLS redundant streams](https://docs.mux.com/guides/play-your-videos#add-delivery-redundancy-with-redundant-streams) in the manifest. schema: type: boolean - name: roku_trick_play in: query description: Add support for [timeline hover previews on Roku devices](https://docs.mux.com/guides/create-timeline-hover-previews#roku-trick-play). schema: type: boolean - name: default_subtitles_lang in: query description: Set the [default subtitles/captions language](https://docs.mux.com/guides/add-subtitles-to-your-videos#showing-subtitles-by-default) (BCP47 compliant language code). schema: type: string - name: max_resolution in: query description: Set the [maximum resolution](https://docs.mux.com/guides/control-playback-resolution#specify-maximum-resolution) of renditions included in the manifest. schema: type: string enum: - 270p - 360p - 480p - 540p - 720p - 1080p - 1440p - 2160p - name: min_resolution in: query description: Set the [minimum resolution](https://docs.mux.com/guides/control-playback-resolution#specify-minimum-resolution) of renditions included in the manifest. schema: type: string enum: - 270p - 360p - 480p - 540p - 720p - 1080p - 1440p - 2160p - name: rendition_order in: query description: Set the logic to [order renditions in the HLS manifest](https://www.mux.com/blog/more-tools-to-control-playback-behavior-min-resolution-and-rendition-order#rendition_order). schema: type: string enum: - desc - $ref: '#/components/parameters/program_start_time' - $ref: '#/components/parameters/program_end_time' - $ref: '#/components/parameters/asset_start_time' - $ref: '#/components/parameters/asset_end_time' - name: exclude_pdt in: query description: If set to true, EXT-X-PROGRAM-DATE-TIME tags will be omitted from HLS manifests for assets from live streams. schema: type: boolean responses: '200': description: HLS playlist retrieved successfully. content: application/vnd.apple.mpegurl: schema: type: string '400': description: Bad request due to invalid parameters. content: application/json: schema: type: object properties: error: type: object required: - message properties: message: type: string description: Description of the error messages: type: array items: type: string description: Description of the errors type: type: string description: Category of the error code: type: integer format: int32 description: Internal error code code: type: integer format: int32 description: Internal error code message: type: string description: Description of the error example: code: 3 message: Invalid parameter '404': description: Video asset not found. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D.m3u8/get/responses/400/content/application~1json/schema' example: code: 5 message: Not Found /{PLAYBACK_ID}/{FILENAME}: get: summary: Retrieve a Static Rendition description: Fetch a static rendition (usually an MP4 or M4A file) of the specified video asset. [MP4 Support](https://docs.mux.com/guides/enable-static-mp4-renditions) must be enabled on the asset before using these URLs. operationId: get-static-rendition servers: - url: https://stream.mux.com tags: - Streaming parameters: - $ref: '#/components/parameters/playback_id' - $ref: '#/components/parameters/token' - name: FILENAME in: path required: true description: The filename of the static rendition file, as returned from the static renditions API files list. [See the MP4 guide for more details.](https://docs.mux.com/guides/enable-static-mp4-renditions) schema: type: string enum: - capped-1080p.mp4 - audio.m4a - low.mp4 - medium.mp4 - high.mp4 responses: '200': description: MP4 file retrieved successfully. content: video/mp4: schema: type: string format: binary audio/m4a: schema: type: string format: binary '400': description: Invalid request due to missing or incorrect parameters. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D.m3u8/get/responses/400/content/application~1json/schema' example: code: 3 message: Invalid parameter '404': description: The requested video asset or rendition was not found. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D.m3u8/get/responses/400/content/application~1json/schema' example: code: 5 message: Not Found /{PLAYBACK_ID}/text/{TRACK_ID}.vtt: get: summary: Retrieve a WebVTT File for a Text Track description: Fetch a standalone WebVTT version of a text track from an asset. operationId: get-vtt-text-track servers: - url: https://stream.mux.com tags: - Captions and Transcripts parameters: - $ref: '#/components/parameters/playback_id' - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/token' responses: '200': description: WebVTT retrieved successfully. content: text/vtt: schema: type: string '400': description: Invalid request due to missing or incorrect parameters. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D.m3u8/get/responses/400/content/application~1json/schema' example: code: 3 message: Invalid parameter '404': description: The requested text track was not found. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D.m3u8/get/responses/400/content/application~1json/schema' example: code: 5 message: Not Found /{PLAYBACK_ID}/text/{TRACK_ID}.txt: get: summary: Retrieve a Transcript description: Fetch a [transcript of an asset](https://docs.mux.com/guides/add-autogenerated-captions-and-use-transcripts#retrieve-a-transcript). This is only possible for assets with a text track generated using the [VOD generated captions feature](https://docs.mux.com/guides/add-autogenerated-captions-and-use-transcripts). operationId: get-transcript servers: - url: https://stream.mux.com tags: - Captions and Transcripts parameters: - $ref: '#/components/parameters/playback_id' - $ref: '#/components/parameters/track_id' - $ref: '#/components/parameters/token' responses: '200': description: Transcript retrieved successfully. content: text/plain: schema: type: string '400': description: Invalid request due to missing or incorrect parameters. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D.m3u8/get/responses/400/content/application~1json/schema' example: code: 3 message: Invalid parameter '404': description: The requested text track was not found. content: application/json: schema: $ref: '#/paths/~1%7BPLAYBACK_ID%7D.m3u8/get/responses/400/content/application~1json/schema' example: code: 5 message: Not Found /counts: get: summary: Retrieve the View and Viewer Counts description: '[Fetch the real-time view and viewer counts for a video](https://docs.mux.com/guides/see-how-many-people-are-watching).' operationId: get-engagement-counts servers: - url: https://stats.mux.com tags: - View and Viewer Counts parameters: - $ref: '#/components/parameters/token' responses: '200': description: Counts retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/StatsCountsResponse' '403': description: Bad request due to missing or invalid JWT token. content: application/json: schema: $ref: '#/components/schemas/StatsCountsErrorResponse' '500': description: Server timeout or unknown error. content: application/json: schema: $ref: '#/components/schemas/StatsCountsErrorResponse' components: securitySchemes: accessToken: description: 'The Mux Video API uses an Access Token and Secret Key for authentication. If you haven''t already, [generate a new Access Token](https://dashboard.mux.com/settings/access-tokens) in the Access Token settings of your Mux account dashboard. Once you have an Access Token ID and Secret, you can then simply include those as the username (id) and password (secret) in the same way you use traditional basic auth. ' scheme: basic type: http authorizationToken: description: 'OAuth authorization token, used as a Bearer Auth header ' scheme: bearer type: http schemas: CreateTranscriptionVocabularyRequest: type: object properties: name: type: string description: The user-supplied name of the Transcription Vocabulary. phrases: type: array items: $ref: '#/components/schemas/TranscriptionVocabularyPhrase' maxItems: 1000 description: Phrases, individual words, or proper names to include in the Transcription Vocabulary. When the Transcription Vocabulary is attached to a live stream's `generated_subtitles`, the probability of successful speech recognition for these words or phrases is boosted. passthrough: type: string description: Arbitrary user-supplied metadata set for the Transcription Vocabulary. Max 255 characters. required: - phrases UpdateTranscriptionVocabularyRequest: type: object properties: name: type: string description: The user-supplied name of the Transcription Vocabulary. phrases: type: array items: $ref: '#/components/schemas/TranscriptionVocabularyPhrase' maxItems: 1000 description: Phrases, individual words, or proper names to include in the Transcription Vocabulary. When the Transcription Vocabulary is attached to a live stream's `generated_subtitles`, the probability of successful speech recognition for these words or phrases is boosted. passthrough: type: string description: Arbitrary user-supplied metadata set for the Transcription Vocabulary. Max 255 characters. required: - phrases TranscriptionVocabularyPhrase: type: string description: A phrase or word belonging to a Transcription Vocabulary. minLength: 1 maxLength: 32 TranscriptionVocabulary: type: object required: - id - updated_at - created_at properties: id: type: string description: Unique identifier for the Transcription Vocabulary name: type: string description: The user-supplied name of the Transcription Vocabulary. phrases: type: array items: $ref: '#/components/schemas/TranscriptionVocabularyPhrase' maxItems: 1000 description: Phrases, individual words, or proper names to include in the Transcription Vocabulary. When the Transcription Vocabulary is attached to a live stream's `generated_subtitles` configuration, the probability of successful speech recognition for these words or phrases is boosted. passthrough: type: string description: Arbitrary user-supplied metadata set for the Transcription Vocabulary. Max 255 characters. created_at: type: string format: int64 description: Time the Transcription Vocabulary was created, defined as a Unix timestamp (seconds since epoch). updated_at: type: string format: int64 description: Time the Transcription Vocabulary was updated, defined as a Unix timestamp (seconds since epoch). TranscriptionVocabularyResponse: type: object required: - data properties: data: $ref: '#/components/schemas/TranscriptionVocabulary' ListTranscriptionVocabulariesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/TranscriptionVocabulary' AssetResponse: type: object required: - data properties: data: $ref: '#/components/schemas/Asset' AssetMetadata: type: object description: 'Customer provided metadata about this asset. Note: This metadata may be publicly available via the video player. Do not include PII or sensitive information. ' properties: title: type: string maxLength: 512 description: The asset title. Max 512 code points. creator_id: type: string maxLength: 128 description: This is an identifier you provide to keep track of the creator of the asset. Max 128 code points. external_id: type: string maxLength: 128 description: This is an identifier you provide to link the asset to your own data. Max 128 code points. AssetProgress: type: object description: Detailed state information about the asset ingest process. properties: state: type: string enum: - ingesting - transcoding - completed - live - errored description: 'The detailed state of the asset ingest process. This field is useful for relaying more granular processing information to end users when a [non-standard input is encountered](https://www.mux.com/docs/guides/minimize-processing-time#non-standard-input). - `ingesting`: Asset is being ingested (initial processing before or after transcoding). While in this state, the `progress` percentage will be 0. - `transcoding`: Asset is undergoing non-standard transcoding. - `completed`: Asset processing is complete (`status` is `ready`). While in this state, the `progress` percentage will be 100. - `live`: Asset is a live stream currently in progress. While in this state, the `progress` percentage will be -1. - `errored`: Asset has encountered an error (`status` is `errored`). While in this state, the `progress` percentage will be -1. ' progress: type: number format: double minimum: -1 maximum: 100 description: Represents the estimated completion percentage. Returns `0 - 100` when in `ingesting`, `transcoding`, or `completed` state, and `-1` when in `live` or `errored` state. required: - state - progress AssetOptions: type: object properties: input: type: array description: Deprecated. Use `inputs` instead, which accepts an identical type. deprecated: true x-mux-doc-decorators-hidden-children: all items: $ref: '#/components/schemas/InputSettings' inputs: type: array description: An array of objects that each describe an input file to be used to create the asset. As a shortcut, input can also be a string URL for a file when only one input file is used. See `input[].url` for requirements. items: $ref: '#/components/schemas/InputSettings' playback_policy: type: array items: $ref: '#/components/schemas/PlaybackPolicy' deprecated: true description: Deprecated. Use `playback_policies` instead, which accepts an identical type. x-mux-doc-decorators-hidden-children: all playback_policies: type: array items: $ref: '#/components/schemas/PlaybackPolicy' description: 'An array of playback policy names that you want applied to this asset and available through `playback_ids`. Options include: * `"public"` (anyone with the playback URL can stream the asset). * `"signed"` (an additional access token is required to play the asset). If no `playback_policies` are set, the asset will have no playback IDs and will therefore not be playable. For simplicity, a single string name can be used in place of the array in the case of only one playback policy. ' advanced_playback_policies: type: array items: $ref: '#/components/schemas/CreatePlaybackIDRequest' description: 'An array of playback policy objects that you want applied to this asset and available through `playback_ids`. `advanced_playback_policies` must be used instead of `playback_policies` when creating a DRM playback ID. ' per_title_encode: type: boolean format: boolean x-mux-doc-decorators: - hidden deprecated: true passthrough: type: string description: 'You can set this field to anything you want. It will be included in the asset details and related webhooks. If you''re looking for more structured metadata, such as `title` or `external_id`, you can use the `meta` object instead. **Max: 255 characters**.' mp4_support: type: string deprecated: true enum: - none - standard - capped-1080p - audio-only - audio-only,capped-1080p description: 'Deprecated. See the [Static Renditions API](https://www.mux.com/docs/guides/enable-static-mp4-renditions) for the updated API. Specify what level of support for mp4 playback. You may not enable both `mp4_support` and `static_renditions`. * The `capped-1080p` option produces a single MP4 file, called `capped-1080p.mp4`, with the video resolution capped at 1080p. This option produces an `audio.m4a` file for an audio-only asset. * The `audio-only` option produces a single M4A file, called `audio.m4a` for a video or an audio-only asset. MP4 generation will error when this option is specified for a video-only asset. * The `audio-only,capped-1080p` option produces both the `audio.m4a` and `capped-1080p.mp4` files. Only the `capped-1080p.mp4` file is produced for a video-only asset, while only the `audio.m4a` file is produced for an audio-only asset. The `standard`(deprecated) option produces up to three MP4 files with different levels of resolution (`high.mp4`, `medium.mp4`, `low.mp4`, or `audio.m4a` for an audio-only asset). MP4 files are not produced for `none` (default). In most cases you should use our default HLS-based streaming playback (`{playback_id}.m3u8`) which can automatically adjust to viewers'' connection speeds, but an mp4 can be useful for some legacy devices or downloading for offline playback. See the [Download your videos guide](https://docs.mux.com/guides/enable-static-mp4-renditions) for more information. ' x-mux-doc-decorators-deprecated-enum-values: - standard normalize_audio: type: boolean format: boolean description: Normalize the audio track loudness level. This parameter is only applicable to on-demand (not live) assets. default: false master_access: type: string enum: - none - temporary description: Specify what level (if any) of support for master access. Master access can be enabled temporarily for your asset to be downloaded. See the [Download your videos guide](https://docs.mux.com/guides/enable-static-mp4-renditions) for more information. test: type: boolean format: boolean description: Marks the asset as a test asset when the value is set to true. A Test asset can help evaluate the Mux Video APIs without incurring any cost. There is no limit on number of test assets created. Test asset are watermarked with the Mux logo, limited to 10 seconds, deleted after 24 hrs. max_resolution_tier: type: string enum: - 1080p - 1440p - 2160p description: Max resolution tier can be used to control the maximum `resolution_tier` your asset is encoded, stored, and streamed at. If not set, this defaults to `1080p`. encoding_tier: type: string deprecated: true enum: - smart - baseline - premium description: This field is deprecated. Please use `video_quality` instead. The encoding tier informs the cost, quality, and available platform features for the asset. The default encoding tier for an account can be set in the Mux Dashboard. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) video_quality: type: string enum: - basic - plus - premium description: The video quality controls the cost, quality, and available platform features for the asset. The default video quality for an account can be set in the Mux Dashboard. This field replaces the deprecated `encoding_tier` value. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) static_renditions: type: array items: $ref: '#/components/schemas/CreateStaticRenditionRequest' description: An array of static renditions to create for this asset. You may not enable both `static_renditions` and `mp4_support (the latter being deprecated)` meta: $ref: '#/components/schemas/AssetMetadata' copy_overlays: type: boolean default: true description: If the created asset is a clip, this controls whether overlays are copied from the source asset. UpdateLiveStreamNewAssetSettings: type: object description: 'Updates the new asset settings to use to generate a new asset for this live stream. Only the `mp4_support`, `master_access`, and `video_quality` settings may be updated. ' properties: mp4_support: type: string deprecated: true enum: - none - standard - capped-1080p - audio-only - audio-only,capped-1080p description: 'Deprecated. See the [Static Renditions API](https://www.mux.com/docs/guides/enable-static-mp4-renditions#during-live-stream-creation) for the updated API. Specify what level of support for mp4 playback should be added to new assets generated from this live stream. * The `none` option disables MP4 support for new assets. MP4 files will not be produced for an asset generated from this live stream. * The `capped-1080p` option produces a single MP4 file, called `capped-1080p.mp4`, with the video resolution capped at 1080p. This option produces an `audio.m4a` file for an audio-only asset. * The `audio-only` option produces a single M4A file, called `audio.m4a` for a video or an audio-only asset. MP4 generation will error when this option is specified for a video-only asset. * The `audio-only,capped-1080p` option produces both the `audio.m4a` and `capped-1080p.mp4` files. Only the `capped-1080p.mp4` file is produced for a video-only asset, while only the `audio.m4a` file is produced for an audio-only asset. * The `standard`(deprecated) option produces up to three MP4 files with different levels of resolution (`high.mp4`, `medium.mp4`, `low.mp4`, or `audio.m4a` for an audio-only asset). ' x-mux-doc-decorators-deprecated-enum-values: - standard master_access: type: string description: Add or remove access to the master version of the video. enum: - temporary - none video_quality: type: string enum: - plus - premium description: The video quality controls the cost, quality, and available platform features for the asset. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) meta: $ref: '#/components/schemas/AssetMetadata' CreateAssetRequest: allOf: - $ref: '#/components/schemas/AssetOptions' - required: - inputs CreateLiveStreamRequest: type: object properties: playback_policy: deprecated: true description: Deprecated. Use `playback_policies` instead, which accepts an identical type. x-mux-doc-decorators-hidden-children: all type: array items: $ref: '#/components/schemas/PlaybackPolicy' playback_policies: description: 'An array of playback policy names that you want applied to this live stream and available through `playback_ids`. Options include: * `"public"` (anyone with the playback URL can stream the live stream). * `"signed"` (an additional access token is required to play the live stream). If no `playback_policies` is set, the live stream will have no playback IDs and will therefore not be playable. For simplicity, a single string name can be used in place of the array in the case of only one playback policy. ' type: array items: $ref: '#/components/schemas/PlaybackPolicy' advanced_playback_policies: type: array items: $ref: '#/components/schemas/CreatePlaybackIDRequest' description: 'An array of playback policy objects that you want applied on this live stream and available through `playback_ids`. `advanced_playback_policies` must be used instead of `playback_policies` when creating a DRM playback ID. ' new_asset_settings: $ref: '#/components/schemas/AssetOptions' reconnect_window: type: number format: float default: 60 minimum: 0 maximum: 1800 description: 'When live streaming software disconnects from Mux, either intentionally or due to a drop in the network, the Reconnect Window is the time in seconds that Mux should wait for the streaming software to reconnect before considering the live stream finished and completing the recorded asset. Defaults to 60 seconds on the API if not specified. If not specified directly, Standard Latency streams have a Reconnect Window of 60 seconds; Reduced and Low Latency streams have a default of 0 seconds, or no Reconnect Window. For that reason, we suggest specifying a value other than zero for Reduced and Low Latency streams. Reduced and Low Latency streams with a Reconnect Window greater than zero will insert slate media into the recorded asset while waiting for the streaming software to reconnect or when there are brief interruptions in the live stream media. When using a Reconnect Window setting higher than 60 seconds with a Standard Latency stream, we highly recommend enabling slate with the `use_slate_for_standard_latency` option. ' use_slate_for_standard_latency: type: boolean format: boolean default: false description: By default, Standard Latency live streams do not have slate media inserted while waiting for live streaming software to reconnect to Mux. Setting this to true enables slate insertion on a Standard Latency stream. reconnect_slate_url: type: string description: The URL of the image file that Mux should download and use as slate media during interruptions of the live stream media. This file will be downloaded each time a new recorded asset is created from the live stream. If this is not set, the default slate media will be used. passthrough: type: string audio_only: type: boolean description: Force the live stream to only process the audio track when the value is set to true. Mux drops the video track if broadcasted. embedded_subtitles: type: array items: $ref: '#/components/schemas/LiveStreamEmbeddedSubtitleRequest' description: Describe the embedded closed caption contents of the incoming live stream. generated_subtitles: type: array items: $ref: '#/components/schemas/LiveStreamGeneratedSubtitleRequest' description: Configure the incoming live stream to include subtitles created with automatic speech recognition. Each Asset created from a live stream with `generated_subtitles` configured will automatically receive two text tracks. The first of these will have a `text_source` value of `generated_live`, and will be available with `ready` status as soon as the stream is live. The second text track will have a `text_source` value of `generated_live_final` and will contain subtitles with improved accuracy, timing, and formatting. However, `generated_live_final` tracks will not be available in `ready` status until the live stream ends. If an Asset has both `generated_live` and `generated_live_final` tracks that are `ready`, then only the `generated_live_final` track will be included during playback. reduced_latency: type: boolean format: boolean deprecated: true x-mux-doc-decorators: - hidden description: 'This field is deprecated. Please use `latency_mode` instead. Latency is the time from when the streamer transmits a frame of video to when you see it in the player. Set this if you want lower latency for your live stream. Read more here: https://mux.com/blog/reduced-latency-for-mux-live-streaming-now-available/' low_latency: type: boolean format: boolean deprecated: true x-mux-doc-decorators: - hidden description: This field is deprecated. Please use `latency_mode` instead. Latency is the time from when the streamer transmits a frame of video to when you see it in the player. Setting this option will enable compatibility with the LL-HLS specification for low-latency streaming. This typically has lower latency than Reduced Latency streams, and cannot be combined with Reduced Latency. latency_mode: type: string enum: - low - reduced - standard description: Latency is the time from when the streamer transmits a frame of video to when you see it in the player. Set this as an alternative to setting low latency or reduced latency flags. test: type: boolean format: boolean description: Marks the live stream as a test live stream when the value is set to true. A test live stream can help evaluate the Mux Video APIs without incurring any cost. There is no limit on number of test live streams created. Test live streams are watermarked with the Mux logo and limited to 5 minutes. The test live stream is disabled after the stream is active for 5 mins and the recorded asset also deleted after 24 hours. simulcast_targets: type: array items: $ref: '#/components/schemas/CreateSimulcastTargetRequest' max_continuous_duration: $ref: '#/components/schemas/MaxContinuousDuration' meta: $ref: '#/components/schemas/LiveStreamMetadata' CreatePlaybackIDRequest: type: object properties: policy: $ref: '#/components/schemas/PlaybackPolicy' drm_configuration_id: type: string description: The DRM configuration used by this playback ID. Must only be set when `policy` is set to `drm`. CreatePlaybackIDResponse: type: object required: - data properties: data: $ref: '#/components/schemas/PlaybackID' CreateUploadRequest: type: object required: - cors_origin properties: timeout: type: integer format: int32 default: 3600 minimum: 60 maximum: 604800 description: Max time in seconds for the signed upload URL to be valid. If a successful upload has not occurred before the timeout limit, the direct upload is marked `timed_out` x-stainless-naming: python: method_argument: url_timeout cors_origin: type: string description: If the upload URL will be used in a browser, you must specify the origin in order for the signed URL to have the correct CORS headers. new_asset_settings: $ref: '#/components/schemas/AssetOptions' test: type: boolean format: boolean description: Indicates if this is a test Direct Upload, in which case the Asset that gets created will be a `test` Asset. GetAssetInputInfoResponse: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/InputInfo' GetAssetPlaybackIDResponse: type: object required: - data properties: data: $ref: '#/components/schemas/PlaybackID' GetLiveStreamPlaybackIDResponse: type: object required: - data properties: data: $ref: '#/components/schemas/PlaybackID' ListAssetsResponse: type: object required: - data - next_cursor properties: next_cursor: type: string description: If there are more pages of data, this field will contain a string that can be used with the `cursor` querystring parameter to fetch the next page of data. nullable: true data: type: array items: $ref: '#/components/schemas/Asset' ListLiveStreamsResponse: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/LiveStream' ListSigningKeysResponse: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/SigningKey' ListUploadsResponse: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Upload' LiveStreamResponse: type: object required: - data properties: data: $ref: '#/components/schemas/LiveStream' SigningKeyResponse: type: object required: - data properties: data: $ref: '#/components/schemas/SigningKey' SigningKeyCreateResponse: type: object required: - data properties: data: allOf: - $ref: '#/components/schemas/SigningKey' - required: - private_key SignalLiveStreamCompleteResponse: type: object required: - data properties: data: type: object DisableLiveStreamResponse: type: object required: - data properties: data: type: object EnableLiveStreamResponse: type: object required: - data properties: data: type: object UpdateAssetRequest: type: object properties: passthrough: type: string description: 'You can set this field to anything you want. It will be included in the asset details and related webhooks. If you''re looking for more structured metadata, such as `title` or `external_id` , you can use the `meta` object instead. **Max: 255 characters**. In order to clear this value, the field should be included with an empty string value.' meta: $ref: '#/components/schemas/AssetMetadata' UpdateAssetMP4SupportRequest: type: object deprecated: true required: - mp4_support properties: mp4_support: type: string description: 'Specify what level of support for mp4 playback. * The `capped-1080p` option produces a single MP4 file, called `capped-1080p.mp4`, with the video resolution capped at 1080p. This option produces an `audio.m4a` file for an audio-only asset. * The `audio-only` option produces a single M4A file, called `audio.m4a` for a video or an audio-only asset. MP4 generation will error when this option is specified for a video-only asset. * The `audio-only,capped-1080p` option produces both the `audio.m4a` and `capped-1080p.mp4` files. Only the `capped-1080p.mp4` file is produced for a video-only asset, while only the `audio.m4a` file is produced for an audio-only asset. The `standard`(deprecated) option produces up to three MP4 files with different levels of resolution (`high.mp4`, `medium.mp4`, `low.mp4`, or `audio.m4a` for an audio-only asset). `none` will delete the MP4s from the asset in question. ' enum: - standard - none - capped-1080p - audio-only - audio-only,capped-1080p x-mux-doc-decorators-deprecated-enum-values: - standard UpdateAssetMasterAccessRequest: type: object required: - master_access properties: master_access: type: string description: Add or remove access to the master version of the video. enum: - temporary - none UpdateLiveStreamEmbeddedSubtitlesRequest: type: object properties: embedded_subtitles: type: array items: $ref: '#/components/schemas/LiveStreamEmbeddedSubtitleRequest' description: Describe the embedded closed caption contents of the incoming live stream. UpdateLiveStreamGeneratedSubtitlesRequest: type: object properties: generated_subtitles: type: array items: $ref: '#/components/schemas/LiveStreamGeneratedSubtitleRequest' description: Update automated speech recognition subtitle configuration for a live stream. At most one subtitle track is allowed. x-mux-no-required-properties: true UpdateLiveStreamRequest: type: object properties: passthrough: type: string description: Arbitrary user-supplied metadata set for the live stream. Max 255 characters. In order to clear this value, the field should be included with an empty-string value. latency_mode: type: string enum: - low - reduced - standard description: Latency is the time from when the streamer transmits a frame of video to when you see it in the player. Set this as an alternative to setting low latency or reduced latency flags. reconnect_window: type: number format: float default: 60 minimum: 0 maximum: 1800 description: 'When live streaming software disconnects from Mux, either intentionally or due to a drop in the network, the Reconnect Window is the time in seconds that Mux should wait for the streaming software to reconnect before considering the live stream finished and completing the recorded asset. If not specified directly, Standard Latency streams have a Reconnect Window of 60 seconds; Reduced and Low Latency streams have a default of 0 seconds, or no Reconnect Window. For that reason, we suggest specifying a value other than zero for Reduced and Low Latency streams. Reduced and Low Latency streams with a Reconnect Window greater than zero will insert slate media into the recorded asset while waiting for the streaming software to reconnect or when there are brief interruptions in the live stream media. When using a Reconnect Window setting higher than 60 seconds with a Standard Latency stream, we highly recommend enabling slate with the `use_slate_for_standard_latency` option. ' use_slate_for_standard_latency: type: boolean format: boolean default: false description: By default, Standard Latency live streams do not have slate media inserted while waiting for live streaming software to reconnect to Mux. Setting this to true enables slate insertion on a Standard Latency stream. reconnect_slate_url: type: string description: The URL of the image file that Mux should download and use as slate media during interruptions of the live stream media. This file will be downloaded each time a new recorded asset is created from the live stream. Set this to a blank string to clear the value so that the default slate media will be used. max_continuous_duration: $ref: '#/components/schemas/MaxContinuousDuration' new_asset_settings: $ref: '#/components/schemas/UpdateLiveStreamNewAssetSettings' meta: $ref: '#/components/schemas/LiveStreamMetadata' UploadResponse: type: object required: - data properties: data: $ref: '#/components/schemas/Upload' CreatePlaybackRestrictionRequest: type: object required: - referrer - user_agent properties: referrer: $ref: '#/components/schemas/ReferrerDomainRestrictionRequest' user_agent: $ref: '#/components/schemas/UserAgentRestrictionRequest' PlaybackRestrictionResponse: type: object required: - data properties: data: $ref: '#/components/schemas/PlaybackRestriction' ListPlaybackRestrictionsResponse: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/PlaybackRestriction' UpdateReferrerDomainRestrictionRequest: type: object description: A list of domains allowed to play your videos. required: - allowed_domains properties: allowed_domains: type: array items: type: string description: "List of domains allowed to play videos. Possible values are\n * `[]` Empty Array indicates deny video playback requests for all domains\n * `[\"*\"]` A Single Wildcard `*` entry\ \ means allow video playback requests from any domain\n * `[\"*.example.com\", \"foo.com\"]` A list of up to 10 domains or valid dns-style wildcards\n" allow_no_referrer: type: boolean default: false description: A boolean to determine whether to allow or deny HTTP requests without `Referer` HTTP request header. Playback requests coming from non-web/native applications like iOS, Android or smart TVs will not have a `Referer` HTTP header. Set this value to `true` to allow these playback requests. UpdateUserAgentRestrictionRequest: type: object required: - allow_no_user_agent - allow_high_risk_user_agent properties: allow_no_user_agent: type: boolean default: true description: Whether or not to allow views without a `User-Agent` HTTP request header. allow_high_risk_user_agent: type: boolean default: true description: Whether or not to allow high risk user agents. The high risk user agents are defined by Mux. SimulcastTargetResponse: type: object required: - data properties: data: $ref: '#/components/schemas/SimulcastTarget' CreateSimulcastTargetRequest: type: object required: - url properties: passthrough: type: string description: Arbitrary user-supplied metadata set by you when creating a simulcast target. stream_key: type: string description: Stream Key represents a stream identifier on the third party live streaming service to send the parent live stream to. Only used for RTMP(s) simulcast destinations. url: type: string description: 'The RTMP(s) or SRT endpoint for a simulcast destination. * For RTMP(s) destinations, this should include the application name for the third party live streaming service, for example: `rtmp://live.example.com/app`. * For SRT destinations, this should be a fully formed SRT connection string, for example: `srt://srt-live.example.com:1234?streamid={stream_key}&passphrase={srt_passphrase}`. Note: SRT simulcast targets can only be used when an source is connected over SRT. ' CreateStaticRenditionRequest: type: object required: - resolution properties: resolution: type: string enum: - highest - audio-only - 2160p - 1440p - 1080p - 720p - 540p - 480p - 360p - 270p passthrough: type: string description: Arbitrary user-supplied metadata set for the static rendition. Max 255 characters. CreateStaticRenditionResponse: type: object required: - data properties: data: $ref: '#/components/schemas/StaticRendition' UpdateLiveStreamNewAssetSettingsStaticRenditionsRequest: type: object required: - static_renditions properties: static_renditions: type: array items: $ref: '#/components/schemas/CreateStaticRenditionRequest' CreateTrackRequest: type: object required: - url - type - language_code properties: url: type: string description: 'The URL of the file that Mux should download and use. * For `audio` tracks, the URL is the location of the audio file for Mux to download, for example an M4A, WAV, or MP3 file. Mux supports most audio file formats and codecs, but for fastest processing, you should [use standard inputs wherever possible](https://docs.mux.com/guides/minimize-processing-time). * For `text` tracks, the URL is the location of subtitle/captions file. Mux supports [SubRip Text (SRT)](https://en.wikipedia.org/wiki/SubRip) and [Web Video Text Tracks](https://www.w3.org/TR/webvtt1/) formats for ingesting Subtitles and Closed Captions. ' type: type: string enum: - text - audio text_type: type: string enum: - subtitles language_code: type: string description: The language code of this track. The value must be a valid BCP 47 specification compliant value. For example, en for English or en-US for the US version of English. name: type: string description: The name of the track containing a human-readable description. This value must be unique within each group of `text` or `audio` track types. The HLS manifest will associate the `text` or `audio` track with this value. For example, set the value to "English" for subtitles text track with `language_code` as en-US. If this parameter is not included, Mux will auto-populate a value based on the `language_code` value. closed_captions: type: boolean description: Indicates the track provides Subtitles for the Deaf or Hard-of-hearing (SDH). passthrough: type: string description: Arbitrary user-supplied metadata set for the track either when creating the asset or track. CreateTrackResponse: type: object required: - data properties: data: $ref: '#/components/schemas/Track' GenerateTrackSubtitlesResponse: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Track' UpdateAssetTrackRequest: type: object properties: language_code: type: string description: The language code of this track. The value must be a valid BCP 47 specification compliant value. For example, en for English or en-US for the US version of English. name: type: string description: The name of the track containing a human-readable description. This value must be unique within each group of `text` or `audio` track types. The HLS manifest will associate the `text` or `audio` track with this value. For example, set the value to "English" for subtitles text track with `language_code` as en-US. If this parameter is not included, Mux will auto-populate a value based on the `language_code` value. closed_captions: type: boolean description: Indicates the track provides Subtitles for the Deaf or Hard-of-hearing (SDH). passthrough: type: string description: Arbitrary user-supplied metadata set for the track either when creating the asset or track. UpdateAssetTrackResponse: type: object required: - data properties: data: $ref: '#/components/schemas/Track' GenerateTrackSubtitlesRequest: type: object required: - generated_subtitles properties: generated_subtitles: type: array items: $ref: '#/components/schemas/AssetGeneratedSubtitleSettings' description: Generate subtitle tracks using automatic speech recognition with this configuration. GetAssetOrLiveStreamIdResponse: type: object required: - data properties: data: type: object required: - id - object - policy properties: id: type: string description: The Playback ID used to retrieve the corresponding asset or the live stream ID policy: $ref: '#/components/schemas/PlaybackPolicy' object: type: object required: - id - type description: Describes the Asset or LiveStream object associated with the playback ID. properties: id: type: string description: The identifier of the object. type: type: string enum: - asset - live_stream description: Identifies the object type associated with the playback ID. StaticRendition: type: object properties: name: type: string enum: - low.mp4 - medium.mp4 - high.mp4 - highest.mp4 - audio.m4a - capped-1080p.mp4 - 2160p.mp4 - 1440p.mp4 - 1080p.mp4 - 720p.mp4 - 540p.mp4 - 480p.mp4 - 360p.mp4 - 270p.mp4 description: Name of the static rendition file ext: type: string description: Extension of the static rendition file enum: - mp4 - m4a height: type: integer format: int32 description: The height of the static rendition's file in pixels width: type: integer format: int32 description: The width of the static rendition's file in pixels bitrate: type: integer format: int64 description: The bitrate in bits per second filesize: type: string format: int64 description: The file size in bytes type: type: string description: Indicates the static rendition type of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. enum: - standard - advanced status: type: string description: 'Indicates the status of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. * `ready` indicates the MP4 has been generated and is ready for download * `preparing` indicates the asset has not been ingested or the static rendition is still being generated after an asset is ready * `skipped` indicates the static rendition will not be generated because the requested resolution conflicts with the asset attributes after the asset has been ingested * `errored` indicates the static rendition cannot be generated. For example, an asset could not be ingested ' enum: - ready - preparing - skipped - errored resolution_tier: type: string description: Indicates the resolution tier of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. enum: - 2160p - 1440p - 1080p - 720p - audio-only resolution: type: string description: Indicates the resolution of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. enum: - highest - audio-only - 2160p - 1440p - 1080p - 720p - 540p - 480p - 360p - 270p x-mux-doc-decorators-hidden-enum-values: - 2160p - 1440p - 1080p - 720p - 540p - 480p - 360p - 270p id: type: string description: The ID of this static rendition, used in managing this static rendition. This field is only valid for `static_renditions`, not for `mp4_support`. passthrough: type: string description: Arbitrary user-supplied metadata set for the static rendition. Max 255 characters. Asset: type: object required: - id - created_at - status - max_resolution_tier - encoding_tier - master_access - progress properties: id: type: string description: Unique identifier for the Asset. Max 255 characters. created_at: type: string format: int64 description: Time the Asset was created, defined as a Unix timestamp (seconds since epoch). status: type: string enum: - preparing - ready - errored description: The status of the asset. duration: type: number format: double description: The duration of the asset in seconds (max duration for a single asset is 12 hours). max_stored_resolution: type: string enum: - Audio only - SD - HD - FHD - UHD description: This field is deprecated. Please use `resolution_tier` instead. The maximum resolution that has been stored for the asset. The asset may be delivered at lower resolutions depending on the device and bandwidth, however it cannot be delivered at a higher value than is stored. deprecated: true resolution_tier: type: string enum: - audio-only - 720p - 1080p - 1440p - 2160p description: The resolution tier that the asset was ingested at, affecting billing for ingest & storage. This field also represents the highest resolution tier that the content can be delivered at, however the actual resolution may be lower depending on the device, bandwidth, and exact resolution of the uploaded asset. max_resolution_tier: type: string enum: - 1080p - 1440p - 2160p description: Max resolution tier can be used to control the maximum `resolution_tier` your asset is encoded, stored, and streamed at. If not set, this defaults to `1080p`. encoding_tier: type: string deprecated: true enum: - smart - baseline - premium description: This field is deprecated. Please use `video_quality` instead. The encoding tier informs the cost, quality, and available platform features for the asset. The default encoding tier for an account can be set in the Mux Dashboard. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) video_quality: type: string enum: - basic - plus - premium description: The video quality controls the cost, quality, and available platform features for the asset. The default video quality for an account can be set in the Mux Dashboard. This field replaces the deprecated `encoding_tier` value. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) max_stored_frame_rate: type: number format: double description: The maximum frame rate that has been stored for the asset. The asset may be delivered at lower frame rates depending on the device and bandwidth, however it cannot be delivered at a higher value than is stored. This field may return -1 if the frame rate of the input cannot be reliably determined. aspect_ratio: type: string description: The aspect ratio of the asset in the form of `width:height`, for example `16:9`. playback_ids: type: array description: An array of Playback ID objects. Use these to create HLS playback URLs. See [Play your videos](https://docs.mux.com/guides/play-your-videos) for more details. items: $ref: '#/components/schemas/PlaybackID' tracks: type: array description: The individual media tracks that make up an asset. items: $ref: '#/components/schemas/Track' errors: type: object description: Object that describes any errors that happened when processing this asset. properties: type: type: string description: The type of error that occurred for this asset. messages: type: array description: Error messages with more details. items: type: string per_title_encode: type: boolean format: boolean x-mux-doc-decorators: - hidden deprecated: true upload_id: type: string description: Unique identifier for the Direct Upload. This is an optional parameter added when the asset is created from a direct upload. is_live: type: boolean format: boolean description: Indicates whether the live stream that created this asset is currently `active` and not in `idle` state. This is an optional parameter added when the asset is created from a live stream. passthrough: type: string description: 'You can set this field to anything you want. It will be included in the asset details and related webhooks. If you''re looking for more structured metadata, such as `title` or `external_id` , you can use the `meta` object instead. **Max: 255 characters**.' live_stream_id: type: string description: Unique identifier for the live stream. This is an optional parameter added when the asset is created from a live stream. master: type: object description: An object containing the current status of Master Access and the link to the Master MP4 file when ready. This object does not exist if `master_access` is set to `none` and when the temporary URL expires. properties: status: enum: - ready - preparing - errored type: string url: type: string description: The temporary URL to the master version of the video, as an MP4 file. This URL will expire after 24 hours. master_access: type: string enum: - temporary - none default: none mp4_support: type: string deprecated: true default: none enum: - standard - none - capped-1080p - audio-only - audio-only,capped-1080p x-mux-doc-decorators-deprecated-enum-values: - standard source_asset_id: type: string description: Asset Identifier of the video used as the source for creating the clip. normalize_audio: type: boolean default: false description: Normalize the audio track loudness level. This parameter is only applicable to on-demand (not live) assets. static_renditions: type: object description: An object containing the current status of any static renditions (mp4s). The object does not exist if no static renditions have been requested. See [Download your videos](https://docs.mux.com/guides/enable-static-mp4-renditions) for more information. properties: status: type: string default: disabled description: Indicates the status of downloadable MP4 versions of this asset. This field is only valid when `mp4_support` is enabled enum: - ready - preparing - disabled - errored files: type: array description: Array of file objects. items: $ref: '#/components/schemas/StaticRendition' recording_times: type: array description: An array of individual live stream recording sessions. A recording session is created on each encoder connection during the live stream. Additionally any time slate media is inserted during brief interruptions in the live stream media or times when the live streaming software disconnects, a recording session representing the slate media will be added with a "slate" type. items: type: object properties: started_at: type: string format: date-time description: The time at which the recording for the live stream started. The time value is Unix epoch time represented in ISO 8601 format. duration: type: number format: double description: The duration of the live stream recorded. The time value is in seconds. type: type: string enum: - content - slate description: The type of media represented by the recording session, either `content` for normal stream content or `slate` for slate media inserted during stream interruptions. non_standard_input_reasons: type: object description: An object containing one or more reasons the input file is non-standard. See [the guide on minimizing processing time](https://docs.mux.com/guides/minimize-processing-time) for more information on what a standard input is defined as. This object only exists on on-demand assets that have non-standard inputs, so if missing you can assume the input qualifies as standard. properties: video_codec: type: string description: The video codec used on the input file. For example, the input file encoded with `av1` video codec is non-standard and the value of this parameter is `av1`. audio_codec: type: string description: The audio codec used on the input file. Non-AAC audio codecs are non-standard. video_gop_size: type: string enum: - high description: The video key frame Interval (also called as Group of Picture or GOP) of the input file is `high`. This parameter is present when the gop is greater than 20 seconds. video_frame_rate: type: string description: The video frame rate of the input file. Video with average frames per second (fps) less than 5 or greater than 120 is non-standard. A `-1` frame rate value indicates Mux could not determine the frame rate of the video track. video_resolution: type: string description: The video resolution of the input file. Video resolution higher than 2048 pixels on any one dimension (height or width) is considered non-standard, The resolution value is presented as `width` x `height` in pixels. video_bitrate: type: string enum: - high description: The video bitrate of the input file is `high`. This parameter is present when the average bitrate of any key frame interval (also known as Group of Pictures or GOP) is higher than what's considered standard which typically is 16 Mbps. pixel_aspect_ratio: type: string description: The video pixel aspect ratio of the input file. video_edit_list: type: string enum: - non-standard description: Video Edit List reason indicates that the input file's video track contains a complex Edit Decision List. audio_edit_list: type: string enum: - non-standard description: Audio Edit List reason indicates that the input file's audio track contains a complex Edit Decision List. unexpected_media_file_parameters: type: string enum: - non-standard description: A catch-all reason when the input file in created with non-standard encoding parameters. unsupported_pixel_format: type: string description: The video pixel format, as a string, returned by libav. Considered non-standard if not one of yuv420p or yuvj420p. HEVC inputs additionally permit yuv420p10le. test: type: boolean format: boolean description: True means this live stream is a test asset. A test asset can help evaluate the Mux Video APIs without incurring any cost. There is no limit on number of test assets created. Test assets are watermarked with the Mux logo, limited to 10 seconds, and deleted after 24 hrs. ingest_type: type: string enum: - on_demand_url - on_demand_direct_upload - on_demand_clip - live_rtmp - live_srt description: The type of ingest used to create the asset. meta: $ref: '#/components/schemas/AssetMetadata' progress: $ref: '#/components/schemas/AssetProgress' InputSettings: type: object description: An array of objects that each describe an input file to be used to create the asset. As a shortcut, `input` can also be a string URL for a file when only one input file is used. See `input[].url` for requirements. properties: url: type: string description: 'The URL of the file that Mux should download and use. * For the main input file, this should be the URL to the muxed file for Mux to download, for example an MP4, MOV, MKV, or TS file. Mux supports most audio/video file formats and codecs, but for fastest processing, you should [use standard inputs wherever possible](https://docs.mux.com/guides/minimize-processing-time). * For `audio` tracks, the URL is the location of the audio file for Mux to download, for example an M4A, WAV, or MP3 file. Mux supports most audio file formats and codecs, but for fastest processing, you should [use standard inputs wherever possible](https://docs.mux.com/guides/minimize-processing-time). * For `text` tracks, the URL is the location of subtitle/captions file. Mux supports [SubRip Text (SRT)](https://en.wikipedia.org/wiki/SubRip) and [Web Video Text Tracks](https://www.w3.org/TR/webvtt1/) formats for ingesting Subtitles and Closed Captions. * For Watermarking or Overlay, the URL is the location of the watermark image. The maximum size is 4096x4096. * When creating clips from existing Mux assets, the URL is defined with `mux://assets/{asset_id}` template where `asset_id` is the Asset Identifier for creating the clip from. The url property may be omitted on the first input object when providing asset settings for LiveStream and Upload objects, in order to configure settings related to the primary (live stream or direct upload) input. ' overlay_settings: type: object description: An object that describes how the image file referenced in URL should be placed over the video (i.e. watermarking). Ensure that the URL is active and persists the entire lifespan of the video object. properties: vertical_align: type: string enum: - top - middle - bottom description: Where the vertical positioning of the overlay/watermark should begin from. Defaults to `"top"` vertical_margin: type: string description: The distance from the vertical_align starting point and the image's closest edge. Can be expressed as a percent ("10%") or as a pixel value ("100px"). Negative values will move the overlay offscreen. In the case of 'middle', a positive value will shift the overlay towards the bottom and and a negative value will shift it towards the top. horizontal_align: type: string enum: - left - center - right description: Where the horizontal positioning of the overlay/watermark should begin from. horizontal_margin: type: string description: The distance from the horizontal_align starting point and the image's closest edge. Can be expressed as a percent ("10%") or as a pixel value ("100px"). Negative values will move the overlay offscreen. In the case of 'center', a positive value will shift the image towards the right and and a negative value will shift it towards the left. width: type: string description: How wide the overlay should appear. Can be expressed as a percent ("10%") or as a pixel value ("100px"). If both width and height are left blank the width will be the true pixels of the image, applied as if the video has been scaled to fit a 1920x1080 frame. If height is supplied with no width, the width will scale proportionally to the height. height: type: string description: How tall the overlay should appear. Can be expressed as a percent ("10%") or as a pixel value ("100px"). If both width and height are left blank the height will be the true pixels of the image, applied as if the video has been scaled to fit a 1920x1080 frame. If width is supplied with no height, the height will scale proportionally to the width. opacity: type: string description: How opaque the overlay should appear, expressed as a percent. (Default 100%) generated_subtitles: type: array items: $ref: '#/components/schemas/AssetGeneratedSubtitleSettings' description: Generate subtitle tracks using automatic speech recognition with this configuration. Subtitles are generated using the audio of the input they are nested within. For direct uploads, this first input should omit the url parameter, as the main input file is provided via the direct upload. Note that subtitle generation happens after initial ingest, so the generated tracks will be in the `preparing` state when the asset transitions to `ready`. start_time: type: number format: double description: The time offset in seconds from the beginning of the video indicating the clip's starting marker. The default value is 0 when not included. This parameter is only applicable for creating clips when `input.url` has `mux://assets/{asset_id}` format. end_time: type: number format: double description: The time offset in seconds from the beginning of the video, indicating the clip's ending marker. The default value is the duration of the video when not included. This parameter is only applicable for creating clips when `input.url` has `mux://assets/{asset_id}` format. type: type: string enum: - video - audio - text description: This parameter is required for `text` type tracks. text_type: type: string enum: - subtitles description: Type of text track. This parameter only supports subtitles value. For more information on Subtitles / Closed Captions, [see this blog post](https://mux.com/blog/subtitles-captions-webvtt-hls-and-those-magic-flags/). This parameter is required for `text` type tracks. language_code: type: string description: The language code value must be a valid [BCP 47](https://tools.ietf.org/html/bcp47) specification compliant value. For example, `en` for English or `en-US` for the US version of English. This parameter is required for `text` and `audio` track types. name: type: string description: The name of the track containing a human-readable description. This value must be unique within each group of `text` or `audio` track types. The HLS manifest will associate a subtitle text track with this value. For example, the value should be "English" for a subtitle text track with `language_code` set to `en`. This optional parameter should be used only for `text` and `audio` type tracks. This parameter can be optionally provided for the first video input to denote the name of the muxed audio track if present. If this parameter is not included, Mux will auto-populate based on the `input[].language_code` value. closed_captions: type: boolean description: Indicates the track provides Subtitles for the Deaf or Hard-of-hearing (SDH). This optional parameter should be used for tracks with `type` of `text` and `text_type` set to `subtitles`. passthrough: type: string description: This optional parameter should be used for tracks with `type` of `text` and `text_type` set to `subtitles`. InputTrack: type: object required: - type properties: type: type: string duration: type: number format: double encoding: type: string width: type: integer format: int64 height: type: integer format: int64 frame_rate: type: number format: double sample_rate: type: integer format: int64 sample_size: type: integer format: int64 channels: type: integer format: int64 InputFile: type: object properties: container_format: type: string tracks: type: array items: $ref: '#/components/schemas/InputTrack' InputInfo: type: object properties: settings: $ref: '#/components/schemas/InputSettings' file: $ref: '#/components/schemas/InputFile' LiveStreamEmbeddedSubtitleSettings: type: object required: - name - language_code - language_channel properties: name: type: string description: A name for this live stream closed caption track. passthrough: type: string description: Arbitrary user-supplied metadata set for the live stream closed caption track. Max 255 characters. language_code: type: string description: The language of the closed caption stream. Value must be BCP 47 compliant. default: en language_channel: type: string description: CEA-608 caption channel to read data from. default: cc1 enum: - cc1 - cc2 - cc3 - cc4 LiveStreamEmbeddedSubtitleRequest: type: object properties: name: type: string description: A name for this live stream closed caption track. passthrough: type: string description: Arbitrary user-supplied metadata set for the live stream closed caption track. Max 255 characters. language_code: type: string description: The language of the closed caption stream. Value must be BCP 47 compliant. default: en language_channel: type: string description: CEA-608 caption channel to read data from. default: cc1 enum: - cc1 - cc2 - cc3 - cc4 LiveStreamGeneratedSubtitleSettings: type: object required: - name - language_code properties: name: type: string description: A name for this live stream subtitle track. passthrough: type: string description: Arbitrary metadata set for the live stream subtitle track. Max 255 characters. language_code: type: string description: The language of the audio from which subtitles are generated. default: en enum: - en - en-US - es - fr - de - pt - it transcription_vocabulary_ids: type: array items: type: string description: Unique identifiers for existing Transcription Vocabularies to use while generating subtitles for the live stream. If the Transcription Vocabularies provided collectively have more than 1000 phrases, only the first 1000 phrases will be included. LiveStreamGeneratedSubtitleRequest: type: object properties: name: type: string description: A name for this live stream subtitle track. passthrough: type: string description: Arbitrary metadata set for the live stream subtitle track. Max 255 characters. language_code: type: string description: The language of the audio from which subtitles are generated. default: en enum: - en - en-US - es - fr - de - pt - it transcription_vocabulary_ids: type: array items: type: string description: Unique identifiers for existing Transcription Vocabularies to use while generating subtitles for the live stream. If the Transcription Vocabularies provided collectively have more than 1000 phrases, only the first 1000 phrases will be included. AssetGeneratedSubtitleSettings: type: object properties: name: type: string description: A name for this subtitle track. passthrough: type: string description: Arbitrary metadata set for the subtitle track. Max 255 characters. language_code: type: string description: The language of the audio from which subtitles are generated. Selecting a language of "auto" will allow language detection to set the language code automatically. default: en enum: - en - es - it - pt - de - fr - pl - ru - nl - ca - tr - sv - uk - 'no' - fi - sk - el - cs - hr - da - ro - bg - auto LiveStreamStatus: type: string enum: - active - idle - disabled description: '`idle` indicates that there is no active broadcast. `active` indicates that there is an active broadcast and `disabled` status indicates that no future RTMP streams can be published.' LiveStream: type: object required: - id - created_at - latency_mode - max_continuous_duration - status - stream_key properties: id: type: string description: Unique identifier for the Live Stream. Max 255 characters. created_at: type: string format: int64 description: Time the Live Stream was created, defined as a Unix timestamp (seconds since epoch). stream_key: type: string description: Unique key used for streaming to a Mux RTMP endpoint. This should be considered as sensitive as credentials, anyone with this stream key can begin streaming. Max 64 characters. active_asset_id: type: string description: The Asset that is currently being created if there is an active broadcast. recent_asset_ids: type: array description: An array of strings with the most recent Asset IDs that were created from this Live Stream. The most recently generated Asset ID is the last entry in the list. items: type: string status: $ref: '#/components/schemas/LiveStreamStatus' playback_ids: type: array description: An array of Playback ID objects. Use these to create HLS playback URLs. See [Play your videos](https://docs.mux.com/guides/play-your-videos) for more details. items: $ref: '#/components/schemas/PlaybackID' new_asset_settings: $ref: '#/components/schemas/AssetOptions' passthrough: type: string description: Arbitrary user-supplied metadata set for the asset. Max 255 characters. audio_only: type: boolean description: The live stream only processes the audio track if the value is set to true. Mux drops the video track if broadcasted. embedded_subtitles: type: array items: $ref: '#/components/schemas/LiveStreamEmbeddedSubtitleSettings' description: Describes the embedded closed caption configuration of the incoming live stream. generated_subtitles: type: array items: $ref: '#/components/schemas/LiveStreamGeneratedSubtitleSettings' description: Configure the incoming live stream to include subtitles created with automatic speech recognition. Each Asset created from a live stream with `generated_subtitles` configured will automatically receive two text tracks. The first of these will have a `text_source` value of `generated_live`, and will be available with `ready` status as soon as the stream is live. The second text track will have a `text_source` value of `generated_live_final` and will contain subtitles with improved accuracy, timing, and formatting. However, `generated_live_final` tracks will not be available in `ready` status until the live stream ends. If an Asset has both `generated_live` and `generated_live_final` tracks that are `ready`, then only the `generated_live_final` track will be included during playback. reconnect_window: type: number format: float default: 60 minimum: 0 maximum: 1800 description: 'When live streaming software disconnects from Mux, either intentionally or due to a drop in the network, the Reconnect Window is the time in seconds that Mux should wait for the streaming software to reconnect before considering the live stream finished and completing the recorded asset. **Max**: 1800s (30 minutes). If not specified directly, Standard Latency streams have a Reconnect Window of 60 seconds; Reduced and Low Latency streams have a default of 0 seconds, or no Reconnect Window. For that reason, we suggest specifying a value other than zero for Reduced and Low Latency streams. Reduced and Low Latency streams with a Reconnect Window greater than zero will insert slate media into the recorded asset while waiting for the streaming software to reconnect or when there are brief interruptions in the live stream media. When using a Reconnect Window setting higher than 60 seconds with a Standard Latency stream, we highly recommend enabling slate with the `use_slate_for_standard_latency` option. ' use_slate_for_standard_latency: type: boolean format: boolean default: false description: By default, Standard Latency live streams do not have slate media inserted while waiting for live streaming software to reconnect to Mux. Setting this to true enables slate insertion on a Standard Latency stream. reconnect_slate_url: type: string description: The URL of the image file that Mux should download and use as slate media during interruptions of the live stream media. This file will be downloaded each time a new recorded asset is created from the live stream. If this is not set, the default slate media will be used. reduced_latency: type: boolean format: boolean deprecated: true x-mux-doc-decorators: - hidden description: This field is deprecated. Please use `latency_mode` instead. Latency is the time from when the streamer transmits a frame of video to when you see it in the player. Set this if you want lower latency for your live stream. See the [Reduce live stream latency guide](https://docs.mux.com/guides/reduce-live-stream-latency) to understand the tradeoffs. low_latency: type: boolean format: boolean deprecated: true x-mux-doc-decorators: - hidden description: This field is deprecated. Please use `latency_mode` instead. Latency is the time from when the streamer transmits a frame of video to when you see it in the player. Setting this option will enable compatibility with the LL-HLS specification for low-latency streaming. This typically has lower latency than Reduced Latency streams, and cannot be combined with Reduced Latency. simulcast_targets: type: array description: Each Simulcast Target contains configuration details to broadcast (or "restream") a live stream to a third-party streaming service. [See the Stream live to 3rd party platforms guide](https://docs.mux.com/guides/stream-live-to-3rd-party-platforms). items: $ref: '#/components/schemas/SimulcastTarget' latency_mode: type: string enum: - low - reduced - standard description: Latency is the time from when the streamer transmits a frame of video to when you see it in the player. Set this as an alternative to setting low latency or reduced latency flags. test: type: boolean format: boolean description: True means this live stream is a test live stream. Test live streams can be used to help evaluate the Mux Video APIs for free. There is no limit on the number of test live streams, but they are watermarked with the Mux logo, and limited to 5 minutes. The test live stream is disabled after the stream is active for 5 mins and the recorded asset also deleted after 24 hours. max_continuous_duration: $ref: '#/components/schemas/MaxContinuousDuration' srt_passphrase: type: string description: Unique key used for encrypting a stream to a Mux SRT endpoint. Max 64 characters. active_ingest_protocol: type: string enum: - rtmp - srt description: The protocol used for the active ingest stream. This is only set when the live stream is active. meta: $ref: '#/components/schemas/LiveStreamMetadata' SigningKey: type: object required: - id - created_at properties: id: type: string description: Unique identifier for the Signing Key. created_at: type: string format: int64 description: Time at which the object was created. Measured in seconds since the Unix epoch. private_key: type: string format: byte description: A Base64 encoded private key that can be used with the RS256 algorithm when creating a [JWT](https://jwt.io/). **Note that this value is only returned once when creating a URL signing key.** Track: type: object properties: id: type: string description: Unique identifier for the Track type: type: string description: The type of track enum: - video - audio - text duration: type: number format: double description: The duration in seconds of the track media. This parameter is not set for `text` type tracks. This field is optional and may not be set. The top level `duration` field of an asset will always be set. max_width: type: integer format: int64 description: The maximum width in pixels available for the track. Only set for the `video` type track. max_height: type: integer format: int64 description: The maximum height in pixels available for the track. Only set for the `video` type track. max_frame_rate: type: number format: double description: The maximum frame rate available for the track. Only set for the `video` type track. This field may return `-1` if the frame rate of the input cannot be reliably determined. max_channels: type: integer format: int64 description: The maximum number of audio channels the track supports. Only set for the `audio` type track. max_channel_layout: type: string description: Only set for the `audio` type track. deprecated: true text_type: type: string enum: - subtitles description: This parameter is only set for `text` type tracks. text_source: type: string description: 'The source of the text contained in a Track of type `text`. Valid `text_source` values are listed below. * `uploaded`: Tracks uploaded to Mux as caption or subtitle files using the Create Asset Track API. * `embedded`: Tracks extracted from an embedded stream of CEA-608 closed captions. * `generated_vod`: Tracks generated by automatic speech recognition on an on-demand asset. * `generated_live`: Tracks generated by automatic speech recognition on a live stream configured with `generated_subtitles`. If an Asset has both `generated_live` and `generated_live_final` tracks that are `ready`, then only the `generated_live_final` track will be included during playback. * `generated_live_final`: Tracks generated by automatic speech recognition on a live stream using `generated_subtitles`. The accuracy, timing, and formatting of these subtitles is improved compared to the corresponding `generated_live` tracks. However, `generated_live_final` tracks will not be available in `ready` status until the live stream ends. If an Asset has both `generated_live` and `generated_live_final` tracks that are `ready`, then only the `generated_live_final` track will be included during playback. ' enum: - uploaded - embedded - generated_live - generated_live_final - generated_vod language_code: type: string description: The language code value represents [BCP 47](https://tools.ietf.org/html/bcp47) specification compliant value, or 'auto'. For example, `en` for English or `en-US` for the US version of English. This parameter is only set for `text` and `audio` track types. During automatic language detection for generated subtitles, this value will be set to `auto` until the language is determined. name: type: string description: The name of the track containing a human-readable description. The HLS manifest will associate a subtitle `text` or `audio` track with this value. For example, the value should be "English" for a subtitle text track for the `language_code` value of `en-US`. This parameter is only set for `text` and `audio` track types. closed_captions: type: boolean description: Indicates the track provides Subtitles for the Deaf or Hard-of-hearing (SDH). This parameter is only set tracks where `type` is `text` and `text_type` is `subtitles`. passthrough: type: string description: Arbitrary user-supplied metadata set for the track either when creating the asset or track. This parameter is only set for `text` type tracks. Max 255 characters. status: type: string enum: - preparing - ready - errored - deleted description: The status of the track. This parameter is only set for `text` type tracks. primary: type: boolean description: For an audio track, indicates that this is the primary audio track, ingested from the main input for this asset. The primary audio track cannot be deleted. auto_language_confidence: type: number format: double description: The confidence value (0-1) of the determined language. This value only is available when automatic language detection is utilized in generated subtitles. PlaybackID: type: object required: - id - policy properties: id: type: string description: Unique identifier for the PlaybackID policy: $ref: '#/components/schemas/PlaybackPolicy' drm_configuration_id: type: string description: The DRM configuration used by this playback ID. Must only be set when `policy` is set to `drm`. PlaybackPolicy: type: string enum: - public - signed - drm description: '* `public` playback IDs are accessible by constructing an HLS URL like `https://stream.mux.com/${PLAYBACK_ID}` * `signed` playback IDs should be used with tokens `https://stream.mux.com/${PLAYBACK_ID}?token={TOKEN}`. See [Secure video playback](https://docs.mux.com/guides/secure-video-playback) for details about creating tokens. * `drm` playback IDs are protected with DRM technologies. [See DRM documentation for more details](https://docs.mux.com/guides/protect-videos-with-drm). ' Upload: type: object required: - id - timeout - status - cors_origin properties: id: type: string description: Unique identifier for the Direct Upload. timeout: type: integer format: int32 default: 3600 minimum: 60 maximum: 604800 description: Max time in seconds for the signed upload URL to be valid. If a successful upload has not occurred before the timeout limit, the direct upload is marked `timed_out` status: type: string enum: - waiting - asset_created - errored - cancelled - timed_out new_asset_settings: $ref: '#/components/schemas/AssetOptions' asset_id: type: string description: Only set once the upload is in the `asset_created` state. error: type: object description: Only set if an error occurred during asset creation. properties: type: type: string description: Label for the specific error message: type: string description: Human readable error message cors_origin: type: string description: If the upload URL will be used in a browser, you must specify the origin in order for the signed URL to have the correct CORS headers. url: type: string description: The URL to upload the associated source media to. test: type: boolean format: boolean description: Indicates if this is a test Direct Upload, in which case the Asset that gets created will be a `test` Asset. SimulcastTarget: type: object required: - id - url - status properties: id: type: string description: ID of the Simulcast Target passthrough: type: string description: Arbitrary user-supplied metadata set when creating a simulcast target. status: type: string enum: - idle - starting - broadcasting - errored description: "The current status of the simulcast target. See Statuses below for detailed description.\n * `idle`: Default status. When the parent live stream is in disconnected status, simulcast\ \ targets will be idle state.\n * `starting`: The simulcast target transitions into this state when the parent live stream transition into connected state.\n * `broadcasting`: The simulcast\ \ target has successfully connected to the third party live streaming service and is pushing video to that service.\n * `errored`: The simulcast target encountered an error either while attempting\ \ to connect to the third party live streaming service, or mid-broadcasting. When a simulcast target has this status it will have an `error_severity` field with more details about the error.\n" stream_key: type: string description: Stream Key represents a stream identifier on the third party live streaming service to send the parent live stream to. Only used for RTMP(s) simulcast destinations. url: type: string description: 'The RTMP(s) or SRT endpoint for a simulcast destination. * For RTMP(s) destinations, this should include the application name for the third party live streaming service, for example: `rtmp://live.example.com/app`. * For SRT destinations, this should be a fully formed SRT connection string, for example: `srt://srt-live.example.com:1234?streamid={stream_key}&passphrase={srt_passphrase}`. Note: SRT simulcast targets can only be used when an source is connected over SRT. ' error_severity: type: string enum: - normal - fatal description: "The severity of the error encountered by the simulcast target.\nThis field is only set when the simulcast target is in the `errored` status.\nSee the values of severities below and\ \ their descriptions.\n * `normal`: The simulcast target encountered an error either while attempting to connect to the third party live streaming service, or mid-broadcasting. A simulcast\ \ may transition back into the broadcasting state if a connection with the service can be re-established.\n * `fatal`: The simulcast target is incompatible with the current input to the parent\ \ live stream. No further attempts to this simulcast target will be made for the current live stream asset.\n" PlaybackRestriction: type: object required: - id - referrer - user_agent - created_at - updated_at properties: id: type: string description: Unique identifier for the Playback Restriction. Max 255 characters. created_at: type: string format: int64 description: Time the Playback Restriction was created, defined as a Unix timestamp (seconds since epoch). updated_at: type: string format: int64 description: Time the Playback Restriction was last updated, defined as a Unix timestamp (seconds since epoch). referrer: $ref: '#/components/schemas/ReferrerDomainRestrictionSettings' user_agent: $ref: '#/components/schemas/UserAgentRestrictionSettings' ReferrerDomainRestrictionSettings: type: object description: A list of domains allowed to play your videos. properties: allowed_domains: type: array items: type: string description: "List of domains allowed to play videos. Possible values are\n * `[]` Empty Array indicates deny video playback requests for all domains\n * `[\"*\"]` A Single Wildcard `*` entry\ \ means allow video playback requests from any domain\n * `[\"*.example.com\", \"foo.com\"]` A list of up to 10 domains or valid dns-style wildcards\n" allow_no_referrer: type: boolean default: false description: A boolean to determine whether to allow or deny HTTP requests without `Referer` HTTP request header. Playback requests coming from non-web/native applications like iOS, Android or smart TVs will not have a `Referer` HTTP header. Set this value to `true` to allow these playback requests. UserAgentRestrictionSettings: type: object description: Rules that control what user agents are allowed to play your videos. Please see [Using User-Agent HTTP header for validation](https://docs.mux.com/guides/secure-video-playback#using-user-agent-http-header-for-validation) for more details on this feature. properties: allow_no_user_agent: type: boolean default: true description: Whether or not to allow views without a `User-Agent` HTTP request header. allow_high_risk_user_agent: type: boolean default: true description: Whether or not to allow high risk user agents. The high risk user agents are defined by Mux. ReferrerDomainRestrictionRequest: type: object description: A list of domains allowed to play your videos. required: - allowed_domains properties: allowed_domains: type: array items: type: string description: "List of domains allowed to play videos. Possible values are\n * `[]` Empty Array indicates deny video playback requests for all domains\n * `[\"*\"]` A Single Wildcard `*` entry\ \ means allow video playback requests from any domain\n * `[\"*.example.com\", \"foo.com\"]` A list of up to 10 domains or valid dns-style wildcards\n" allow_no_referrer: type: boolean default: false description: A boolean to determine whether to allow or deny HTTP requests without `Referer` HTTP request header. Playback requests coming from non-web/native applications like iOS, Android or smart TVs will not have a `Referer` HTTP header. Set this value to `true` to allow these playback requests. UserAgentRestrictionRequest: type: object description: Rules that control what user agents are allowed to play your videos. Please see [Using User-Agent HTTP header for validation](https://docs.mux.com/guides/secure-video-playback#using-user-agent-http-header-for-validation) for more details on this feature. properties: allow_no_user_agent: type: boolean default: true description: Whether or not to allow views without a `User-Agent` HTTP request header. allow_high_risk_user_agent: type: boolean default: true description: Whether or not to allow high risk user agents. The high risk user agents are defined by Mux. ListDeliveryUsageResponse: type: object required: - data - timeframe - page - limit - total_row_count properties: data: type: array items: $ref: '#/components/schemas/DeliveryReport' total_row_count: type: integer format: int64 timeframe: type: array items: type: integer format: int64 limit: type: integer format: int64 description: Number of assets returned in this response. Default value is 100. DeliveryReport: type: object required: - asset_id - asset_state - asset_resolution_tier - asset_encoding_tier - asset_duration - created_at - delivered_seconds - delivered_seconds_by_resolution properties: live_stream_id: type: string description: Unique identifier for the live stream that created the asset. asset_id: type: string description: Unique identifier for the asset. passthrough: type: string description: The `passthrough` value for the asset. created_at: type: string description: Time at which the asset was created. Measured in seconds since the Unix epoch. deleted_at: type: string description: If exists, time at which the asset was deleted. Measured in seconds since the Unix epoch. asset_state: type: string enum: - ready - errored - deleted description: The state of the asset. asset_duration: type: number format: double description: The duration of the asset in seconds. asset_resolution_tier: type: string enum: - audio-only - 720p - 1080p - 1440p - 2160p description: The resolution tier that the asset was ingested at, affecting billing for ingest & storage asset_encoding_tier: type: string deprecated: true enum: - smart - baseline - premium description: This field is deprecated. Please use `asset_video_quality` instead. The encoding tier that the asset was ingested at. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) asset_video_quality: type: string enum: - basic - plus - premium description: The video quality that the asset was ingested at. This field replaces `asset_encoding_tier`. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) delivered_seconds: type: number format: double description: Total number of delivered seconds during this time window. delivered_seconds_by_resolution: type: object description: Seconds delivered broken into resolution tiers. Each tier will only be displayed if there was content delivered in the tier. properties: tier_2160p: type: number format: double description: Total number of delivered seconds during this time window that had a resolution larger than the 1440p tier (over 4,194,304 pixels total). tier_1440p: type: number format: double description: Total number of delivered seconds during this time window that had a resolution larger than the 1080p tier but less than or equal to the 2160p tier (over 2,073,600 and <= 4,194,304 pixels total). tier_1080p: type: number format: double description: Total number of delivered seconds during this time window that had a resolution larger than the 720p tier but less than or equal to the 1440p tier (over 921,600 and <= 2,073,600 pixels total). tier_720p: type: number format: double description: Total number of delivered seconds during this time window that had a resolution within the 720p tier (up to 921,600 pixels total, based on typical 1280x720). tier_audio_only: type: number format: double description: Total number of delivered seconds during this time window that had a resolution of audio only. ListDRMConfigurationsResponse: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/DRMConfiguration' DRMConfigurationResponse: type: object required: - data properties: data: $ref: '#/components/schemas/DRMConfiguration' DRMConfiguration: type: object required: - id properties: id: type: string description: Unique identifier for the DRM Configuration. Max 255 characters. MaxContinuousDuration: type: integer format: int32 default: 43200 minimum: 60 maximum: 43200 description: The time in seconds a live stream may be continuously active before being disconnected. Defaults to 12 hours. LiveStreamMetadata: type: object description: 'Customer provided metadata about this live stream. Note: This metadata may be publicly available via the video player. Do not include PII or sensitive information. ' properties: title: type: string maxLength: 512 description: The live stream title. Max 512 code points. ListVideoViewsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/AbridgedVideoView' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - total_row_count - timeframe VideoViewResponse: type: object properties: data: $ref: '#/components/schemas/VideoView' timeframe: type: array items: type: integer format: int64 total_row_count: type: integer format: int64 nullable: true required: - data - timeframe - total_row_count ListErrorsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Error' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - total_row_count - timeframe Error: type: object properties: id: type: integer format: int64 description: A unique identifier for this error. percentage: type: number format: double description: The percentage of views that experienced this error. notes: type: string description: Notes that are attached to this error. nullable: true message: type: string description: The error message. nullable: true last_seen: type: string description: The last time this error was seen (ISO 8601 timestamp). description: type: string description: Description of the error. nullable: true count: type: integer format: int64 description: The total number of views that experienced this error. code: type: integer format: int64 description: The error code nullable: true player_error_code: type: string nullable: true description: The string version of the error code required: - id - percentage - notes - message - last_seen - description - count - code - player_error_code ListFiltersResponse: type: object properties: data: type: object properties: basic: type: array items: type: string advanced: type: array items: type: string required: - basic - advanced total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - total_row_count - timeframe ListFilterValuesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/FilterValue' total_row_count: type: integer format: int64 timeframe: type: array items: type: integer format: int64 required: - data - total_row_count - timeframe FilterValue: type: object properties: value: type: string nullable: true total_count: type: integer format: int64 required: - value - total_count ListDimensionsResponse: type: object properties: data: type: object properties: basic: type: array items: type: string advanced: type: array items: type: string required: - basic - advanced total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - total_row_count - timeframe ListDimensionValuesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/DimensionValue' total_row_count: type: integer format: int64 timeframe: type: array items: type: integer format: int64 required: - data - total_row_count - timeframe DimensionValue: type: object properties: value: type: string nullable: true total_count: type: integer format: int64 required: - value - total_count ListExportsResponse: type: object properties: data: type: array items: type: string total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - total_row_count - timeframe ListVideoViewExportsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/ExportDate' total_row_count: type: integer format: int32 nullable: true timeframe: type: array items: type: integer format: int32 required: - data - total_row_count - timeframe ExportDate: type: object properties: export_date: type: string format: date files: type: array items: $ref: '#/components/schemas/ExportFile' required: - export_date - files ExportFile: type: object properties: version: type: integer format: int32 type: type: string path: type: string required: - version - type - path ListBreakdownValuesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/BreakdownValue' total_row_count: type: integer format: int64 timeframe: type: array items: type: integer format: int64 meta: type: object properties: granularity: type: string aggregation: type: string required: - data - total_row_count - timeframe - meta BreakdownValue: type: object properties: views: type: integer format: int64 value: type: number format: double total_watch_time: type: integer format: int64 nullable: true total_playing_time: type: integer format: int64 nullable: true negative_impact: type: integer format: int32 field: type: string nullable: true required: - field - value - views - negative_impact - total_watch_time - total_playing_time GetOverallValuesResponse: type: object properties: data: $ref: '#/components/schemas/OverallValues' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 meta: type: object properties: granularity: type: string aggregation: type: string required: - data - timeframe - total_row_count - meta OverallValues: type: object properties: value: type: number format: double total_watch_time: type: integer format: int64 nullable: true total_views: type: integer format: int64 total_playing_time: type: integer format: int64 nullable: true global_value: type: number format: double nullable: true required: - value - total_watch_time - total_views - total_playing_time - global_value ListInsightsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Insight' total_row_count: type: integer format: int64 timeframe: type: array items: type: integer format: int64 meta: type: object properties: granularity: type: string aggregation: type: string required: - data - timeframe - total_row_count - meta Insight: type: object properties: total_watch_time: type: integer format: int64 nullable: true total_playing_time: type: integer format: int64 nullable: true total_views: type: integer format: int64 negative_impact_score: type: number format: float metric: type: number format: double filter_value: type: string nullable: true filter_column: type: string required: - total_watch_time - total_playing_time - total_views - negative_impact_score - metric - filter_value - filter_column GetMetricTimeseriesDataResponse: type: object properties: data: type: array items: type: array items: oneOf: - type: string - type: integer format: int64 nullable: true - type: number format: double nullable: true total_row_count: type: integer format: int64 timeframe: type: array items: type: integer format: int64 meta: type: object properties: granularity: type: string aggregation: type: string required: - data - timeframe - total_row_count - meta ListAllMetricValuesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Score' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count Score: type: object properties: watch_time: type: integer format: int64 nullable: true view_count: type: integer format: int64 unique_viewers: type: integer format: int64 started_views: type: integer format: int64 total_playing_time: type: integer format: int64 nullable: true name: type: string ended_views: type: integer format: int64 value: type: number format: double type: type: string metric: type: string items: type: array items: $ref: '#/components/schemas/Metric' required: - name Metric: type: object properties: value: type: number format: double nullable: true type: type: string name: type: string metric: type: string measurement: type: string required: - name - value - type - metric ListMonitoringDimensionsResponse: type: object properties: data: type: array items: type: object properties: name: type: string display_name: type: string required: - name - display_name total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count ListMonitoringMetricsResponse: type: object properties: data: type: array items: type: object properties: name: type: string display_name: type: string required: - name - display_name total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count GetMonitoringBreakdownResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/MonitoringBreakdownValue' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count MonitoringBreakdownValue: type: object properties: value: type: string nullable: true negative_impact: type: integer format: int64 metric_value: type: number format: double nullable: true display_value: type: string concurrent_viewers: type: integer format: int64 starting_up_viewers: type: integer format: int64 required: - value - negative_impact - metric_value - concurrent_viewers - starting_up_viewers GetMonitoringBreakdownTimeseriesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/MonitoringBreakdownTimeseriesValues' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count MonitoringBreakdownTimeseriesValues: type: object properties: values: type: array items: $ref: '#/components/schemas/MonitoringBreakdownTimeseriesDatapoint' date: type: string required: - values - date MonitoringBreakdownTimeseriesDatapoint: type: object properties: value: type: string nullable: true metric_value: type: number format: double nullable: true concurrent_viewers: type: integer format: int64 starting_up_viewers: type: integer format: int64 required: - value - metric_value - concurrent_viewers - starting_up_viewers GetMonitoringHistogramTimeseriesResponse: type: object properties: meta: type: object properties: bucket_unit: type: string buckets: type: array items: $ref: '#/components/schemas/MonitoringHistogramTimeseriesBucket' required: - bucket_unit - buckets data: type: array items: $ref: '#/components/schemas/MonitoringHistogramTimeseriesDatapoint' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - meta - data - timeframe - total_row_count MonitoringHistogramTimeseriesDatapoint: type: object properties: timestamp: type: string sum: type: integer format: int64 p95: type: number format: double nullable: true median: type: number format: double nullable: true max_percentage: type: number format: double bucket_values: type: array items: $ref: '#/components/schemas/MonitoringHistogramTimeseriesBucketValues' average: type: number format: double nullable: true required: - timestamp - sum - p95 - median - max_percentage - bucket_values - average MonitoringHistogramTimeseriesBucket: type: object properties: start: type: integer format: int64 end: type: integer format: int64 nullable: true required: - start - end MonitoringHistogramTimeseriesBucketValues: type: object properties: percentage: type: number format: double count: type: integer format: int64 required: - percentage - count GetMonitoringTimeseriesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/MonitoringTimeseriesDatapoint' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count MonitoringTimeseriesDatapoint: type: object properties: value: type: number format: double nullable: true date: type: string concurrent_viewers: type: integer format: int64 required: - value - date - concurrent_viewers ListRealTimeDimensionsResponse: type: object properties: data: type: array items: type: object properties: name: type: string display_name: type: string required: - name - display_name total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count ListRealTimeMetricsResponse: type: object properties: data: type: array items: type: object properties: name: type: string display_name: type: string required: - name - display_name total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count GetRealTimeBreakdownResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/RealTimeBreakdownValue' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count RealTimeBreakdownValue: type: object properties: value: type: string nullable: true negative_impact: type: integer format: int64 metric_value: type: number format: double nullable: true display_value: type: string concurrent_viewers: type: integer format: int64 starting_up_viewers: type: integer format: int64 required: - value - negative_impact - metric_value - concurrent_viewers - starting_up_viewers GetRealTimeHistogramTimeseriesResponse: type: object properties: meta: type: object properties: bucket_unit: type: string buckets: type: array items: $ref: '#/components/schemas/RealTimeHistogramTimeseriesBucket' required: - bucket_unit - buckets data: type: array items: $ref: '#/components/schemas/RealTimeHistogramTimeseriesDatapoint' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - meta - data - timeframe - total_row_count RealTimeHistogramTimeseriesDatapoint: type: object properties: timestamp: type: string sum: type: integer format: int64 p95: type: number format: double nullable: true median: type: number format: double nullable: true max_percentage: type: number format: double bucket_values: type: array items: $ref: '#/components/schemas/RealTimeHistogramTimeseriesBucketValues' average: type: number format: double nullable: true required: - timestamp - sum - p95 - median - max_percentage - bucket_values - average RealTimeHistogramTimeseriesBucket: type: object properties: start: type: integer format: int64 end: type: integer format: int64 nullable: true required: - start - end RealTimeHistogramTimeseriesBucketValues: type: object properties: percentage: type: number format: double count: type: integer format: int64 required: - percentage - count GetRealTimeTimeseriesResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/RealTimeTimeseriesDatapoint' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count RealTimeTimeseriesDatapoint: type: object properties: value: type: number format: double nullable: true date: type: string concurrent_viewers: type: integer format: int64 required: - value - date - concurrent_viewers ListIncidentsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Incident' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count ListRelatedIncidentsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Incident' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count IncidentResponse: type: object properties: data: $ref: '#/components/schemas/Incident' total_row_count: type: integer format: int64 nullable: true timeframe: type: array items: type: integer format: int64 required: - data - timeframe - total_row_count Incident: type: object properties: threshold: type: number format: double status: type: string started_at: type: string severity: type: string sample_size_unit: type: string sample_size: type: integer format: int64 resolved_at: type: string nullable: true notifications: type: array items: $ref: '#/components/schemas/IncidentNotification' notification_rules: type: array items: $ref: '#/components/schemas/IncidentNotificationRule' measurement: type: string measured_value_on_close: type: number format: double nullable: true measured_value: type: number format: double nullable: true incident_key: type: string impact: type: string id: type: string error_description: type: string description: type: string breakdowns: type: array items: $ref: '#/components/schemas/IncidentBreakdown' affected_views_per_hour_on_open: type: integer format: int64 affected_views_per_hour: type: integer format: int64 affected_views: type: integer format: int64 required: - id - started_at - resolved_at - incident_key - measurement - measured_value - measured_value_on_close - sample_size - sample_size_unit - breakdowns - severity - description - impact - affected_views - affected_views_per_hour - affected_views_per_hour_on_open - threshold - notifications - notification_rules - error_description - status IncidentBreakdown: type: object properties: value: type: string name: type: string id: type: string required: - id - name - value IncidentNotification: type: object properties: queued_at: type: string id: type: integer format: int64 attempted_at: type: string required: - queued_at - id - attempted_at IncidentNotificationRule: type: object properties: status: type: string rules: type: array items: $ref: '#/components/schemas/NotificationRule' property_id: type: string id: type: string action: type: string required: - status - rules - property_id - id - action NotificationRule: type: object properties: value: type: string name: type: string id: type: string required: - value - name - id VideoView: type: object properties: view_total_upscaling: type: string nullable: true preroll_ad_asset_hostname: type: string nullable: true player_source_domain: type: string nullable: true region: type: string nullable: true viewer_user_agent: type: string nullable: true preroll_requested: type: boolean nullable: true page_type: type: string nullable: true startup_score: type: string nullable: true view_seek_duration: type: integer format: int64 nullable: true country_name: type: string nullable: true player_source_height: type: integer format: int32 nullable: true longitude: type: string nullable: true buffering_count: type: integer format: int64 nullable: true video_duration: type: integer format: int64 nullable: true player_source_type: type: string nullable: true city: type: string nullable: true view_id: type: string platform_description: type: string nullable: true video_startup_preroll_request_time: type: integer format: int64 nullable: true viewer_device_name: type: string nullable: true video_series: type: string nullable: true viewer_application_name: type: string nullable: true updated_at: type: string view_total_content_playback_time: type: integer format: int64 nullable: true cdn: type: string nullable: true player_instance_id: type: string nullable: true video_language: type: string nullable: true player_source_width: type: integer format: int32 nullable: true player_error_message: type: string nullable: true player_mux_plugin_version: type: string nullable: true watched: type: boolean playback_score: type: string nullable: true page_url: type: string nullable: true metro: type: string nullable: true view_max_request_latency: type: integer format: int64 nullable: true requests_for_first_preroll: type: integer format: int64 nullable: true view_total_downscaling: type: string nullable: true latitude: type: string nullable: true player_source_host_name: type: string nullable: true inserted_at: type: string view_end: type: string mux_embed_version: type: string nullable: true player_language: type: string nullable: true page_load_time: type: integer format: int64 nullable: true viewer_device_category: type: string nullable: true video_startup_preroll_load_time: type: integer format: int64 nullable: true player_version: type: string nullable: true watch_time: type: integer format: int64 nullable: true player_source_stream_type: type: string nullable: true preroll_ad_tag_hostname: type: string nullable: true viewer_device_manufacturer: type: string nullable: true rebuffering_score: type: string nullable: true experiment_name: type: string nullable: true viewer_os_version: type: string nullable: true player_preload: type: boolean buffering_duration: type: integer format: int64 nullable: true player_view_count: type: integer format: int64 nullable: true player_software: type: string nullable: true player_load_time: type: integer format: int64 nullable: true platform_summary: type: string nullable: true video_encoding_variant: type: string nullable: true player_width: type: integer format: int32 nullable: true view_seek_count: type: integer format: int64 nullable: true viewer_experience_score: type: string nullable: true view_error_id: type: integer format: int32 nullable: true video_variant_name: type: string nullable: true preroll_played: type: boolean nullable: true viewer_application_engine: type: string nullable: true viewer_os_architecture: type: string nullable: true player_error_code: type: string nullable: true buffering_rate: type: string nullable: true events: type: array items: $ref: '#/components/schemas/VideoViewEvent' player_name: type: string nullable: true view_start: type: string view_average_request_throughput: type: integer format: int64 nullable: true video_producer: type: string nullable: true error_type_id: type: integer format: int32 nullable: true mux_viewer_id: type: string video_id: type: string nullable: true continent_code: type: string nullable: true session_id: type: string exit_before_video_start: type: boolean video_content_type: type: string nullable: true viewer_os_family: type: string nullable: true player_poster: type: string nullable: true view_average_request_latency: type: integer format: int64 nullable: true video_variant_id: type: string nullable: true player_source_duration: type: integer format: int64 nullable: true player_source_url: type: string nullable: true mux_api_version: type: string video_title: type: string nullable: true id: type: string short_time: type: string rebuffer_percentage: type: string nullable: true time_to_first_frame: type: integer format: int64 nullable: true viewer_user_id: type: string nullable: true video_stream_type: type: string nullable: true player_startup_time: type: integer format: int64 nullable: true viewer_application_version: type: string nullable: true view_max_downscale_percentage: type: string nullable: true view_max_upscale_percentage: type: string nullable: true country_code: type: string nullable: true used_fullscreen: type: boolean isp: type: string nullable: true property_id: type: integer format: int64 player_autoplay: type: boolean player_height: type: integer format: int32 nullable: true asn: type: integer format: int64 nullable: true asn_name: type: string nullable: true quality_score: type: string nullable: true player_software_version: type: string nullable: true player_mux_plugin_name: type: string nullable: true sub_property_id: type: string nullable: true player_remote_played: type: boolean nullable: true view_max_playhead_position: type: string nullable: true view_playing_time: type: string nullable: true view_session_id: type: string nullable: true viewer_connection_type: type: string nullable: true viewer_device_model: type: string nullable: true weighted_average_bitrate: type: number format: double nullable: true custom_1: type: string nullable: true custom_2: type: string nullable: true custom_3: type: string nullable: true custom_4: type: string nullable: true custom_5: type: string nullable: true custom_6: type: string nullable: true custom_7: type: string nullable: true custom_8: type: string nullable: true custom_9: type: string nullable: true custom_10: type: string nullable: true live_stream_latency: type: integer format: int64 nullable: true asset_id: type: string nullable: true environment_id: type: string live_stream_id: type: string nullable: true mux_embed: type: string nullable: true playback_id: type: string nullable: true player_error_context: type: string nullable: true view_drm_type: type: string nullable: true view_dropped_frame_count: type: integer format: int64 nullable: true view_has_ad: type: boolean video_startup_failure: type: boolean ad_attempt_count: type: integer format: int32 nullable: true ad_break_count: type: integer format: int32 nullable: true ad_break_error_count: type: integer format: int32 nullable: true ad_break_error_percentage: type: string nullable: true ad_error_count: type: integer format: int32 nullable: true ad_error_percentage: type: string nullable: true ad_impression_count: type: integer format: int32 nullable: true ad_startup_error_count: type: integer format: int32 nullable: true ad_startup_error_percentage: type: string nullable: true ad_exit_before_start_count: type: integer format: int32 nullable: true ad_exit_before_start_percentage: type: string nullable: true rendition_change_count: type: integer format: int32 nullable: true rendition_upshift_count: type: integer format: int32 nullable: true rendition_downshift_count: type: integer format: int32 nullable: true long_resume: type: boolean long_rebuffering: type: boolean playback_failure_error_type_id: type: integer format: int32 nullable: true playback_business_exception_error_type_id: type: integer format: int32 nullable: true video_startup_business_exception_error_type_id: type: integer format: int32 nullable: true playback_failure: type: boolean ad_playback_failure_error_type_id: type: integer format: int32 nullable: true view_content_startup_time: type: integer format: int32 nullable: true ad_preroll_startup_time: type: integer format: int32 nullable: true view_dropped: type: boolean client_application_name: type: string nullable: true client_application_version: type: string nullable: true video_affiliate: type: string nullable: true viewer_plan: type: string nullable: true viewer_plan_status: type: string nullable: true viewer_plan_category: type: string nullable: true view_drm_level: type: string nullable: true video_brand: type: string nullable: true used_pip: type: boolean time_shift_enabled: type: boolean used_captions: type: boolean video_codec: type: string nullable: true audio_codec: type: string nullable: true video_dynamic_range_type: type: string nullable: true video_source_height_initial: type: integer format: int32 nullable: true video_source_width_initial: type: integer format: int32 nullable: true video_source_bitrate_initial: type: integer format: int64 nullable: true video_codec_initial: type: string nullable: true audio_codec_initial: type: string nullable: true video_source_fps_initial: type: number format: double nullable: true video_dynamic_range_type_initial: type: string nullable: true video_source_fps: type: number format: double nullable: true video_source_bitrate: type: integer format: int64 nullable: true video_source_height: type: integer format: int32 nullable: true video_source_width: type: integer format: int32 nullable: true view_cdn_edge_pop: type: string nullable: true view_cdn_origin: type: string nullable: true video_creator_id: type: string nullable: true video_cdn_trace: type: array items: type: string required: - ad_attempt_count - ad_break_count - ad_break_error_count - ad_break_error_percentage - ad_error_count - ad_error_percentage - ad_exit_before_start_count - ad_exit_before_start_percentage - ad_impression_count - ad_startup_error_count - ad_startup_error_percentage - rendition_change_count - rendition_upshift_count - rendition_downshift_count - asn - asn_name - asset_id - audio_codec - buffering_count - buffering_duration - buffering_rate - cdn - city - client_application_name - client_application_version - continent_code - country_code - country_name - custom_1 - custom_10 - custom_2 - custom_3 - custom_4 - custom_5 - custom_6 - custom_7 - custom_8 - custom_9 - environment_id - error_type_id - events - exit_before_video_start - experiment_name - id - inserted_at - isp - latitude - live_stream_id - live_stream_latency - long_rebuffering - long_resume - longitude - metro - mux_api_version - mux_embed - mux_embed_version - mux_viewer_id - page_load_time - page_type - page_url - platform_description - platform_summary - playback_id - playback_score - player_autoplay - player_error_code - player_error_message - player_height - player_instance_id - player_language - player_load_time - player_mux_plugin_name - player_mux_plugin_version - player_name - player_poster - player_preload - player_remote_played - player_software - player_software_version - player_source_domain - player_source_duration - player_source_height - player_source_host_name - player_source_stream_type - player_source_type - player_source_url - player_source_width - player_startup_time - player_version - player_view_count - player_width - preroll_ad_asset_hostname - preroll_ad_tag_hostname - preroll_played - preroll_requested - property_id - quality_score - rebuffer_percentage - rebuffering_score - region - requests_for_first_preroll - session_id - short_time - startup_score - sub_property_id - time_shift_enabled - time_to_first_frame - updated_at - used_captions - used_fullscreen - used_pip - video_affiliate - video_brand - video_cdn_trace - video_codec - video_content_type - video_creator_id - video_duration - video_dynamic_range_type - video_source_height_initial - video_source_width_initial - video_source_bitrate_initial - video_codec_initial - audio_codec_initial - video_source_fps_initial - video_dynamic_range_type_initial - video_source_fps - video_source_bitrate - video_source_height - video_source_width - video_encoding_variant - video_id - video_language - video_producer - video_series - video_startup_failure - video_startup_preroll_load_time - video_startup_preroll_request_time - video_stream_type - video_title - video_variant_id - video_variant_name - view_average_request_latency - view_average_request_throughput - view_cdn_edge_pop - view_cdn_origin - view_drm_level - view_drm_type - view_dropped - view_dropped_frame_count - view_end - view_error_id - view_has_ad - view_id - view_max_downscale_percentage - view_max_playhead_position - view_max_request_latency - view_max_upscale_percentage - view_playing_time - view_seek_count - view_seek_duration - view_session_id - view_start - view_total_content_playback_time - view_total_downscaling - view_total_upscaling - viewer_application_engine - viewer_application_name - viewer_application_version - viewer_connection_type - viewer_device_category - viewer_device_manufacturer - viewer_device_model - viewer_device_name - viewer_experience_score - viewer_os_architecture - viewer_os_family - viewer_os_version - viewer_plan - viewer_plan_status - viewer_plan_category - viewer_user_agent - viewer_user_id - watch_time - watched - weighted_average_bitrate - playback_failure_error_type_id - playback_business_exception_error_type_id - video_startup_business_exception_error_type_id - playback_failure - ad_playback_failure_error_type_id - view_content_startup_time - ad_preroll_startup_time AbridgedVideoView: type: object properties: id: type: string viewer_os_family: type: string nullable: true viewer_application_name: type: string nullable: true video_title: type: string nullable: true total_row_count: type: integer format: int64 player_error_message: type: string nullable: true player_error_code: type: string nullable: true error_type_id: type: integer format: int32 nullable: true country_code: type: string nullable: true view_start: type: string view_end: type: string viewer_experience_score: type: number format: float nullable: true watch_time: type: integer format: int32 nullable: true playback_failure: type: boolean required: - id - viewer_os_family - viewer_application_name - video_title - total_row_count - player_error_message - player_error_code - error_type_id - country_code - view_start - view_end - viewer_experience_score - watch_time - playback_failure VideoViewEvent: type: object properties: viewer_time: type: integer format: int64 playback_time: type: integer format: int64 name: type: string event_time: type: integer format: int64 details: type: object additionalProperties: true required: - viewer_time - playback_time - name - event_time - details Annotation: type: object required: - id - note - date properties: id: type: string format: uuid description: Unique identifier for the annotation note: type: string description: The annotation note content date: type: string format: date-time description: Datetime when the annotation applies sub_property_id: type: string nullable: true description: Customer-defined sub-property identifier AnnotationResponse: type: object required: - data properties: data: $ref: '#/components/schemas/Annotation' AnnotationInput: type: object required: - note - date properties: note: type: string description: The annotation note content date: type: integer format: int64 description: Datetime when the annotation applies (Unix timestamp) sub_property_id: type: string description: Customer-defined sub-property identifier ListAnnotationsResponse: type: object required: - data - total_row_count properties: data: type: array items: $ref: '#/components/schemas/Annotation' total_row_count: type: integer description: Total number of annotations available timeframe: type: array items: type: integer minItems: 2 maxItems: 2 description: Start and end unix timestamps for the data range WhoAmIResponse: type: object required: - data properties: data: type: object required: - permissions - organization_name - organization_id - environment_type - environment_name - environment_id - access_token_name properties: permissions: type: array items: type: string organization_name: type: string organization_id: type: string environment_type: type: string environment_name: type: string environment_id: type: string access_token_name: type: string AskQuestionsJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - ask-questions parameters: $ref: '#/components/schemas/AskQuestionsJobParameters' status: $ref: '#/components/schemas/JobStatus' outputs: $ref: '#/components/schemas/AskQuestionsJobOutputs' errors: type: array items: $ref: '#/components/schemas/JobError' description: Error details. Present when status is 'errored'. resources: $ref: '#/components/schemas/Resources' required: - id - units_consumed - created_at - updated_at - workflow - parameters - status AskQuestionsJobOutputs: type: object properties: answers: type: array items: type: object properties: question: type: string minLength: 1 description: The original question that was asked. answer: type: - string - 'null' minLength: 1 description: For enum questions, constrained to one of the provided answer_options. For free-form questions, responds with prose up to max_free_form_answer_length characters - treat as untrusted model output. Null when the question was skipped. confidence: type: number minimum: 0 maximum: 1 description: Confidence score from 0.0 to 1.0. Values above 0.9 indicate clear, unambiguous evidence; 0.7-0.9 strong evidence with minor ambiguity; 0.5-0.7 moderate evidence; below 0.5 weak or uncertain evidence. Always 0 when skipped. reasoning: type: string minLength: 1 description: Explanation citing specific visual or audio evidence from the video, or why the question was skipped. skipped: type: boolean description: Whether the question was skipped due to irrelevance to the video content. required: - question - answer - confidence - reasoning - skipped minItems: 1 description: One answer per question, in the same order as the input questions. required: - answers example: answers: - question: Is this video about glasses? answer: 'no' confidence: 0.92 reasoning: No glasses appear on screen and the narration does not mention eyewear. skipped: false - question: What is the primary subject? answer: watches confidence: 0.88 reasoning: Multiple wristwatches are featured prominently throughout the video. skipped: false - question: Describe the primary subject in one sentence. answer: A close-up showcase of luxury wristwatches arranged on a wooden display. confidence: 0.86 reasoning: Visual evidence shows several wristwatches displayed against a wooden backdrop with no other competing subjects. skipped: false description: Workflow results. Present when status is 'completed'. AskQuestionsJobParameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video to analyze. questions: type: array items: type: object properties: question: type: string minLength: 1 description: The question to ask about the video content. answer_options: type: array items: type: string minLength: 1 minItems: 1 description: Allowed answer values for this question. Defaults to ["yes", "no"] when omitted and free_form_reply is not true. Mutually exclusive with free_form_reply. free_form_reply: type: boolean description: Experimental. When true, the model replies with free-form prose instead of selecting from answer_options. Mutually exclusive with answer_options. Treat the answer as untrusted model output. required: - question minItems: 1 description: 'One or more questions to ask about the video. Each question can either select from answer_options (defaults to yes/no) or, by setting free_form_reply: true, receive a free-form prose answer.' language_code: type: string minLength: 1 description: BCP 47 language code of the caption track to analyze (e.g. "en", "fr"). When omitted, the SDK uses the default track. max_free_form_answer_length: type: integer minimum: 1 default: 500 description: 'Experimental. Max character length for free-form answers. Ignored unless at least one question sets free_form_reply: true.' required: - asset_id - questions example: asset_id: mux_asset_123abc questions: - question: Is this video about glasses? - question: What is the primary subject? answer_options: - glasses - watches - shoes - hats - question: Describe the primary subject in one sentence. free_form_reply: true max_free_form_answer_length: 300 AskQuestionsJobResponse: type: object properties: data: $ref: '#/components/schemas/AskQuestionsJob' required: - data CancelJobResponse: type: object properties: data: $ref: '#/components/schemas/JobSummary' required: - data CreateAskQuestionsJobRequest: type: object properties: passthrough: type: string description: Arbitrary string stored with the job and returned in responses. Useful for correlating jobs with your own systems. parameters: $ref: '#/components/schemas/AskQuestionsJobParameters' required: - parameters CreateEditCaptionsJobRequest: type: object properties: passthrough: type: string description: Arbitrary string stored with the job and returned in responses. Useful for correlating jobs with your own systems. parameters: $ref: '#/components/schemas/EditCaptionsJobParameters' required: - parameters CreateFindKeyMomentsJobRequest: type: object properties: passthrough: type: string description: Arbitrary string stored with the job and returned in responses. Useful for correlating jobs with your own systems. parameters: $ref: '#/components/schemas/FindKeyMomentsJobParameters' required: - parameters CreateGenerateChaptersJobRequest: type: object properties: passthrough: type: string description: Arbitrary string stored with the job and returned in responses. Useful for correlating jobs with your own systems. parameters: $ref: '#/components/schemas/GenerateChaptersJobParameters' required: - parameters CreateModerateJobRequest: type: object properties: passthrough: type: string description: Arbitrary string stored with the job and returned in responses. Useful for correlating jobs with your own systems. parameters: $ref: '#/components/schemas/ModerateJobParameters' required: - parameters CreateSummarizeJobRequest: type: object properties: passthrough: type: string description: Arbitrary string stored with the job and returned in responses. Useful for correlating jobs with your own systems. parameters: $ref: '#/components/schemas/SummarizeJobParameters' required: - parameters CreateTranslateCaptionsJobRequest: type: object properties: passthrough: type: string description: Arbitrary string stored with the job and returned in responses. Useful for correlating jobs with your own systems. parameters: $ref: '#/components/schemas/TranslateCaptionsJobParameters' required: - parameters EditCaptionsJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - edit-captions parameters: $ref: '#/components/schemas/EditCaptionsJobParameters' status: $ref: '#/components/schemas/JobStatus' outputs: $ref: '#/components/schemas/EditCaptionsJobOutputs' errors: type: array items: $ref: '#/components/schemas/JobError' description: Error details. Present when status is 'errored'. resources: $ref: '#/components/schemas/Resources' required: - id - units_consumed - created_at - updated_at - workflow - parameters - status EditCaptionsJobOutputs: type: object properties: total_replacement_count: type: integer minimum: 0 description: Total count of cue text replacements applied across all edit operations. uploaded_track_id: type: string minLength: 1 description: Mux text track ID for the uploaded edited captions. Present when upload_to_mux is true and the upload succeeds. temporary_vtt_url: type: string minLength: 1 description: Temporary pre-signed URL for downloading the edited VTT file. required: - total_replacement_count example: total_replacement_count: 5 uploaded_track_id: text_track_789ghi temporary_vtt_url: https://s3.example.com/edited.vtt?sig=abc description: Workflow results. Present when status is 'completed'. EditCaptionsJobParameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID whose existing text track should be edited. track_id: type: string minLength: 1 description: The existing ready Mux text track ID to edit and optionally replace. auto_censor_profanity: type: object properties: detection_method: type: string enum: - llm default: llm description: How profanity is detected. Currently only `llm` is supported, which uses an LLM to identify profanity in cue text. mode: type: string enum: - blank - remove - mask default: blank description: 'Replacement strategy for detected profanity: blank inserts bracketed underscores, remove drops the match, and mask replaces characters with question marks. Defaults to "blank".' always_censor: type: array items: type: string minLength: 1 description: Additional words or short phrases that should always be censored even if the model does not detect them. never_censor: type: array items: type: string minLength: 1 description: Words or short phrases that should never be censored even if the model flags them. description: Optional LLM-driven profanity detection and censorship rules applied to the selected caption track. replacements: type: array items: type: object properties: find: type: string minLength: 1 description: Exact word or phrase to replace in cue text. replace: type: string description: Replacement text to insert when a match is found. case_sensitive: type: boolean default: false description: When true, `find` is matched only with exact case. Defaults to false (case-insensitive matching), so "gonna" also matches "Gonna" and "GONNA". required: - find - replace description: Optional static word or phrase replacements applied directly to cue text. upload_to_mux: type: boolean default: true description: Whether to upload the edited VTT back to the Mux asset as a new text track. Defaults to true. delete_original_track: type: boolean default: true description: Whether to delete the original source text track after the edited track upload succeeds. Has effect only when upload_to_mux is true. Defaults to true. track_name_suffix: type: string minLength: 1 description: Optional suffix appended to the uploaded replacement track name. Defaults to "edited". required: - asset_id - track_id example: asset_id: mux_asset_123abc track_id: text_track_456def replacements: - find: Mucks replace: Mux case_sensitive: true - find: gonna replace: going to upload_to_mux: true delete_original_track: true EditCaptionsJobResponse: type: object properties: data: $ref: '#/components/schemas/EditCaptionsJob' required: - data ErrorResponse: type: object properties: error: type: object properties: type: type: string description: Machine-readable error type. message: type: string description: Human-readable error message describing what went wrong. required: - type - message required: - error FindKeyMomentsJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - find-key-moments parameters: $ref: '#/components/schemas/FindKeyMomentsJobParameters' status: $ref: '#/components/schemas/JobStatus' outputs: $ref: '#/components/schemas/FindKeyMomentsJobOutputs' errors: type: array items: $ref: '#/components/schemas/JobError' description: Error details. Present when status is 'errored'. resources: $ref: '#/components/schemas/Resources' required: - id - units_consumed - created_at - updated_at - workflow - parameters - status FindKeyMomentsJobOutputs: type: object properties: moments: type: array items: type: object properties: start_ms: type: number minimum: 0 description: Moment start time in milliseconds. end_ms: type: number minimum: 0 description: Moment end time in milliseconds. cues: type: array items: type: object properties: start_ms: type: number minimum: 0 description: Cue start time in milliseconds. end_ms: type: number minimum: 0 description: Cue end time in milliseconds. text: type: string minLength: 1 description: Transcript text for this cue. required: - start_ms - end_ms - text minItems: 1 description: Contiguous transcript segments that comprise this moment. overall_score: type: number minimum: 0 maximum: 1 description: Weighted quality score from 0.0 to 1.0 based on hook strength, clarity, emotional intensity, novelty, and soundbite quality. title: type: string minLength: 1 description: Short catchy title for the moment (3-8 words). audible_narrative: type: string minLength: 1 description: One-sentence summary of what is being said during the moment. notable_audible_concepts: type: array items: type: string minLength: 3 minItems: 1 description: Multi-word descriptive phrases (2-5 words each) capturing key audible concepts. visual_narrative: type: string minLength: 1 description: One-sentence summary of what is visually happening. Present for video assets only. notable_visual_concepts: type: array items: type: object properties: concept: type: string minLength: 3 description: Multi-word visual concept (2-5 words). score: type: number minimum: 0 maximum: 1 description: Relevance score from 0.0 to 1.0 measuring how closely the visual concept relates to the audible narrative. rationale: type: string minLength: 1 description: Brief explanation of the relevance score. required: - concept - score - rationale minItems: 1 description: Scored visual concepts extracted from sampled frames. Present for video assets only. required: - start_ms - end_ms - cues - overall_score - title - audible_narrative - notable_audible_concepts description: Extracted key moments, ordered by position in the video. required: - moments example: moments: - start_ms: 15000 end_ms: 45000 cues: - start_ms: 15000 end_ms: 20000 text: This is the moment everything changed. - start_ms: 20000 end_ms: 30000 text: We realized the entire approach was wrong. overall_score: 0.92 title: The Pivotal Realization audible_narrative: The speaker describes the turning point that reshaped the project direction. notable_audible_concepts: - pivotal realization moment - project direction change visual_narrative: The speaker gestures emphatically at a whiteboard diagram while the camera zooms in. notable_visual_concepts: - concept: whiteboard diagram emphasis score: 0.88 rationale: The diagram directly illustrates the pivotal realization being described. - concept: speaker emphatic gestures score: 0.75 rationale: Body language reinforces the emotional weight of the turning point. description: Workflow results. Present when status is 'completed'. FindKeyMomentsJobParameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video to analyze. max_moments: type: integer minimum: 1 maximum: 10 description: Maximum number of key moments to extract. Defaults to 5. target_duration_ms: type: object properties: min: type: integer exclusiveMinimum: 0 description: Preferred minimum highlight duration in milliseconds. max: type: integer exclusiveMinimum: 0 description: Preferred maximum highlight duration in milliseconds. required: - min - max description: Preferred highlight duration range in milliseconds. When provided, the model will aim to select moments within this range. required: - asset_id example: asset_id: mux_asset_123abc max_moments: 5 target_duration_ms: min: 15000 max: 45000 FindKeyMomentsJobResponse: type: object properties: data: $ref: '#/components/schemas/FindKeyMomentsJob' required: - data GenerateChaptersJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - generate-chapters parameters: $ref: '#/components/schemas/GenerateChaptersJobParameters' status: $ref: '#/components/schemas/JobStatus' outputs: $ref: '#/components/schemas/GenerateChaptersJobOutputs' errors: type: array items: $ref: '#/components/schemas/JobError' description: Error details. Present when status is 'errored'. resources: $ref: '#/components/schemas/Resources' required: - id - units_consumed - created_at - updated_at - workflow - parameters - status GenerateChaptersJobOutputs: type: object properties: chapters: type: array items: type: object properties: start_time: type: number minimum: 0 description: Chapter start time in seconds. The first chapter always starts at 0. title: type: string minLength: 1 description: Concise chapter title. required: - start_time - title minItems: 1 description: Generated chapters, ordered by start time. required: - chapters example: chapters: - start_time: 0 title: Introduction - start_time: 45 title: Setting Up the Workspace - start_time: 180 title: Core Implementation - start_time: 420 title: Testing and Debugging - start_time: 600 title: Wrap-Up and Next Steps description: Workflow results. Present when status is 'completed'. GenerateChaptersJobParameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video to generate chapters for. language_code: type: string minLength: 1 description: BCP 47 language code of the caption track to analyze (e.g. "en", "fr"). When omitted, the SDK prefers English if available. output_language_code: type: string minLength: 1 description: BCP 47 language code for the output chapter titles. Auto-detected from the transcript if omitted. prompt_overrides: type: object properties: task: type: string minLength: 1 description: Override the core task instruction for chapter generation. output_format: type: string minLength: 1 description: Override the JSON output format instructions. chapter_guidelines: type: string minLength: 1 description: Override the chapter density and timing constraints. title_guidelines: type: string minLength: 1 description: Override the chapter title style requirements. description: Override specific sections of the chapter generation prompt. required: - asset_id example: asset_id: mux_asset_123abc GenerateChaptersJobResponse: type: object properties: data: $ref: '#/components/schemas/GenerateChaptersJob' required: - data JobError: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message JobStatus: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. JobSummary: type: object properties: id: type: string description: Unique job identifier. workflow: type: string enum: - summarize - moderate - generate-chapters - edit-captions - translate-captions - ask-questions - find-key-moments description: Workflow type that created this job. status: $ref: '#/components/schemas/JobStatus' created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. _links: type: object properties: self: type: object properties: href: type: string description: URL to this resource. required: - href required: - self description: Hypermedia links for this job. required: - id - workflow - status - created_at - updated_at - _links ListJobsResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/JobSummary' total_row_count: type: integer description: Total number of jobs matching the query filters example: 42 required: - data - total_row_count ModerateJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - moderate parameters: $ref: '#/components/schemas/ModerateJobParameters' status: $ref: '#/components/schemas/JobStatus' outputs: $ref: '#/components/schemas/ModerateJobOutputs' errors: type: array items: $ref: '#/components/schemas/JobError' description: Error details. Present when status is 'errored'. resources: $ref: '#/components/schemas/Resources' required: - id - units_consumed - created_at - updated_at - workflow - parameters - status ModerateJobOutputs: type: object properties: thumbnail_scores: type: array items: type: object properties: time: type: number minimum: 0 description: Time in seconds of the thumbnail within the video. Absent for transcript moderation. sexual: type: number minimum: 0 maximum: 1 description: Sexual content score from 0.0 to 1.0. violence: type: number minimum: 0 maximum: 1 description: Violence content score from 0.0 to 1.0. required: - sexual - violence description: Per-thumbnail moderation scores. max_scores: type: object properties: sexual: type: number minimum: 0 maximum: 1 violence: type: number minimum: 0 maximum: 1 required: - sexual - violence description: Highest scores across all thumbnails for each category. exceeds_threshold: type: boolean description: True if any category's max score exceeds its configured threshold. required: - thumbnail_scores - max_scores - exceeds_threshold example: thumbnail_scores: - time: 0 sexual: 0.01 violence: 0.02 - time: 30 sexual: 0.03 violence: 0.15 - time: 60 sexual: 0.02 violence: 0.05 max_scores: sexual: 0.03 violence: 0.15 exceeds_threshold: false description: Workflow results. Present when status is 'completed'. ModerateJobParameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video to moderate. language_code: type: string minLength: 1 default: en description: BCP 47 language code for transcript analysis. Used only for audio-only assets; ignored for video assets with visual content. If omitted for audio-only assets, the first ready text track is used. Defaults to "en". thresholds: type: object properties: sexual: type: number minimum: 0 maximum: 1 description: Score threshold for sexual content. Content scoring above this value triggers exceeds_threshold. violence: type: number minimum: 0 maximum: 1 description: Score threshold for violent content. Content scoring above this value triggers exceeds_threshold. default: sexual: 0.7 violence: 0.8 description: 'Score thresholds that determine whether content is flagged. When combined with sampling_interval or max_samples, the exceeds_threshold flag reflects whether any category''s highest observed score exceeds its configured threshold. Defaults to {sexual: 0.7, violence: 0.8}.' sampling_interval: type: integer minimum: 5 description: Interval, in seconds, between sampled thumbnails. Minimum 5 seconds. When max_samples is also set, the actual sampling density is the more restrictive of the two constraints. max_samples: type: integer minimum: 1 description: Maximum number of thumbnails to sample. Acts as a cap — if sampling_interval produces fewer samples than this limit, the interval is respected; otherwise samples are evenly distributed with first and last frames pinned. required: - asset_id example: asset_id: mux_asset_123abc thresholds: sexual: 0.7 violence: 0.8 ModerateJobResponse: type: object properties: data: $ref: '#/components/schemas/ModerateJob' required: - data Resources: type: object properties: assets: type: array items: $ref: '#/components/schemas/SlimlineAsset' description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. SlimlineAsset: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links SummarizeJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - summarize parameters: $ref: '#/components/schemas/SummarizeJobParameters' status: $ref: '#/components/schemas/JobStatus' outputs: $ref: '#/components/schemas/SummarizeJobOutputs' errors: type: array items: $ref: '#/components/schemas/JobError' description: Error details. Present when status is 'errored'. resources: $ref: '#/components/schemas/Resources' required: - id - units_consumed - created_at - updated_at - workflow - parameters - status SummarizeJobOutputs: type: object properties: title: type: string minLength: 1 description: Generated title capturing the essence of the video. description: type: string minLength: 1 description: Generated description of the video content (typically 2-4 sentences). tags: type: array items: type: string description: Generated keyword tags for the video. required: - title - description - tags example: title: How to Build a Sustainable Garden in Your Backyard description: This video walks through the step-by-step process of creating a sustainable backyard garden, covering soil preparation, plant selection, and organic pest control methods. tags: - gardening - sustainability - backyard - organic - soil preparation - composting - pest control - beginner - how-to - plants description: Workflow results. Present when status is 'completed'. SummarizeJobParameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video to summarize. tone: type: string enum: - neutral - playful - professional description: Tone for the generated summary. "neutral" for straightforward analysis, "playful" for witty and conversational, "professional" for executive-level reporting. prompt_overrides: type: object properties: task: type: string minLength: 1 description: Override the core task instruction for summarization. title: type: string minLength: 1 description: Override the title generation requirements. description: type: string minLength: 1 description: Override the description generation requirements. keywords: type: string minLength: 1 description: Override the keyword/tag extraction requirements. quality_guidelines: type: string minLength: 1 description: Override the quality standards for analysis. description: Override specific sections of the summarization prompt. title_length: type: integer minimum: 1 description: Maximum title length in words. description_length: type: integer minimum: 1 description: Maximum description length in words. tag_count: type: integer minimum: 1 description: Maximum number of tags to include in the generated output. Defaults to 10. language_code: type: string minLength: 1 description: BCP 47 language code of the caption track to analyze (e.g. "en", "fr"). When omitted, the SDK uses the default track. output_language_code: type: string minLength: 1 description: BCP 47 language code for the generated summary output (e.g. "en", "fr", "ja"). Auto-detected from the transcript if omitted. required: - asset_id example: asset_id: mux_asset_123abc tone: neutral tag_count: 10 SummarizeJobResponse: type: object properties: data: $ref: '#/components/schemas/SummarizeJob' required: - data TranslateCaptionsJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - translate-captions parameters: $ref: '#/components/schemas/TranslateCaptionsJobParameters' status: $ref: '#/components/schemas/JobStatus' outputs: $ref: '#/components/schemas/TranslateCaptionsJobOutputs' errors: type: array items: $ref: '#/components/schemas/JobError' description: Error details. Present when status is 'errored'. resources: $ref: '#/components/schemas/Resources' required: - id - units_consumed - created_at - updated_at - workflow - parameters - status TranslateCaptionsJobOutputs: type: object properties: track_id: type: string minLength: 1 description: The Mux text track ID of the source caption track that was translated. uploaded_track_id: type: string minLength: 1 description: Mux text track ID of the uploaded translated captions. Present when upload_to_mux is true. temporary_vtt_url: type: string minLength: 1 description: Temporary pre-signed URL to download the translated VTT file. Present when upload_to_mux is true. example: track_id: track_en_abc123 uploaded_track_id: track_es_abc123 temporary_vtt_url: https://storage.example.com/translations/es/captions.vtt?token=abc123 description: Workflow results. Present when status is 'completed'. TranslateCaptionsJobParameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video whose captions will be translated. track_id: type: string minLength: 1 description: The Mux text track ID of the source caption track to translate. The asset must have a ready text track matching this ID or the request will be rejected. to_language_code: type: string minLength: 1 description: BCP 47 language code for the translated output (e.g. "es", "ja"). The asset must not already have a text track for this language. upload_to_mux: type: boolean default: true description: Whether to upload the translated VTT and attach it as a text track on the Mux asset. Defaults to true. required: - asset_id - track_id - to_language_code example: asset_id: mux_asset_123abc track_id: track_en_abc123 to_language_code: es upload_to_mux: true TranslateCaptionsJobResponse: type: object properties: data: $ref: '#/components/schemas/TranslateCaptionsJob' required: - data RateLimitedResponse: type: object required: - errors properties: errors: type: array items: type: string description: Description of the error UnauthorizedResponse: type: object required: - error properties: error: type: object required: - type - messages properties: type: type: string description: The type of the error messages: type: array items: type: string description: Friendly messages of errors encountered StatsCountsResponse: type: object required: - data properties: data: type: array $ref: '#/components/schemas/StatsCounts' StatsCounts: type: object properties: views: schema: type: integer format: int32 viewers: schema: type: integer format: int32 updated_at: schema: type: string format: date StatsCountsErrorResponse: type: object required: - error properties: error: $ref: '#/components/schemas/StatsCountsError' StatsCountsError: type: object properties: type: schema: type: string messages: schema: type: array items: type: string BaseWebhookEvent: type: object properties: type: type: string description: Type for the webhook event x-stainless-skip: - python id: type: string description: Unique identifier for the event created_at: type: string description: Time the event was created format: date-time example: '2022-01-01T00:00:00.000000Z' object: type: object properties: type: type: string id: type: string required: - type - id environment: type: object properties: name: type: string description: Name for the environment id: type: string description: Unique identifier for the environment required: - name - id attempts: type: array description: Attempts for sending out the webhook event items: type: object properties: webhook_id: type: integer description: Unique identifier for the webhook response_status_code: type: integer description: HTTP response status code for the webhook attempt response_headers: type: object description: HTTP response headers for the webhook attempt response_body: type: - string - 'null' description: HTTP response body for the webhook attempt max_attempts: description: Max attempts number for the webhook attempt type: integer id: description: Unique identifier for the webhook attempt type: string created_at: description: Time the webhook request was attempted type: string format: date-time example: '2022-01-01T00:00:00.000000Z' address: description: URL address for the webhook attempt type: string request_id: type: - string - 'null' deprecated: true accessor: type: - string - 'null' deprecated: true accessor_source: type: - string - 'null' deprecated: true data: type: object x-stainless-skip: - python required: - data - type - id - created_at - object - environment - data - attempts WebhookAsset: type: object required: - id - created_at - status - max_resolution_tier - encoding_tier - master_access - progress properties: id: type: string description: Unique identifier for the Asset. Max 255 characters. created_at: type: integer format: int32 status: type: string enum: - preparing - ready - errored description: The status of the asset. duration: type: number format: double description: The duration of the asset in seconds (max duration for a single asset is 12 hours). max_stored_resolution: type: string enum: - Audio only - SD - HD - FHD - UHD description: This field is deprecated. Please use `resolution_tier` instead. The maximum resolution that has been stored for the asset. The asset may be delivered at lower resolutions depending on the device and bandwidth, however it cannot be delivered at a higher value than is stored. deprecated: true resolution_tier: type: string enum: - audio-only - 720p - 1080p - 1440p - 2160p description: The resolution tier that the asset was ingested at, affecting billing for ingest & storage. This field also represents the highest resolution tier that the content can be delivered at, however the actual resolution may be lower depending on the device, bandwidth, and exact resolution of the uploaded asset. max_resolution_tier: type: string enum: - 1080p - 1440p - 2160p description: Max resolution tier can be used to control the maximum `resolution_tier` your asset is encoded, stored, and streamed at. If not set, this defaults to `1080p`. encoding_tier: type: string deprecated: true enum: - smart - baseline - premium description: This field is deprecated. Please use `video_quality` instead. The encoding tier informs the cost, quality, and available platform features for the asset. The default encoding tier for an account can be set in the Mux Dashboard. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) video_quality: type: string enum: - basic - plus - premium description: The video quality controls the cost, quality, and available platform features for the asset. The default video quality for an account can be set in the Mux Dashboard. This field replaces the deprecated `encoding_tier` value. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) max_stored_frame_rate: type: number format: double description: The maximum frame rate that has been stored for the asset. The asset may be delivered at lower frame rates depending on the device and bandwidth, however it cannot be delivered at a higher value than is stored. This field may return -1 if the frame rate of the input cannot be reliably determined. aspect_ratio: type: string description: The aspect ratio of the asset in the form of `width:height`, for example `16:9`. playback_ids: type: array description: An array of Playback ID objects. Use these to create HLS playback URLs. See [Play your videos](https://docs.mux.com/guides/play-your-videos) for more details. items: type: object required: - id - policy properties: id: type: string description: Unique identifier for the PlaybackID policy: type: string enum: - public - signed - drm description: '* `public` playback IDs are accessible by constructing an HLS URL like `https://stream.mux.com/${PLAYBACK_ID}` * `signed` playback IDs should be used with tokens `https://stream.mux.com/${PLAYBACK_ID}?token={TOKEN}`. See [Secure video playback](https://docs.mux.com/guides/secure-video-playback) for details about creating tokens. * `drm` playback IDs are protected with DRM technologies. [See DRM documentation for more details](https://docs.mux.com/guides/protect-videos-with-drm). ' drm_configuration_id: type: string description: The DRM configuration used by this playback ID. Must only be set when `policy` is set to `drm`. tracks: type: array description: The individual media tracks that make up an asset. items: type: object properties: id: type: string description: Unique identifier for the Track type: type: string description: The type of track enum: - video - audio - text duration: type: number format: double description: The duration in seconds of the track media. This parameter is not set for `text` type tracks. This field is optional and may not be set. The top level `duration` field of an asset will always be set. max_width: type: integer format: int64 description: The maximum width in pixels available for the track. Only set for the `video` type track. max_height: type: integer format: int64 description: The maximum height in pixels available for the track. Only set for the `video` type track. max_frame_rate: type: number format: double description: The maximum frame rate available for the track. Only set for the `video` type track. This field may return `-1` if the frame rate of the input cannot be reliably determined. max_channels: type: integer format: int64 description: The maximum number of audio channels the track supports. Only set for the `audio` type track. max_channel_layout: type: string description: Only set for the `audio` type track. deprecated: true text_type: type: string enum: - subtitles description: This parameter is only set for `text` type tracks. text_source: type: string description: 'The source of the text contained in a Track of type `text`. Valid `text_source` values are listed below. * `uploaded`: Tracks uploaded to Mux as caption or subtitle files using the Create Asset Track API. * `embedded`: Tracks extracted from an embedded stream of CEA-608 closed captions. * `generated_vod`: Tracks generated by automatic speech recognition on an on-demand asset. * `generated_live`: Tracks generated by automatic speech recognition on a live stream configured with `generated_subtitles`. If an Asset has both `generated_live` and `generated_live_final` tracks that are `ready`, then only the `generated_live_final` track will be included during playback. * `generated_live_final`: Tracks generated by automatic speech recognition on a live stream using `generated_subtitles`. The accuracy, timing, and formatting of these subtitles is improved compared to the corresponding `generated_live` tracks. However, `generated_live_final` tracks will not be available in `ready` status until the live stream ends. If an Asset has both `generated_live` and `generated_live_final` tracks that are `ready`, then only the `generated_live_final` track will be included during playback. ' enum: - uploaded - embedded - generated_live - generated_live_final - generated_vod language_code: type: string description: The language code value represents [BCP 47](https://tools.ietf.org/html/bcp47) specification compliant value, or 'auto'. For example, `en` for English or `en-US` for the US version of English. This parameter is only set for `text` and `audio` track types. During automatic language detection for generated subtitles, this value will be set to `auto` until the language is determined. name: type: string description: The name of the track containing a human-readable description. The HLS manifest will associate a subtitle `text` or `audio` track with this value. For example, the value should be "English" for a subtitle text track for the `language_code` value of `en-US`. This parameter is only set for `text` and `audio` track types. closed_captions: type: boolean description: Indicates the track provides Subtitles for the Deaf or Hard-of-hearing (SDH). This parameter is only set tracks where `type` is `text` and `text_type` is `subtitles`. passthrough: type: string description: Arbitrary user-supplied metadata set for the track either when creating the asset or track. This parameter is only set for `text` type tracks. Max 255 characters. status: type: string enum: - preparing - ready - errored - deleted description: The status of the track. This parameter is only set for `text` type tracks. primary: type: boolean description: For an audio track, indicates that this is the primary audio track, ingested from the main input for this asset. The primary audio track cannot be deleted. auto_language_confidence: type: number format: double description: The confidence value (0-1) of the determined language. This value only is available when automatic language detection is utilized in generated subtitles. error: type: object description: Object that describes any errors that happened when processing this asset. properties: type: type: string description: The type of error that occurred for this asset. messages: type: array description: Error messages with more details. items: type: string errors: type: object description: Object that describes any errors that happened when processing this asset. properties: type: type: string description: The type of error that occurred for this asset. messages: type: array description: Error messages with more details. items: type: string per_title_encode: type: boolean format: boolean x-mux-doc-decorators: - hidden deprecated: true upload_id: type: string description: Unique identifier for the Direct Upload. This is an optional parameter added when the asset is created from a direct upload. is_live: type: boolean format: boolean description: Indicates whether the live stream that created this asset is currently `active` and not in `idle` state. This is an optional parameter added when the asset is created from a live stream. passthrough: type: string description: 'You can set this field to anything you want. It will be included in the asset details and related webhooks. If you''re looking for more structured metadata, such as `title` or `external_id` , you can use the `meta` object instead. **Max: 255 characters**.' live_stream_id: type: string description: Unique identifier for the live stream. This is an optional parameter added when the asset is created from a live stream. master: type: object description: An object containing the current status of Master Access and the link to the Master MP4 file when ready. This object does not exist if `master_access` is set to `none` and when the temporary URL expires. properties: status: enum: - ready - preparing - errored type: string url: type: string description: The temporary URL to the master version of the video, as an MP4 file. This URL will expire after 24 hours. master_access: type: string enum: - temporary - none default: none mp4_support: type: string deprecated: true default: none enum: - standard - none - capped-1080p - audio-only - audio-only,capped-1080p x-mux-doc-decorators-deprecated-enum-values: - standard source_asset_id: type: string description: Asset Identifier of the video used as the source for creating the clip. normalize_audio: type: boolean default: false description: Normalize the audio track loudness level. This parameter is only applicable to on-demand (not live) assets. static_renditions: type: object description: An object containing the current status of any static renditions (mp4s). The object does not exist if no static renditions have been requested. See [Download your videos](https://docs.mux.com/guides/enable-static-mp4-renditions) for more information. properties: status: type: string default: disabled description: Indicates the status of downloadable MP4 versions of this asset. This field is only valid when `mp4_support` is enabled enum: - ready - preparing - disabled - errored files: type: array description: Array of file objects. items: type: object properties: name: type: string enum: - low.mp4 - medium.mp4 - high.mp4 - highest.mp4 - audio.m4a - capped-1080p.mp4 - 2160p.mp4 - 1440p.mp4 - 1080p.mp4 - 720p.mp4 - 540p.mp4 - 480p.mp4 - 360p.mp4 - 270p.mp4 description: Name of the static rendition file ext: type: string description: Extension of the static rendition file enum: - mp4 - m4a height: type: integer format: int32 description: The height of the static rendition's file in pixels width: type: integer format: int32 description: The width of the static rendition's file in pixels bitrate: type: integer format: int64 description: The bitrate in bits per second filesize: type: integer format: int64 description: The file size in bytes type: type: string description: Indicates the static rendition type of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. enum: - standard - advanced status: type: string description: 'Indicates the status of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. * `ready` indicates the MP4 has been generated and is ready for download * `preparing` indicates the asset has not been ingested or the static rendition is still being generated after an asset is ready * `skipped` indicates the static rendition will not be generated because the requested resolution conflicts with the asset attributes after the asset has been ingested * `errored` indicates the static rendition cannot be generated. For example, an asset could not be ingested ' enum: - ready - preparing - skipped - errored resolution_tier: type: string description: Indicates the resolution tier of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. enum: - 2160p - 1440p - 1080p - 720p - audio-only resolution: type: string description: Indicates the resolution of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. enum: - highest - audio-only - 2160p - 1440p - 1080p - 720p - 540p - 480p - 360p - 270p x-mux-doc-decorators-hidden-enum-values: - 2160p - 1440p - 1080p - 720p - 540p - 480p - 360p - 270p id: type: string description: The ID of this static rendition, used in managing this static rendition. This field is only valid for `static_renditions`, not for `mp4_support`. passthrough: type: string description: Arbitrary user-supplied metadata set for the static rendition. Max 255 characters. recording_times: type: array description: An array of individual live stream recording sessions. A recording session is created on each encoder connection during the live stream. Additionally any time slate media is inserted during brief interruptions in the live stream media or times when the live streaming software disconnects, a recording session representing the slate media will be added with a "slate" type. items: type: object properties: started_at: type: object properties: nanos: format: int32 type: integer seconds: format: int32 type: integer required: - seconds duration: type: number format: double description: The duration of the live stream recorded. The time value is in seconds. type: type: string enum: - content - slate description: The type of media represented by the recording session, either `content` for normal stream content or `slate` for slate media inserted during stream interruptions. non_standard_input_reasons: type: object description: An object containing one or more reasons the input file is non-standard. See [the guide on minimizing processing time](https://docs.mux.com/guides/minimize-processing-time) for more information on what a standard input is defined as. This object only exists on on-demand assets that have non-standard inputs, so if missing you can assume the input qualifies as standard. properties: video_codec: type: string description: The video codec used on the input file. For example, the input file encoded with `av1` video codec is non-standard and the value of this parameter is `av1`. audio_codec: type: string description: The audio codec used on the input file. Non-AAC audio codecs are non-standard. video_gop_size: type: string enum: - high description: The video key frame Interval (also called as Group of Picture or GOP) of the input file is `high`. This parameter is present when the gop is greater than 20 seconds. video_frame_rate: type: string description: The video frame rate of the input file. Video with average frames per second (fps) less than 5 or greater than 120 is non-standard. A `-1` frame rate value indicates Mux could not determine the frame rate of the video track. video_resolution: type: string description: The video resolution of the input file. Video resolution higher than 2048 pixels on any one dimension (height or width) is considered non-standard, The resolution value is presented as `width` x `height` in pixels. video_bitrate: type: string enum: - high description: The video bitrate of the input file is `high`. This parameter is present when the average bitrate of any key frame interval (also known as Group of Pictures or GOP) is higher than what's considered standard which typically is 16 Mbps. pixel_aspect_ratio: type: string description: The video pixel aspect ratio of the input file. video_edit_list: type: string enum: - non-standard description: Video Edit List reason indicates that the input file's video track contains a complex Edit Decision List. audio_edit_list: type: string enum: - non-standard description: Audio Edit List reason indicates that the input file's audio track contains a complex Edit Decision List. unexpected_media_file_parameters: type: string enum: - non-standard description: A catch-all reason when the input file in created with non-standard encoding parameters. unsupported_pixel_format: type: string description: The video pixel format, as a string, returned by libav. Considered non-standard if not one of yuv420p or yuvj420p. HEVC inputs additionally permit yuv420p10le. unexpected_video_parameters: type: string test: type: boolean format: boolean description: True means this live stream is a test asset. A test asset can help evaluate the Mux Video APIs without incurring any cost. There is no limit on number of test assets created. Test assets are watermarked with the Mux logo, limited to 10 seconds, and deleted after 24 hrs. ingest_type: type: string enum: - on_demand_url - on_demand_direct_upload - on_demand_clip - live_rtmp - live_srt description: The type of ingest used to create the asset. meta: type: object description: 'Customer provided metadata about this asset. Note: This metadata may be publicly available via the video player. Do not include PII or sensitive information. ' properties: title: type: string maxLength: 512 description: The asset title. Max 512 code points. creator_id: type: string maxLength: 128 description: This is an identifier you provide to keep track of the creator of the asset. Max 128 code points. external_id: type: string maxLength: 128 description: This is an identifier you provide to link the asset to your own data. Max 128 code points. progress: type: object description: Detailed state information about the asset ingest process. properties: state: type: string enum: - ingesting - transcoding - completed - live - errored description: 'The detailed state of the asset ingest process. This field is useful for relaying more granular processing information to end users when a [non-standard input is encountered](https://www.mux.com/docs/guides/minimize-processing-time#non-standard-input). - `ingesting`: Asset is being ingested (initial processing before or after transcoding). While in this state, the `progress` percentage will be 0. - `transcoding`: Asset is undergoing non-standard transcoding. - `completed`: Asset processing is complete (`status` is `ready`). While in this state, the `progress` percentage will be 100. - `live`: Asset is a live stream currently in progress. While in this state, the `progress` percentage will be -1. - `errored`: Asset has encountered an error (`status` is `errored`). While in this state, the `progress` percentage will be -1. ' progress: type: number format: double minimum: -1 maximum: 100 description: Represents the estimated completion percentage. Returns `0 - 100` when in `ingesting`, `transcoding`, or `completed` state, and `-1` when in `live` or `errored` state. required: - state - progress WebhookAssetTrack: type: object properties: id: type: string description: Unique identifier for the Track type: type: string description: The type of track enum: - video - audio - text duration: type: number format: double description: The duration in seconds of the track media. This parameter is not set for `text` type tracks. This field is optional and may not be set. The top level `duration` field of an asset will always be set. max_width: type: integer format: int64 description: The maximum width in pixels available for the track. Only set for the `video` type track. max_height: type: integer format: int64 description: The maximum height in pixels available for the track. Only set for the `video` type track. max_frame_rate: type: number format: double description: The maximum frame rate available for the track. Only set for the `video` type track. This field may return `-1` if the frame rate of the input cannot be reliably determined. max_channels: type: integer format: int64 description: The maximum number of audio channels the track supports. Only set for the `audio` type track. max_channel_layout: type: string description: Only set for the `audio` type track. deprecated: true text_type: type: string enum: - subtitles description: This parameter is only set for `text` type tracks. text_source: type: string description: 'The source of the text contained in a Track of type `text`. Valid `text_source` values are listed below. * `uploaded`: Tracks uploaded to Mux as caption or subtitle files using the Create Asset Track API. * `embedded`: Tracks extracted from an embedded stream of CEA-608 closed captions. * `generated_vod`: Tracks generated by automatic speech recognition on an on-demand asset. * `generated_live`: Tracks generated by automatic speech recognition on a live stream configured with `generated_subtitles`. If an Asset has both `generated_live` and `generated_live_final` tracks that are `ready`, then only the `generated_live_final` track will be included during playback. * `generated_live_final`: Tracks generated by automatic speech recognition on a live stream using `generated_subtitles`. The accuracy, timing, and formatting of these subtitles is improved compared to the corresponding `generated_live` tracks. However, `generated_live_final` tracks will not be available in `ready` status until the live stream ends. If an Asset has both `generated_live` and `generated_live_final` tracks that are `ready`, then only the `generated_live_final` track will be included during playback. ' enum: - uploaded - embedded - generated_live - generated_live_final - generated_vod language_code: type: string description: The language code value represents [BCP 47](https://tools.ietf.org/html/bcp47) specification compliant value, or 'auto'. For example, `en` for English or `en-US` for the US version of English. This parameter is only set for `text` and `audio` track types. During automatic language detection for generated subtitles, this value will be set to `auto` until the language is determined. name: type: string description: The name of the track containing a human-readable description. The HLS manifest will associate a subtitle `text` or `audio` track with this value. For example, the value should be "English" for a subtitle text track for the `language_code` value of `en-US`. This parameter is only set for `text` and `audio` track types. closed_captions: type: boolean description: Indicates the track provides Subtitles for the Deaf or Hard-of-hearing (SDH). This parameter is only set tracks where `type` is `text` and `text_type` is `subtitles`. passthrough: type: string description: Arbitrary user-supplied metadata set for the track either when creating the asset or track. This parameter is only set for `text` type tracks. Max 255 characters. status: type: string enum: - preparing - ready - errored - deleted description: The status of the track. This parameter is only set for `text` type tracks. primary: type: boolean description: For an audio track, indicates that this is the primary audio track, ingested from the main input for this asset. The primary audio track cannot be deleted. auto_language_confidence: type: number format: double description: The confidence value (0-1) of the determined language. This value only is available when automatic language detection is utilized in generated subtitles. asset_id: type: string description: Unique identifier for the Asset. Max 255 characters. error: type: object description: Object that describes any errors that happened when processing this asset. properties: type: type: string description: The type of error that occurred for this asset. messages: type: array description: Error messages with more details. items: type: string WebhookAssetStaticRendition: type: object properties: name: type: string enum: - low.mp4 - medium.mp4 - high.mp4 - highest.mp4 - audio.m4a - capped-1080p.mp4 - 2160p.mp4 - 1440p.mp4 - 1080p.mp4 - 720p.mp4 - 540p.mp4 - 480p.mp4 - 360p.mp4 - 270p.mp4 description: Name of the static rendition file ext: type: string description: Extension of the static rendition file enum: - mp4 - m4a height: type: integer format: int32 description: The height of the static rendition's file in pixels width: type: integer format: int32 description: The width of the static rendition's file in pixels bitrate: type: integer format: int64 description: The bitrate in bits per second filesize: type: string format: int64 description: The file size in bytes type: type: string description: Indicates the static rendition type of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. enum: - standard - advanced status: type: string description: 'Indicates the status of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. * `ready` indicates the MP4 has been generated and is ready for download * `preparing` indicates the asset has not been ingested or the static rendition is still being generated after an asset is ready * `skipped` indicates the static rendition will not be generated because the requested resolution conflicts with the asset attributes after the asset has been ingested * `errored` indicates the static rendition cannot be generated. For example, an asset could not be ingested ' enum: - ready - preparing - skipped - errored resolution_tier: type: string description: Indicates the resolution tier of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. enum: - 2160p - 1440p - 1080p - 720p - audio-only resolution: type: string description: Indicates the resolution of this specific MP4 version of this asset. This field is only valid for `static_renditions`, not for `mp4_support`. enum: - highest - audio-only - 2160p - 1440p - 1080p - 720p - 540p - 480p - 360p - 270p x-mux-doc-decorators-hidden-enum-values: - 2160p - 1440p - 1080p - 720p - 540p - 480p - 360p - 270p id: type: string description: The ID of this static rendition, used in managing this static rendition. This field is only valid for `static_renditions`, not for `mp4_support`. passthrough: type: string description: Arbitrary user-supplied metadata set for the static rendition. Max 255 characters. asset_id: type: string description: Unique identifier for the Asset. Max 255 characters. error: type: object description: Object that describes any errors that happened when processing this asset. properties: type: type: string description: The type of error that occurred for this asset. messages: type: array description: Error messages with more details. items: type: string WebhookAssetWarning: type: object properties: id: type: string description: Unique identifier for the Asset. Max 255 characters. live_stream_id: type: string description: Unique identifier for the live stream. This is an optional parameter added when the asset is created from a live stream. source_asset_id: type: string description: Asset Identifier of the video used as the source for creating the clip. upload_id: type: string description: Unique identifier for the Direct Upload. This is an optional parameter added when the asset is created from a direct upload. status: type: string enum: - preparing - ready - errored description: The status of the asset. passthrough: type: string description: 'You can set this field to anything you want. It will be included in the asset details and related webhooks. If you''re looking for more structured metadata, such as `title` or `external_id` , you can use the `meta` object instead. **Max: 255 characters**.' warning: type: object properties: type: type: string message: type: string WebhookDirectUpload: type: object required: - id - timeout - status - cors_origin properties: id: type: string description: Unique identifier for the Direct Upload. timeout: type: integer format: int32 default: 3600 minimum: 60 maximum: 604800 description: Max time in seconds for the signed upload URL to be valid. If a successful upload has not occurred before the timeout limit, the direct upload is marked `timed_out` status: type: string enum: - waiting - asset_created - errored - cancelled - timed_out new_asset_settings: type: object properties: inputs: type: array description: An array of objects that each describe an input file to be used to create the asset. As a shortcut, input can also be a string URL for a file when only one input file is used. See `input[].url` for requirements. items: type: object description: An array of objects that each describe an input file to be used to create the asset. As a shortcut, `input` can also be a string URL for a file when only one input file is used. See `input[].url` for requirements. properties: url: type: string description: 'The URL of the file that Mux should download and use. * For the main input file, this should be the URL to the muxed file for Mux to download, for example an MP4, MOV, MKV, or TS file. Mux supports most audio/video file formats and codecs, but for fastest processing, you should [use standard inputs wherever possible](https://docs.mux.com/guides/minimize-processing-time). * For `audio` tracks, the URL is the location of the audio file for Mux to download, for example an M4A, WAV, or MP3 file. Mux supports most audio file formats and codecs, but for fastest processing, you should [use standard inputs wherever possible](https://docs.mux.com/guides/minimize-processing-time). * For `text` tracks, the URL is the location of subtitle/captions file. Mux supports [SubRip Text (SRT)](https://en.wikipedia.org/wiki/SubRip) and [Web Video Text Tracks](https://www.w3.org/TR/webvtt1/) formats for ingesting Subtitles and Closed Captions. * For Watermarking or Overlay, the URL is the location of the watermark image. The maximum size is 4096x4096. * When creating clips from existing Mux assets, the URL is defined with `mux://assets/{asset_id}` template where `asset_id` is the Asset Identifier for creating the clip from. The url property may be omitted on the first input object when providing asset settings for LiveStream and Upload objects, in order to configure settings related to the primary (live stream or direct upload) input. ' overlay_settings: type: object description: An object that describes how the image file referenced in URL should be placed over the video (i.e. watermarking). Ensure that the URL is active and persists the entire lifespan of the video object. properties: vertical_align: type: string enum: - top - middle - bottom description: Where the vertical positioning of the overlay/watermark should begin from. Defaults to `"top"` vertical_margin: type: string description: The distance from the vertical_align starting point and the image's closest edge. Can be expressed as a percent ("10%") or as a pixel value ("100px"). Negative values will move the overlay offscreen. In the case of 'middle', a positive value will shift the overlay towards the bottom and and a negative value will shift it towards the top. horizontal_align: type: string enum: - left - center - right description: Where the horizontal positioning of the overlay/watermark should begin from. horizontal_margin: type: string description: The distance from the horizontal_align starting point and the image's closest edge. Can be expressed as a percent ("10%") or as a pixel value ("100px"). Negative values will move the overlay offscreen. In the case of 'center', a positive value will shift the image towards the right and and a negative value will shift it towards the left. width: type: string description: How wide the overlay should appear. Can be expressed as a percent ("10%") or as a pixel value ("100px"). If both width and height are left blank the width will be the true pixels of the image, applied as if the video has been scaled to fit a 1920x1080 frame. If height is supplied with no width, the width will scale proportionally to the height. height: type: string description: How tall the overlay should appear. Can be expressed as a percent ("10%") or as a pixel value ("100px"). If both width and height are left blank the height will be the true pixels of the image, applied as if the video has been scaled to fit a 1920x1080 frame. If width is supplied with no height, the height will scale proportionally to the width. opacity: type: string description: How opaque the overlay should appear, expressed as a percent. (Default 100%) generated_subtitles: type: array items: type: object properties: name: type: string description: A name for this subtitle track. passthrough: type: string description: Arbitrary metadata set for the subtitle track. Max 255 characters. language_code: type: string description: The language of the audio from which subtitles are generated. Selecting a language of "auto" will allow language detection to set the language code automatically. default: en enum: - en - es - it - pt - de - fr - pl - ru - nl - ca - tr - sv - uk - 'no' - fi - sk - el - cs - hr - da - ro - bg - auto description: Generate subtitle tracks using automatic speech recognition with this configuration. Subtitles are generated using the audio of the input they are nested within. For direct uploads, this first input should omit the url parameter, as the main input file is provided via the direct upload. Note that subtitle generation happens after initial ingest, so the generated tracks will be in the `preparing` state when the asset transitions to `ready`. start_time: type: number format: double description: The time offset in seconds from the beginning of the video indicating the clip's starting marker. The default value is 0 when not included. This parameter is only applicable for creating clips when `input.url` has `mux://assets/{asset_id}` format. end_time: type: number format: double description: The time offset in seconds from the beginning of the video, indicating the clip's ending marker. The default value is the duration of the video when not included. This parameter is only applicable for creating clips when `input.url` has `mux://assets/{asset_id}` format. type: type: string enum: - video - audio - text description: This parameter is required for `text` type tracks. text_type: type: string enum: - subtitles description: Type of text track. This parameter only supports subtitles value. For more information on Subtitles / Closed Captions, [see this blog post](https://mux.com/blog/subtitles-captions-webvtt-hls-and-those-magic-flags/). This parameter is required for `text` type tracks. language_code: type: string description: The language code value must be a valid [BCP 47](https://tools.ietf.org/html/bcp47) specification compliant value. For example, `en` for English or `en-US` for the US version of English. This parameter is required for `text` and `audio` track types. name: type: string description: The name of the track containing a human-readable description. This value must be unique within each group of `text` or `audio` track types. The HLS manifest will associate a subtitle text track with this value. For example, the value should be "English" for a subtitle text track with `language_code` set to `en`. This optional parameter should be used only for `text` and `audio` type tracks. This parameter can be optionally provided for the first video input to denote the name of the muxed audio track if present. If this parameter is not included, Mux will auto-populate based on the `input[].language_code` value. closed_captions: type: boolean description: Indicates the track provides Subtitles for the Deaf or Hard-of-hearing (SDH). This optional parameter should be used for tracks with `type` of `text` and `text_type` set to `subtitles`. passthrough: type: string description: This optional parameter should be used for tracks with `type` of `text` and `text_type` set to `subtitles`. playback_policies: type: array items: type: string enum: - public - signed - drm description: '* `public` playback IDs are accessible by constructing an HLS URL like `https://stream.mux.com/${PLAYBACK_ID}` * `signed` playback IDs should be used with tokens `https://stream.mux.com/${PLAYBACK_ID}?token={TOKEN}`. See [Secure video playback](https://docs.mux.com/guides/secure-video-playback) for details about creating tokens. * `drm` playback IDs are protected with DRM technologies. [See DRM documentation for more details](https://docs.mux.com/guides/protect-videos-with-drm). ' description: 'An array of playback policy names that you want applied to this asset and available through `playback_ids`. Options include: * `"public"` (anyone with the playback URL can stream the asset). * `"signed"` (an additional access token is required to play the asset). If no `playback_policies` are set, the asset will have no playback IDs and will therefore not be playable. For simplicity, a single string name can be used in place of the array in the case of only one playback policy. ' advanced_playback_policies: type: array items: type: object properties: policy: type: string enum: - public - signed - drm description: '* `public` playback IDs are accessible by constructing an HLS URL like `https://stream.mux.com/${PLAYBACK_ID}` * `signed` playback IDs should be used with tokens `https://stream.mux.com/${PLAYBACK_ID}?token={TOKEN}`. See [Secure video playback](https://docs.mux.com/guides/secure-video-playback) for details about creating tokens. * `drm` playback IDs are protected with DRM technologies. [See DRM documentation for more details](https://docs.mux.com/guides/protect-videos-with-drm). ' drm_configuration_id: type: string description: The DRM configuration used by this playback ID. Must only be set when `policy` is set to `drm`. description: 'An array of playback policy objects that you want applied to this asset and available through `playback_ids`. `advanced_playback_policies` must be used instead of `playback_policies` when creating a DRM playback ID. ' per_title_encode: type: boolean format: boolean x-mux-doc-decorators: - hidden deprecated: true passthrough: type: string description: 'You can set this field to anything you want. It will be included in the asset details and related webhooks. If you''re looking for more structured metadata, such as `title` or `external_id`, you can use the `meta` object instead. **Max: 255 characters**.' mp4_support: type: string deprecated: true enum: - none - standard - capped-1080p - audio-only - audio-only,capped-1080p description: 'Deprecated. See the [Static Renditions API](https://www.mux.com/docs/guides/enable-static-mp4-renditions) for the updated API. Specify what level of support for mp4 playback. You may not enable both `mp4_support` and `static_renditions`. * The `capped-1080p` option produces a single MP4 file, called `capped-1080p.mp4`, with the video resolution capped at 1080p. This option produces an `audio.m4a` file for an audio-only asset. * The `audio-only` option produces a single M4A file, called `audio.m4a` for a video or an audio-only asset. MP4 generation will error when this option is specified for a video-only asset. * The `audio-only,capped-1080p` option produces both the `audio.m4a` and `capped-1080p.mp4` files. Only the `capped-1080p.mp4` file is produced for a video-only asset, while only the `audio.m4a` file is produced for an audio-only asset. The `standard`(deprecated) option produces up to three MP4 files with different levels of resolution (`high.mp4`, `medium.mp4`, `low.mp4`, or `audio.m4a` for an audio-only asset). MP4 files are not produced for `none` (default). In most cases you should use our default HLS-based streaming playback (`{playback_id}.m3u8`) which can automatically adjust to viewers'' connection speeds, but an mp4 can be useful for some legacy devices or downloading for offline playback. See the [Download your videos guide](https://docs.mux.com/guides/enable-static-mp4-renditions) for more information. ' x-mux-doc-decorators-deprecated-enum-values: - standard normalize_audio: type: boolean format: boolean description: Normalize the audio track loudness level. This parameter is only applicable to on-demand (not live) assets. default: false master_access: type: string enum: - none - temporary description: Specify what level (if any) of support for master access. Master access can be enabled temporarily for your asset to be downloaded. See the [Download your videos guide](https://docs.mux.com/guides/enable-static-mp4-renditions) for more information. test: type: boolean format: boolean description: Marks the asset as a test asset when the value is set to true. A Test asset can help evaluate the Mux Video APIs without incurring any cost. There is no limit on number of test assets created. Test asset are watermarked with the Mux logo, limited to 10 seconds, deleted after 24 hrs. max_resolution_tier: type: string enum: - 1080p - 1440p - 2160p description: Max resolution tier can be used to control the maximum `resolution_tier` your asset is encoded, stored, and streamed at. If not set, this defaults to `1080p`. encoding_tier: type: string deprecated: true enum: - smart - baseline - premium description: This field is deprecated. Please use `video_quality` instead. The encoding tier informs the cost, quality, and available platform features for the asset. The default encoding tier for an account can be set in the Mux Dashboard. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) video_quality: type: string enum: - basic - plus - premium description: The video quality controls the cost, quality, and available platform features for the asset. The default video quality for an account can be set in the Mux Dashboard. This field replaces the deprecated `encoding_tier` value. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) static_renditions: type: array items: type: object required: - resolution properties: resolution: type: string enum: - highest - audio-only - 2160p - 1440p - 1080p - 720p - 540p - 480p - 360p - 270p passthrough: type: string description: Arbitrary user-supplied metadata set for the static rendition. Max 255 characters. description: An array of static renditions to create for this asset. You may not enable both `static_renditions` and `mp4_support (the latter being deprecated)` meta: type: object description: 'Customer provided metadata about this asset. Note: This metadata may be publicly available via the video player. Do not include PII or sensitive information. ' properties: title: type: string maxLength: 512 description: The asset title. Max 512 code points. creator_id: type: string maxLength: 128 description: This is an identifier you provide to keep track of the creator of the asset. Max 128 code points. external_id: type: string maxLength: 128 description: This is an identifier you provide to link the asset to your own data. Max 128 code points. copy_overlays: type: boolean default: true description: If the created asset is a clip, this controls whether overlays are copied from the source asset. asset_id: type: string description: Only set once the upload is in the `asset_created` state. cors_origin: type: string description: If the upload URL will be used in a browser, you must specify the origin in order for the signed URL to have the correct CORS headers. url: type: string description: The URL to upload the associated source media to. test: type: boolean format: boolean description: Indicates if this is a test Direct Upload, in which case the Asset that gets created will be a `test` Asset. WebhookLiveStream: type: object required: - id - created_at - latency_mode - max_continuous_duration - status - stream_key properties: id: type: string description: Unique identifier for the Live Stream. Max 255 characters. created_at: type: integer format: int32 stream_key: type: string description: Unique key used for streaming to a Mux RTMP endpoint. This should be considered as sensitive as credentials, anyone with this stream key can begin streaming. Max 64 characters. active_asset_id: type: string description: The Asset that is currently being created if there is an active broadcast. recent_asset_ids: type: array description: An array of strings with the most recent Asset IDs that were created from this Live Stream. The most recently generated Asset ID is the last entry in the list. items: type: string status: type: string enum: - active - idle - disabled description: '`idle` indicates that there is no active broadcast. `active` indicates that there is an active broadcast and `disabled` status indicates that no future RTMP streams can be published.' playback_ids: type: array description: An array of Playback ID objects. Use these to create HLS playback URLs. See [Play your videos](https://docs.mux.com/guides/play-your-videos) for more details. items: type: object required: - id - policy properties: id: type: string description: Unique identifier for the PlaybackID policy: type: string enum: - public - signed - drm description: '* `public` playback IDs are accessible by constructing an HLS URL like `https://stream.mux.com/${PLAYBACK_ID}` * `signed` playback IDs should be used with tokens `https://stream.mux.com/${PLAYBACK_ID}?token={TOKEN}`. See [Secure video playback](https://docs.mux.com/guides/secure-video-playback) for details about creating tokens. * `drm` playback IDs are protected with DRM technologies. [See DRM documentation for more details](https://docs.mux.com/guides/protect-videos-with-drm). ' drm_configuration_id: type: string description: The DRM configuration used by this playback ID. Must only be set when `policy` is set to `drm`. new_asset_settings: type: object properties: inputs: type: array description: An array of objects that each describe an input file to be used to create the asset. As a shortcut, input can also be a string URL for a file when only one input file is used. See `input[].url` for requirements. items: type: object description: An array of objects that each describe an input file to be used to create the asset. As a shortcut, `input` can also be a string URL for a file when only one input file is used. See `input[].url` for requirements. properties: url: type: string description: 'The URL of the file that Mux should download and use. * For the main input file, this should be the URL to the muxed file for Mux to download, for example an MP4, MOV, MKV, or TS file. Mux supports most audio/video file formats and codecs, but for fastest processing, you should [use standard inputs wherever possible](https://docs.mux.com/guides/minimize-processing-time). * For `audio` tracks, the URL is the location of the audio file for Mux to download, for example an M4A, WAV, or MP3 file. Mux supports most audio file formats and codecs, but for fastest processing, you should [use standard inputs wherever possible](https://docs.mux.com/guides/minimize-processing-time). * For `text` tracks, the URL is the location of subtitle/captions file. Mux supports [SubRip Text (SRT)](https://en.wikipedia.org/wiki/SubRip) and [Web Video Text Tracks](https://www.w3.org/TR/webvtt1/) formats for ingesting Subtitles and Closed Captions. * For Watermarking or Overlay, the URL is the location of the watermark image. The maximum size is 4096x4096. * When creating clips from existing Mux assets, the URL is defined with `mux://assets/{asset_id}` template where `asset_id` is the Asset Identifier for creating the clip from. The url property may be omitted on the first input object when providing asset settings for LiveStream and Upload objects, in order to configure settings related to the primary (live stream or direct upload) input. ' overlay_settings: type: object description: An object that describes how the image file referenced in URL should be placed over the video (i.e. watermarking). Ensure that the URL is active and persists the entire lifespan of the video object. properties: vertical_align: type: string enum: - top - middle - bottom description: Where the vertical positioning of the overlay/watermark should begin from. Defaults to `"top"` vertical_margin: type: string description: The distance from the vertical_align starting point and the image's closest edge. Can be expressed as a percent ("10%") or as a pixel value ("100px"). Negative values will move the overlay offscreen. In the case of 'middle', a positive value will shift the overlay towards the bottom and and a negative value will shift it towards the top. horizontal_align: type: string enum: - left - center - right description: Where the horizontal positioning of the overlay/watermark should begin from. horizontal_margin: type: string description: The distance from the horizontal_align starting point and the image's closest edge. Can be expressed as a percent ("10%") or as a pixel value ("100px"). Negative values will move the overlay offscreen. In the case of 'center', a positive value will shift the image towards the right and and a negative value will shift it towards the left. width: type: string description: How wide the overlay should appear. Can be expressed as a percent ("10%") or as a pixel value ("100px"). If both width and height are left blank the width will be the true pixels of the image, applied as if the video has been scaled to fit a 1920x1080 frame. If height is supplied with no width, the width will scale proportionally to the height. height: type: string description: How tall the overlay should appear. Can be expressed as a percent ("10%") or as a pixel value ("100px"). If both width and height are left blank the height will be the true pixels of the image, applied as if the video has been scaled to fit a 1920x1080 frame. If width is supplied with no height, the height will scale proportionally to the width. opacity: type: string description: How opaque the overlay should appear, expressed as a percent. (Default 100%) generated_subtitles: type: array items: type: object properties: name: type: string description: A name for this subtitle track. passthrough: type: string description: Arbitrary metadata set for the subtitle track. Max 255 characters. language_code: type: string description: The language of the audio from which subtitles are generated. Selecting a language of "auto" will allow language detection to set the language code automatically. default: en enum: - en - es - it - pt - de - fr - pl - ru - nl - ca - tr - sv - uk - 'no' - fi - sk - el - cs - hr - da - ro - bg - auto description: Generate subtitle tracks using automatic speech recognition with this configuration. Subtitles are generated using the audio of the input they are nested within. For direct uploads, this first input should omit the url parameter, as the main input file is provided via the direct upload. Note that subtitle generation happens after initial ingest, so the generated tracks will be in the `preparing` state when the asset transitions to `ready`. start_time: type: number format: double description: The time offset in seconds from the beginning of the video indicating the clip's starting marker. The default value is 0 when not included. This parameter is only applicable for creating clips when `input.url` has `mux://assets/{asset_id}` format. end_time: type: number format: double description: The time offset in seconds from the beginning of the video, indicating the clip's ending marker. The default value is the duration of the video when not included. This parameter is only applicable for creating clips when `input.url` has `mux://assets/{asset_id}` format. type: type: string enum: - video - audio - text description: This parameter is required for `text` type tracks. text_type: type: string enum: - subtitles description: Type of text track. This parameter only supports subtitles value. For more information on Subtitles / Closed Captions, [see this blog post](https://mux.com/blog/subtitles-captions-webvtt-hls-and-those-magic-flags/). This parameter is required for `text` type tracks. language_code: type: string description: The language code value must be a valid [BCP 47](https://tools.ietf.org/html/bcp47) specification compliant value. For example, `en` for English or `en-US` for the US version of English. This parameter is required for `text` and `audio` track types. name: type: string description: The name of the track containing a human-readable description. This value must be unique within each group of `text` or `audio` track types. The HLS manifest will associate a subtitle text track with this value. For example, the value should be "English" for a subtitle text track with `language_code` set to `en`. This optional parameter should be used only for `text` and `audio` type tracks. This parameter can be optionally provided for the first video input to denote the name of the muxed audio track if present. If this parameter is not included, Mux will auto-populate based on the `input[].language_code` value. closed_captions: type: boolean description: Indicates the track provides Subtitles for the Deaf or Hard-of-hearing (SDH). This optional parameter should be used for tracks with `type` of `text` and `text_type` set to `subtitles`. passthrough: type: string description: This optional parameter should be used for tracks with `type` of `text` and `text_type` set to `subtitles`. playback_policies: type: array items: type: string enum: - public - signed - drm description: '* `public` playback IDs are accessible by constructing an HLS URL like `https://stream.mux.com/${PLAYBACK_ID}` * `signed` playback IDs should be used with tokens `https://stream.mux.com/${PLAYBACK_ID}?token={TOKEN}`. See [Secure video playback](https://docs.mux.com/guides/secure-video-playback) for details about creating tokens. * `drm` playback IDs are protected with DRM technologies. [See DRM documentation for more details](https://docs.mux.com/guides/protect-videos-with-drm). ' description: 'An array of playback policy names that you want applied to this asset and available through `playback_ids`. Options include: * `"public"` (anyone with the playback URL can stream the asset). * `"signed"` (an additional access token is required to play the asset). If no `playback_policies` are set, the asset will have no playback IDs and will therefore not be playable. For simplicity, a single string name can be used in place of the array in the case of only one playback policy. ' advanced_playback_policies: type: array items: type: object properties: policy: type: string enum: - public - signed - drm description: '* `public` playback IDs are accessible by constructing an HLS URL like `https://stream.mux.com/${PLAYBACK_ID}` * `signed` playback IDs should be used with tokens `https://stream.mux.com/${PLAYBACK_ID}?token={TOKEN}`. See [Secure video playback](https://docs.mux.com/guides/secure-video-playback) for details about creating tokens. * `drm` playback IDs are protected with DRM technologies. [See DRM documentation for more details](https://docs.mux.com/guides/protect-videos-with-drm). ' drm_configuration_id: type: string description: The DRM configuration used by this playback ID. Must only be set when `policy` is set to `drm`. description: 'An array of playback policy objects that you want applied to this asset and available through `playback_ids`. `advanced_playback_policies` must be used instead of `playback_policies` when creating a DRM playback ID. ' per_title_encode: type: boolean format: boolean x-mux-doc-decorators: - hidden deprecated: true passthrough: type: string description: 'You can set this field to anything you want. It will be included in the asset details and related webhooks. If you''re looking for more structured metadata, such as `title` or `external_id`, you can use the `meta` object instead. **Max: 255 characters**.' mp4_support: type: string deprecated: true enum: - none - standard - capped-1080p - audio-only - audio-only,capped-1080p description: 'Deprecated. See the [Static Renditions API](https://www.mux.com/docs/guides/enable-static-mp4-renditions) for the updated API. Specify what level of support for mp4 playback. You may not enable both `mp4_support` and `static_renditions`. * The `capped-1080p` option produces a single MP4 file, called `capped-1080p.mp4`, with the video resolution capped at 1080p. This option produces an `audio.m4a` file for an audio-only asset. * The `audio-only` option produces a single M4A file, called `audio.m4a` for a video or an audio-only asset. MP4 generation will error when this option is specified for a video-only asset. * The `audio-only,capped-1080p` option produces both the `audio.m4a` and `capped-1080p.mp4` files. Only the `capped-1080p.mp4` file is produced for a video-only asset, while only the `audio.m4a` file is produced for an audio-only asset. The `standard`(deprecated) option produces up to three MP4 files with different levels of resolution (`high.mp4`, `medium.mp4`, `low.mp4`, or `audio.m4a` for an audio-only asset). MP4 files are not produced for `none` (default). In most cases you should use our default HLS-based streaming playback (`{playback_id}.m3u8`) which can automatically adjust to viewers'' connection speeds, but an mp4 can be useful for some legacy devices or downloading for offline playback. See the [Download your videos guide](https://docs.mux.com/guides/enable-static-mp4-renditions) for more information. ' x-mux-doc-decorators-deprecated-enum-values: - standard normalize_audio: type: boolean format: boolean description: Normalize the audio track loudness level. This parameter is only applicable to on-demand (not live) assets. default: false master_access: type: string enum: - none - temporary description: Specify what level (if any) of support for master access. Master access can be enabled temporarily for your asset to be downloaded. See the [Download your videos guide](https://docs.mux.com/guides/enable-static-mp4-renditions) for more information. test: type: boolean format: boolean description: Marks the asset as a test asset when the value is set to true. A Test asset can help evaluate the Mux Video APIs without incurring any cost. There is no limit on number of test assets created. Test asset are watermarked with the Mux logo, limited to 10 seconds, deleted after 24 hrs. max_resolution_tier: type: string enum: - 1080p - 1440p - 2160p description: Max resolution tier can be used to control the maximum `resolution_tier` your asset is encoded, stored, and streamed at. If not set, this defaults to `1080p`. encoding_tier: type: string deprecated: true enum: - smart - baseline - premium description: This field is deprecated. Please use `video_quality` instead. The encoding tier informs the cost, quality, and available platform features for the asset. The default encoding tier for an account can be set in the Mux Dashboard. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) video_quality: type: string enum: - basic - plus - premium description: The video quality controls the cost, quality, and available platform features for the asset. The default video quality for an account can be set in the Mux Dashboard. This field replaces the deprecated `encoding_tier` value. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) static_renditions: type: array items: type: object required: - resolution properties: resolution: type: string enum: - highest - audio-only - 2160p - 1440p - 1080p - 720p - 540p - 480p - 360p - 270p passthrough: type: string description: Arbitrary user-supplied metadata set for the static rendition. Max 255 characters. description: An array of static renditions to create for this asset. You may not enable both `static_renditions` and `mp4_support (the latter being deprecated)` meta: type: object description: 'Customer provided metadata about this asset. Note: This metadata may be publicly available via the video player. Do not include PII or sensitive information. ' properties: title: type: string maxLength: 512 description: The asset title. Max 512 code points. creator_id: type: string maxLength: 128 description: This is an identifier you provide to keep track of the creator of the asset. Max 128 code points. external_id: type: string maxLength: 128 description: This is an identifier you provide to link the asset to your own data. Max 128 code points. copy_overlays: type: boolean default: true description: If the created asset is a clip, this controls whether overlays are copied from the source asset. passthrough: type: string description: Arbitrary user-supplied metadata set for the asset. Max 255 characters. audio_only: type: boolean description: The live stream only processes the audio track if the value is set to true. Mux drops the video track if broadcasted. embedded_subtitles: type: array items: type: object required: - name - language_code - language_channel properties: name: type: string description: A name for this live stream closed caption track. passthrough: type: string description: Arbitrary user-supplied metadata set for the live stream closed caption track. Max 255 characters. language_code: type: string description: The language of the closed caption stream. Value must be BCP 47 compliant. default: en language_channel: type: string description: CEA-608 caption channel to read data from. default: cc1 enum: - cc1 - cc2 - cc3 - cc4 description: Describes the embedded closed caption configuration of the incoming live stream. generated_subtitles: type: array items: type: object required: - name - language_code properties: name: type: string description: A name for this live stream subtitle track. passthrough: type: string description: Arbitrary metadata set for the live stream subtitle track. Max 255 characters. language_code: type: string description: The language of the audio from which subtitles are generated. default: en enum: - en - en-US - es - fr - de - pt - it transcription_vocabulary_ids: type: array items: type: string description: Unique identifiers for existing Transcription Vocabularies to use while generating subtitles for the live stream. If the Transcription Vocabularies provided collectively have more than 1000 phrases, only the first 1000 phrases will be included. description: Configure the incoming live stream to include subtitles created with automatic speech recognition. Each Asset created from a live stream with `generated_subtitles` configured will automatically receive two text tracks. The first of these will have a `text_source` value of `generated_live`, and will be available with `ready` status as soon as the stream is live. The second text track will have a `text_source` value of `generated_live_final` and will contain subtitles with improved accuracy, timing, and formatting. However, `generated_live_final` tracks will not be available in `ready` status until the live stream ends. If an Asset has both `generated_live` and `generated_live_final` tracks that are `ready`, then only the `generated_live_final` track will be included during playback. reconnect_window: type: number format: float default: 60 minimum: 0 maximum: 1800 description: 'When live streaming software disconnects from Mux, either intentionally or due to a drop in the network, the Reconnect Window is the time in seconds that Mux should wait for the streaming software to reconnect before considering the live stream finished and completing the recorded asset. **Max**: 1800s (30 minutes). If not specified directly, Standard Latency streams have a Reconnect Window of 60 seconds; Reduced and Low Latency streams have a default of 0 seconds, or no Reconnect Window. For that reason, we suggest specifying a value other than zero for Reduced and Low Latency streams. Reduced and Low Latency streams with a Reconnect Window greater than zero will insert slate media into the recorded asset while waiting for the streaming software to reconnect or when there are brief interruptions in the live stream media. When using a Reconnect Window setting higher than 60 seconds with a Standard Latency stream, we highly recommend enabling slate with the `use_slate_for_standard_latency` option. ' use_slate_for_standard_latency: type: boolean format: boolean default: false description: By default, Standard Latency live streams do not have slate media inserted while waiting for live streaming software to reconnect to Mux. Setting this to true enables slate insertion on a Standard Latency stream. reconnect_slate_url: type: string description: The URL of the image file that Mux should download and use as slate media during interruptions of the live stream media. This file will be downloaded each time a new recorded asset is created from the live stream. If this is not set, the default slate media will be used. reduced_latency: type: boolean format: boolean deprecated: true x-mux-doc-decorators: - hidden description: This field is deprecated. Please use `latency_mode` instead. Latency is the time from when the streamer transmits a frame of video to when you see it in the player. Set this if you want lower latency for your live stream. See the [Reduce live stream latency guide](https://docs.mux.com/guides/reduce-live-stream-latency) to understand the tradeoffs. low_latency: type: boolean format: boolean deprecated: true x-mux-doc-decorators: - hidden description: This field is deprecated. Please use `latency_mode` instead. Latency is the time from when the streamer transmits a frame of video to when you see it in the player. Setting this option will enable compatibility with the LL-HLS specification for low-latency streaming. This typically has lower latency than Reduced Latency streams, and cannot be combined with Reduced Latency. simulcast_targets: type: array description: Each Simulcast Target contains configuration details to broadcast (or "restream") a live stream to a third-party streaming service. [See the Stream live to 3rd party platforms guide](https://docs.mux.com/guides/stream-live-to-3rd-party-platforms). items: type: object required: - id - url - status properties: id: type: string description: ID of the Simulcast Target passthrough: type: string description: Arbitrary user-supplied metadata set when creating a simulcast target. status: type: string enum: - idle - starting - broadcasting - errored description: "The current status of the simulcast target. See Statuses below for detailed description.\n * `idle`: Default status. When the parent live stream is in disconnected status,\ \ simulcast targets will be idle state.\n * `starting`: The simulcast target transitions into this state when the parent live stream transition into connected state.\n * `broadcasting`:\ \ The simulcast target has successfully connected to the third party live streaming service and is pushing video to that service.\n * `errored`: The simulcast target encountered an error\ \ either while attempting to connect to the third party live streaming service, or mid-broadcasting. When a simulcast target has this status it will have an `error_severity` field with\ \ more details about the error.\n" stream_key: type: string description: Stream Key represents a stream identifier on the third party live streaming service to send the parent live stream to. Only used for RTMP(s) simulcast destinations. url: type: string description: 'The RTMP(s) or SRT endpoint for a simulcast destination. * For RTMP(s) destinations, this should include the application name for the third party live streaming service, for example: `rtmp://live.example.com/app`. * For SRT destinations, this should be a fully formed SRT connection string, for example: `srt://srt-live.example.com:1234?streamid={stream_key}&passphrase={srt_passphrase}`. Note: SRT simulcast targets can only be used when an source is connected over SRT. ' error_severity: type: string enum: - normal - fatal description: "The severity of the error encountered by the simulcast target.\nThis field is only set when the simulcast target is in the `errored` status.\nSee the values of severities below\ \ and their descriptions.\n * `normal`: The simulcast target encountered an error either while attempting to connect to the third party live streaming service, or mid-broadcasting. A\ \ simulcast may transition back into the broadcasting state if a connection with the service can be re-established.\n * `fatal`: The simulcast target is incompatible with the current\ \ input to the parent live stream. No further attempts to this simulcast target will be made for the current live stream asset.\n" latency_mode: type: string enum: - low - reduced - standard description: Latency is the time from when the streamer transmits a frame of video to when you see it in the player. Set this as an alternative to setting low latency or reduced latency flags. test: type: boolean format: boolean description: True means this live stream is a test live stream. Test live streams can be used to help evaluate the Mux Video APIs for free. There is no limit on the number of test live streams, but they are watermarked with the Mux logo, and limited to 5 minutes. The test live stream is disabled after the stream is active for 5 mins and the recorded asset also deleted after 24 hours. max_continuous_duration: type: integer format: int32 default: 43200 minimum: 60 maximum: 43200 description: The time in seconds a live stream may be continuously active before being disconnected. Defaults to 12 hours. srt_passphrase: type: string description: Unique key used for encrypting a stream to a Mux SRT endpoint. Max 64 characters. active_ingest_protocol: type: string enum: - rtmp - srt description: The protocol used for the active ingest stream. This is only set when the live stream is active. meta: type: object description: 'Customer provided metadata about this live stream. Note: This metadata may be publicly available via the video player. Do not include PII or sensitive information. ' properties: title: type: string maxLength: 512 description: The live stream title. Max 512 code points. connected: type: boolean recording: type: boolean WebhookLiveStreamWarning: type: object properties: id: type: string description: Unique identifier for the Live Stream. Max 255 characters. stream_key: type: string description: Unique key used for streaming to a Mux RTMP endpoint. This should be considered as sensitive as credentials, anyone with this stream key can begin streaming. Max 64 characters. active_asset_id: type: string description: The Asset that is currently being created if there is an active broadcast. status: type: string enum: - active - idle - disabled description: '`idle` indicates that there is no active broadcast. `active` indicates that there is an active broadcast and `disabled` status indicates that no future RTMP streams can be published.' passthrough: type: string description: Arbitrary user-supplied metadata set for the asset. Max 255 characters. warning: type: object properties: type: type: string message: type: string WebhookSimulcastTarget: type: object required: - id - url - status properties: id: type: string description: ID of the Simulcast Target passthrough: type: string description: Arbitrary user-supplied metadata set when creating a simulcast target. status: type: string enum: - idle - starting - broadcasting - errored description: "The current status of the simulcast target. See Statuses below for detailed description.\n * `idle`: Default status. When the parent live stream is in disconnected status, simulcast\ \ targets will be idle state.\n * `starting`: The simulcast target transitions into this state when the parent live stream transition into connected state.\n * `broadcasting`: The simulcast\ \ target has successfully connected to the third party live streaming service and is pushing video to that service.\n * `errored`: The simulcast target encountered an error either while attempting\ \ to connect to the third party live streaming service, or mid-broadcasting. When a simulcast target has this status it will have an `error_severity` field with more details about the error.\n" stream_key: type: string description: Stream Key represents a stream identifier on the third party live streaming service to send the parent live stream to. Only used for RTMP(s) simulcast destinations. url: type: string description: 'The RTMP(s) or SRT endpoint for a simulcast destination. * For RTMP(s) destinations, this should include the application name for the third party live streaming service, for example: `rtmp://live.example.com/app`. * For SRT destinations, this should be a fully formed SRT connection string, for example: `srt://srt-live.example.com:1234?streamid={stream_key}&passphrase={srt_passphrase}`. Note: SRT simulcast targets can only be used when an source is connected over SRT. ' error_severity: type: string enum: - normal - fatal description: "The severity of the error encountered by the simulcast target.\nThis field is only set when the simulcast target is in the `errored` status.\nSee the values of severities below and\ \ their descriptions.\n * `normal`: The simulcast target encountered an error either while attempting to connect to the third party live streaming service, or mid-broadcasting. A simulcast\ \ may transition back into the broadcasting state if a connection with the service can be re-established.\n * `fatal`: The simulcast target is incompatible with the current input to the parent\ \ live stream. No further attempts to this simulcast target will be made for the current live stream asset.\n" live_stream_id: type: string description: Unique identifier for the Live Stream. Max 255 characters. WebhookVideoDeliveryHighTraffic: type: object properties: data: type: array items: type: object required: - asset_id - asset_state - asset_resolution_tier - asset_encoding_tier - asset_duration - created_at - delivered_seconds - delivered_seconds_by_resolution properties: live_stream_id: type: string description: Unique identifier for the live stream that created the asset. asset_id: type: string description: Unique identifier for the asset. passthrough: type: string description: The `passthrough` value for the asset. created_at: type: integer format: int32 description: Time at which the asset was created. Measured in seconds since the Unix epoch. deleted_at: type: integer format: int32 description: If exists, time at which the asset was deleted. Measured in seconds since the Unix epoch. asset_state: type: string enum: - ready - errored - deleted description: The state of the asset. asset_duration: type: number format: double description: The duration of the asset in seconds. asset_resolution_tier: type: string enum: - audio-only - 720p - 1080p - 1440p - 2160p description: The resolution tier that the asset was ingested at, affecting billing for ingest & storage asset_encoding_tier: type: string deprecated: true enum: - smart - baseline - premium description: This field is deprecated. Please use `asset_video_quality` instead. The encoding tier that the asset was ingested at. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) asset_video_quality: type: string enum: - basic - plus - premium description: The video quality that the asset was ingested at. This field replaces `asset_encoding_tier`. [See the video quality guide for more details.](https://docs.mux.com/guides/use-video-quality-levels) delivered_seconds: type: number format: double description: Total number of delivered seconds during this time window. delivered_seconds_by_resolution: type: object description: Seconds delivered broken into resolution tiers. Each tier will only be displayed if there was content delivered in the tier. properties: tier_2160p: type: number format: double description: Total number of delivered seconds during this time window that had a resolution larger than the 1440p tier (over 4,194,304 pixels total). tier_1440p: type: number format: double description: Total number of delivered seconds during this time window that had a resolution larger than the 1080p tier but less than or equal to the 2160p tier (over 2,073,600 and <= 4,194,304 pixels total). tier_1080p: type: number format: double description: Total number of delivered seconds during this time window that had a resolution larger than the 720p tier but less than or equal to the 1440p tier (over 921,600 and <= 2,073,600 pixels total). tier_720p: type: number format: double description: Total number of delivered seconds during this time window that had a resolution within the 720p tier (up to 921,600 pixels total, based on typical 1280x720). tier_audio_only: type: number format: double description: Total number of delivered seconds during this time window that had a resolution of audio only. timeframe: type: array items: type: integer format: int64 threshold: type: integer format: int64 description: Current threshold set for alerting id: type: string WebhookAskQuestionsJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - ask-questions parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video to analyze. questions: type: array items: type: object properties: question: type: string minLength: 1 description: The question to ask about the video content. answer_options: type: array items: type: string minLength: 1 minItems: 1 description: Allowed answer values for this question. Defaults to ["yes", "no"] when omitted and free_form_reply is not true. Mutually exclusive with free_form_reply. free_form_reply: type: boolean description: Experimental. When true, the model replies with free-form prose instead of selecting from answer_options. Mutually exclusive with answer_options. Treat the answer as untrusted model output. required: - question minItems: 1 description: 'One or more questions to ask about the video. Each question can either select from answer_options (defaults to yes/no) or, by setting free_form_reply: true, receive a free-form prose answer.' language_code: type: string minLength: 1 description: BCP 47 language code of the caption track to analyze (e.g. "en", "fr"). When omitted, the SDK uses the default track. max_free_form_answer_length: type: integer minimum: 1 default: 500 description: 'Experimental. Max character length for free-form answers. Ignored unless at least one question sets free_form_reply: true.' required: - asset_id - questions example: asset_id: mux_asset_123abc questions: - question: Is this video about glasses? - question: What is the primary subject? answer_options: - glasses - watches - shoes - hats - question: Describe the primary subject in one sentence. free_form_reply: true max_free_form_answer_length: 300 status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: answers: type: array items: type: object properties: question: type: string minLength: 1 description: The original question that was asked. answer: type: - string - 'null' minLength: 1 description: For enum questions, constrained to one of the provided answer_options. For free-form questions, responds with prose up to max_free_form_answer_length characters - treat as untrusted model output. Null when the question was skipped. confidence: type: number minimum: 0 maximum: 1 description: Confidence score from 0.0 to 1.0. Values above 0.9 indicate clear, unambiguous evidence; 0.7-0.9 strong evidence with minor ambiguity; 0.5-0.7 moderate evidence; below 0.5 weak or uncertain evidence. Always 0 when skipped. reasoning: type: string minLength: 1 description: Explanation citing specific visual or audio evidence from the video, or why the question was skipped. skipped: type: boolean description: Whether the question was skipped due to irrelevance to the video content. required: - question - answer - confidence - reasoning - skipped minItems: 1 description: One answer per question, in the same order as the input questions. required: - answers example: answers: - question: Is this video about glasses? answer: 'no' confidence: 0.92 reasoning: No glasses appear on screen and the narration does not mention eyewear. skipped: false - question: What is the primary subject? answer: watches confidence: 0.88 reasoning: Multiple wristwatches are featured prominently throughout the video. skipped: false - question: Describe the primary subject in one sentence. answer: A close-up showcase of luxury wristwatches arranged on a wooden display. confidence: 0.86 reasoning: Visual evidence shows several wristwatches displayed against a wooden backdrop with no other competing subjects. skipped: false description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. WebhookFindKeyMomentsJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - find-key-moments parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video to analyze. max_moments: type: integer minimum: 1 maximum: 10 description: Maximum number of key moments to extract. Defaults to 5. target_duration_ms: type: object properties: min: type: integer exclusiveMinimum: 0 description: Preferred minimum highlight duration in milliseconds. max: type: integer exclusiveMinimum: 0 description: Preferred maximum highlight duration in milliseconds. required: - min - max description: Preferred highlight duration range in milliseconds. When provided, the model will aim to select moments within this range. required: - asset_id example: asset_id: mux_asset_123abc max_moments: 5 target_duration_ms: min: 15000 max: 45000 status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: moments: type: array items: type: object properties: start_ms: type: number minimum: 0 description: Moment start time in milliseconds. end_ms: type: number minimum: 0 description: Moment end time in milliseconds. cues: type: array items: type: object properties: start_ms: type: number minimum: 0 description: Cue start time in milliseconds. end_ms: type: number minimum: 0 description: Cue end time in milliseconds. text: type: string minLength: 1 description: Transcript text for this cue. required: - start_ms - end_ms - text minItems: 1 description: Contiguous transcript segments that comprise this moment. overall_score: type: number minimum: 0 maximum: 1 description: Weighted quality score from 0.0 to 1.0 based on hook strength, clarity, emotional intensity, novelty, and soundbite quality. title: type: string minLength: 1 description: Short catchy title for the moment (3-8 words). audible_narrative: type: string minLength: 1 description: One-sentence summary of what is being said during the moment. notable_audible_concepts: type: array items: type: string minLength: 3 minItems: 1 description: Multi-word descriptive phrases (2-5 words each) capturing key audible concepts. visual_narrative: type: string minLength: 1 description: One-sentence summary of what is visually happening. Present for video assets only. notable_visual_concepts: type: array items: type: object properties: concept: type: string minLength: 3 description: Multi-word visual concept (2-5 words). score: type: number minimum: 0 maximum: 1 description: Relevance score from 0.0 to 1.0 measuring how closely the visual concept relates to the audible narrative. rationale: type: string minLength: 1 description: Brief explanation of the relevance score. required: - concept - score - rationale minItems: 1 description: Scored visual concepts extracted from sampled frames. Present for video assets only. required: - start_ms - end_ms - cues - overall_score - title - audible_narrative - notable_audible_concepts description: Extracted key moments, ordered by position in the video. required: - moments example: moments: - start_ms: 15000 end_ms: 45000 cues: - start_ms: 15000 end_ms: 20000 text: This is the moment everything changed. - start_ms: 20000 end_ms: 30000 text: We realized the entire approach was wrong. overall_score: 0.92 title: The Pivotal Realization audible_narrative: The speaker describes the turning point that reshaped the project direction. notable_audible_concepts: - pivotal realization moment - project direction change visual_narrative: The speaker gestures emphatically at a whiteboard diagram while the camera zooms in. notable_visual_concepts: - concept: whiteboard diagram emphasis score: 0.88 rationale: The diagram directly illustrates the pivotal realization being described. - concept: speaker emphatic gestures score: 0.75 rationale: Body language reinforces the emotional weight of the turning point. description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. WebhookGenerateChaptersJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - generate-chapters parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video to generate chapters for. language_code: type: string minLength: 1 description: BCP 47 language code of the caption track to analyze (e.g. "en", "fr"). When omitted, the SDK prefers English if available. output_language_code: type: string minLength: 1 description: BCP 47 language code for the output chapter titles. Auto-detected from the transcript if omitted. prompt_overrides: type: object properties: task: type: string minLength: 1 description: Override the core task instruction for chapter generation. output_format: type: string minLength: 1 description: Override the JSON output format instructions. chapter_guidelines: type: string minLength: 1 description: Override the chapter density and timing constraints. title_guidelines: type: string minLength: 1 description: Override the chapter title style requirements. description: Override specific sections of the chapter generation prompt. required: - asset_id example: asset_id: mux_asset_123abc status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: chapters: type: array items: type: object properties: start_time: type: number minimum: 0 description: Chapter start time in seconds. The first chapter always starts at 0. title: type: string minLength: 1 description: Concise chapter title. required: - start_time - title minItems: 1 description: Generated chapters, ordered by start time. required: - chapters example: chapters: - start_time: 0 title: Introduction - start_time: 45 title: Setting Up the Workspace - start_time: 180 title: Core Implementation - start_time: 420 title: Testing and Debugging - start_time: 600 title: Wrap-Up and Next Steps description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. WebhookModerateJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - moderate parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video to moderate. language_code: type: string minLength: 1 default: en description: BCP 47 language code for transcript analysis. Used only for audio-only assets; ignored for video assets with visual content. If omitted for audio-only assets, the first ready text track is used. Defaults to "en". thresholds: type: object properties: sexual: type: number minimum: 0 maximum: 1 description: Score threshold for sexual content. Content scoring above this value triggers exceeds_threshold. violence: type: number minimum: 0 maximum: 1 description: Score threshold for violent content. Content scoring above this value triggers exceeds_threshold. default: sexual: 0.7 violence: 0.8 description: 'Score thresholds that determine whether content is flagged. When combined with sampling_interval or max_samples, the exceeds_threshold flag reflects whether any category''s highest observed score exceeds its configured threshold. Defaults to {sexual: 0.7, violence: 0.8}.' sampling_interval: type: integer minimum: 5 description: Interval, in seconds, between sampled thumbnails. Minimum 5 seconds. When max_samples is also set, the actual sampling density is the more restrictive of the two constraints. max_samples: type: integer minimum: 1 description: Maximum number of thumbnails to sample. Acts as a cap — if sampling_interval produces fewer samples than this limit, the interval is respected; otherwise samples are evenly distributed with first and last frames pinned. required: - asset_id example: asset_id: mux_asset_123abc thresholds: sexual: 0.7 violence: 0.8 status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: thumbnail_scores: type: array items: type: object properties: time: type: number minimum: 0 description: Time in seconds of the thumbnail within the video. Absent for transcript moderation. sexual: type: number minimum: 0 maximum: 1 description: Sexual content score from 0.0 to 1.0. violence: type: number minimum: 0 maximum: 1 description: Violence content score from 0.0 to 1.0. required: - sexual - violence description: Per-thumbnail moderation scores. max_scores: type: object properties: sexual: type: number minimum: 0 maximum: 1 violence: type: number minimum: 0 maximum: 1 required: - sexual - violence description: Highest scores across all thumbnails for each category. exceeds_threshold: type: boolean description: True if any category's max score exceeds its configured threshold. required: - thumbnail_scores - max_scores - exceeds_threshold example: thumbnail_scores: - time: 0 sexual: 0.01 violence: 0.02 - time: 30 sexual: 0.03 violence: 0.15 - time: 60 sexual: 0.02 violence: 0.05 max_scores: sexual: 0.03 violence: 0.15 exceeds_threshold: false description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. WebhookSummarizeJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - summarize parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video to summarize. tone: type: string enum: - neutral - playful - professional description: Tone for the generated summary. "neutral" for straightforward analysis, "playful" for witty and conversational, "professional" for executive-level reporting. prompt_overrides: type: object properties: task: type: string minLength: 1 description: Override the core task instruction for summarization. title: type: string minLength: 1 description: Override the title generation requirements. description: type: string minLength: 1 description: Override the description generation requirements. keywords: type: string minLength: 1 description: Override the keyword/tag extraction requirements. quality_guidelines: type: string minLength: 1 description: Override the quality standards for analysis. description: Override specific sections of the summarization prompt. title_length: type: integer minimum: 1 description: Maximum title length in words. description_length: type: integer minimum: 1 description: Maximum description length in words. tag_count: type: integer minimum: 1 description: Maximum number of tags to include in the generated output. Defaults to 10. language_code: type: string minLength: 1 description: BCP 47 language code of the caption track to analyze (e.g. "en", "fr"). When omitted, the SDK uses the default track. output_language_code: type: string minLength: 1 description: BCP 47 language code for the generated summary output (e.g. "en", "fr", "ja"). Auto-detected from the transcript if omitted. required: - asset_id example: asset_id: mux_asset_123abc tone: neutral tag_count: 10 status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: title: type: string minLength: 1 description: Generated title capturing the essence of the video. description: type: string minLength: 1 description: Generated description of the video content (typically 2-4 sentences). tags: type: array items: type: string description: Generated keyword tags for the video. required: - title - description - tags example: title: How to Build a Sustainable Garden in Your Backyard description: This video walks through the step-by-step process of creating a sustainable backyard garden, covering soil preparation, plant selection, and organic pest control methods. tags: - gardening - sustainability - backyard - organic - soil preparation - composting - pest control - beginner - how-to - plants description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. WebhookTranslateCaptionsJob: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - translate-captions parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID of the video whose captions will be translated. track_id: type: string minLength: 1 description: The Mux text track ID of the source caption track to translate. The asset must have a ready text track matching this ID or the request will be rejected. to_language_code: type: string minLength: 1 description: BCP 47 language code for the translated output (e.g. "es", "ja"). The asset must not already have a text track for this language. upload_to_mux: type: boolean default: true description: Whether to upload the translated VTT and attach it as a text track on the Mux asset. Defaults to true. required: - asset_id - track_id - to_language_code example: asset_id: mux_asset_123abc track_id: track_en_abc123 to_language_code: es upload_to_mux: true status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: track_id: type: string minLength: 1 description: The Mux text track ID of the source caption track that was translated. uploaded_track_id: type: string minLength: 1 description: Mux text track ID of the uploaded translated captions. Present when upload_to_mux is true. temporary_vtt_url: type: string minLength: 1 description: Temporary pre-signed URL to download the translated VTT file. Present when upload_to_mux is true. example: track_id: track_en_abc123 uploaded_track_id: track_es_abc123 temporary_vtt_url: https://storage.example.com/translations/es/captions.vtt?token=abc123 description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. parameters: transcription_vocabulary_id: name: TRANSCRIPTION_VOCABULARY_ID in: path description: The ID of the Transcription Vocabulary. required: true schema: type: string stream_key: name: stream_key in: query description: Filter response to return live stream for this stream key only required: false schema: type: string delivery_usage_asset_id: name: asset_id in: query description: Filter response to return delivery usage for this asset only. You cannot specify both the `asset_id` and `live_stream_id` parameters together. required: false schema: type: string delivery_usage_live_stream_id: name: live_stream_id in: query description: Filter response to return delivery usage for assets for this live stream. You cannot specify both the `asset_id` and `live_stream_id` parameters together. required: false schema: type: string delivery_usage_timeframe: name: timeframe[] in: query description: Time window to get delivery usage information. timeframe[0] indicates the start time, timeframe[1] indicates the end time in seconds since the Unix epoch. Default time window is 1 hour representing usage from 13th to 12th hour from when the request is made. required: false style: form explode: true schema: type: array items: type: string delivery_usage_limit: name: limit in: query description: Number of items to include in the response required: false schema: type: integer format: int32 default: 100 asset_id: name: ASSET_ID in: path description: The asset ID. required: true schema: type: string static_rendition_id: name: STATIC_RENDITION_ID in: path description: The static rendition ID. required: true schema: type: string livestream_id: name: LIVE_STREAM_ID in: path description: The live stream ID required: true schema: type: string playback_id: name: PLAYBACK_ID in: path description: The asset or live stream's playback ID. required: true schema: type: string signing_key_id: name: SIGNING_KEY_ID in: path description: The ID of the signing key. required: true schema: type: string upload_id: name: UPLOAD_ID in: path description: ID of the Upload required: true example: abcd1234 schema: type: string playback_restriction_id: name: PLAYBACK_RESTRICTION_ID in: path description: ID of the Playback Restriction. required: true schema: type: string simulcast_target_id: name: SIMULCAST_TARGET_ID in: path description: The ID of the simulcast target. required: true schema: type: string track_id: name: TRACK_ID in: path description: The ID of the track for an asset. required: true schema: type: string list_asset_upload_id: name: upload_id in: query description: Filter response to return an asset created from this direct upload only required: false schema: type: string list_asset_live_stream_id: name: live_stream_id in: query description: Filter response to return all the assets for this live stream only required: false schema: type: string drm_configuration_id: name: DRM_CONFIGURATION_ID in: path description: The DRM Configuration ID. required: true schema: type: string annotation_id: name: ANNOTATION_ID in: path required: true schema: type: string format: uuid description: The annotation ID incident_id: name: INCIDENT_ID in: path description: ID of the Incident required: true example: abcd1234 schema: type: string monitoring_metric_id: name: MONITORING_METRIC_ID in: path description: ID of the Monitoring Metric required: true example: current-concurrent-viewers schema: type: string enum: - current-concurrent-viewers - current-rebuffering-percentage - exits-before-video-start - playback-failure-percentage - current-average-bitrate - video-startup-failure-percentage monitoring_histogram_metric_id: name: MONITORING_HISTOGRAM_METRIC_ID in: path description: ID of the Monitoring Histogram Metric required: true example: video-startup-time schema: type: string enum: - video-startup-time monitoring_dimension: name: dimension in: query description: Dimension the specified value belongs to required: false schema: type: string enum: - asn - cdn - country - operating_system - player_name - region - stream_type - sub_property_id - video_series - video_title - view_has_ad realtime_metric_id: name: REALTIME_METRIC_ID in: path description: ID of the Realtime Metric required: true example: current-concurrent-viewers schema: type: string enum: - current-concurrent-viewers - current-rebuffering-percentage - exits-before-video-start - playback-failure-percentage - current-average-bitrate realtime_histogram_metric_id: name: REALTIME_HISTOGRAM_METRIC_ID in: path description: ID of the Realtime Histogram Metric required: true example: video-startup-time schema: type: string enum: - video-startup-time realtime_dimension: name: dimension in: query description: Dimension the specified value belongs to required: false schema: type: string enum: - asn - cdn - country - operating_system - player_name - region - stream_type - sub_property_id - video_series - video_title incident_status: name: status in: query description: Status to filter incidents by required: false schema: type: string enum: - open - closed - expired severity: name: severity in: query description: Severity to filter incidents by required: false schema: type: string enum: - warning - alert video_view_id: name: VIDEO_VIEW_ID in: path description: ID of the Video View required: true example: abcd1234 schema: type: string filter_id: name: FILTER_ID in: path description: ID of the Filter required: true example: abcd1234 schema: type: string dimension_id: name: DIMENSION_ID in: path description: ID of the Dimension required: true example: abcd1234 schema: type: string metric_id: name: METRIC_ID in: path description: ID of the Metric required: true example: video_startup_time schema: type: string enum: - aggregate_startup_time - downscale_percentage - exits_before_video_start - live_stream_latency - max_downscale_percentage - max_request_latency - max_upscale_percentage - page_load_time - playback_failure_percentage - playback_success_score - player_startup_time - playing_time - rebuffer_count - rebuffer_duration - rebuffer_frequency - rebuffer_percentage - request_latency - request_throughput - rebuffer_score - requests_for_first_preroll - seek_latency - startup_time_score - unique_viewers - upscale_percentage - video_quality_score - video_startup_preroll_load_time - video_startup_preroll_request_time - video_startup_time - viewer_experience_score - views - weighted_average_bitrate - video_startup_failure_percentage - ad_attempt_count - ad_break_count - ad_break_error_count - ad_break_error_percentage - ad_error_count - ad_error_percentage - ad_exit_before_start_count - ad_exit_before_start_percentage - ad_impression_count - ad_startup_error_count - ad_startup_error_percentage - playback_business_exception_percentage - video_startup_business_exception_percentage - view_content_startup_time - ad_preroll_startup_time - view_dropped_percentage - rendition_change_count - rendition_upshift_count - rendition_downshift_count viewer_id: name: viewer_id in: query description: Viewer ID to filter results by. This value may be provided by the integration, or may be created by Mux. required: false schema: type: string error_id: name: error_id in: query description: Filter video views by the provided error ID (as returned in the error_type_id field in the list video views endpoint). If you provide any as the error ID, this will filter the results to those with any error. required: false schema: type: integer format: int32 order_direction: name: order_direction in: query description: Sort order. required: false schema: type: string enum: - asc - desc order_direction_deprecated: name: order_direction in: query description: Sort order. deprecated: true required: false schema: type: string enum: - asc - desc measurement: name: measurement in: query description: 'Measurement for the provided metric. If omitted, the default for the metric will be used. The default measurement for each metric is: "sum" : `ad_attempt_count`, `ad_break_count`, `ad_break_error_count`, `ad_error_count`, `ad_impression_count`, `playing_time` "median" : `ad_preroll_startup_time`, `aggregate_startup_time`, `content_startup_time`, `max_downscale_percentage`, `max_upscale_percentage`, `page_load_time`, `player_average_live_latency`, `player_startup_time`, `rebuffer_count`, `rebuffer_duration`, `requests_for_first_preroll`, `video_startup_preroll_load_time`, `video_startup_preroll_request_time`, `video_startup_time`, `view_average_request_latency`, `view_average_request_throughput`, `view_max_request_latency`, `weighted_average_bitrate` "avg" : `ad_break_error_percentage`, `ad_error_percentage`, `ad_exit_before_start_count`, `ad_exit_before_start_percentage`, `ad_playback_failure_percentage`, `ad_startup_error_count`, `ad_startup_error_percentage`, `content_playback_failure_percentage`, `downscale_percentage`, `exits_before_video_start`, `playback_business_exception_percentage`, `playback_failure_percentage`, `playback_success_score`, `rebuffer_frequency`, `rebuffer_percentage`, `seek_latency`, `smoothness_score`, `startup_time_score`, `upscale_percentage`, `video_quality_score`, `video_startup_business_exception_percentage`, `video_startup_failure_percentage`, `view_dropped_percentage`, `viewer_experience_score` "count" : `started_views`, `unique_viewers` ' required: false schema: type: string enum: - 95th - median - avg - count - sum order_by: name: order_by in: query description: Value to order the results by required: false schema: type: string enum: - negative_impact - value - views - field group_by: name: group_by in: query description: Breakdown value to group the results by required: false schema: type: string enum: - asn - asset_id - browser - browser_version - cdn - continent_code - country - custom_1 - custom_2 - custom_3 - custom_4 - custom_5 - custom_6 - custom_7 - custom_8 - custom_9 - custom_10 - exit_before_video_start - experiment_name - live_stream_id - operating_system - operating_system_version - page_type - page_url - playback_failure - playback_business_exception - playback_id - player_autoplay - player_error_code - player_mux_plugin_name - player_mux_plugin_version - player_name - player_preload - player_remote_played - player_software - player_software_version - player_version - preroll_ad_asset_hostname - preroll_ad_tag_hostname - preroll_played - preroll_requested - region - source_hostname - source_type - stream_type - sub_property_id - video_content_type - video_encoding_variant - video_id - video_series - video_startup_business_exception - video_startup_failure - video_title - view_drm_type - view_has_ad - view_session_id - viewer_connection_type - viewer_device_category - viewer_device_manufacturer - viewer_device_model - viewer_device_name - viewer_user_id - ad_playback_failure - content_playback_failure - view_dropped - client_application_name - client_application_version - video_affiliate - viewer_plan - viewer_plan_status - viewer_plan_category - view_drm_level - video_brand - used_pip - time_shift_enabled - used_captions - video_codec - audio_codec - video_dynamic_range_type - view_cdn_edge_pop - view_cdn_origin - video_creator_id - video_cdn_trace - video_source_height_initial - video_source_width_initial - video_source_bitrate_initial - video_codec_initial - audio_codec_initial - video_source_fps_initial - video_dynamic_range_type_initial - video_source_fps - video_source_bitrate - video_source_height - video_source_width filters: name: filters[] in: query description: 'Filter results using key:value pairs. Must be provided as an array query string parameter. **Basic filtering:** * `filters[]=dimension:value` - Include rows where dimension equals value * `filters[]=!dimension:value` - Exclude rows where dimension equals value **For trace dimensions (like video_cdn_trace):** * `filters[]=+dimension:value` - Include rows where trace contains value * `filters[]=-dimension:value` - Exclude rows where trace contains value * `filters[]=dimension:[value1,value2]` - Exact trace match **Examples:** * `filters[]=country:US` - US views only * `filters[]=+video_cdn_trace:fastly` - Views using Fastly CDN ' required: false style: form explode: true schema: type: array items: type: string monitoring_filters: name: filters[] in: query description: "Limit the results to rows that match conditions from provided key:value pairs. Must be provided as an array query string parameter.\n\nTo exclude rows that match a certain condition,\ \ prepend a `!` character to the dimension.\n\nPossible filter names are the same as returned by the List Monitoring Dimensions endpoint.\n\nExample:\n\n * `filters[]=operating_system:windows&filters[]=!country:US`\n" required: false style: form explode: true schema: type: array items: type: string metric_filters: name: metric_filters[] in: query description: "Limit the results to rows that match inequality conditions from provided metric comparison clauses. Must be provided as an array query string parameter.\n\nPossible filterable metrics\ \ are the same as the set of metric ids, with the exceptions of `exits_before_video_start`, `unique_viewers`, `video_startup_failure_percentage`, `view_dropped_percentage`, and `views`.\n\nExample:\n\ \n * `metric_filters[]=aggregate_startup_time>=1000`\n" required: false style: form explode: true schema: type: array items: type: string timeframe: name: timeframe[] in: query description: "Timeframe window to limit results by. Must be provided as an array query string parameter (e.g. timeframe[]=).\n\nAccepted formats are...\n\n * array of epoch timestamps e.g. `timeframe[]=1498867200&timeframe[]=1498953600`\n\ \ * duration string e.g. `timeframe[]=24:hours or timeframe[]=7:days`\n" required: false style: form explode: true schema: type: array items: type: string monitoring_timeseries_timeframe: name: timeframe[] in: query description: 'Timeframe window to limit results by. Must be provided as an array query string parameter (e.g. timeframe[]=). The default for this is the last 60 seconds of available data. Timeframes larger than 10 minutes are not allowed, and must be within the last 24 hours. ' required: false style: form explode: true schema: type: array items: type: string timeseries_group_by: name: group_by in: query description: 'Time granularity to group results by. If this value is omitted, a default granularity is chosen based on the timeframe. For timeframes of less than 90 minutes, the default granularity is `minute`. Between 90 minutes and 6 hours, the default granularity is `ten_minutes`. Between 6 hours and 15 days inclusive, the default granularity is `hour`. The granularity of timeframes that exceed 15 days is `day`. This default behavior is subject to change; it is strongly suggested that you explicitly specify the granularity. ' required: false schema: type: string enum: - minute - ten_minutes - hour - day monitoring_timeseries_limit: name: limit in: query description: 'Number of items to include in each timestamp''s `value` list. The default is 10, and the maximum is 100. ' required: false schema: type: integer format: int32 default: 10 dimension: name: dimension in: query description: Dimension the specified value belongs to required: false schema: type: string enum: - asn - asset_id - browser - browser_version - cdn - continent_code - country - custom_1 - custom_2 - custom_3 - custom_4 - custom_5 - custom_6 - custom_7 - custom_8 - custom_9 - custom_10 - exit_before_video_start - experiment_name - live_stream_id - operating_system - operating_system_version - page_type - page_url - playback_failure - playback_business_exception - playback_id - player_autoplay - player_error_code - player_mux_plugin_name - player_mux_plugin_version - player_name - player_preload - player_remote_played - player_software - player_software_version - player_version - preroll_ad_asset_hostname - preroll_ad_tag_hostname - preroll_played - preroll_requested - region - source_hostname - source_type - stream_type - sub_property_id - video_content_type - video_encoding_variant - video_id - video_series - video_startup_failure - video_startup_business_exception - video_title - view_drm_type - view_has_ad - view_session_id - viewer_connection_type - viewer_device_category - viewer_device_manufacturer - viewer_device_model - viewer_device_name - viewer_user_id - ad_playback_failure - content_playback_failure - view_dropped - client_application_name - client_application_version - video_affiliate - viewer_plan - viewer_plan_status - viewer_plan_category - view_drm_level - video_brand - used_pip - time_shift_enabled - used_captions - video_codec - audio_codec - video_dynamic_range_type - view_cdn_edge_pop - view_cdn_origin - video_creator_id - video_cdn_trace value: name: value in: query description: Value to show all available metrics for required: false schema: type: string timestamp: name: timestamp in: query description: Timestamp to limit results by. This value must be provided as a unix timestamp. Defaults to the current unix timestamp. required: false schema: type: integer format: int32 monitoring_timeseries_timestamp: name: timestamp in: query description: Timestamp to use as the start of the timeseries data. This value must be provided as a unix timestamp. Defaults to 30 minutes ago. required: false schema: type: integer format: int32 cursor: name: cursor in: query description: This parameter is used to request pages beyond the first. You can find the cursor value in the `next_cursor` field of paginated responses. required: false schema: type: string limit: name: limit in: query description: Number of items to include in the response required: false schema: type: integer format: int32 default: 25 page: name: page in: query description: Offset by this many pages, of the size of `limit` required: false schema: type: integer format: int32 default: 1 token: name: TOKEN in: query description: Signed token (JWT) for [secure video playback](https://docs.mux.com/guides/secure-video-playback). schema: type: string program_start_time: name: program_start_time in: query description: Set the start time of the asset created from a live stream when using the [instant clipping feature](https://docs.mux.com/guides/create-instant-clips). The timestamp should be provided as an epoch integer, and is compared to the program date time (PDT) generated by a live stream. schema: type: integer program_end_time: name: program_end_time in: query description: Set the end time of the asset created from a live stream when using the [instant clipping feature](https://docs.mux.com/guides/create-instant-clips). The timestamp should be provided as an epoch integer, and is compared to the program date time (PDT) generated by a live stream. schema: type: integer asset_start_time: name: asset_start_time in: query description: Set the relative start time of the asset (in seconds) when using the [instant clipping feature](https://docs.mux.com/guides/create-instant-clips). schema: type: number format: float asset_end_time: name: asset_end_time in: query description: Set the relative end time of the asset (in seconds) when using the [instant clipping feature](https://docs.mux.com/guides/create-instant-clips). schema: type: number format: float x-tagGroups: - name: Video tags: - Assets - Live Streams - Playback ID - URL Signing Keys - Direct Uploads - Delivery Usage - Playback Restrictions - DRM Configurations - Transcription Vocabularies - name: Data tags: - Video Views - Errors - Filters - Exports - Metrics - Monitoring - Real-Time - Dimensions - Incidents - Annotations - View and Viewer Counts - name: System tags: - Signing Keys - Utilities - name: Robots tags: - Jobs - Ask Questions - Edit Captions - Find Key Moments - Generate Chapters - Moderate - Summarize - Translate Captions - name: Playback tags: - Thumbnails - Animated Images - Storyboards - Streaming - Captions and Transcripts webhooks: video.asset.created: post: requestBody: description: An asset has been created content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.created data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.ready: post: requestBody: description: An asset is ready for playback. You can now use the asset's `playback_id` to successfully start streaming this asset. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.ready data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.errored: post: requestBody: description: An asset has encountered an error. Use this to notify your server about assets with errors. Asset errors can happen for a number of reasons, most commonly an input URL that Mux is unable to download or a file that is not a valid video file. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.errored data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.updated: post: requestBody: description: An asset has been updated. Use this to make sure your server is notified about changes to assets. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.updated data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.deleted: post: requestBody: description: An asset has been deleted. Use this so that your server knows when an asset has been deleted, at which point it will no longer be playable. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.deleted data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.live_stream_completed: post: requestBody: description: The live stream for this asset has completed. Every time a live stream starts and ends a new asset gets created and this event fires. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.live_stream_completed data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.static_renditions.ready: post: requestBody: description: Static renditions for this asset are ready. Static renditions are streamable mp4 files that are most commonly used for allowing users to download files for offline viewing. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.static_renditions.ready data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.static_renditions.preparing: post: requestBody: description: Static renditions for this asset are being prepared. After requesting static renditions you will get this webhook when they are being prepared. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.static_renditions.preparing data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.static_renditions.deleted: post: requestBody: description: Static renditions for this asset have been deleted. The static renditions (mp4 files) for this asset will no longer be available. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.static_renditions.deleted data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.static_renditions.errored: post: requestBody: description: Preparing static renditions for this asset has encountered an error. This indicates that there was some error when creating static renditions (mp4s) of your asset. This should be rare and if you see it unexpectedly please open a support ticket. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.static_renditions.errored data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.master.ready: post: requestBody: description: Master access for this asset is ready. Master access is used when downloading an asset for purposes of editing or post-production work. The master access file is not intended to be streamed or downloaded by end-users. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.master.ready data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.master.preparing: post: requestBody: description: Master access for this asset is being prepared. After requesting master access you will get this webhook while it is being prepared. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.master.preparing data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.master.deleted: post: requestBody: description: Master access for this asset has been deleted. Master access for this asset has been removed. You will no longer be able to download the master file. If you want it again you should re-request it. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.master.deleted data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.master.errored: post: requestBody: description: Master access for this asset has encountered an error. This indicates that there was some error when creating master access for this asset. This should be rare and if you see it unexpectedly please open a support ticket. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.master.errored data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.track.created: post: requestBody: description: A new track for this asset has been created, for example a subtitle text track. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.track.created data: type: object $ref: '#/components/schemas/WebhookAssetTrack' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.track.ready: post: requestBody: description: A track for this asset is ready. In the example of a subtitle text track the text track will now be delivered with your HLS stream. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.track.ready data: type: object $ref: '#/components/schemas/WebhookAssetTrack' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.track.errored: post: requestBody: description: A track for this asset has encountered an error. There was some error preparing this track. Most commonly this could be a text track file that Mux was unable to download for processing. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.track.errored data: type: object $ref: '#/components/schemas/WebhookAssetTrack' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.track.deleted: post: requestBody: description: A track for this asset has been deleted. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.track.deleted data: type: object $ref: '#/components/schemas/WebhookAssetTrack' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.static_rendition.created: post: requestBody: description: A new static rendition for this asset has been created. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.static_rendition.created data: type: object $ref: '#/components/schemas/WebhookAssetStaticRendition' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.static_rendition.ready: post: requestBody: description: A static rendition for this asset is ready. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.static_rendition.ready data: type: object $ref: '#/components/schemas/WebhookAssetStaticRendition' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.static_rendition.errored: post: requestBody: description: A static rendition for this asset errored. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.static_rendition.errored data: type: object $ref: '#/components/schemas/WebhookAssetStaticRendition' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.static_rendition.deleted: post: requestBody: description: A static rendition for this asset was deleted. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.static_rendition.deleted data: type: object $ref: '#/components/schemas/WebhookAssetStaticRendition' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.static_rendition.skipped: post: requestBody: description: A static rendition for this asset was skipped, due to the source not being suitable for the requested static rendition. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.static_rendition.skipped data: type: object $ref: '#/components/schemas/WebhookAssetStaticRendition' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.warning: post: requestBody: description: This event fires when Mux has encountered a non-fatal issue with the recorded asset of the live stream. At this time, the event is only fired when Mux is unable to download a slate image from the URL set as `reconnect_slate_url` parameter value. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.warning data: type: object $ref: '#/components/schemas/WebhookAssetWarning' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.asset.non_standard_input_detected: post: requestBody: description: This event fires when Mux has detected that an input for an asset does not conform to our standard input specification. Non-standard assets take longer to process as they have to be transcoded before publication. The `data.non_standard_input_reasons` field contains details of why this specific input is non-standard. [See the minimize processing time guide for more details.](https://docs.mux.com/guides/minimize-processing-time) content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.asset.non_standard_input_detected data: type: object $ref: '#/components/schemas/WebhookAsset' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.upload.asset_created: post: requestBody: description: An asset has been created from this upload. This is useful to know what a user of your application has finished uploading a file using the URL created by a Direct Upload. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.upload.asset_created data: type: object $ref: '#/components/schemas/WebhookDirectUpload' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.upload.cancelled: post: requestBody: description: Upload has been canceled. This event fires after hitting the cancel direct upload API. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.upload.cancelled data: type: object $ref: '#/components/schemas/WebhookDirectUpload' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.upload.created: post: requestBody: description: Upload has been created. This event fires after creating a direct upload. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.upload.created data: type: object $ref: '#/components/schemas/WebhookDirectUpload' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.upload.errored: post: requestBody: description: Upload has encountered an error. This event fires when the asset created by the direct upload fails. Most commonly this happens when an end-user uploads a non-video file. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.upload.errored data: type: object $ref: '#/components/schemas/WebhookDirectUpload' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.created: post: requestBody: description: A new live stream has been created. Broadcasters with a `stream_key` can start sending encoder feed to this live stream. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.created data: type: object $ref: '#/components/schemas/WebhookLiveStream' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.connected: post: requestBody: description: An encoder has successfully connected to this live stream. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.connected data: type: object $ref: '#/components/schemas/WebhookLiveStream' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.recording: post: requestBody: description: Recording on this live stream has started. Mux has successfully processed the first frames from the encoder. If you show a _red dot_ icon in your UI, this would be a good time to show it. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.recording data: type: object $ref: '#/components/schemas/WebhookLiveStream' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.active: post: requestBody: description: This live stream is now 'active'. The live streams `playback_id` OR the `playback_id` associated with this live stream's asset can be used right now to created HLS URLs (`https://stream.mux.com/{PLAYBACK_ID}.m3u8` and start streaming in your player. Note that before the live stream is `'active'`, trying to stream the HLS URL will result in HTTP `412` errors. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.active data: type: object $ref: '#/components/schemas/WebhookLiveStream' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.disconnected: post: requestBody: description: 'An encoder has disconnected from this live stream. Note that while disconnected the live stream is still `status: ''active''`.' content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.disconnected data: type: object $ref: '#/components/schemas/WebhookLiveStream' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.idle: post: requestBody: description: The `reconnect_window` for this live stream has elapsed. The live stream `status` will now transition to `'idle'`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.idle data: type: object $ref: '#/components/schemas/WebhookLiveStream' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.updated: post: requestBody: description: This live stream has been updated. For example, after resetting the live stream's stream key. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.updated data: type: object $ref: '#/components/schemas/WebhookLiveStream' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.enabled: post: requestBody: description: This live stream has been enabled. This event fires after enable live stream API. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.enabled data: type: object $ref: '#/components/schemas/WebhookLiveStream' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.disabled: post: requestBody: description: This live stream has been disabled. This event fires after disable live stream API. Disabled live streams will no longer accept new RTMP connections. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.disabled data: type: object $ref: '#/components/schemas/WebhookLiveStream' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.deleted: post: requestBody: description: This event fires after deleting a live stream content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.deleted data: type: object $ref: '#/components/schemas/WebhookLiveStream' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.warning: post: requestBody: description: This live stream event fires when Mux has encountered a non-fatal issue. There is no disruption to the live stream ingest and playback. At this time, the event is only fired when Mux is unable to download an image from the URL set as `reconnect_slate_url` parameter value. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.warning data: type: object $ref: '#/components/schemas/WebhookLiveStreamWarning' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.simulcast_target.created: post: requestBody: description: A new simulcast target has been created for this live stream. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.simulcast_target.created data: type: object $ref: '#/components/schemas/WebhookSimulcastTarget' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.simulcast_target.idle: post: requestBody: description: When the parent live stream is `'disconnected'`, all simulcast targets will have be `'idle'`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.simulcast_target.idle data: type: object $ref: '#/components/schemas/WebhookSimulcastTarget' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.simulcast_target.starting: post: requestBody: description: When the parent live stream fires `'connected'` then the simulcast targets transition to `'starting'`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.simulcast_target.starting data: type: object $ref: '#/components/schemas/WebhookSimulcastTarget' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.simulcast_target.broadcasting: post: requestBody: description: This fires when Mux has successfully connected to the simulcast target and has begun pushing content to that third party. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.simulcast_target.broadcasting data: type: object $ref: '#/components/schemas/WebhookSimulcastTarget' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.simulcast_target.errored: post: requestBody: description: This fires when Mux has encountered an error either while attempting to connect to the third party streaming service or while broadcasting. Mux will try to re-establish the connection and if it does successfully the simulcast target will transition back to `'broadcasting'`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.simulcast_target.errored data: type: object $ref: '#/components/schemas/WebhookSimulcastTarget' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.simulcast_target.deleted: post: requestBody: description: This simulcast target has been deleted. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.simulcast_target.deleted data: type: object $ref: '#/components/schemas/WebhookSimulcastTarget' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.live_stream.simulcast_target.updated: post: requestBody: description: This simulcast target has been updated. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.live_stream.simulcast_target.updated data: type: object $ref: '#/components/schemas/WebhookSimulcastTarget' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully video.delivery.high_traffic: post: requestBody: description: Alert for high traffic video delivery. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - video.delivery.high_traffic data: type: object $ref: '#/components/schemas/WebhookVideoDeliveryHighTraffic' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.ask_questions.cancelled: post: requestBody: description: Fired when a `ask-questions` job transitions to `cancelled`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.ask_questions.cancelled data: type: object $ref: '#/components/schemas/WebhookAskQuestionsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.ask_questions.completed: post: requestBody: description: Fired when a `ask-questions` job transitions to `completed`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.ask_questions.completed data: type: object $ref: '#/components/schemas/WebhookAskQuestionsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.ask_questions.errored: post: requestBody: description: Fired when a `ask-questions` job transitions to `errored`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.ask_questions.errored data: type: object $ref: '#/components/schemas/WebhookAskQuestionsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.ask_questions.pending: post: requestBody: description: Fired when a `ask-questions` job transitions to `pending`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.ask_questions.pending data: type: object $ref: '#/components/schemas/WebhookAskQuestionsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.ask_questions.processing: post: requestBody: description: Fired when a `ask-questions` job transitions to `processing`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.ask_questions.processing data: type: object $ref: '#/components/schemas/WebhookAskQuestionsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.edit_captions.cancelled: post: requestBody: description: Fired when a `edit-captions` job transitions to `cancelled`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.edit_captions.cancelled data: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - edit-captions parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID whose existing text track should be edited. track_id: type: string minLength: 1 description: The existing ready Mux text track ID to edit and optionally replace. auto_censor_profanity: type: object properties: detection_method: type: string enum: - llm default: llm description: How profanity is detected. Currently only `llm` is supported, which uses an LLM to identify profanity in cue text. mode: type: string enum: - blank - remove - mask default: blank description: 'Replacement strategy for detected profanity: blank inserts bracketed underscores, remove drops the match, and mask replaces characters with question marks. Defaults to "blank".' always_censor: type: array items: type: string minLength: 1 description: Additional words or short phrases that should always be censored even if the model does not detect them. never_censor: type: array items: type: string minLength: 1 description: Words or short phrases that should never be censored even if the model flags them. description: Optional LLM-driven profanity detection and censorship rules applied to the selected caption track. replacements: type: array items: type: object properties: find: type: string minLength: 1 description: Exact word or phrase to replace in cue text. replace: type: string description: Replacement text to insert when a match is found. case_sensitive: type: boolean default: false description: When true, `find` is matched only with exact case. Defaults to false (case-insensitive matching), so "gonna" also matches "Gonna" and "GONNA". required: - find - replace description: Optional static word or phrase replacements applied directly to cue text. upload_to_mux: type: boolean default: true description: Whether to upload the edited VTT back to the Mux asset as a new text track. Defaults to true. delete_original_track: type: boolean default: true description: Whether to delete the original source text track after the edited track upload succeeds. Has effect only when upload_to_mux is true. Defaults to true. track_name_suffix: type: string minLength: 1 description: Optional suffix appended to the uploaded replacement track name. Defaults to "edited". required: - asset_id - track_id example: asset_id: mux_asset_123abc track_id: text_track_456def replacements: - find: Mucks replace: Mux case_sensitive: true - find: gonna replace: going to upload_to_mux: true delete_original_track: true status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: total_replacement_count: type: integer minimum: 0 description: Total count of cue text replacements applied across all edit operations. uploaded_track_id: type: string minLength: 1 description: Mux text track ID for the uploaded edited captions. Present when upload_to_mux is true and the upload succeeds. temporary_vtt_url: type: string minLength: 1 description: Temporary pre-signed URL for downloading the edited VTT file. required: - total_replacement_count example: total_replacement_count: 5 uploaded_track_id: text_track_789ghi temporary_vtt_url: https://s3.example.com/edited.vtt?sig=abc description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.edit_captions.completed: post: requestBody: description: Fired when a `edit-captions` job transitions to `completed`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.edit_captions.completed data: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - edit-captions parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID whose existing text track should be edited. track_id: type: string minLength: 1 description: The existing ready Mux text track ID to edit and optionally replace. auto_censor_profanity: type: object properties: detection_method: type: string enum: - llm default: llm description: How profanity is detected. Currently only `llm` is supported, which uses an LLM to identify profanity in cue text. mode: type: string enum: - blank - remove - mask default: blank description: 'Replacement strategy for detected profanity: blank inserts bracketed underscores, remove drops the match, and mask replaces characters with question marks. Defaults to "blank".' always_censor: type: array items: type: string minLength: 1 description: Additional words or short phrases that should always be censored even if the model does not detect them. never_censor: type: array items: type: string minLength: 1 description: Words or short phrases that should never be censored even if the model flags them. description: Optional LLM-driven profanity detection and censorship rules applied to the selected caption track. replacements: type: array items: type: object properties: find: type: string minLength: 1 description: Exact word or phrase to replace in cue text. replace: type: string description: Replacement text to insert when a match is found. case_sensitive: type: boolean default: false description: When true, `find` is matched only with exact case. Defaults to false (case-insensitive matching), so "gonna" also matches "Gonna" and "GONNA". required: - find - replace description: Optional static word or phrase replacements applied directly to cue text. upload_to_mux: type: boolean default: true description: Whether to upload the edited VTT back to the Mux asset as a new text track. Defaults to true. delete_original_track: type: boolean default: true description: Whether to delete the original source text track after the edited track upload succeeds. Has effect only when upload_to_mux is true. Defaults to true. track_name_suffix: type: string minLength: 1 description: Optional suffix appended to the uploaded replacement track name. Defaults to "edited". required: - asset_id - track_id example: asset_id: mux_asset_123abc track_id: text_track_456def replacements: - find: Mucks replace: Mux case_sensitive: true - find: gonna replace: going to upload_to_mux: true delete_original_track: true status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: total_replacement_count: type: integer minimum: 0 description: Total count of cue text replacements applied across all edit operations. uploaded_track_id: type: string minLength: 1 description: Mux text track ID for the uploaded edited captions. Present when upload_to_mux is true and the upload succeeds. temporary_vtt_url: type: string minLength: 1 description: Temporary pre-signed URL for downloading the edited VTT file. required: - total_replacement_count example: total_replacement_count: 5 uploaded_track_id: text_track_789ghi temporary_vtt_url: https://s3.example.com/edited.vtt?sig=abc description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.edit_captions.errored: post: requestBody: description: Fired when a `edit-captions` job transitions to `errored`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.edit_captions.errored data: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - edit-captions parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID whose existing text track should be edited. track_id: type: string minLength: 1 description: The existing ready Mux text track ID to edit and optionally replace. auto_censor_profanity: type: object properties: detection_method: type: string enum: - llm default: llm description: How profanity is detected. Currently only `llm` is supported, which uses an LLM to identify profanity in cue text. mode: type: string enum: - blank - remove - mask default: blank description: 'Replacement strategy for detected profanity: blank inserts bracketed underscores, remove drops the match, and mask replaces characters with question marks. Defaults to "blank".' always_censor: type: array items: type: string minLength: 1 description: Additional words or short phrases that should always be censored even if the model does not detect them. never_censor: type: array items: type: string minLength: 1 description: Words or short phrases that should never be censored even if the model flags them. description: Optional LLM-driven profanity detection and censorship rules applied to the selected caption track. replacements: type: array items: type: object properties: find: type: string minLength: 1 description: Exact word or phrase to replace in cue text. replace: type: string description: Replacement text to insert when a match is found. case_sensitive: type: boolean default: false description: When true, `find` is matched only with exact case. Defaults to false (case-insensitive matching), so "gonna" also matches "Gonna" and "GONNA". required: - find - replace description: Optional static word or phrase replacements applied directly to cue text. upload_to_mux: type: boolean default: true description: Whether to upload the edited VTT back to the Mux asset as a new text track. Defaults to true. delete_original_track: type: boolean default: true description: Whether to delete the original source text track after the edited track upload succeeds. Has effect only when upload_to_mux is true. Defaults to true. track_name_suffix: type: string minLength: 1 description: Optional suffix appended to the uploaded replacement track name. Defaults to "edited". required: - asset_id - track_id example: asset_id: mux_asset_123abc track_id: text_track_456def replacements: - find: Mucks replace: Mux case_sensitive: true - find: gonna replace: going to upload_to_mux: true delete_original_track: true status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: total_replacement_count: type: integer minimum: 0 description: Total count of cue text replacements applied across all edit operations. uploaded_track_id: type: string minLength: 1 description: Mux text track ID for the uploaded edited captions. Present when upload_to_mux is true and the upload succeeds. temporary_vtt_url: type: string minLength: 1 description: Temporary pre-signed URL for downloading the edited VTT file. required: - total_replacement_count example: total_replacement_count: 5 uploaded_track_id: text_track_789ghi temporary_vtt_url: https://s3.example.com/edited.vtt?sig=abc description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.edit_captions.pending: post: requestBody: description: Fired when a `edit-captions` job transitions to `pending`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.edit_captions.pending data: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - edit-captions parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID whose existing text track should be edited. track_id: type: string minLength: 1 description: The existing ready Mux text track ID to edit and optionally replace. auto_censor_profanity: type: object properties: detection_method: type: string enum: - llm default: llm description: How profanity is detected. Currently only `llm` is supported, which uses an LLM to identify profanity in cue text. mode: type: string enum: - blank - remove - mask default: blank description: 'Replacement strategy for detected profanity: blank inserts bracketed underscores, remove drops the match, and mask replaces characters with question marks. Defaults to "blank".' always_censor: type: array items: type: string minLength: 1 description: Additional words or short phrases that should always be censored even if the model does not detect them. never_censor: type: array items: type: string minLength: 1 description: Words or short phrases that should never be censored even if the model flags them. description: Optional LLM-driven profanity detection and censorship rules applied to the selected caption track. replacements: type: array items: type: object properties: find: type: string minLength: 1 description: Exact word or phrase to replace in cue text. replace: type: string description: Replacement text to insert when a match is found. case_sensitive: type: boolean default: false description: When true, `find` is matched only with exact case. Defaults to false (case-insensitive matching), so "gonna" also matches "Gonna" and "GONNA". required: - find - replace description: Optional static word or phrase replacements applied directly to cue text. upload_to_mux: type: boolean default: true description: Whether to upload the edited VTT back to the Mux asset as a new text track. Defaults to true. delete_original_track: type: boolean default: true description: Whether to delete the original source text track after the edited track upload succeeds. Has effect only when upload_to_mux is true. Defaults to true. track_name_suffix: type: string minLength: 1 description: Optional suffix appended to the uploaded replacement track name. Defaults to "edited". required: - asset_id - track_id example: asset_id: mux_asset_123abc track_id: text_track_456def replacements: - find: Mucks replace: Mux case_sensitive: true - find: gonna replace: going to upload_to_mux: true delete_original_track: true status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: total_replacement_count: type: integer minimum: 0 description: Total count of cue text replacements applied across all edit operations. uploaded_track_id: type: string minLength: 1 description: Mux text track ID for the uploaded edited captions. Present when upload_to_mux is true and the upload succeeds. temporary_vtt_url: type: string minLength: 1 description: Temporary pre-signed URL for downloading the edited VTT file. required: - total_replacement_count example: total_replacement_count: 5 uploaded_track_id: text_track_789ghi temporary_vtt_url: https://s3.example.com/edited.vtt?sig=abc description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.edit_captions.processing: post: requestBody: description: Fired when a `edit-captions` job transitions to `processing`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.edit_captions.processing data: type: object properties: id: type: string description: Unique job identifier. passthrough: type: string description: Arbitrary string supplied at creation, returned as-is. units_consumed: type: integer minimum: 0 description: Number of Mux AI units consumed by this job. created_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was created. updated_at: type: integer minimum: 0 description: Unix timestamp (seconds) when the job was last updated. workflow: type: string enum: - edit-captions parameters: type: object properties: asset_id: type: string minLength: 1 description: The Mux asset ID whose existing text track should be edited. track_id: type: string minLength: 1 description: The existing ready Mux text track ID to edit and optionally replace. auto_censor_profanity: type: object properties: detection_method: type: string enum: - llm default: llm description: How profanity is detected. Currently only `llm` is supported, which uses an LLM to identify profanity in cue text. mode: type: string enum: - blank - remove - mask default: blank description: 'Replacement strategy for detected profanity: blank inserts bracketed underscores, remove drops the match, and mask replaces characters with question marks. Defaults to "blank".' always_censor: type: array items: type: string minLength: 1 description: Additional words or short phrases that should always be censored even if the model does not detect them. never_censor: type: array items: type: string minLength: 1 description: Words or short phrases that should never be censored even if the model flags them. description: Optional LLM-driven profanity detection and censorship rules applied to the selected caption track. replacements: type: array items: type: object properties: find: type: string minLength: 1 description: Exact word or phrase to replace in cue text. replace: type: string description: Replacement text to insert when a match is found. case_sensitive: type: boolean default: false description: When true, `find` is matched only with exact case. Defaults to false (case-insensitive matching), so "gonna" also matches "Gonna" and "GONNA". required: - find - replace description: Optional static word or phrase replacements applied directly to cue text. upload_to_mux: type: boolean default: true description: Whether to upload the edited VTT back to the Mux asset as a new text track. Defaults to true. delete_original_track: type: boolean default: true description: Whether to delete the original source text track after the edited track upload succeeds. Has effect only when upload_to_mux is true. Defaults to true. track_name_suffix: type: string minLength: 1 description: Optional suffix appended to the uploaded replacement track name. Defaults to "edited". required: - asset_id - track_id example: asset_id: mux_asset_123abc track_id: text_track_456def replacements: - find: Mucks replace: Mux case_sensitive: true - find: gonna replace: going to upload_to_mux: true delete_original_track: true status: type: string enum: - pending - processing - completed - errored - cancelled description: Current job status. outputs: type: object properties: total_replacement_count: type: integer minimum: 0 description: Total count of cue text replacements applied across all edit operations. uploaded_track_id: type: string minLength: 1 description: Mux text track ID for the uploaded edited captions. Present when upload_to_mux is true and the upload succeeds. temporary_vtt_url: type: string minLength: 1 description: Temporary pre-signed URL for downloading the edited VTT file. required: - total_replacement_count example: total_replacement_count: 5 uploaded_track_id: text_track_789ghi temporary_vtt_url: https://s3.example.com/edited.vtt?sig=abc description: Workflow results. Present when status is 'completed'. errors: type: array items: type: object properties: type: type: string description: Stable public error category identifier. message: type: string description: Human-readable public error message. retryable: type: boolean description: Whether retrying this job may resolve the error. required: - type - message description: Error details. Present when status is 'errored'. resources: type: object properties: assets: type: array items: type: object properties: id: type: string description: Mux asset ID. meta: type: object properties: title: type: string description: Asset title from Mux metadata. creator_id: type: string description: Creator identifier from Mux metadata. external_id: type: string description: External identifier from Mux metadata. description: Mux asset metadata, if available. passthrough: type: string description: Passthrough string from the Mux asset. _links: type: object properties: self: type: object properties: href: type: string description: URL to the Mux asset resource. required: - href required: - self description: Hypermedia links for the asset. required: - id - _links description: Mux assets associated with this job. required: - assets example: assets: - id: abc123asset meta: title: My Video creator_id: user123 external_id: ext456 _links: self: href: https://api.mux.com/video/v1/assets/abc123asset description: Related Mux resources linked to this job. required: - id - units_consumed - created_at - updated_at - workflow - parameters - status description: The job that triggered the webhook event. In the actual payload this is nested under a dynamic event name key (e.g. `robots.job.summarize.completed`), not at the top level. required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.find_key_moments.cancelled: post: requestBody: description: Fired when a `find-key-moments` job transitions to `cancelled`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.find_key_moments.cancelled data: type: object $ref: '#/components/schemas/WebhookFindKeyMomentsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.find_key_moments.completed: post: requestBody: description: Fired when a `find-key-moments` job transitions to `completed`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.find_key_moments.completed data: type: object $ref: '#/components/schemas/WebhookFindKeyMomentsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.find_key_moments.errored: post: requestBody: description: Fired when a `find-key-moments` job transitions to `errored`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.find_key_moments.errored data: type: object $ref: '#/components/schemas/WebhookFindKeyMomentsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.find_key_moments.pending: post: requestBody: description: Fired when a `find-key-moments` job transitions to `pending`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.find_key_moments.pending data: type: object $ref: '#/components/schemas/WebhookFindKeyMomentsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.find_key_moments.processing: post: requestBody: description: Fired when a `find-key-moments` job transitions to `processing`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.find_key_moments.processing data: type: object $ref: '#/components/schemas/WebhookFindKeyMomentsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.generate_chapters.cancelled: post: requestBody: description: Fired when a `generate-chapters` job transitions to `cancelled`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.generate_chapters.cancelled data: type: object $ref: '#/components/schemas/WebhookGenerateChaptersJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.generate_chapters.completed: post: requestBody: description: Fired when a `generate-chapters` job transitions to `completed`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.generate_chapters.completed data: type: object $ref: '#/components/schemas/WebhookGenerateChaptersJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.generate_chapters.errored: post: requestBody: description: Fired when a `generate-chapters` job transitions to `errored`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.generate_chapters.errored data: type: object $ref: '#/components/schemas/WebhookGenerateChaptersJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.generate_chapters.pending: post: requestBody: description: Fired when a `generate-chapters` job transitions to `pending`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.generate_chapters.pending data: type: object $ref: '#/components/schemas/WebhookGenerateChaptersJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.generate_chapters.processing: post: requestBody: description: Fired when a `generate-chapters` job transitions to `processing`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.generate_chapters.processing data: type: object $ref: '#/components/schemas/WebhookGenerateChaptersJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.moderate.cancelled: post: requestBody: description: Fired when a `moderate` job transitions to `cancelled`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.moderate.cancelled data: type: object $ref: '#/components/schemas/WebhookModerateJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.moderate.completed: post: requestBody: description: Fired when a `moderate` job transitions to `completed`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.moderate.completed data: type: object $ref: '#/components/schemas/WebhookModerateJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.moderate.errored: post: requestBody: description: Fired when a `moderate` job transitions to `errored`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.moderate.errored data: type: object $ref: '#/components/schemas/WebhookModerateJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.moderate.pending: post: requestBody: description: Fired when a `moderate` job transitions to `pending`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.moderate.pending data: type: object $ref: '#/components/schemas/WebhookModerateJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.moderate.processing: post: requestBody: description: Fired when a `moderate` job transitions to `processing`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.moderate.processing data: type: object $ref: '#/components/schemas/WebhookModerateJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.summarize.cancelled: post: requestBody: description: Fired when a `summarize` job transitions to `cancelled`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.summarize.cancelled data: type: object $ref: '#/components/schemas/WebhookSummarizeJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.summarize.completed: post: requestBody: description: Fired when a `summarize` job transitions to `completed`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.summarize.completed data: type: object $ref: '#/components/schemas/WebhookSummarizeJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.summarize.errored: post: requestBody: description: Fired when a `summarize` job transitions to `errored`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.summarize.errored data: type: object $ref: '#/components/schemas/WebhookSummarizeJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.summarize.pending: post: requestBody: description: Fired when a `summarize` job transitions to `pending`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.summarize.pending data: type: object $ref: '#/components/schemas/WebhookSummarizeJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.summarize.processing: post: requestBody: description: Fired when a `summarize` job transitions to `processing`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.summarize.processing data: type: object $ref: '#/components/schemas/WebhookSummarizeJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.translate_captions.cancelled: post: requestBody: description: Fired when a `translate-captions` job transitions to `cancelled`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.translate_captions.cancelled data: type: object $ref: '#/components/schemas/WebhookTranslateCaptionsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.translate_captions.completed: post: requestBody: description: Fired when a `translate-captions` job transitions to `completed`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.translate_captions.completed data: type: object $ref: '#/components/schemas/WebhookTranslateCaptionsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.translate_captions.errored: post: requestBody: description: Fired when a `translate-captions` job transitions to `errored`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.translate_captions.errored data: type: object $ref: '#/components/schemas/WebhookTranslateCaptionsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.translate_captions.pending: post: requestBody: description: Fired when a `translate-captions` job transitions to `pending`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.translate_captions.pending data: type: object $ref: '#/components/schemas/WebhookTranslateCaptionsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully robots.job.translate_captions.processing: post: requestBody: description: Fired when a `translate-captions` job transitions to `processing`. content: application/json: schema: type: object allOf: - type: object $ref: '#/components/schemas/BaseWebhookEvent' - type: object properties: type: type: string enum: - robots.job.translate_captions.processing data: type: object $ref: '#/components/schemas/WebhookTranslateCaptionsJob' required: - type - data responses: '200': description: Return a 200 to indicate that the data was received successfully