openapi: 3.1.0
info:
title: Mux API
description: Mux is how developers build online video. This API encompasses both Mux Video and Mux Data functionality to help you build your video-related projects better and faster than ever before.
version: v1
contact:
name: Mux DevEx
url: https://docs.mux.com
email: [email protected]
servers:
- url: https://api.mux.com
description: Mux Production API
- url: https://image.mux.com
- url: https://stream.mux.com
- url: https://stats.mux.com
tags:
- name: Transcription Vocabularies
description: Transcription Vocabularies allows you to provide collections of phrases like proper nouns, technical jargon, and uncommon words as part of captioning workflows. When using Auto-Generated
Captions, Transcription Vocabularies increase the likelihood of correct speech recognition for these words and phrases.
x-displayName: Transcription Vocabularies
- name: Assets
description: 'An asset refers to a piece of media content that is stored or is being live streamed through the Mux system. An asset always has a duration and one or more tracks (audio, video, and text
data).
The media content of an asset cannot be updated once created, however an asset can be used to create another asset, and can be modified within that process.'
x-displayName: Assets
- name: Live Streams
description: 'A Live Stream represents a unique live stream of video being pushed to Mux. It includes configuration details (a Stream Key) for live broadcasting software/hardware and a Playback ID for
playing the stream anywhere. Currently, RTMP is the only supported method of ingesting video. Use rtmp://global-live.mux.com:5222/app with the Live Stream''s Stream Key for getting the video into Mux,
and use https://stream.mux.com with the Live Stream''s Playback ID for playback.
A Live Stream can be used once for a specific event, or re-used forever. If you''re building an application like Facebook Live or Twitch, you could create one Live Stream per user. This allows them
to configure their broadcasting software once, and the Live Stream Playback ID will always show their latest stream.
Each RTMP session creates a new video asset automatically. You can set up a webhook to be notified each time a broadcast (or Live Stream RTMP session) begins or ends with the video.live_stream.active
and video.live_stream.idle events respectively. Assets that are created from a Live Stream have the same behavior as other Assets you create.
Learn more about [how to go live in our guides](https://docs.mux.com/guides/start-live-streaming).'
x-displayName: Live Streams
- name: URL Signing Keys
description: A URL signing key is used as the secret when signing any Mux URL. Mux requires a [JSON Web Token](https://jwt.io/) as the value of the token query parameter. The token query parameter must
be set for URLs that reference a playback ID with a signed playback policy.
x-displayName: URL Signing Keys
- name: Direct Uploads
description: 'Direct upload allows you to push assets directly to Mux storage instead of needing to go through your own first. When you create a new direct upload, we''ll give you back a signed URL for
a Google Cloud Storage bucket. Their storage API is S3 compatible, so whatever tool you use to upload to either GCS or S3 should work, just remember you''re probably uploading large video files and
should [take advantage of things like resumable or multipart uploads](https://cloud.google.com/storage/docs/json_api/v1/how-tos/resumable-upload).
Particularly for customers that deal with a lot of user-generated content, it''s common to expect quite a few abandoned uploads. To keep those abandoned uploads from cluttering up your asset lists,
we don''t create an asset for you until the upload is complete. Once that asset is created, you can expect all of the normal asset-related webhooks.'
x-displayName: Direct Uploads
- name: Delivery Usage
description: 'The Delivery Usage API allows you to get delivery/streaming usage details for each asset and across all assets. Delivery usage details are aggregated every hour at the top of the hour and
can be requested for a specified time window within the last 90 days starting at 12 hours prior to when the request is made.
Assets are ordered by delivery usage starting with the one with the highest usage. Only assets with delivery usage greater than 0 seconds are returned in the response.'
x-displayName: Delivery Usage
- name: Playback Restrictions
description: Playback Restrictions allows you to set additional rules for playing videos. You can set the domains/hostnames allowed to play your videos. For instance, viewers can play videos embedded
on the `https://example.com` website when you set the Playback Restrictions with `example.com` as an allowed domain. Any Video requests from other websites are denied. Additionally, you can set rules
for what user agents to allow. Please see [Using User-Agent HTTP header for validation](https://docs.mux.com/guides/secure-video-playback#using-user-agent-http-header-for-validation) for more details
on this feature.
x-displayName: Playback Restrictions
- name: DRM Configurations
description: DRM Configurations allow you to adjust the security level of content delivered through Mux Video's Digital Rights Management (DRM) feature.
x-displayName: DRM Configurations
- name: Playback ID
description: Operations related to the manipulation of playback IDs, through which users are able to stream videos and live streams from Mux.
x-displayName: Playback ID
- name: Video Views
description: An individual video view tracked by Mux Data. For the full list of properties for each view please refer to the table of data fields in the [Export raw video view data guide](https://docs.mux.com/guides/export-raw-video-view-data).
x-displayName: Video Views
- name: Errors
description: Playback errors are tracked and aggregated by Mux Data. Errors can be listed by the API, which contains data about the error code, message, and how often the error occurred.
x-displayName: Errors
- name: Filters
description: Deprecated, please refer to the Dimensions APIs.
x-displayName: Filters
- name: Dimensions
description: Dimensions are the types of metadata that can be collected for a video view. Some dimensions are collected automatically based on the playback or device, such as the viewer's Country or the
device information. Other dimensions are specified by the developer when configuring a Mux Data video view such as the video title. The Dimensions APIs allow you to get a list of the supported dimensions
and their values.
x-displayName: Dimensions
- name: Exports
description: Exports allow you to download the daily CSV files that are generated from the video views that occurred in the previous day. Please contact [support](mailto:[email protected]) for information
about enabling exports for your organization.
x-displayName: Exports
- name: Metrics
description: 'Historical metrics are used for tracking KPIs, diagnosing issues, and
measuring viewers'' quality of experience. Metrics are calculated using the
video views that have been completed and are bucketed on the view end time
for quality of experience metrics and view start time for engagement
metrics. Historical metrics provide a large collection of dimensions that
can be used to aggregate quality of experience based on view metadata. You
can also easily compare experiences across viewer populations to, for
example, find issues with specific devices or geographies.
Historical metrics are similar but not directly comparable to the real-time
metrics in the Real-time APIs. These metrics are aggregated for long-term
storage historical reporting and are generated using different viewer
populations.
'
x-displayName: Metrics
- name: Monitoring
description: 'Monitoring metrics are used for operational monitoring of a video platform.
The metrics are aggregated in five second intervals, across the views that
are currently being watched. The real-time metrics'' timeline, breakdown,
and histogram representations are available via the APIs.
Monitoring metrics are similar but not directly comparable to the historical
metrics in the Metrics APIs. These metrics are aggregated to provide the most
operational detail possible used for resolving operational issues.
Mux Data Monitoring metrics are available to Mux Data customers on a Media plan.
'
x-displayName: Monitoring
- name: Real-Time
description: 'The Mux Data Real-time API has been deprecated, please refer to the
Mux Data `Monitoring` APIs which provide the same functionality.
Mux Data Monitoring metrics are available to Mux Data customers on a Media plan.
'
x-displayName: Real-Time
- name: Incidents
description: Incidents occur when an anomaly alert is triggered in Mux Data. The Incidents API provides operations related to the raising and managing of alerting incidents.
x-displayName: Incidents
- name: Annotations
description: Annotations allow you to add notes at a specific datetime to view in the Mux Data dashboard.
x-displayName: Annotations
- name: Signing Keys
description: Signing keys are used to sign JSON Web Tokens (JWTs) for securing certain requests, such as secure playback URLs and access to real-time viewer counts in Mux Data. **One signing key can be
used to sign multiple requests - you probably only need one active at a time.** However, you can create multiple signing keys to enable key rotation, creating a new key and deleting the old only after
any existing signed requests have expired.
x-displayName: Signing Keys
- name: Utilities
description: Collection of utility methods for using Mux APIs. There's only one thing in here right now, maybe there will be more later.
x-displayName: Utilities
- name: Jobs
description: List and cancel jobs across all workflows.
x-displayName: Jobs
- name: Ask Questions
description: Ask questions about a video and get structured answers.
x-displayName: Ask Questions
- name: Edit Captions
description: Edit an existing caption track with find-and-replace edits and optional profanity censoring. This workflow is currently in beta.
x-displayName: Edit Captions
- name: Find Key Moments
description: Identify key moments in a video.
x-displayName: Find Key Moments
- name: Generate Chapters
description: Generate chapters for a video.
x-displayName: Generate Chapters
- name: Moderate
description: Analyze a video for inappropriate content.
x-displayName: Moderate
- name: Summarize
description: Generate a title, description, and tags for a video.
x-displayName: Summarize
- name: Translate Captions
description: Translate captions from one language to another.
x-displayName: Translate Captions
- name: Thumbnails
description: APIs for retrieving still thumbnails from videos hosted using Mux.
x-displayName: Thumbnails
- name: Animated Images
description: APIs for retrieving animated images from videos hosted using Mux.
x-displayName: Animated Images
- name: Storyboards
description: APIs for retrieving storyboards, sprites, and metadata about the storyboards from videos hosted using Mux.
x-displayName: Storyboards
- name: Streaming
description: APIs for streaming video content via HLS and MP4 with customizable playback options.
x-displayName: Streaming
- name: Captions and Transcripts
description: APIs for retrieving captions and transcripts from videos hosted using Mux that have had captions generated automatically.
x-displayName: Captions and Transcripts
- name: View and Viewer Counts
description: API for retrieving the real-time count of views and viewers based on ID as collected by Mux Data.
x-displayName: View and Viewer Counts
- name: Live Stream Health Info
x-displayName: Live Stream Health Info
paths:
/video/v1/transcription-vocabularies:
post:
tags:
- Transcription Vocabularies
summary: Create a Transcription Vocabulary
description: Create a new Transcription Vocabulary.
operationId: create-transcription-vocabulary
servers:
- url: https://api.mux.com
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTranscriptionVocabularyRequest'
example:
name: Mux API Vocabulary
phrases:
- Mux
- Live Stream
- Playback ID
- video encoding
responses:
'201':
description: Transcription Vocabulary Created
content:
application/json:
schema:
$ref: '#/components/schemas/TranscriptionVocabularyResponse'
example:
data:
id: VDm3npt2eaEDvz9emzun8Q
name: Mux API Vocabulary
phrases:
- Mux
- Live Stream
- Playback ID
- video encoding
created_at: '1609869152'
updated_at: '1609869152'
security:
- accessToken: []
- authorizationToken: []
get:
tags:
- Transcription Vocabularies
summary: List Transcription Vocabularies
description: List all Transcription Vocabularies.
operationId: list-transcription-vocabularies
servers:
- url: https://api.mux.com
parameters:
- name: limit
in: query
description: Number of items to include in the response
required: false
schema:
type: integer
format: int32
default: 10
maximum: 10
- $ref: '#/components/parameters/page'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListTranscriptionVocabulariesResponse'
example:
data:
- id: VDm3npt2eaEDvz9emzun8Q
name: Mux API Vocabulary
phrases:
- Mux
- Live Stream
- Playback ID
- video encoding
created_at: '1609869152'
updated_at: '1609870000'
- id: M1lDlzSP102NgukTnyQyLqw
name: Video Codecs
phrases:
- h.264
- HEVC
- AV1
created_at: '1609869152'
updated_at: '1609870000'
security:
- accessToken: []
- authorizationToken: []
/video/v1/transcription-vocabularies/{TRANSCRIPTION_VOCABULARY_ID}:
get:
tags:
- Transcription Vocabularies
summary: Retrieve a Transcription Vocabulary
description: Retrieves the details of a Transcription Vocabulary that has previously been created. Supply the unique Transcription Vocabulary ID and Mux will return the corresponding Transcription
Vocabulary information. The same information is returned when creating a Transcription Vocabulary.
operationId: get-transcription-vocabulary
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/transcription_vocabulary_id'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TranscriptionVocabularyResponse'
example:
data:
id: VDm3npt2eaEDvz9emzun8Q
name: Mux API Vocabulary
phrases:
- Mux
- Live Stream
- Playback ID
- video encoding
created_at: '1609869152'
updated_at: '1609870000'
security:
- accessToken: []
- authorizationToken: []
delete:
tags:
- Transcription Vocabularies
summary: Delete a Transcription Vocabulary
description: Deletes a Transcription Vocabulary. The Transcription Vocabulary's ID will be disassociated from any live streams using it. Transcription Vocabularies can be deleted while associated
live streams are active. However, the words and phrases in the deleted Transcription Vocabulary will remain attached to those streams while they are active.
operationId: delete-transcription-vocabulary
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/transcription_vocabulary_id'
responses:
'204':
description: No Content
security:
- accessToken: []
- authorizationToken: []
put:
tags:
- Transcription Vocabularies
summary: Update a Transcription Vocabulary
description: Updates the details of a previously-created Transcription Vocabulary. Updates to Transcription Vocabularies are allowed while associated live streams are active. However, updates will
not be applied to those streams while they are active.
operationId: update-transcription-vocabulary
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/transcription_vocabulary_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTranscriptionVocabularyRequest'
example:
name: Mux API Vocabulary - Updated
phrases:
- Mux
- Live Stream
- RTMP
- Stream Key
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TranscriptionVocabularyResponse'
example:
data:
id: VDm3npt2eaEDvz9emzun8Q
name: Mux API Vocabulary - Updated
phrases:
- Mux
- Live Stream
- RTMP
- Stream Key
created_at: '1609869152'
updated_at: '1609870000'
security:
- accessToken: []
- authorizationToken: []
/video/v1/assets:
post:
tags:
- Assets
summary: Create an Asset
description: Create a new Mux Video asset.
operationId: create-asset
servers:
- url: https://api.mux.com
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAssetRequest'
example:
inputs:
- url: https://muxed.s3.amazonaws.com/leds.mp4
playback_policies:
- public
video_quality: basic
responses:
'201':
description: Asset Created
content:
application/json:
schema:
$ref: '#/components/schemas/AssetResponse'
example:
data:
status: preparing
playback_ids:
- policy: public
id: uNbxnGLKJ00yfbijDO8COxTOyVKT01xpxW
master_access: none
id: SqQnqz6s5MBuXGvJaUWdXuXM93J9Q2yv
encoding_tier: baseline
video_quality: basic
created_at: '1607452572'
max_resolution_tier: 1080p
progress:
state: ingesting
progress: 0
security:
- accessToken: []
- authorizationToken: []
get:
tags:
- Assets
summary: List Assets
description: List all Mux assets.
operationId: list-assets
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/cursor'
- $ref: '#/components/parameters/list_asset_live_stream_id'
- $ref: '#/components/parameters/list_asset_upload_id'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListAssetsResponse'
example:
next_cursor: tF601CUtCLmnYuHW01Vwl6BWcWTNv001uoaiK4C01jqk1acX802plAjZhTQ
data:
- tracks:
- type: video
max_width: 1920
max_height: 800
max_frame_rate: 24
id: HK01Bq7FrEQmIu3QpRiZZ98HQOOZjm6BYyg17eEunlyo
duration: 734.166667
- type: audio
max_channels: 2
id: nNKHJqw2G9cE019AoK16CJr3O27gGnbtW4w525hJWqWw
duration: 734.143991
status: ready
playback_ids:
- policy: public
id: 85g23gYz7NmQu02YsY81ihuod6cZMxCp017ZrfglyLCKc
max_stored_resolution: HD
resolution_tier: 1080p
max_stored_frame_rate: 24
master_access: none
id: 8jd7M77xQgf2NzuocJRPYdSdEfY5dLlcRwFARtgQqU4
encoding_tier: baseline
video_quality: basic
duration: 734.25
created_at: '1609869152'
aspect_ratio: '12:5'
max_resolution_tier: 1080p
progress:
state: completed
progress: 100
- tracks:
- type: video
max_width: 1920
max_height: 1080
max_frame_rate: 29.97
id: RiyQPM31a1SPtfI802bEP2zD02F5FQVNL801FRHeE5t01G4
duration: 23.8238
- type: audio
max_channels: 2
id: LvINTciHVoC017knMCH01y9pSi5OrDLCRaBPNDAoNJcmg
duration: 23.823792
status: ready
playback_ids:
- policy: public
id: vAFLI2eKFFicXX00iHBS2vqt5JjJGg5HV6fQ4Xijgt1I
max_stored_resolution: HD
resolution_tier: 1080p
max_stored_frame_rate: 29.97
master_access: none
id: lJ4bGGsp7ZlPf02nMg015W02iHQLN9XnuuLRBsPS00xqd68
encoding_tier: smart
video_quality: plus
duration: 23.857167
created_at: '1609868768'
aspect_ratio: '16:9'
max_resolution_tier: 1080p
progress:
state: completed
progress: 100
security:
- accessToken: []
- authorizationToken: []
/video/v1/assets/{ASSET_ID}:
get:
tags:
- Assets
summary: Retrieve an Asset
description: Retrieves the details of an asset that has previously been created. Supply the unique asset ID that was returned from your previous request, and Mux will return the corresponding asset
information. The same information is returned when creating an asset.
operationId: get-asset
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/asset_id'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AssetResponse'
example:
data:
tracks:
- type: video
max_width: 1920
max_height: 1080
max_frame_rate: 29.97
id: RiyQPM31a1SPtfI802bEP2zD02F5FQVNL801FRHeE5t01G4
duration: 23.8238
- type: audio
max_channels: 2
id: LvINTciHVoC017knMCH01y9pSi5OrDLCRaBPNDAoNJcmg
duration: 23.823792
status: ready
resolution_tier: 1080p
playback_ids:
- policy: public
id: vAFLI2eKFFicXX00iHBS2vqt5JjJGg5HV6fQ4Xijgt1I
passthrough: example
max_stored_resolution: HD
max_stored_frame_rate: 29.97
max_resolution_tier: 1080p
progress:
state: completed
progress: 100
master_access: none
id: lJ4bGGsp7ZlPf02nMg015W02iHQLN9XnuuLRBsPS00xqd68
encoding_tier: baseline
video_quality: basic
duration: 23.857167
created_at: '1609868768'
aspect_ratio: '16:9'
security:
- accessToken: []
- authorizationToken: []
delete:
tags:
- Assets
summary: Delete an Asset
description: Deletes a video asset and all its data.
operationId: delete-asset
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/asset_id'
responses:
'204':
description: No Content
security:
- accessToken: []
- authorizationToken: []
patch:
tags:
- Assets
summary: Update an Asset
description: Updates the details of an existing Asset with the provided Asset ID. This API currently only supports the `passthrough` and `meta` fields.
operationId: update-asset
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/asset_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAssetRequest'
example:
passthrough: Example
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AssetResponse'
example:
data:
tracks:
- type: video
max_width: 1920
max_height: 1080
max_frame_rate: 29.97
id: RiyQPM31a1SPtfI802bEP2zD02F5FQVNL801FRHeE5t01G4
duration: 23.8238
- type: audio
max_channels: 2
id: LvINTciHVoC017knMCH01y9pSi5OrDLCRaBPNDAoNJcmg
duration: 23.823792
status: ready
playback_ids:
- policy: public
id: vAFLI2eKFFicXX00iHBS2vqt5JjJGg5HV6fQ4Xijgt1I
max_stored_resolution: HD
resolution_tier: 1080p
max_stored_frame_rate: 29.97
master_access: none
id: lJ4bGGsp7ZlPf02nMg015W02iHQLN9XnuuLRBsPS00xqd68
encoding_tier: baseline
video_quality: basic
duration: 23.857167
created_at: '1609868768'
updated_at: '1609869000'
aspect_ratio: '16:9'
passthrough: Example
max_resolution_tier: 1080p
progress:
state: completed
progress: 100
security:
- accessToken: []
- authorizationToken: []
/video/v1/assets/{ASSET_ID}/input-info:
get:
tags:
- Assets
summary: Retrieve Asset Input Info
description: Returns a list of the input objects that were used to create the asset along with any settings that were applied to each input.
operationId: get-asset-input-info
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/asset_id'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAssetInputInfoResponse'
example:
data:
- settings:
url: https://muxed.s3.amazonaws.com/leds.mp4
file:
container_format: mp4
tracks:
- type: video
duration: 120
width: 1280
height: 720
frame_rate: 30
encoding: h.264
- type: audio
duration: 120
sample_rate: 16000
sample_size: 24
encoding: aac
- settings:
url: https://example.com/myVideo_en.srt
file:
container_format: srt
security:
- accessToken: []
- authorizationToken: []
/video/v1/assets/{ASSET_ID}/playback-ids:
post:
tags:
- Assets
summary: Create a Playback ID
description: Creates a playback ID that can be used to stream the asset to a viewer.
operationId: create-asset-playback-id
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/asset_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePlaybackIDRequest'
example:
policy: public
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePlaybackIDResponse'
example:
data:
policy: public
id: Lj02VZDorh9hCV00flNqPli8fmwf6KEppug01w8zDEYVlQ
security:
- accessToken: []
- authorizationToken: []
/video/v1/assets/{ASSET_ID}/playback-ids/{PLAYBACK_ID}:
get:
tags:
- Assets
summary: Retrieve a Playback ID
description: Retrieves information about the specified playback ID.
operationId: get-asset-playback-id
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/asset_id'
- $ref: '#/components/parameters/playback_id'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAssetPlaybackIDResponse'
example:
data:
policy: public
id: vAFLI2eKFFicXX00iHBS2vqt5JjJGg5HV6fQ4Xijgt1I
security:
- accessToken: []
- authorizationToken: []
delete:
tags:
- Assets
summary: Delete a Playback ID
description: Deletes a playback ID, rendering it nonfunctional for viewing an asset's video content. Please note that deleting the playback ID removes access to the underlying asset; a viewer who
started playback before the playback ID was deleted may be able to watch the entire video for a limited duration.
operationId: delete-asset-playback-id
servers:
- url: https://api.mux.com
parameters:
- $ref: '#/components/parameters/asset_id'
- $ref: '#/components/parameters/playback_id'
responses:
'204':
description: No Content
security:
- accessToken: []
- authorizationToken: []
/video/v1/assets/{ASSET_ID}/mp4-support:
put:
tags:
- Assets
summary: Update MP4 Support
operationId: update-asset-mp4-support
servers:
- url: https://api.mux.com
deprecated: true
description: 'This method has been deprecated. Please see the [Static Rendition API](https://www.mux.com/docs/guides/enable-static-mp4-renditions#after-asset-creation).
Allows you to add or remove mp4 support for assets that were created without it. The values supported are `capped-1080p`, `audio-only`, `audio-only,capped-1080p`, `standard`(deprecated), and `none`.
`none` means that an asset *does not* have mp4 support, so submitting a request w
# --- truncated at 32 KB (754 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mux-com/refs/heads/main/openapi/mux-openapi.yml