M2A Connect V3 (3.0)

Download OpenAPI specification:

Manage video ingestion sources for AWS MediaConnect. Create and configure ingress flows with support for multiple protocols (SRT, RTP, RIST, Zixi, CDI, ST2110 JPEG-XS), set up redundant failover configurations, and monitor source health and metrics.

sources

Create, update, and manage video ingestion sources. Sources define how video content enters your MediaConnect infrastructure, including protocol configuration, geographic redundancy, failover settings, and VPC networking. Monitor source status and retrieve performance metrics to ensure reliable video delivery.

List all video ingestion sources

Retrieve all configured video sources for a target account. Each source represents a video ingestion point with its protocol configuration, ingress flows, provisioning status, and network settings. Sources are returned in ascending order by their display name, and this ordering is preserved across paginated pages. Use query parameters to filter results and control pagination.

Authorizations:
bearerAuth
path Parameters
organisation-id
required
string <uuid>

The ID of the owning Organistion.

target-account-id
required
string <uuid>

The ID of the owning Target Account.

query Parameters
include-deleted
boolean

Option to return sources that have been marked as deleted.

include-hidden
boolean

Option to return sources that have been marked as hidden.

inline
boolean

Whether to inline the event data in the response. Default is false

last-evaluated-key
string <byte>

The last evaluated key returned from the response. To be used to request the next page of results.

page-size
integer

The maximum number of events that may be returned. A request may return fewer than the value of page-size.

Responses

Response samples

Content type
application/json
{}

Create a new video ingestion source

Create a new video source by defining ingress flows with protocol-specific configurations. Supports multiple protocols (SRT, RTP, RIST, Zixi, CDI, ST2110 JPEG-XS) and optional failover for redundancy. Configure VPC networking, encryption, and media stream definitions as needed. Names for flows, flow sources, VPC interfaces, and media streams are auto-generated if not provided.

Authorizations:
bearerAuth
path Parameters
organisation-id
required
string <uuid>

The ID of the owning Organistion.

target-account-id
required
string <uuid>

The ID of the owning Target Account.

Request Body schema: application/json
required
object (alarm)

Alarm configuration and status for monitoring source health

hidden
boolean
Default: false

Whether the source is hidden from listings

name
string [ 1 .. 128 ] characters ^[\p{L}\p{M}\p{N}\p{P}\p{S}\p{Zs}]+$

Display name of the source, and the preferred way to set it. It is backed by the m2amedia.tv:name metadata label, which remains the authoritative store: the value supplied here is written to that label and mirrored back onto this field. Precedence when creating: if both name and a m2amedia.tv:name label are supplied and differ, name wins; if only the label is supplied, the label value is used; if neither is supplied, a name is auto-generated as {first-8-chars-of-source-id}-source. The same constraints apply whether the name is set via this field or the m2amedia.tv:name label: it must be 1-128 characters and may contain letters, marks, numbers, punctuation, symbols and spaces in any language, but not line breaks, tabs, null bytes or other control characters.

required
Array of objects = 1 items

MediaConnect ingress flows for video content ingestion with geographic resiliency

required
object (standard_metadata)

Metadata labels for organizing and identifying resources

proxy-enabled
boolean (proxy-enabled)

Whether proxies are enabled for this source

proxy-tier
integer (proxy-tier)

Proxy quality tier (1-5, higher accepts higher quality inputs)

Responses

Request samples

Content type
application/json
{
  • "alarm": {
    },
  • "hidden": false,
  • "name": "string",
  • "ingress-flows": [
    ],
  • "metadata": {
    },
  • "proxy-enabled": true,
  • "proxy-tier": 0
}

Response samples

Content type
application/json
{
  • "alarm": {
    },
  • "hidden": false,
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "ingress-flows": [
    ],
  • "metadata": {
    },
  • "proxies": {},
  • "proxy-enabled": true,
  • "proxy-tier": 0,
  • "provisioned-flows": {
    },
  • "provisioning-error-reason": "string",
  • "provisioning-status": "creation-pending",
  • "provisioning-status-timestamp": "2019-08-24T14:15:22Z"
}

Get a specific video source

Retrieve detailed configuration for a specific video source including all ingress flows, protocol settings, provisioning status, and provisioned MediaConnect flow details. Use this to verify source configuration or check provisioning progress.

By default, sensitive decryption values (passphrases/keys) are masked for security and performance. Use ?include-passphrase=true to retrieve decrypted values when needed.

By default the response contains no metric-widgets key. Use ?include=metric-widgets to embed the ordered metric-widgets array alongside the source configuration. The metric-widgets array is also available as a sub-resource at /sources/{source-id}/metric-widgets.

Authorizations:
bearerAuth
path Parameters
organisation-id
required
string <uuid>

The ID of the owning Organistion.

target-account-id
required
string <uuid>

The ID of the owning Target Account.

source-id
required
string <uuid>

The ID of the Source.

query Parameters
include-passphrase
boolean
Default: false
Example: include-passphrase=true

