openapi: 3.2.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: Mux API paths: {} 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API 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 tags: - Mux API components: schemas: 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. 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 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. 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 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. 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 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. 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. 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 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 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 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. 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 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. 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 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 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