Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/mux-com-mux-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
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
# --- truncated at 32 KB (287 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mux-com/refs/heads/main/openapi/mux-com-mux-api-api-openapi.yml