Include decrypted passphrase/key values in decryption-settings. By default (false), sensitive values are masked for security and performance.

include
Array of strings
Items Value: "metric-widgets"
Example: include=metric-widgets

Opt in to embed related sub-resources in the source response. Supply metric-widgets to embed the ordered metric-widgets array under the metric-widgets key of the returned source. When omitted, the default source representation is returned with no metric-widgets key.

header Parameters
Accept-Language
string
Example: en-GB

Language tags, in descending order of preference, to render metric-widget titles and tooltips in. Matched by RFC 4647 lookup, so a tag falls back to its less specific forms before the next tag is tried. A request for a language that is not available is served in the default language rather than refused, and a request that omits the header is served the same way. Responses carrying these strings name the header in Vary.

Responses

Response samples

Content type
application/json
Example

Source detail without metric-widgets (no ?include).

{
  • "id": "23bb15d0-f458-4d36-b29e-8958d0830226",
  • "name": "London Studio SRT",
  • "hidden": false,
  • "proxy-enabled": false,
  • "proxy-tier": 3,
  • "provisioning-status": "creation-complete",
  • "metadata": {
    },
  • "ingress-flows": [
    ]
}

Update an existing video source

Modify source configuration including ingress flows, protocol settings, failover configuration, delay settings, and visibility. Changes trigger reprovisioning of underlying MediaConnect resources. Names for flows, flow sources, VPC interfaces, and media streams are auto-generated if not provided.

Authorizations:
bearerAuth
path Parameters
organisation-id
required
string <uuid>

The ID of the owning Organistion.

target-account-id
required
string <uuid>

The ID of the owning Target Account.

source-id
required
string <uuid>

The ID of the Source.

query Parameters
reject-if-delete-recreate
boolean

If true or supplied, the server will reject any update that would trigger a flow to be deleted and recreated. A 409 response is returned with the list of reasons.

header Parameters
If-Match
string <uuid>

Optimistic concurrency control. Supply the ETag value from a previous GET to ensure the resource has not been modified since it was last read. The server returns 412 if the ETag does not match.

Request Body schema: application/json
required

The Source update payload

object (alarm)

Alarm configuration and status for monitoring source health

hidden
boolean
Default: false

Whether the source is hidden from listings

name
string [ 1 .. 128 ] characters ^[\p{L}\p{M}\p{N}\p{P}\p{S}\p{Zs}]+$

Display name of the source, and the preferred way to set it. It is backed by the m2amedia.tv:name metadata label, which remains the authoritative store: the value supplied here is written to that label and mirrored back onto this field. Precedence when updating: if both name and a m2amedia.tv:name label are supplied and differ, name wins; if only the label is supplied, the label value is used; if neither is supplied, a name is auto-generated as {first-8-chars-of-source-id}-source. Existing names that predate this validation are preserved on update and are only re-validated if the name is changed. The same constraints apply whether the name is set via this field or the m2amedia.tv:name label: it must be 1-128 characters and may contain letters, marks, numbers, punctuation, symbols and spaces in any language, but not line breaks, tabs, null bytes or other control characters.

Array of objects = 1 items

MediaConnect ingress flows for video content ingestion with geographic resiliency

object (standard_metadata)

Metadata labels for organizing and identifying resources

proxy-enabled
boolean (proxy-enabled)

Whether proxies are enabled for this source

proxy-tier
integer (proxy-tier)

Proxy quality tier (1-5, higher accepts higher quality inputs)

Responses

Request samples

Content type
application/json
{
  • "alarm": {
    },
  • "hidden": false,
  • "name": "string",
  • "ingress-flows": [
    ],
  • "metadata": {
    },
  • "proxy-enabled": true,
  • "proxy-tier": 0
}

Response samples

Content type
application/json
{
  • "alarm": {
    },
  • "hidden": false,
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "ingress-flows": [
    ],
  • "metadata": {
    },
  • "proxies": {},
  • "proxy-enabled": true,
  • "proxy-tier": 0,
  • "provisioned-flows": {
    },
  • "provisioning-error-reason": "string",
  • "provisioning-status": "creation-pending",
  • "provisioning-status-timestamp": "2019-08-24T14:15:22Z"
}

Delete a video source

Permanently delete a video source and deprovision all associated MediaConnect resources. This action cannot be undone. Active video streams will be interrupted.

Authorizations:
bearerAuth
path Parameters
organisation-id
required
string <uuid>

The ID of the owning Organistion.

target-account-id
required
string <uuid>

The ID of the owning Target Account.

source-id
required
string <uuid>

The ID of the Source.

header Parameters
If-Match
string <uuid>

Optimistic concurrency control. Supply the ETag value from a previous GET to ensure the resource has not been modified since it was last read. The server returns 412 if the ETag does not match.

Responses

Response samples

Content type
application/json
{
  • "message": "Success"
}

Get the metric widgets for a source

Retrieve the ordered list of metric widgets for a source. Each widget names an opinionated metric template together with the title and tooltip the console renders around the chart. The order is significant and reflects the sequence in which the console should display the widgets. This sub-resource returns the metric-widgets array only. To fetch the widgets alongside the full source in a single request, use the source detail endpoint with ?include=metric-widgets.

Authorizations:
bearerAuth
path Parameters
organisation-id
required
string <uuid>

The ID of the owning Organistion.

target-account-id
required
string <uuid>

The ID of the owning Target Account.

source-id
required
string <uuid>

The ID of the Source.

header Parameters
Accept-Language
string
Example: en-GB

Language tags, in descending order of preference, to render metric-widget titles and tooltips in. Matched by RFC 4647 lookup, so a tag falls back to its less specific forms before the next tag is tried. A request for a language that is not available is served in the default language rather than refused, and a request that omits the header is served the same way. Responses carrying these strings name the header in Vary.

Responses

Response samples

Content type
application/json

The full SRT-listener widget list in render order, closing with the transport-stream integrity widgets.

[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

Get source performance metrics

Retrieve time-series performance metrics for a video source including bitrate, packet loss, errors, and other quality indicators. Specify time range and desired metrics to analyze source performance and troubleshoot issues.

Authorizations:
bearerAuth
path Parameters
organisation-id
required
string <uuid>

The ID of the owning Organistion.

target-account-id
required
string <uuid>

The ID of the owning Target Account.

source-id
required
string <uuid>

The ID of the Source.

query Parameters
desired,
string

A comma-seperated list of keys for desired metrics. Unknown keys are ignored.,

end-time
string <date-time>
Example: end-time=2026-01-26T23:59:59Z

The latest time in the desired time series in ISO 8601 format. If not provided, the current time is used.

start-time
string <date-time>
Example: start-time=2026-01-20T00:00:00Z

The earliest time in the desired time series in ISO 8601 format. If not provided, end-time minus 24H is used.

Responses

Response samples

Content type
application/json
{
  • "series": [
    ]
}

service-info

Retrieve stream metadata and service information for video sources. Access detailed program information, video/audio/data stream characteristics, codecs, frame rates, and other media properties detected from the video source. Currently limited to Transport Stream sources and ingress media instances.

List all service info for source media instances

Retrieve stream metadata for all media instances of a video source including program details, video/audio/data stream information, codecs, frame rates, and other media characteristics. Returns the latest service information for all pipelines and instance types.

Current Limitations: Currently limited to Transport Stream sources and ingress media instances only. Future support for other source types and egress instances.

Authorizations:
bearerAuth
path Parameters
organisation-id
required
string <uuid>

The ID of the owning Organistion.

target-account-id
required
string <uuid>

The ID of the owning Target Account.

source-id
required
string <uuid>

The ID of the Source.

Responses

Response samples

Content type
application/json
Example

Shows a source with ingress instance but no active media stream

{
  • "source-id": "c5277c7d-b06b-405e-b887-3b3f7be4e836",
  • "service-info-list": [
    ]
}

source-health

Provides information regarding the source's lifecyle status (running, standby etc) and connection health (ok, degraded, failed) with a per-pipeline and per input breakdown. Use this information to monitor the health of your video sources and troubleshoot connectivity issues.

Get lifecycle status and connection health for a source

Source lifecycle and connection health with a per-pipeline breakdown.

Authorizations:
bearerAuth
path Parameters
organisation-id
required
string <uuid>

The ID of the owning Organistion.

target-account-id
required
string <uuid>

The ID of the owning Target Account.

source-id
required
string <uuid>

The ID of the Source.

Responses

Response samples

Content type
application/json
Example

Single pipeline with two SRT inputs, both connected and receiving data; source-level health is ok.

{
  • "status": "running",
  • "connection-health": "ok",
  • "stream-health": "ok",
  • "pipelines": [
    ],
  • "last-updated": "2026-05-22T10:54:06Z"
}

Batch fetch lifecycle and connection health (up to 100 sources)

Fetch health for multiple sources in one round trip. Each entry uses the same shape as the single-source endpoint.

  • ids is required and must contain 1 to 100 UUIDs.
  • Returns 400 if ids is missing, empty, contains a non-UUID value, or exceeds 100 entries.
  • Sources the caller cannot resolve (not found, wrong organisation or target account, deleted, or denied by label-based ACL) are returned under meta.errors with the 404 or 403 the single-source endpoint would give.
  • Sources with no pipelines provisioned are returned under meta.errors with the 422 the single-source endpoint would give.
Authorizations:
bearerAuth
path Parameters
organisation-id
required
string <uuid>

The ID of the owning Organistion.

target-account-id
required
string <uuid>

The ID of the owning Target Account.

query Parameters
ids
required
string
Example: ids=23bb15d0-f458-4d36-b29e-8958d0830226,4a553a18-f22c-4b0f-b7e8-e1b8228a3176

Comma-separated list of M2A source UUIDs to fetch. Maximum 100.

Responses

Response samples

Content type
application/json

Four sources: ok, degraded, failed, and standby, plus 404, 403, and 422 entries under meta.errors.

{
  • "data": {
    },
  • "meta": {
    }
}