

# Actions
<a name="API_Operations"></a>

The following actions are supported by Amazon Kinesis Video Streams:
+  [CreateSignalingChannel](API_CreateSignalingChannel.md) 
+  [CreateStream](API_CreateStream.md) 
+  [DeleteEdgeConfiguration](API_DeleteEdgeConfiguration.md) 
+  [DeleteSignalingChannel](API_DeleteSignalingChannel.md) 
+  [DeleteStream](API_DeleteStream.md) 
+  [DescribeEdgeConfiguration](API_DescribeEdgeConfiguration.md) 
+  [DescribeImageGenerationConfiguration](API_DescribeImageGenerationConfiguration.md) 
+  [DescribeMappedResourceConfiguration](API_DescribeMappedResourceConfiguration.md) 
+  [DescribeMediaStorageConfiguration](API_DescribeMediaStorageConfiguration.md) 
+  [DescribeNotificationConfiguration](API_DescribeNotificationConfiguration.md) 
+  [DescribeSignalingChannel](API_DescribeSignalingChannel.md) 
+  [DescribeStream](API_DescribeStream.md) 
+  [DescribeStreamStorageConfiguration](API_DescribeStreamStorageConfiguration.md) 
+  [GetDataEndpoint](API_GetDataEndpoint.md) 
+  [GetSignalingChannelEndpoint](API_GetSignalingChannelEndpoint.md) 
+  [ListEdgeAgentConfigurations](API_ListEdgeAgentConfigurations.md) 
+  [ListSignalingChannels](API_ListSignalingChannels.md) 
+  [ListStreams](API_ListStreams.md) 
+  [ListTagsForResource](API_ListTagsForResource.md) 
+  [ListTagsForStream](API_ListTagsForStream.md) 
+  [StartEdgeConfigurationUpdate](API_StartEdgeConfigurationUpdate.md) 
+  [TagResource](API_TagResource.md) 
+  [TagStream](API_TagStream.md) 
+  [UntagResource](API_UntagResource.md) 
+  [UntagStream](API_UntagStream.md) 
+  [UpdateDataRetention](API_UpdateDataRetention.md) 
+  [UpdateImageGenerationConfiguration](API_UpdateImageGenerationConfiguration.md) 
+  [UpdateMediaStorageConfiguration](API_UpdateMediaStorageConfiguration.md) 
+  [UpdateNotificationConfiguration](API_UpdateNotificationConfiguration.md) 
+  [UpdateSignalingChannel](API_UpdateSignalingChannel.md) 
+  [UpdateStream](API_UpdateStream.md) 
+  [UpdateStreamStorageConfiguration](API_UpdateStreamStorageConfiguration.md) 

The following actions are supported by Amazon Kinesis Video Streams Media:
+  [GetMedia](API_dataplane_GetMedia.md) 
+  [PutMedia](API_dataplane_PutMedia.md) 

The following actions are supported by Amazon Kinesis Video Streams Archived Media:
+  [GetClip](API_reader_GetClip.md) 
+  [GetDASHStreamingSessionURL](API_reader_GetDASHStreamingSessionURL.md) 
+  [GetHLSStreamingSessionURL](API_reader_GetHLSStreamingSessionURL.md) 
+  [GetImages](API_reader_GetImages.md) 
+  [GetMediaForFragmentList](API_reader_GetMediaForFragmentList.md) 
+  [ListFragments](API_reader_ListFragments.md) 

The following actions are supported by Amazon Kinesis Video Signaling Channels:
+  [GetIceServerConfig](API_signaling_GetIceServerConfig.md) 
+  [SendAlexaOfferToMaster](API_signaling_SendAlexaOfferToMaster.md) 

The following actions are supported by Amazon Kinesis Video WebRTC Storage:
+  [JoinStorageSession](API_webrtc_JoinStorageSession.md) 
+  [JoinStorageSessionAsViewer](API_webrtc_JoinStorageSessionAsViewer.md) 

# Amazon Kinesis Video Streams
<a name="API_Operations_Amazon_Kinesis_Video_Streams"></a>

The following actions are supported by Amazon Kinesis Video Streams:
+  [CreateSignalingChannel](API_CreateSignalingChannel.md) 
+  [CreateStream](API_CreateStream.md) 
+  [DeleteEdgeConfiguration](API_DeleteEdgeConfiguration.md) 
+  [DeleteSignalingChannel](API_DeleteSignalingChannel.md) 
+  [DeleteStream](API_DeleteStream.md) 
+  [DescribeEdgeConfiguration](API_DescribeEdgeConfiguration.md) 
+  [DescribeImageGenerationConfiguration](API_DescribeImageGenerationConfiguration.md) 
+  [DescribeMappedResourceConfiguration](API_DescribeMappedResourceConfiguration.md) 
+  [DescribeMediaStorageConfiguration](API_DescribeMediaStorageConfiguration.md) 
+  [DescribeNotificationConfiguration](API_DescribeNotificationConfiguration.md) 
+  [DescribeSignalingChannel](API_DescribeSignalingChannel.md) 
+  [DescribeStream](API_DescribeStream.md) 
+  [DescribeStreamStorageConfiguration](API_DescribeStreamStorageConfiguration.md) 
+  [GetDataEndpoint](API_GetDataEndpoint.md) 
+  [GetSignalingChannelEndpoint](API_GetSignalingChannelEndpoint.md) 
+  [ListEdgeAgentConfigurations](API_ListEdgeAgentConfigurations.md) 
+  [ListSignalingChannels](API_ListSignalingChannels.md) 
+  [ListStreams](API_ListStreams.md) 
+  [ListTagsForResource](API_ListTagsForResource.md) 
+  [ListTagsForStream](API_ListTagsForStream.md) 
+  [StartEdgeConfigurationUpdate](API_StartEdgeConfigurationUpdate.md) 
+  [TagResource](API_TagResource.md) 
+  [TagStream](API_TagStream.md) 
+  [UntagResource](API_UntagResource.md) 
+  [UntagStream](API_UntagStream.md) 
+  [UpdateDataRetention](API_UpdateDataRetention.md) 
+  [UpdateImageGenerationConfiguration](API_UpdateImageGenerationConfiguration.md) 
+  [UpdateMediaStorageConfiguration](API_UpdateMediaStorageConfiguration.md) 
+  [UpdateNotificationConfiguration](API_UpdateNotificationConfiguration.md) 
+  [UpdateSignalingChannel](API_UpdateSignalingChannel.md) 
+  [UpdateStream](API_UpdateStream.md) 
+  [UpdateStreamStorageConfiguration](API_UpdateStreamStorageConfiguration.md) 

# CreateSignalingChannel
<a name="API_CreateSignalingChannel"></a>

Creates a signaling channel. 

 `CreateSignalingChannel` is an asynchronous operation.

## Request Syntax
<a name="API_CreateSignalingChannel_RequestSyntax"></a>

```
POST /createSignalingChannel HTTP/1.1
Content-type: application/json

{
   "ChannelName": "string",
   "ChannelType": "string",
   "SingleMasterConfiguration": { 
      "MessageTtlSeconds": number
   },
   "Tags": [ 
      { 
         "Key": "string",
         "Value": "string"
      }
   ]
}
```

## URI Request Parameters
<a name="API_CreateSignalingChannel_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_CreateSignalingChannel_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelName](#API_CreateSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-CreateSignalingChannel-request-ChannelName"></a>
A name for the signaling channel that you are creating. It must be unique for each AWS account and AWS Region.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: Yes

 ** [ChannelType](#API_CreateSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-CreateSignalingChannel-request-ChannelType"></a>
A type of the signaling channel that you are creating. Currently, `SINGLE_MASTER` is the only supported channel type.   
Type: String  
Valid Values: `SINGLE_MASTER | FULL_MESH`   
Required: No

 ** [SingleMasterConfiguration](#API_CreateSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-CreateSignalingChannel-request-SingleMasterConfiguration"></a>
A structure containing the configuration for the `SINGLE_MASTER` channel type. The default configuration for the channel message's time to live is 60 seconds (1 minute).  
Type: [SingleMasterConfiguration](API_SingleMasterConfiguration.md) object  
Required: No

 ** [Tags](#API_CreateSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-CreateSignalingChannel-request-Tags"></a>
A set of tags (key-value pairs) that you want to associate with this channel.  
Type: Array of [Tag](API_Tag.md) objects  
Array Members: Minimum number of 0 items. Maximum number of 50 items.  
Required: No

## Response Syntax
<a name="API_CreateSignalingChannel_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "ChannelARN": "string"
}
```

## Response Elements
<a name="API_CreateSignalingChannel_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [ChannelARN](#API_CreateSignalingChannel_ResponseSyntax) **   <a name="KinesisVideo-CreateSignalingChannel-response-ChannelARN"></a>
The Amazon Resource Name (ARN) of the created channel.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+` 

## Errors
<a name="API_CreateSignalingChannel_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** AccountChannelLimitExceededException **   
You have reached the maximum limit of active signaling channels for this AWS account in this region.  
HTTP Status Code: 400

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** TagsPerResourceExceededLimitException **   
You have exceeded the limit of tags that you can associate with the resource. A Kinesis video stream can support up to 50 tags.   
HTTP Status Code: 400

## See Also
<a name="API_CreateSignalingChannel_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/CreateSignalingChannel) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/CreateSignalingChannel) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/CreateSignalingChannel) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/CreateSignalingChannel) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/CreateSignalingChannel) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/CreateSignalingChannel) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/CreateSignalingChannel) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/CreateSignalingChannel) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/CreateSignalingChannel) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/CreateSignalingChannel) 

# CreateStream
<a name="API_CreateStream"></a>

Creates a new Kinesis video stream. 

When you create a new stream, Kinesis Video Streams assigns it a version number. When you change the stream's metadata, Kinesis Video Streams updates the version. 

 `CreateStream` is an asynchronous operation.

For information about how the service works, see [How it Works](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/how-it-works.html). 

You must have permissions for the `KinesisVideo:CreateStream` action.

## Request Syntax
<a name="API_CreateStream_RequestSyntax"></a>

```
POST /createStream HTTP/1.1
Content-type: application/json

{
   "DataRetentionInHours": number,
   "DeviceName": "string",
   "KmsKeyId": "string",
   "MediaType": "string",
   "StreamName": "string",
   "StreamStorageConfiguration": { 
      "DefaultStorageTier": "string"
   },
   "Tags": { 
      "string" : "string" 
   }
}
```

## URI Request Parameters
<a name="API_CreateStream_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_CreateStream_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [DataRetentionInHours](#API_CreateStream_RequestSyntax) **   <a name="KinesisVideo-CreateStream-request-DataRetentionInHours"></a>
The number of hours that you want to retain the data in the stream. Kinesis Video Streams retains the data in a data store that is associated with the stream.  
The default value is 0, indicating that the stream does not persist data. The minimum is 1 hour.  
When the `DataRetentionInHours` value is 0, consumers can still consume the fragments that remain in the service host buffer, which has a retention time limit of 5 minutes and a retention memory limit of 200 MB. Fragments are removed from the buffer when either limit is reached.  
Type: Integer  
Valid Range: Minimum value of 0.  
Required: No

 ** [DeviceName](#API_CreateStream_RequestSyntax) **   <a name="KinesisVideo-CreateStream-request-DeviceName"></a>
The name of the device that is writing to the stream.   
In the current implementation, Kinesis Video Streams doesn't use this name.
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

 ** [KmsKeyId](#API_CreateStream_RequestSyntax) **   <a name="KinesisVideo-CreateStream-request-KmsKeyId"></a>
The ID of the AWS Key Management Service (AWS KMS) key that you want Kinesis Video Streams to use to encrypt stream data.  
If no key ID is specified, the default, Kinesis Video-managed key (`aws/kinesisvideo`) is used.  
 For more information, see [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters).   
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 2048.  
Pattern: `.+`   
Required: No

 ** [MediaType](#API_CreateStream_RequestSyntax) **   <a name="KinesisVideo-CreateStream-request-MediaType"></a>
The media type of the stream. Consumers of the stream can use this information when processing the stream. For more information about media types, see [Media Types](http://www.iana.org/assignments/media-types/media-types.xhtml). If you choose to specify the `MediaType`, see [Naming Requirements](https://tools.ietf.org/html/rfc6838#section-4.2) for guidelines.  
Example valid values include "video/h264" and "video/h264,audio/aac".  
This parameter is optional; the default value is `null` (or empty in JSON).  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `[\w\-\.\+]+/[\w\-\.\+]+(,[\w\-\.\+]+/[\w\-\.\+]+)*`   
Required: No

 ** [StreamName](#API_CreateStream_RequestSyntax) **   <a name="KinesisVideo-CreateStream-request-StreamName"></a>
A name for the stream that you are creating.  
The stream name is an identifier for the stream, and must be unique for each account and region.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: Yes

 ** [StreamStorageConfiguration](#API_CreateStream_RequestSyntax) **   <a name="KinesisVideo-CreateStream-request-StreamStorageConfiguration"></a>
The configuration for the stream's storage, including the default storage tier for stream data. This configuration determines how stream data is stored and accessed, with different tiers offering varying levels of performance and cost optimization.  
If not specified, the stream will use the default storage configuration with HOT tier for optimal performance.  
Type: [StreamStorageConfiguration](API_StreamStorageConfiguration.md) object  
Required: No

 ** [Tags](#API_CreateStream_RequestSyntax) **   <a name="KinesisVideo-CreateStream-request-Tags"></a>
A list of tags to associate with the specified stream. Each tag is a key-value pair (the value is optional).  
Type: String to string map  
Map Entries: Maximum number of 50 items.  
Key Length Constraints: Minimum length of 1. Maximum length of 128.  
Key Pattern: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`   
Value Length Constraints: Minimum length of 0. Maximum length of 256.  
Value Pattern: `[\p{L}\p{Z}\p{N}_.:/=+\-@]*`   
Required: No

## Response Syntax
<a name="API_CreateStream_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "StreamARN": "string"
}
```

## Response Elements
<a name="API_CreateStream_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [StreamARN](#API_CreateStream_ResponseSyntax) **   <a name="KinesisVideo-CreateStream-response-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+` 

## Errors
<a name="API_CreateStream_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccountStreamLimitExceededException **   
The number of streams created for the account is too high.  
HTTP Status Code: 400

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** DeviceStreamLimitExceededException **   
Not implemented.   
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** InvalidDeviceException **   
Not implemented.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** TagsPerResourceExceededLimitException **   
You have exceeded the limit of tags that you can associate with the resource. A Kinesis video stream can support up to 50 tags.   
HTTP Status Code: 400

## See Also
<a name="API_CreateStream_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/CreateStream) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/CreateStream) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/CreateStream) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/CreateStream) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/CreateStream) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/CreateStream) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/CreateStream) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/CreateStream) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/CreateStream) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/CreateStream) 

# DeleteEdgeConfiguration
<a name="API_DeleteEdgeConfiguration"></a>

An asynchronous API that deletes a stream’s existing edge configuration, as well as the corresponding media from the Edge Agent.

When you invoke this API, the sync status is set to `DELETING`. A deletion process starts, in which active edge jobs are stopped and all media is deleted from the edge device. The time to delete varies, depending on the total amount of stored media. If the deletion process fails, the sync status changes to `DELETE_FAILED`. You will need to re-try the deletion.

When the deletion process has completed successfully, the edge configuration is no longer accessible.

**Note**  
This API isn't available in the AWS Africa (Cape Town) region, af-south-1.

## Request Syntax
<a name="API_DeleteEdgeConfiguration_RequestSyntax"></a>

```
POST /deleteEdgeConfiguration HTTP/1.1
Content-type: application/json

{
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_DeleteEdgeConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DeleteEdgeConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [StreamARN](#API_DeleteEdgeConfiguration_RequestSyntax) **   <a name="KinesisVideo-DeleteEdgeConfiguration-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream. Specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_DeleteEdgeConfiguration_RequestSyntax) **   <a name="KinesisVideo-DeleteEdgeConfiguration-request-StreamName"></a>
The name of the stream from which to delete the edge configuration. Specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_DeleteEdgeConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_DeleteEdgeConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_DeleteEdgeConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

 ** StreamEdgeConfigurationNotFoundException **   
The Exception rendered when the Amazon Kinesis Video Stream can't find a stream's edge configuration that you specified.   
HTTP Status Code: 404

## See Also
<a name="API_DeleteEdgeConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DeleteEdgeConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DeleteEdgeConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DeleteEdgeConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DeleteEdgeConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DeleteEdgeConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DeleteEdgeConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DeleteEdgeConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DeleteEdgeConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DeleteEdgeConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DeleteEdgeConfiguration) 

# DeleteSignalingChannel
<a name="API_DeleteSignalingChannel"></a>

Deletes a specified signaling channel. `DeleteSignalingChannel` is an asynchronous operation. If you don't specify the channel's current version, the most recent version is deleted.

## Request Syntax
<a name="API_DeleteSignalingChannel_RequestSyntax"></a>

```
POST /deleteSignalingChannel HTTP/1.1
Content-type: application/json

{
   "ChannelARN": "string",
   "CurrentVersion": "string"
}
```

## URI Request Parameters
<a name="API_DeleteSignalingChannel_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DeleteSignalingChannel_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelARN](#API_DeleteSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-DeleteSignalingChannel-request-ChannelARN"></a>
The Amazon Resource Name (ARN) of the signaling channel that you want to delete.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

 ** [CurrentVersion](#API_DeleteSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-DeleteSignalingChannel-request-CurrentVersion"></a>
The current version of the signaling channel that you want to delete. You can obtain the current version by invoking the `DescribeSignalingChannel` or `ListSignalingChannels` API operations.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 64.  
Pattern: `[a-zA-Z0-9]+`   
Required: No

## Response Syntax
<a name="API_DeleteSignalingChannel_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_DeleteSignalingChannel_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_DeleteSignalingChannel_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

 ** VersionMismatchException **   
The stream version that you specified is not the latest version. To get the latest version, use the [DescribeStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html) API.  
HTTP Status Code: 400

## See Also
<a name="API_DeleteSignalingChannel_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DeleteSignalingChannel) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DeleteSignalingChannel) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DeleteSignalingChannel) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DeleteSignalingChannel) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DeleteSignalingChannel) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DeleteSignalingChannel) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DeleteSignalingChannel) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DeleteSignalingChannel) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DeleteSignalingChannel) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DeleteSignalingChannel) 

# DeleteStream
<a name="API_DeleteStream"></a>

Deletes a Kinesis video stream and the data contained in the stream. 

This method marks the stream for deletion, and makes the data in the stream inaccessible immediately.

 

 To ensure that you have the latest version of the stream before deleting it, you can specify the stream version. Kinesis Video Streams assigns a version to each stream. When you update a stream, Kinesis Video Streams assigns a new version number. To get the latest stream version, use the `DescribeStream` API. 

This operation requires permission for the `KinesisVideo:DeleteStream` action.

## Request Syntax
<a name="API_DeleteStream_RequestSyntax"></a>

```
POST /deleteStream HTTP/1.1
Content-type: application/json

{
   "CurrentVersion": "string",
   "StreamARN": "string"
}
```

## URI Request Parameters
<a name="API_DeleteStream_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DeleteStream_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [CurrentVersion](#API_DeleteStream_RequestSyntax) **   <a name="KinesisVideo-DeleteStream-request-CurrentVersion"></a>
Optional: The version of the stream that you want to delete.   
Specify the version as a safeguard to ensure that your are deleting the correct stream. To get the stream version, use the `DescribeStream` API.  
If not specified, only the `CreationTime` is checked before deleting the stream.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 64.  
Pattern: `[a-zA-Z0-9]+`   
Required: No

 ** [StreamARN](#API_DeleteStream_RequestSyntax) **   <a name="KinesisVideo-DeleteStream-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream that you want to delete.   
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

## Response Syntax
<a name="API_DeleteStream_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_DeleteStream_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_DeleteStream_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

 ** VersionMismatchException **   
The stream version that you specified is not the latest version. To get the latest version, use the [DescribeStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html) API.  
HTTP Status Code: 400

## See Also
<a name="API_DeleteStream_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DeleteStream) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DeleteStream) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DeleteStream) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DeleteStream) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DeleteStream) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DeleteStream) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DeleteStream) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DeleteStream) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DeleteStream) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DeleteStream) 

# DescribeEdgeConfiguration
<a name="API_DescribeEdgeConfiguration"></a>

Describes a stream’s edge configuration that was set using the `StartEdgeConfigurationUpdate` API and the latest status of the edge agent's recorder and uploader jobs. Use this API to get the status of the configuration to determine if the configuration is in sync with the Edge Agent. Use this API to evaluate the health of the Edge Agent.

**Note**  
This API isn't available in the AWS Africa (Cape Town) region, af-south-1.

## Request Syntax
<a name="API_DescribeEdgeConfiguration_RequestSyntax"></a>

```
POST /describeEdgeConfiguration HTTP/1.1
Content-type: application/json

{
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_DescribeEdgeConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DescribeEdgeConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [StreamARN](#API_DescribeEdgeConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeEdgeConfiguration-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream. Specify either the `StreamName`or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_DescribeEdgeConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeEdgeConfiguration-request-StreamName"></a>
The name of the stream whose edge configuration you want to update. Specify either the `StreamName` or the `StreamARN`.   
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_DescribeEdgeConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "CreationTime": number,
   "EdgeAgentStatus": { 
      "LastRecorderStatus": { 
         "JobStatusDetails": "string",
         "LastCollectedTime": number,
         "LastUpdatedTime": number,
         "RecorderStatus": "string"
      },
      "LastUploaderStatus": { 
         "JobStatusDetails": "string",
         "LastCollectedTime": number,
         "LastUpdatedTime": number,
         "UploaderStatus": "string"
      }
   },
   "EdgeConfig": { 
      "DeletionConfig": { 
         "DeleteAfterUpload": boolean,
         "EdgeRetentionInHours": number,
         "LocalSizeConfig": { 
            "MaxLocalMediaSizeInMB": number,
            "StrategyOnFullSize": "string"
         }
      },
      "HubDeviceArn": "string",
      "RecorderConfig": { 
         "MediaSourceConfig": { 
            "MediaUriSecretArn": "string",
            "MediaUriType": "string"
         },
         "ScheduleConfig": { 
            "DurationInSeconds": number,
            "ScheduleExpression": "string"
         }
      },
      "UploaderConfig": { 
         "ScheduleConfig": { 
            "DurationInSeconds": number,
            "ScheduleExpression": "string"
         }
      }
   },
   "FailedStatusDetails": "string",
   "LastUpdatedTime": number,
   "StreamARN": "string",
   "StreamName": "string",
   "SyncStatus": "string"
}
```

## Response Elements
<a name="API_DescribeEdgeConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [CreationTime](#API_DescribeEdgeConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeEdgeConfiguration-response-CreationTime"></a>
The timestamp at which a stream’s edge configuration was first created.  
Type: Timestamp

 ** [EdgeAgentStatus](#API_DescribeEdgeConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeEdgeConfiguration-response-EdgeAgentStatus"></a>
An object that contains the latest status details for an edge agent's recorder and uploader jobs. Use this information to determine the current health of an edge agent.  
Type: [EdgeAgentStatus](API_EdgeAgentStatus.md) object

 ** [EdgeConfig](#API_DescribeEdgeConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeEdgeConfiguration-response-EdgeConfig"></a>
A description of the stream's edge configuration that will be used to sync with the Edge Agent IoT Greengrass component. The Edge Agent component will run on an IoT Hub Device setup at your premise.  
Type: [EdgeConfig](API_EdgeConfig.md) object

 ** [FailedStatusDetails](#API_DescribeEdgeConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeEdgeConfiguration-response-FailedStatusDetails"></a>
A description of the generated failure status.  
Type: String

 ** [LastUpdatedTime](#API_DescribeEdgeConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeEdgeConfiguration-response-LastUpdatedTime"></a>
The timestamp at which a stream’s edge configuration was last updated.  
Type: Timestamp

 ** [StreamARN](#API_DescribeEdgeConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeEdgeConfiguration-response-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+` 

 ** [StreamName](#API_DescribeEdgeConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeEdgeConfiguration-response-StreamName"></a>
The name of the stream from which the edge configuration was updated.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+` 

 ** [SyncStatus](#API_DescribeEdgeConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeEdgeConfiguration-response-SyncStatus"></a>
The latest status of the edge configuration update.  
Type: String  
Valid Values: `SYNCING | ACKNOWLEDGED | IN_SYNC | SYNC_FAILED | DELETING | DELETE_FAILED | DELETING_ACKNOWLEDGED` 

## Errors
<a name="API_DescribeEdgeConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

 ** StreamEdgeConfigurationNotFoundException **   
The Exception rendered when the Amazon Kinesis Video Stream can't find a stream's edge configuration that you specified.   
HTTP Status Code: 404

## See Also
<a name="API_DescribeEdgeConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DescribeEdgeConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DescribeEdgeConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DescribeEdgeConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DescribeEdgeConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DescribeEdgeConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DescribeEdgeConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DescribeEdgeConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DescribeEdgeConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DescribeEdgeConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DescribeEdgeConfiguration) 

# DescribeImageGenerationConfiguration
<a name="API_DescribeImageGenerationConfiguration"></a>

Gets the `ImageGenerationConfiguration` for a given Kinesis video stream.

## Request Syntax
<a name="API_DescribeImageGenerationConfiguration_RequestSyntax"></a>

```
POST /describeImageGenerationConfiguration HTTP/1.1
Content-type: application/json

{
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_DescribeImageGenerationConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DescribeImageGenerationConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [StreamARN](#API_DescribeImageGenerationConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeImageGenerationConfiguration-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the Kinesis video stream from which to retrieve the image generation configuration. You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_DescribeImageGenerationConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeImageGenerationConfiguration-request-StreamName"></a>
The name of the stream from which to retrieve the image generation configuration. You must specify either the `StreamName` or the `StreamARN`.   
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_DescribeImageGenerationConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "ImageGenerationConfiguration": { 
      "DestinationConfig": { 
         "DestinationRegion": "string",
         "Uri": "string"
      },
      "Format": "string",
      "FormatConfig": { 
         "string" : "string" 
      },
      "HeightPixels": number,
      "ImageSelectorType": "string",
      "SamplingInterval": number,
      "Status": "string",
      "WidthPixels": number
   }
}
```

## Response Elements
<a name="API_DescribeImageGenerationConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [ImageGenerationConfiguration](#API_DescribeImageGenerationConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeImageGenerationConfiguration-response-ImageGenerationConfiguration"></a>
The structure that contains the information required for the Kinesis video stream (KVS) images delivery. If this structure is null, the configuration will be deleted from the stream.  
Type: [ImageGenerationConfiguration](API_ImageGenerationConfiguration.md) object

## Errors
<a name="API_DescribeImageGenerationConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_DescribeImageGenerationConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DescribeImageGenerationConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DescribeImageGenerationConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DescribeImageGenerationConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DescribeImageGenerationConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DescribeImageGenerationConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DescribeImageGenerationConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DescribeImageGenerationConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DescribeImageGenerationConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DescribeImageGenerationConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DescribeImageGenerationConfiguration) 

# DescribeMappedResourceConfiguration
<a name="API_DescribeMappedResourceConfiguration"></a>

Returns the most current information about the stream. The `streamName` or `streamARN` should be provided in the input.

## Request Syntax
<a name="API_DescribeMappedResourceConfiguration_RequestSyntax"></a>

```
POST /describeMappedResourceConfiguration HTTP/1.1
Content-type: application/json

{
   "MaxResults": number,
   "NextToken": "string",
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_DescribeMappedResourceConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DescribeMappedResourceConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [MaxResults](#API_DescribeMappedResourceConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeMappedResourceConfiguration-request-MaxResults"></a>
The maximum number of results to return in the response.  
Type: Integer  
Valid Range: Fixed value of 1.  
Required: No

 ** [NextToken](#API_DescribeMappedResourceConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeMappedResourceConfiguration-request-NextToken"></a>
The token to provide in your next request, to get another batch of results.  
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*`   
Required: No

 ** [StreamARN](#API_DescribeMappedResourceConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeMappedResourceConfiguration-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_DescribeMappedResourceConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeMappedResourceConfiguration-request-StreamName"></a>
The name of the stream.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_DescribeMappedResourceConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "MappedResourceConfigurationList": [ 
      { 
         "ARN": "string",
         "Type": "string"
      }
   ],
   "NextToken": "string"
}
```

## Response Elements
<a name="API_DescribeMappedResourceConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [MappedResourceConfigurationList](#API_DescribeMappedResourceConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeMappedResourceConfiguration-response-MappedResourceConfigurationList"></a>
A structure that encapsulates, or contains, the media storage configuration properties.  
Type: Array of [MappedResourceConfigurationListItem](API_MappedResourceConfigurationListItem.md) objects  
Array Members: Minimum number of 0 items. Maximum number of 1 item.

 ** [NextToken](#API_DescribeMappedResourceConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeMappedResourceConfiguration-response-NextToken"></a>
The token that was used in the `NextToken`request to fetch the next set of results.   
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*` 

## Errors
<a name="API_DescribeMappedResourceConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_DescribeMappedResourceConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DescribeMappedResourceConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DescribeMappedResourceConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DescribeMappedResourceConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DescribeMappedResourceConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DescribeMappedResourceConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DescribeMappedResourceConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DescribeMappedResourceConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DescribeMappedResourceConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DescribeMappedResourceConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DescribeMappedResourceConfiguration) 

# DescribeMediaStorageConfiguration
<a name="API_DescribeMediaStorageConfiguration"></a>

Returns the most current information about the channel. Specify the `ChannelName` or `ChannelARN` in the input.

## Request Syntax
<a name="API_DescribeMediaStorageConfiguration_RequestSyntax"></a>

```
POST /describeMediaStorageConfiguration HTTP/1.1
Content-type: application/json

{
   "ChannelARN": "string",
   "ChannelName": "string"
}
```

## URI Request Parameters
<a name="API_DescribeMediaStorageConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DescribeMediaStorageConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelARN](#API_DescribeMediaStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeMediaStorageConfiguration-request-ChannelARN"></a>
The Amazon Resource Name (ARN) of the channel.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [ChannelName](#API_DescribeMediaStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeMediaStorageConfiguration-request-ChannelName"></a>
The name of the channel.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_DescribeMediaStorageConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "MediaStorageConfiguration": { 
      "Status": "string",
      "StreamARN": "string"
   }
}
```

## Response Elements
<a name="API_DescribeMediaStorageConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [MediaStorageConfiguration](#API_DescribeMediaStorageConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeMediaStorageConfiguration-response-MediaStorageConfiguration"></a>
A structure that encapsulates, or contains, the media storage configuration properties.  
Type: [MediaStorageConfiguration](API_MediaStorageConfiguration.md) object

## Errors
<a name="API_DescribeMediaStorageConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_DescribeMediaStorageConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DescribeMediaStorageConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DescribeMediaStorageConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DescribeMediaStorageConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DescribeMediaStorageConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DescribeMediaStorageConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DescribeMediaStorageConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DescribeMediaStorageConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DescribeMediaStorageConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DescribeMediaStorageConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DescribeMediaStorageConfiguration) 

# DescribeNotificationConfiguration
<a name="API_DescribeNotificationConfiguration"></a>

Gets the `NotificationConfiguration` for a given Kinesis video stream.

## Request Syntax
<a name="API_DescribeNotificationConfiguration_RequestSyntax"></a>

```
POST /describeNotificationConfiguration HTTP/1.1
Content-type: application/json

{
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_DescribeNotificationConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DescribeNotificationConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [StreamARN](#API_DescribeNotificationConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeNotificationConfiguration-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the Kinesis video stream from where you want to retrieve the notification configuration. You must specify either the `StreamName` or the StreamARN.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_DescribeNotificationConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeNotificationConfiguration-request-StreamName"></a>
The name of the stream from which to retrieve the notification configuration. You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_DescribeNotificationConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "NotificationConfiguration": { 
      "DestinationConfig": { 
         "Uri": "string"
      },
      "Status": "string"
   }
}
```

## Response Elements
<a name="API_DescribeNotificationConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [NotificationConfiguration](#API_DescribeNotificationConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeNotificationConfiguration-response-NotificationConfiguration"></a>
The structure that contains the information required for notifications. If the structure is null, the configuration will be deleted from the stream.  
Type: [NotificationConfiguration](API_NotificationConfiguration.md) object

## Errors
<a name="API_DescribeNotificationConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_DescribeNotificationConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DescribeNotificationConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DescribeNotificationConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DescribeNotificationConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DescribeNotificationConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DescribeNotificationConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DescribeNotificationConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DescribeNotificationConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DescribeNotificationConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DescribeNotificationConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DescribeNotificationConfiguration) 

# DescribeSignalingChannel
<a name="API_DescribeSignalingChannel"></a>

Returns the most current information about the signaling channel. You must specify either the name or the Amazon Resource Name (ARN) of the channel that you want to describe.

## Request Syntax
<a name="API_DescribeSignalingChannel_RequestSyntax"></a>

```
POST /describeSignalingChannel HTTP/1.1
Content-type: application/json

{
   "ChannelARN": "string",
   "ChannelName": "string"
}
```

## URI Request Parameters
<a name="API_DescribeSignalingChannel_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DescribeSignalingChannel_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelARN](#API_DescribeSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-DescribeSignalingChannel-request-ChannelARN"></a>
The ARN of the signaling channel that you want to describe.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [ChannelName](#API_DescribeSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-DescribeSignalingChannel-request-ChannelName"></a>
The name of the signaling channel that you want to describe.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_DescribeSignalingChannel_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "ChannelInfo": { 
      "ChannelARN": "string",
      "ChannelName": "string",
      "ChannelStatus": "string",
      "ChannelType": "string",
      "CreationTime": number,
      "SingleMasterConfiguration": { 
         "MessageTtlSeconds": number
      },
      "Version": "string"
   }
}
```

## Response Elements
<a name="API_DescribeSignalingChannel_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [ChannelInfo](#API_DescribeSignalingChannel_ResponseSyntax) **   <a name="KinesisVideo-DescribeSignalingChannel-response-ChannelInfo"></a>
A structure that encapsulates the specified signaling channel's metadata and properties.  
Type: [ChannelInfo](API_ChannelInfo.md) object

## Errors
<a name="API_DescribeSignalingChannel_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_DescribeSignalingChannel_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DescribeSignalingChannel) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DescribeSignalingChannel) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DescribeSignalingChannel) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DescribeSignalingChannel) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DescribeSignalingChannel) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DescribeSignalingChannel) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DescribeSignalingChannel) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DescribeSignalingChannel) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DescribeSignalingChannel) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DescribeSignalingChannel) 

# DescribeStream
<a name="API_DescribeStream"></a>

Returns the most current information about the specified stream. You must specify either the `StreamName` or the `StreamARN`. 

## Request Syntax
<a name="API_DescribeStream_RequestSyntax"></a>

```
POST /describeStream HTTP/1.1
Content-type: application/json

{
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_DescribeStream_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DescribeStream_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [StreamARN](#API_DescribeStream_RequestSyntax) **   <a name="KinesisVideo-DescribeStream-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_DescribeStream_RequestSyntax) **   <a name="KinesisVideo-DescribeStream-request-StreamName"></a>
The name of the stream.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_DescribeStream_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "StreamInfo": { 
      "CreationTime": number,
      "DataRetentionInHours": number,
      "DeviceName": "string",
      "KmsKeyId": "string",
      "MediaType": "string",
      "Status": "string",
      "StreamARN": "string",
      "StreamName": "string",
      "Version": "string"
   }
}
```

## Response Elements
<a name="API_DescribeStream_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [StreamInfo](#API_DescribeStream_ResponseSyntax) **   <a name="KinesisVideo-DescribeStream-response-StreamInfo"></a>
An object that describes the stream.  
Type: [StreamInfo](API_StreamInfo.md) object

## Errors
<a name="API_DescribeStream_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_DescribeStream_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DescribeStream) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DescribeStream) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DescribeStream) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DescribeStream) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DescribeStream) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DescribeStream) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DescribeStream) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DescribeStream) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DescribeStream) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DescribeStream) 

# DescribeStreamStorageConfiguration
<a name="API_DescribeStreamStorageConfiguration"></a>

Retrieves the current storage configuration for the specified Kinesis video stream.

In the request, you must specify either the `StreamName` or the `StreamARN`.

You must have permissions for the `KinesisVideo:DescribeStreamStorageConfiguration` action.

## Request Syntax
<a name="API_DescribeStreamStorageConfiguration_RequestSyntax"></a>

```
POST /describeStreamStorageConfiguration HTTP/1.1
Content-type: application/json

{
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_DescribeStreamStorageConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_DescribeStreamStorageConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [StreamARN](#API_DescribeStreamStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeStreamStorageConfiguration-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream for which you want to retrieve the storage configuration.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_DescribeStreamStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-DescribeStreamStorageConfiguration-request-StreamName"></a>
The name of the stream for which you want to retrieve the storage configuration.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_DescribeStreamStorageConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "StreamARN": "string",
   "StreamName": "string",
   "StreamStorageConfiguration": { 
      "DefaultStorageTier": "string"
   }
}
```

## Response Elements
<a name="API_DescribeStreamStorageConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [StreamARN](#API_DescribeStreamStorageConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeStreamStorageConfiguration-response-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+` 

 ** [StreamName](#API_DescribeStreamStorageConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeStreamStorageConfiguration-response-StreamName"></a>
The name of the stream.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+` 

 ** [StreamStorageConfiguration](#API_DescribeStreamStorageConfiguration_ResponseSyntax) **   <a name="KinesisVideo-DescribeStreamStorageConfiguration-response-StreamStorageConfiguration"></a>
The current storage configuration for the stream, including the default storage tier and other storage-related settings.  
Type: [StreamStorageConfiguration](API_StreamStorageConfiguration.md) object

## Errors
<a name="API_DescribeStreamStorageConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_DescribeStreamStorageConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/DescribeStreamStorageConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/DescribeStreamStorageConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/DescribeStreamStorageConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/DescribeStreamStorageConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/DescribeStreamStorageConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/DescribeStreamStorageConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/DescribeStreamStorageConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/DescribeStreamStorageConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/DescribeStreamStorageConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/DescribeStreamStorageConfiguration) 

# GetDataEndpoint
<a name="API_GetDataEndpoint"></a>

Gets an endpoint for a specified stream for either reading or writing. Use this endpoint in your application to read from the specified stream (using the `GetMedia` or `GetMediaForFragmentList` operations) or write to it (using the `PutMedia` operation). 

**Note**  
The returned endpoint does not have the API name appended. The client needs to add the API name to the returned endpoint.

In the request, specify the stream either by `StreamName` or `StreamARN`.

## Request Syntax
<a name="API_GetDataEndpoint_RequestSyntax"></a>

```
POST /getDataEndpoint HTTP/1.1
Content-type: application/json

{
   "APIName": "string",
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_GetDataEndpoint_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_GetDataEndpoint_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [APIName](#API_GetDataEndpoint_RequestSyntax) **   <a name="KinesisVideo-GetDataEndpoint-request-APIName"></a>
The name of the API action for which to get an endpoint.  
Type: String  
Valid Values: `PUT_MEDIA | GET_MEDIA | LIST_FRAGMENTS | GET_MEDIA_FOR_FRAGMENT_LIST | GET_HLS_STREAMING_SESSION_URL | GET_DASH_STREAMING_SESSION_URL | GET_CLIP | GET_IMAGES`   
Required: Yes

 ** [StreamARN](#API_GetDataEndpoint_RequestSyntax) **   <a name="KinesisVideo-GetDataEndpoint-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream that you want to get the endpoint for. You must specify either this parameter or a `StreamName` in the request.   
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_GetDataEndpoint_RequestSyntax) **   <a name="KinesisVideo-GetDataEndpoint-request-StreamName"></a>
The name of the stream that you want to get the endpoint for. You must specify either this parameter or a `StreamARN` in the request.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_GetDataEndpoint_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "DataEndpoint": "string"
}
```

## Response Elements
<a name="API_GetDataEndpoint_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [DataEndpoint](#API_GetDataEndpoint_ResponseSyntax) **   <a name="KinesisVideo-GetDataEndpoint-response-DataEndpoint"></a>
The endpoint value. To read data from the stream or to write data to it, specify this endpoint in your application.  
Type: String

## Errors
<a name="API_GetDataEndpoint_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_GetDataEndpoint_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/GetDataEndpoint) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/GetDataEndpoint) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/GetDataEndpoint) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/GetDataEndpoint) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/GetDataEndpoint) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/GetDataEndpoint) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/GetDataEndpoint) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/GetDataEndpoint) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/GetDataEndpoint) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/GetDataEndpoint) 

# GetSignalingChannelEndpoint
<a name="API_GetSignalingChannelEndpoint"></a>

Provides an endpoint for the specified signaling channel to send and receive messages. This API uses the `SingleMasterChannelEndpointConfiguration` input parameter, which consists of the `Protocols` and `Role` properties.

 `Protocols` is used to determine the communication mechanism. For example, if you specify `WSS` as the protocol, this API produces a secure websocket endpoint. If you specify `HTTPS` as the protocol, this API generates an HTTPS endpoint. If you specify `WEBRTC` as the protocol, but the signaling channel isn't configured for ingestion, you will receive the error `InvalidArgumentException`.

 `Role` determines the messaging permissions. A `MASTER` role results in this API generating an endpoint that a client can use to communicate with any of the viewers on the channel. A `VIEWER` role results in this API generating an endpoint that a client can use to communicate only with a `MASTER`. 

## Request Syntax
<a name="API_GetSignalingChannelEndpoint_RequestSyntax"></a>

```
POST /getSignalingChannelEndpoint HTTP/1.1
Content-type: application/json

{
   "ChannelARN": "string",
   "SingleMasterChannelEndpointConfiguration": { 
      "Protocols": [ "string" ],
      "Role": "string"
   }
}
```

## URI Request Parameters
<a name="API_GetSignalingChannelEndpoint_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_GetSignalingChannelEndpoint_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelARN](#API_GetSignalingChannelEndpoint_RequestSyntax) **   <a name="KinesisVideo-GetSignalingChannelEndpoint-request-ChannelARN"></a>
The Amazon Resource Name (ARN) of the signalling channel for which you want to get an endpoint.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

 ** [SingleMasterChannelEndpointConfiguration](#API_GetSignalingChannelEndpoint_RequestSyntax) **   <a name="KinesisVideo-GetSignalingChannelEndpoint-request-SingleMasterChannelEndpointConfiguration"></a>
A structure containing the endpoint configuration for the `SINGLE_MASTER` channel type.  
Type: [SingleMasterChannelEndpointConfiguration](API_SingleMasterChannelEndpointConfiguration.md) object  
Required: No

## Response Syntax
<a name="API_GetSignalingChannelEndpoint_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "ResourceEndpointList": [ 
      { 
         "Protocol": "string",
         "ResourceEndpoint": "string"
      }
   ]
}
```

## Response Elements
<a name="API_GetSignalingChannelEndpoint_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [ResourceEndpointList](#API_GetSignalingChannelEndpoint_ResponseSyntax) **   <a name="KinesisVideo-GetSignalingChannelEndpoint-response-ResourceEndpointList"></a>
A list of endpoints for the specified signaling channel.  
Type: Array of [ResourceEndpointListItem](API_ResourceEndpointListItem.md) objects

## Errors
<a name="API_GetSignalingChannelEndpoint_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_GetSignalingChannelEndpoint_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/GetSignalingChannelEndpoint) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/GetSignalingChannelEndpoint) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/GetSignalingChannelEndpoint) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/GetSignalingChannelEndpoint) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/GetSignalingChannelEndpoint) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/GetSignalingChannelEndpoint) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/GetSignalingChannelEndpoint) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/GetSignalingChannelEndpoint) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/GetSignalingChannelEndpoint) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/GetSignalingChannelEndpoint) 

# ListEdgeAgentConfigurations
<a name="API_ListEdgeAgentConfigurations"></a>

Returns an array of edge configurations associated with the specified Edge Agent.

In the request, you must specify the Edge Agent `HubDeviceArn`.

**Note**  
This API isn't available in the AWS Africa (Cape Town) region, af-south-1.

## Request Syntax
<a name="API_ListEdgeAgentConfigurations_RequestSyntax"></a>

```
POST /listEdgeAgentConfigurations HTTP/1.1
Content-type: application/json

{
   "HubDeviceArn": "string",
   "MaxResults": number,
   "NextToken": "string"
}
```

## URI Request Parameters
<a name="API_ListEdgeAgentConfigurations_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_ListEdgeAgentConfigurations_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [HubDeviceArn](#API_ListEdgeAgentConfigurations_RequestSyntax) **   <a name="KinesisVideo-ListEdgeAgentConfigurations-request-HubDeviceArn"></a>
The "Internet of Things (IoT) Thing" Arn of the edge agent.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:iot:[a-z0-9-]+:[0-9]+:thing/[a-zA-Z0-9_.-]+`   
Required: Yes

 ** [MaxResults](#API_ListEdgeAgentConfigurations_RequestSyntax) **   <a name="KinesisVideo-ListEdgeAgentConfigurations-request-MaxResults"></a>
The maximum number of edge configurations to return in the response. The default is 5.  
Type: Integer  
Valid Range: Minimum value of 1. Maximum value of 10.  
Required: No

 ** [NextToken](#API_ListEdgeAgentConfigurations_RequestSyntax) **   <a name="KinesisVideo-ListEdgeAgentConfigurations-request-NextToken"></a>
If you specify this parameter, when the result of a `ListEdgeAgentConfigurations` operation is truncated, the call returns the `NextToken` in the response. To get another batch of edge configurations, provide this token in your next request.   
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*`   
Required: No

## Response Syntax
<a name="API_ListEdgeAgentConfigurations_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "EdgeConfigs": [ 
      { 
         "CreationTime": number,
         "EdgeConfig": { 
            "DeletionConfig": { 
               "DeleteAfterUpload": boolean,
               "EdgeRetentionInHours": number,
               "LocalSizeConfig": { 
                  "MaxLocalMediaSizeInMB": number,
                  "StrategyOnFullSize": "string"
               }
            },
            "HubDeviceArn": "string",
            "RecorderConfig": { 
               "MediaSourceConfig": { 
                  "MediaUriSecretArn": "string",
                  "MediaUriType": "string"
               },
               "ScheduleConfig": { 
                  "DurationInSeconds": number,
                  "ScheduleExpression": "string"
               }
            },
            "UploaderConfig": { 
               "ScheduleConfig": { 
                  "DurationInSeconds": number,
                  "ScheduleExpression": "string"
               }
            }
         },
         "FailedStatusDetails": "string",
         "LastUpdatedTime": number,
         "StreamARN": "string",
         "StreamName": "string",
         "SyncStatus": "string"
      }
   ],
   "NextToken": "string"
}
```

## Response Elements
<a name="API_ListEdgeAgentConfigurations_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [EdgeConfigs](#API_ListEdgeAgentConfigurations_ResponseSyntax) **   <a name="KinesisVideo-ListEdgeAgentConfigurations-response-EdgeConfigs"></a>
A description of a single stream's edge configuration.  
Type: Array of [ListEdgeAgentConfigurationsEdgeConfig](API_ListEdgeAgentConfigurationsEdgeConfig.md) objects

 ** [NextToken](#API_ListEdgeAgentConfigurations_ResponseSyntax) **   <a name="KinesisVideo-ListEdgeAgentConfigurations-response-NextToken"></a>
If the response is truncated, the call returns this element with a given token. To get the next batch of edge configurations, use this token in your next request.  
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*` 

## Errors
<a name="API_ListEdgeAgentConfigurations_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

## See Also
<a name="API_ListEdgeAgentConfigurations_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/ListEdgeAgentConfigurations) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/ListEdgeAgentConfigurations) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/ListEdgeAgentConfigurations) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/ListEdgeAgentConfigurations) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/ListEdgeAgentConfigurations) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/ListEdgeAgentConfigurations) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/ListEdgeAgentConfigurations) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/ListEdgeAgentConfigurations) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/ListEdgeAgentConfigurations) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/ListEdgeAgentConfigurations) 

# ListSignalingChannels
<a name="API_ListSignalingChannels"></a>

Returns an array of `ChannelInfo` objects. Each object describes a signaling channel. To retrieve only those channels that satisfy a specific condition, you can specify a `ChannelNameCondition`.

## Request Syntax
<a name="API_ListSignalingChannels_RequestSyntax"></a>

```
POST /listSignalingChannels HTTP/1.1
Content-type: application/json

{
   "ChannelNameCondition": { 
      "ComparisonOperator": "string",
      "ComparisonValue": "string"
   },
   "MaxResults": number,
   "NextToken": "string"
}
```

## URI Request Parameters
<a name="API_ListSignalingChannels_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_ListSignalingChannels_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelNameCondition](#API_ListSignalingChannels_RequestSyntax) **   <a name="KinesisVideo-ListSignalingChannels-request-ChannelNameCondition"></a>
Optional: Returns only the channels that satisfy a specific condition.  
Type: [ChannelNameCondition](API_ChannelNameCondition.md) object  
Required: No

 ** [MaxResults](#API_ListSignalingChannels_RequestSyntax) **   <a name="KinesisVideo-ListSignalingChannels-request-MaxResults"></a>
The maximum number of channels to return in the response. The default is 500.  
Type: Integer  
Valid Range: Minimum value of 1. Maximum value of 10000.  
Required: No

 ** [NextToken](#API_ListSignalingChannels_RequestSyntax) **   <a name="KinesisVideo-ListSignalingChannels-request-NextToken"></a>
If you specify this parameter, when the result of a `ListSignalingChannels` operation is truncated, the call returns the `NextToken` in the response. To get another batch of channels, provide this token in your next request.  
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*`   
Required: No

## Response Syntax
<a name="API_ListSignalingChannels_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "ChannelInfoList": [ 
      { 
         "ChannelARN": "string",
         "ChannelName": "string",
         "ChannelStatus": "string",
         "ChannelType": "string",
         "CreationTime": number,
         "SingleMasterConfiguration": { 
            "MessageTtlSeconds": number
         },
         "Version": "string"
      }
   ],
   "NextToken": "string"
}
```

## Response Elements
<a name="API_ListSignalingChannels_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [ChannelInfoList](#API_ListSignalingChannels_ResponseSyntax) **   <a name="KinesisVideo-ListSignalingChannels-response-ChannelInfoList"></a>
An array of `ChannelInfo` objects.  
Type: Array of [ChannelInfo](API_ChannelInfo.md) objects

 ** [NextToken](#API_ListSignalingChannels_ResponseSyntax) **   <a name="KinesisVideo-ListSignalingChannels-response-NextToken"></a>
If the response is truncated, the call returns this element with a token. To get the next batch of streams, use this token in your next request.  
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*` 

## Errors
<a name="API_ListSignalingChannels_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

## See Also
<a name="API_ListSignalingChannels_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/ListSignalingChannels) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/ListSignalingChannels) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/ListSignalingChannels) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/ListSignalingChannels) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/ListSignalingChannels) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/ListSignalingChannels) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/ListSignalingChannels) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/ListSignalingChannels) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/ListSignalingChannels) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/ListSignalingChannels) 

# ListStreams
<a name="API_ListStreams"></a>

Returns an array of `StreamInfo` objects. Each object describes a stream. To retrieve only streams that satisfy a specific condition, you can specify a `StreamNameCondition`. 

## Request Syntax
<a name="API_ListStreams_RequestSyntax"></a>

```
POST /listStreams HTTP/1.1
Content-type: application/json

{
   "MaxResults": number,
   "NextToken": "string",
   "StreamNameCondition": { 
      "ComparisonOperator": "string",
      "ComparisonValue": "string"
   }
}
```

## URI Request Parameters
<a name="API_ListStreams_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_ListStreams_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [MaxResults](#API_ListStreams_RequestSyntax) **   <a name="KinesisVideo-ListStreams-request-MaxResults"></a>
The maximum number of streams to return in the response. The default is 10,000.  
Type: Integer  
Valid Range: Minimum value of 1. Maximum value of 10000.  
Required: No

 ** [NextToken](#API_ListStreams_RequestSyntax) **   <a name="KinesisVideo-ListStreams-request-NextToken"></a>
If you specify this parameter, when the result of a `ListStreams` operation is truncated, the call returns the `NextToken` in the response. To get another batch of streams, provide this token in your next request.  
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*`   
Required: No

 ** [StreamNameCondition](#API_ListStreams_RequestSyntax) **   <a name="KinesisVideo-ListStreams-request-StreamNameCondition"></a>
Optional: Returns only streams that satisfy a specific condition. Currently, you can specify only the prefix of a stream name as a condition.   
Type: [StreamNameCondition](API_StreamNameCondition.md) object  
Required: No

## Response Syntax
<a name="API_ListStreams_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "NextToken": "string",
   "StreamInfoList": [ 
      { 
         "CreationTime": number,
         "DataRetentionInHours": number,
         "DeviceName": "string",
         "KmsKeyId": "string",
         "MediaType": "string",
         "Status": "string",
         "StreamARN": "string",
         "StreamName": "string",
         "Version": "string"
      }
   ]
}
```

## Response Elements
<a name="API_ListStreams_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [NextToken](#API_ListStreams_ResponseSyntax) **   <a name="KinesisVideo-ListStreams-response-NextToken"></a>
If the response is truncated, the call returns this element with a token. To get the next batch of streams, use this token in your next request.   
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*` 

 ** [StreamInfoList](#API_ListStreams_ResponseSyntax) **   <a name="KinesisVideo-ListStreams-response-StreamInfoList"></a>
An array of `StreamInfo` objects.  
Type: Array of [StreamInfo](API_StreamInfo.md) objects

## Errors
<a name="API_ListStreams_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

## See Also
<a name="API_ListStreams_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/ListStreams) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/ListStreams) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/ListStreams) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/ListStreams) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/ListStreams) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/ListStreams) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/ListStreams) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/ListStreams) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/ListStreams) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/ListStreams) 

# ListTagsForResource
<a name="API_ListTagsForResource"></a>

Returns a list of tags associated with the specified signaling channel.

## Request Syntax
<a name="API_ListTagsForResource_RequestSyntax"></a>

```
POST /ListTagsForResource HTTP/1.1
Content-type: application/json

{
   "NextToken": "string",
   "ResourceARN": "string"
}
```

## URI Request Parameters
<a name="API_ListTagsForResource_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_ListTagsForResource_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [NextToken](#API_ListTagsForResource_RequestSyntax) **   <a name="KinesisVideo-ListTagsForResource-request-NextToken"></a>
If you specify this parameter and the result of a `ListTagsForResource` call is truncated, the response includes a token that you can use in the next request to fetch the next batch of tags.   
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*`   
Required: No

 ** [ResourceARN](#API_ListTagsForResource_RequestSyntax) **   <a name="KinesisVideo-ListTagsForResource-request-ResourceARN"></a>
The Amazon Resource Name (ARN) of the signaling channel for which you want to list tags.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

## Response Syntax
<a name="API_ListTagsForResource_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "NextToken": "string",
   "Tags": { 
      "string" : "string" 
   }
}
```

## Response Elements
<a name="API_ListTagsForResource_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [NextToken](#API_ListTagsForResource_ResponseSyntax) **   <a name="KinesisVideo-ListTagsForResource-response-NextToken"></a>
If you specify this parameter and the result of a `ListTagsForResource` call is truncated, the response includes a token that you can use in the next request to fetch the next set of tags.   
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*` 

 ** [Tags](#API_ListTagsForResource_ResponseSyntax) **   <a name="KinesisVideo-ListTagsForResource-response-Tags"></a>
A map of tag keys and values associated with the specified signaling channel.  
Type: String to string map  
Map Entries: Maximum number of 50 items.  
Key Length Constraints: Minimum length of 1. Maximum length of 128.  
Key Pattern: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`   
Value Length Constraints: Minimum length of 0. Maximum length of 256.  
Value Pattern: `[\p{L}\p{Z}\p{N}_.:/=+\-@]*` 

## Errors
<a name="API_ListTagsForResource_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_ListTagsForResource_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/ListTagsForResource) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/ListTagsForResource) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/ListTagsForResource) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/ListTagsForResource) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/ListTagsForResource) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/ListTagsForResource) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/ListTagsForResource) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/ListTagsForResource) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/ListTagsForResource) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/ListTagsForResource) 

# ListTagsForStream
<a name="API_ListTagsForStream"></a>

Returns a list of tags associated with the specified stream.

In the request, you must specify either the `StreamName` or the `StreamARN`. 

## Request Syntax
<a name="API_ListTagsForStream_RequestSyntax"></a>

```
POST /listTagsForStream HTTP/1.1
Content-type: application/json

{
   "NextToken": "string",
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_ListTagsForStream_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_ListTagsForStream_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [NextToken](#API_ListTagsForStream_RequestSyntax) **   <a name="KinesisVideo-ListTagsForStream-request-NextToken"></a>
If you specify this parameter and the result of a `ListTagsForStream` call is truncated, the response includes a token that you can use in the next request to fetch the next batch of tags.  
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*`   
Required: No

 ** [StreamARN](#API_ListTagsForStream_RequestSyntax) **   <a name="KinesisVideo-ListTagsForStream-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream that you want to list tags for.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_ListTagsForStream_RequestSyntax) **   <a name="KinesisVideo-ListTagsForStream-request-StreamName"></a>
The name of the stream that you want to list tags for.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_ListTagsForStream_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "NextToken": "string",
   "Tags": { 
      "string" : "string" 
   }
}
```

## Response Elements
<a name="API_ListTagsForStream_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [NextToken](#API_ListTagsForStream_ResponseSyntax) **   <a name="KinesisVideo-ListTagsForStream-response-NextToken"></a>
If you specify this parameter and the result of a `ListTags` call is truncated, the response includes a token that you can use in the next request to fetch the next set of tags.  
Type: String  
Length Constraints: Minimum length of 0. Maximum length of 1024.  
Pattern: `[a-zA-Z0-9+/=]*` 

 ** [Tags](#API_ListTagsForStream_ResponseSyntax) **   <a name="KinesisVideo-ListTagsForStream-response-Tags"></a>
A map of tag keys and values associated with the specified stream.  
Type: String to string map  
Map Entries: Maximum number of 50 items.  
Key Length Constraints: Minimum length of 1. Maximum length of 128.  
Key Pattern: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`   
Value Length Constraints: Minimum length of 0. Maximum length of 256.  
Value Pattern: `[\p{L}\p{Z}\p{N}_.:/=+\-@]*` 

## Errors
<a name="API_ListTagsForStream_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** InvalidResourceFormatException **   
The format of the `StreamARN` is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_ListTagsForStream_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/ListTagsForStream) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/ListTagsForStream) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/ListTagsForStream) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/ListTagsForStream) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/ListTagsForStream) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/ListTagsForStream) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/ListTagsForStream) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/ListTagsForStream) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/ListTagsForStream) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/ListTagsForStream) 

# StartEdgeConfigurationUpdate
<a name="API_StartEdgeConfigurationUpdate"></a>

An asynchronous API that updates a stream’s existing edge configuration. The Kinesis Video Stream will sync the stream’s edge configuration with the Edge Agent IoT Greengrass component that runs on an IoT Hub Device, setup at your premise. The time to sync can vary and depends on the connectivity of the Hub Device. The `SyncStatus` will be updated as the edge configuration is acknowledged, and synced with the Edge Agent. 

If this API is invoked for the first time, a new edge configuration will be created for the stream, and the sync status will be set to `SYNCING`. You will have to wait for the sync status to reach a terminal state such as: `IN_SYNC`, or `SYNC_FAILED`, before using this API again. If you invoke this API during the syncing process, a `ResourceInUseException` will be thrown. The connectivity of the stream’s edge configuration and the Edge Agent will be retried for 15 minutes. After 15 minutes, the status will transition into the `SYNC_FAILED` state.

To move an edge configuration from one device to another, use [DeleteEdgeConfiguration](API_DeleteEdgeConfiguration.md) to delete the current edge configuration. You can then invoke StartEdgeConfigurationUpdate with an updated Hub Device ARN.

**Note**  
This API isn't available in the AWS Africa (Cape Town) region, af-south-1.

## Request Syntax
<a name="API_StartEdgeConfigurationUpdate_RequestSyntax"></a>

```
POST /startEdgeConfigurationUpdate HTTP/1.1
Content-type: application/json

{
   "EdgeConfig": { 
      "DeletionConfig": { 
         "DeleteAfterUpload": boolean,
         "EdgeRetentionInHours": number,
         "LocalSizeConfig": { 
            "MaxLocalMediaSizeInMB": number,
            "StrategyOnFullSize": "string"
         }
      },
      "HubDeviceArn": "string",
      "RecorderConfig": { 
         "MediaSourceConfig": { 
            "MediaUriSecretArn": "string",
            "MediaUriType": "string"
         },
         "ScheduleConfig": { 
            "DurationInSeconds": number,
            "ScheduleExpression": "string"
         }
      },
      "UploaderConfig": { 
         "ScheduleConfig": { 
            "DurationInSeconds": number,
            "ScheduleExpression": "string"
         }
      }
   },
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_StartEdgeConfigurationUpdate_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_StartEdgeConfigurationUpdate_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [EdgeConfig](#API_StartEdgeConfigurationUpdate_RequestSyntax) **   <a name="KinesisVideo-StartEdgeConfigurationUpdate-request-EdgeConfig"></a>
The edge configuration details required to invoke the update process.  
Type: [EdgeConfig](API_EdgeConfig.md) object  
Required: Yes

 ** [StreamARN](#API_StartEdgeConfigurationUpdate_RequestSyntax) **   <a name="KinesisVideo-StartEdgeConfigurationUpdate-request-StreamARN"></a>
 The Amazon Resource Name (ARN) of the stream. Specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_StartEdgeConfigurationUpdate_RequestSyntax) **   <a name="KinesisVideo-StartEdgeConfigurationUpdate-request-StreamName"></a>
The name of the stream whose edge configuration you want to update. Specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_StartEdgeConfigurationUpdate_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "CreationTime": number,
   "EdgeConfig": { 
      "DeletionConfig": { 
         "DeleteAfterUpload": boolean,
         "EdgeRetentionInHours": number,
         "LocalSizeConfig": { 
            "MaxLocalMediaSizeInMB": number,
            "StrategyOnFullSize": "string"
         }
      },
      "HubDeviceArn": "string",
      "RecorderConfig": { 
         "MediaSourceConfig": { 
            "MediaUriSecretArn": "string",
            "MediaUriType": "string"
         },
         "ScheduleConfig": { 
            "DurationInSeconds": number,
            "ScheduleExpression": "string"
         }
      },
      "UploaderConfig": { 
         "ScheduleConfig": { 
            "DurationInSeconds": number,
            "ScheduleExpression": "string"
         }
      }
   },
   "FailedStatusDetails": "string",
   "LastUpdatedTime": number,
   "StreamARN": "string",
   "StreamName": "string",
   "SyncStatus": "string"
}
```

## Response Elements
<a name="API_StartEdgeConfigurationUpdate_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [CreationTime](#API_StartEdgeConfigurationUpdate_ResponseSyntax) **   <a name="KinesisVideo-StartEdgeConfigurationUpdate-response-CreationTime"></a>
The timestamp at which a stream’s edge configuration was first created.  
Type: Timestamp

 ** [EdgeConfig](#API_StartEdgeConfigurationUpdate_ResponseSyntax) **   <a name="KinesisVideo-StartEdgeConfigurationUpdate-response-EdgeConfig"></a>
A description of the stream's edge configuration that will be used to sync with the Edge Agent IoT Greengrass component. The Edge Agent component will run on an IoT Hub Device setup at your premise.  
Type: [EdgeConfig](API_EdgeConfig.md) object

 ** [FailedStatusDetails](#API_StartEdgeConfigurationUpdate_ResponseSyntax) **   <a name="KinesisVideo-StartEdgeConfigurationUpdate-response-FailedStatusDetails"></a>
A description of the generated failure status.  
Type: String

 ** [LastUpdatedTime](#API_StartEdgeConfigurationUpdate_ResponseSyntax) **   <a name="KinesisVideo-StartEdgeConfigurationUpdate-response-LastUpdatedTime"></a>
The timestamp at which a stream’s edge configuration was last updated.  
Type: Timestamp

 ** [StreamARN](#API_StartEdgeConfigurationUpdate_ResponseSyntax) **   <a name="KinesisVideo-StartEdgeConfigurationUpdate-response-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+` 

 ** [StreamName](#API_StartEdgeConfigurationUpdate_ResponseSyntax) **   <a name="KinesisVideo-StartEdgeConfigurationUpdate-response-StreamName"></a>
The name of the stream from which the edge configuration was updated.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+` 

 ** [SyncStatus](#API_StartEdgeConfigurationUpdate_ResponseSyntax) **   <a name="KinesisVideo-StartEdgeConfigurationUpdate-response-SyncStatus"></a>
 The current sync status of the stream's edge configuration. When you invoke this API, the sync status will be set to the `SYNCING` state. Use the `DescribeEdgeConfiguration` API to get the latest status of the edge configuration.  
Type: String  
Valid Values: `SYNCING | ACKNOWLEDGED | IN_SYNC | SYNC_FAILED | DELETING | DELETE_FAILED | DELETING_ACKNOWLEDGED` 

## Errors
<a name="API_StartEdgeConfigurationUpdate_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NoDataRetentionException **   
The Stream data retention in hours is equal to zero.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_StartEdgeConfigurationUpdate_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate) 

# TagResource
<a name="API_TagResource"></a>

Adds one or more tags to a signaling channel **only**. **Note :** To tag streams, use the TagStream API instead. A *tag* is a key-value pair (the value is optional) that you can define and assign to AWS resources. If you specify a tag that already exists, the tag value is replaced with the value that you specify in the request. For more information, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the * AWS Billing and Cost Management and Cost Management User Guide*.

## Request Syntax
<a name="API_TagResource_RequestSyntax"></a>

```
POST /TagResource HTTP/1.1
Content-type: application/json

{
   "ResourceARN": "string",
   "Tags": [ 
      { 
         "Key": "string",
         "Value": "string"
      }
   ]
}
```

## URI Request Parameters
<a name="API_TagResource_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_TagResource_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ResourceARN](#API_TagResource_RequestSyntax) **   <a name="KinesisVideo-TagResource-request-ResourceARN"></a>
The Amazon Resource Name (ARN) of the signaling channel to which you want to add tags.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

 ** [Tags](#API_TagResource_RequestSyntax) **   <a name="KinesisVideo-TagResource-request-Tags"></a>
A list of tags to associate with the specified signaling channel. Each tag is a key-value pair.  
Type: Array of [Tag](API_Tag.md) objects  
Array Members: Minimum number of 1 item. Maximum number of 50 items.  
Required: Yes

## Response Syntax
<a name="API_TagResource_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_TagResource_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_TagResource_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

 ** TagsPerResourceExceededLimitException **   
You have exceeded the limit of tags that you can associate with the resource. A Kinesis video stream can support up to 50 tags.   
HTTP Status Code: 400

## See Also
<a name="API_TagResource_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/TagResource) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/TagResource) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/TagResource) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/TagResource) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/TagResource) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/TagResource) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/TagResource) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/TagResource) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/TagResource) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/TagResource) 

# TagStream
<a name="API_TagStream"></a>

Adds one or more tags to a stream. A *tag* is a key-value pair (the value is optional) that you can define and assign to AWS resources. If you specify a tag that already exists, the tag value is replaced with the value that you specify in the request. For more information, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the * AWS Billing and Cost Management and Cost Management User Guide*. 

You must provide either the `StreamName` or the `StreamARN`.

This operation requires permission for the `KinesisVideo:TagStream` action.

A Kinesis video stream can support up to 50 tags.

## Request Syntax
<a name="API_TagStream_RequestSyntax"></a>

```
POST /tagStream HTTP/1.1
Content-type: application/json

{
   "StreamARN": "string",
   "StreamName": "string",
   "Tags": { 
      "string" : "string" 
   }
}
```

## URI Request Parameters
<a name="API_TagStream_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_TagStream_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [StreamARN](#API_TagStream_RequestSyntax) **   <a name="KinesisVideo-TagStream-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the resource that you want to add the tag or tags to.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_TagStream_RequestSyntax) **   <a name="KinesisVideo-TagStream-request-StreamName"></a>
The name of the stream that you want to add the tag or tags to.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

 ** [Tags](#API_TagStream_RequestSyntax) **   <a name="KinesisVideo-TagStream-request-Tags"></a>
A list of tags to associate with the specified stream. Each tag is a key-value pair (the value is optional).  
Type: String to string map  
Map Entries: Maximum number of 50 items.  
Key Length Constraints: Minimum length of 1. Maximum length of 128.  
Key Pattern: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`   
Value Length Constraints: Minimum length of 0. Maximum length of 256.  
Value Pattern: `[\p{L}\p{Z}\p{N}_.:/=+\-@]*`   
Required: Yes

## Response Syntax
<a name="API_TagStream_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_TagStream_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_TagStream_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** InvalidResourceFormatException **   
The format of the `StreamARN` is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

 ** TagsPerResourceExceededLimitException **   
You have exceeded the limit of tags that you can associate with the resource. A Kinesis video stream can support up to 50 tags.   
HTTP Status Code: 400

## See Also
<a name="API_TagStream_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/TagStream) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/TagStream) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/TagStream) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/TagStream) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/TagStream) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/TagStream) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/TagStream) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/TagStream) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/TagStream) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/TagStream) 

# UntagResource
<a name="API_UntagResource"></a>

Removes one or more tags from a signaling channel **only**. **Note :** To remove tags from streams, use the UntagStream API instead. In the request, specify only a tag key or keys; don't specify the value. If you specify a tag key that does not exist, it's ignored.

## Request Syntax
<a name="API_UntagResource_RequestSyntax"></a>

```
POST /UntagResource HTTP/1.1
Content-type: application/json

{
   "ResourceARN": "string",
   "TagKeyList": [ "string" ]
}
```

## URI Request Parameters
<a name="API_UntagResource_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_UntagResource_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ResourceARN](#API_UntagResource_RequestSyntax) **   <a name="KinesisVideo-UntagResource-request-ResourceARN"></a>
The Amazon Resource Name (ARN) of the signaling channel from which you want to remove tags.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

 ** [TagKeyList](#API_UntagResource_RequestSyntax) **   <a name="KinesisVideo-UntagResource-request-TagKeyList"></a>
A list of the keys of the tags that you want to remove.  
Type: Array of strings  
Array Members: Minimum number of 1 item. Maximum number of 50 items.  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`   
Required: Yes

## Response Syntax
<a name="API_UntagResource_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_UntagResource_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_UntagResource_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_UntagResource_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/UntagResource) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/UntagResource) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/UntagResource) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/UntagResource) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/UntagResource) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/UntagResource) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/UntagResource) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/UntagResource) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/UntagResource) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/UntagResource) 

# UntagStream
<a name="API_UntagStream"></a>

Removes one or more tags from a stream. In the request, specify only a tag key or keys; don't specify the value. If you specify a tag key that does not exist, it's ignored.

In the request, you must provide the `StreamName` or `StreamARN`.

## Request Syntax
<a name="API_UntagStream_RequestSyntax"></a>

```
POST /untagStream HTTP/1.1
Content-type: application/json

{
   "StreamARN": "string",
   "StreamName": "string",
   "TagKeyList": [ "string" ]
}
```

## URI Request Parameters
<a name="API_UntagStream_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_UntagStream_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [StreamARN](#API_UntagStream_RequestSyntax) **   <a name="KinesisVideo-UntagStream-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream that you want to remove tags from.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_UntagStream_RequestSyntax) **   <a name="KinesisVideo-UntagStream-request-StreamName"></a>
The name of the stream that you want to remove tags from.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

 ** [TagKeyList](#API_UntagStream_RequestSyntax) **   <a name="KinesisVideo-UntagStream-request-TagKeyList"></a>
A list of the keys of the tags that you want to remove.  
Type: Array of strings  
Array Members: Minimum number of 1 item. Maximum number of 50 items.  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`   
Required: Yes

## Response Syntax
<a name="API_UntagStream_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_UntagStream_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_UntagStream_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** InvalidResourceFormatException **   
The format of the `StreamARN` is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_UntagStream_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/UntagStream) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/UntagStream) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/UntagStream) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/UntagStream) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/UntagStream) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/UntagStream) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/UntagStream) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/UntagStream) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/UntagStream) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/UntagStream) 

# UpdateDataRetention
<a name="API_UpdateDataRetention"></a>

Increases or decreases the stream's data retention period by the value that you specify. To indicate whether you want to increase or decrease the data retention period, specify the `Operation` parameter in the request body. In the request, you must specify either the `StreamName` or the `StreamARN`. 

This operation requires permission for the `KinesisVideo:UpdateDataRetention` action.

Changing the data retention period affects the data in the stream as follows:
+ If the data retention period is increased, existing data is retained for the new retention period. For example, if the data retention period is increased from one hour to seven hours, all existing data is retained for seven hours.
+ If the data retention period is decreased, existing data is retained for the new retention period. For example, if the data retention period is decreased from seven hours to one hour, all existing data is retained for one hour, and any data older than one hour is deleted immediately.

## Request Syntax
<a name="API_UpdateDataRetention_RequestSyntax"></a>

```
POST /updateDataRetention HTTP/1.1
Content-type: application/json

{
   "CurrentVersion": "string",
   "DataRetentionChangeInHours": number,
   "Operation": "string",
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_UpdateDataRetention_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_UpdateDataRetention_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [CurrentVersion](#API_UpdateDataRetention_RequestSyntax) **   <a name="KinesisVideo-UpdateDataRetention-request-CurrentVersion"></a>
The version of the stream whose retention period you want to change. To get the version, call either the `DescribeStream` or the `ListStreams` API.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 64.  
Pattern: `[a-zA-Z0-9]+`   
Required: Yes

 ** [DataRetentionChangeInHours](#API_UpdateDataRetention_RequestSyntax) **   <a name="KinesisVideo-UpdateDataRetention-request-DataRetentionChangeInHours"></a>
The number of hours to adjust the current retention by. The value you specify is added to or subtracted from the current value, depending on the `operation`.  
The minimum value for data retention is 0 and the maximum value is 87600 (ten years).  
Type: Integer  
Valid Range: Minimum value of 1.  
Required: Yes

 ** [Operation](#API_UpdateDataRetention_RequestSyntax) **   <a name="KinesisVideo-UpdateDataRetention-request-Operation"></a>
Indicates whether you want to increase or decrease the retention period.  
Type: String  
Valid Values: `INCREASE_DATA_RETENTION | DECREASE_DATA_RETENTION`   
Required: Yes

 ** [StreamARN](#API_UpdateDataRetention_RequestSyntax) **   <a name="KinesisVideo-UpdateDataRetention-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream whose retention period you want to change.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_UpdateDataRetention_RequestSyntax) **   <a name="KinesisVideo-UpdateDataRetention-request-StreamName"></a>
The name of the stream whose retention period you want to change.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_UpdateDataRetention_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_UpdateDataRetention_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_UpdateDataRetention_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

 ** VersionMismatchException **   
The stream version that you specified is not the latest version. To get the latest version, use the [DescribeStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html) API.  
HTTP Status Code: 400

## See Also
<a name="API_UpdateDataRetention_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/UpdateDataRetention) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/UpdateDataRetention) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/UpdateDataRetention) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/UpdateDataRetention) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/UpdateDataRetention) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/UpdateDataRetention) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/UpdateDataRetention) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/UpdateDataRetention) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/UpdateDataRetention) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/UpdateDataRetention) 

# UpdateImageGenerationConfiguration
<a name="API_UpdateImageGenerationConfiguration"></a>

Updates the `StreamInfo` and `ImageProcessingConfiguration` fields.

## Request Syntax
<a name="API_UpdateImageGenerationConfiguration_RequestSyntax"></a>

```
POST /updateImageGenerationConfiguration HTTP/1.1
Content-type: application/json

{
   "ImageGenerationConfiguration": { 
      "DestinationConfig": { 
         "DestinationRegion": "string",
         "Uri": "string"
      },
      "Format": "string",
      "FormatConfig": { 
         "string" : "string" 
      },
      "HeightPixels": number,
      "ImageSelectorType": "string",
      "SamplingInterval": number,
      "Status": "string",
      "WidthPixels": number
   },
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_UpdateImageGenerationConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_UpdateImageGenerationConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ImageGenerationConfiguration](#API_UpdateImageGenerationConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateImageGenerationConfiguration-request-ImageGenerationConfiguration"></a>
The structure that contains the information required for the KVS images delivery. If the structure is null, the configuration will be deleted from the stream.  
Type: [ImageGenerationConfiguration](API_ImageGenerationConfiguration.md) object  
Required: No

 ** [StreamARN](#API_UpdateImageGenerationConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateImageGenerationConfiguration-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the Kinesis video stream from where you want to update the image generation configuration. You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_UpdateImageGenerationConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateImageGenerationConfiguration-request-StreamName"></a>
The name of the stream from which to update the image generation configuration. You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_UpdateImageGenerationConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_UpdateImageGenerationConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_UpdateImageGenerationConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NoDataRetentionException **   
The Stream data retention in hours is equal to zero.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_UpdateImageGenerationConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/UpdateImageGenerationConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/UpdateImageGenerationConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/UpdateImageGenerationConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/UpdateImageGenerationConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/UpdateImageGenerationConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/UpdateImageGenerationConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/UpdateImageGenerationConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/UpdateImageGenerationConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/UpdateImageGenerationConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/UpdateImageGenerationConfiguration) 

# UpdateMediaStorageConfiguration
<a name="API_UpdateMediaStorageConfiguration"></a>

Associates a `SignalingChannel` to a stream to store the media. There are two signaling modes that you can specify :
+ If `StorageStatus` is enabled, the data will be stored in the `StreamARN` provided. In order for WebRTC Ingestion to work, the stream must have data retention enabled.
+ If `StorageStatus` is disabled, no data will be stored, and the `StreamARN` parameter will not be needed. 

**Important**  
If `StorageStatus` is enabled, direct peer-to-peer (master-viewer) connections no longer occur. Peers connect directly to the storage session. You must call the `JoinStorageSession` API to trigger an SDP offer send and establish a connection between a peer and the storage session. 

## Request Syntax
<a name="API_UpdateMediaStorageConfiguration_RequestSyntax"></a>

```
POST /updateMediaStorageConfiguration HTTP/1.1
Content-type: application/json

{
   "ChannelARN": "string",
   "MediaStorageConfiguration": { 
      "Status": "string",
      "StreamARN": "string"
   }
}
```

## URI Request Parameters
<a name="API_UpdateMediaStorageConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_UpdateMediaStorageConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelARN](#API_UpdateMediaStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateMediaStorageConfiguration-request-ChannelARN"></a>
The Amazon Resource Name (ARN) of the channel.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

 ** [MediaStorageConfiguration](#API_UpdateMediaStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateMediaStorageConfiguration-request-MediaStorageConfiguration"></a>
A structure that encapsulates, or contains, the media storage configuration properties.  
Type: [MediaStorageConfiguration](API_MediaStorageConfiguration.md) object  
Required: Yes

## Response Syntax
<a name="API_UpdateMediaStorageConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_UpdateMediaStorageConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_UpdateMediaStorageConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NoDataRetentionException **   
The Stream data retention in hours is equal to zero.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_UpdateMediaStorageConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/UpdateMediaStorageConfiguration) 

# UpdateNotificationConfiguration
<a name="API_UpdateNotificationConfiguration"></a>

Updates the notification information for a stream.

## Request Syntax
<a name="API_UpdateNotificationConfiguration_RequestSyntax"></a>

```
POST /updateNotificationConfiguration HTTP/1.1
Content-type: application/json

{
   "NotificationConfiguration": { 
      "DestinationConfig": { 
         "Uri": "string"
      },
      "Status": "string"
   },
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_UpdateNotificationConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_UpdateNotificationConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [NotificationConfiguration](#API_UpdateNotificationConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateNotificationConfiguration-request-NotificationConfiguration"></a>
The structure containing the information required for notifications. If the structure is null, the configuration will be deleted from the stream.  
Type: [NotificationConfiguration](API_NotificationConfiguration.md) object  
Required: No

 ** [StreamARN](#API_UpdateNotificationConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateNotificationConfiguration-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the Kinesis video stream from where you want to update the notification configuration. You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_UpdateNotificationConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateNotificationConfiguration-request-StreamName"></a>
The name of the stream from which to update the notification configuration. You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_UpdateNotificationConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_UpdateNotificationConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_UpdateNotificationConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NoDataRetentionException **   
The Stream data retention in hours is equal to zero.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

## See Also
<a name="API_UpdateNotificationConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/UpdateNotificationConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/UpdateNotificationConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/UpdateNotificationConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/UpdateNotificationConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/UpdateNotificationConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/UpdateNotificationConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/UpdateNotificationConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/UpdateNotificationConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/UpdateNotificationConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/UpdateNotificationConfiguration) 

# UpdateSignalingChannel
<a name="API_UpdateSignalingChannel"></a>

Updates the existing signaling channel. This is an asynchronous operation and takes time to complete. 

If the `MessageTtlSeconds` value is updated (either increased or reduced), it only applies to new messages sent via this channel after it's been updated. Existing messages are still expired as per the previous `MessageTtlSeconds` value.

## Request Syntax
<a name="API_UpdateSignalingChannel_RequestSyntax"></a>

```
POST /updateSignalingChannel HTTP/1.1
Content-type: application/json

{
   "ChannelARN": "string",
   "CurrentVersion": "string",
   "SingleMasterConfiguration": { 
      "MessageTtlSeconds": number
   }
}
```

## URI Request Parameters
<a name="API_UpdateSignalingChannel_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_UpdateSignalingChannel_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelARN](#API_UpdateSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-UpdateSignalingChannel-request-ChannelARN"></a>
The Amazon Resource Name (ARN) of the signaling channel that you want to update.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

 ** [CurrentVersion](#API_UpdateSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-UpdateSignalingChannel-request-CurrentVersion"></a>
The current version of the signaling channel that you want to update.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 64.  
Pattern: `[a-zA-Z0-9]+`   
Required: Yes

 ** [SingleMasterConfiguration](#API_UpdateSignalingChannel_RequestSyntax) **   <a name="KinesisVideo-UpdateSignalingChannel-request-SingleMasterConfiguration"></a>
The structure containing the configuration for the `SINGLE_MASTER` type of the signaling channel that you want to update. This parameter and the channel message's time-to-live are required for channels with the `SINGLE_MASTER` channel type.  
Type: [SingleMasterConfiguration](API_SingleMasterConfiguration.md) object  
Required: No

## Response Syntax
<a name="API_UpdateSignalingChannel_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_UpdateSignalingChannel_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_UpdateSignalingChannel_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

 ** VersionMismatchException **   
The stream version that you specified is not the latest version. To get the latest version, use the [DescribeStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html) API.  
HTTP Status Code: 400

## See Also
<a name="API_UpdateSignalingChannel_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/UpdateSignalingChannel) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/UpdateSignalingChannel) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/UpdateSignalingChannel) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/UpdateSignalingChannel) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/UpdateSignalingChannel) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/UpdateSignalingChannel) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/UpdateSignalingChannel) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/UpdateSignalingChannel) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/UpdateSignalingChannel) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/UpdateSignalingChannel) 

# UpdateStream
<a name="API_UpdateStream"></a>

Updates stream metadata, such as the device name and media type.

You must provide the stream name or the Amazon Resource Name (ARN) of the stream.

To make sure that you have the latest version of the stream before updating it, you can specify the stream version. Kinesis Video Streams assigns a version to each stream. When you update a stream, Kinesis Video Streams assigns a new version number. To get the latest stream version, use the `DescribeStream` API. 

 `UpdateStream` is an asynchronous operation, and takes time to complete.

## Request Syntax
<a name="API_UpdateStream_RequestSyntax"></a>

```
POST /updateStream HTTP/1.1
Content-type: application/json

{
   "CurrentVersion": "string",
   "DeviceName": "string",
   "MediaType": "string",
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_UpdateStream_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_UpdateStream_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [CurrentVersion](#API_UpdateStream_RequestSyntax) **   <a name="KinesisVideo-UpdateStream-request-CurrentVersion"></a>
The version of the stream whose metadata you want to update.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 64.  
Pattern: `[a-zA-Z0-9]+`   
Required: Yes

 ** [DeviceName](#API_UpdateStream_RequestSyntax) **   <a name="KinesisVideo-UpdateStream-request-DeviceName"></a>
The name of the device that is writing to the stream.   
 In the current implementation, Kinesis Video Streams does not use this name. 
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

 ** [MediaType](#API_UpdateStream_RequestSyntax) **   <a name="KinesisVideo-UpdateStream-request-MediaType"></a>
The stream's media type. Use `MediaType` to specify the type of content that the stream contains to the consumers of the stream. For more information about media types, see [Media Types](http://www.iana.org/assignments/media-types/media-types.xhtml). If you choose to specify the `MediaType`, see [Naming Requirements](https://tools.ietf.org/html/rfc6838#section-4.2).  
To play video on the console, you must specify the correct video type. For example, if the video in the stream is H.264, specify `video/h264` as the `MediaType`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `[\w\-\.\+]+/[\w\-\.\+]+(,[\w\-\.\+]+/[\w\-\.\+]+)*`   
Required: No

 ** [StreamARN](#API_UpdateStream_RequestSyntax) **   <a name="KinesisVideo-UpdateStream-request-StreamARN"></a>
The ARN of the stream whose metadata you want to update.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_UpdateStream_RequestSyntax) **   <a name="KinesisVideo-UpdateStream-request-StreamName"></a>
The name of the stream whose metadata you want to update.  
The stream name is an identifier for the stream, and must be unique for each account and region.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_UpdateStream_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_UpdateStream_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_UpdateStream_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

 ** VersionMismatchException **   
The stream version that you specified is not the latest version. To get the latest version, use the [DescribeStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html) API.  
HTTP Status Code: 400

## See Also
<a name="API_UpdateStream_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/UpdateStream) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/UpdateStream) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/UpdateStream) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/UpdateStream) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/UpdateStream) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/UpdateStream) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/UpdateStream) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/UpdateStream) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/UpdateStream) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/UpdateStream) 

# UpdateStreamStorageConfiguration
<a name="API_UpdateStreamStorageConfiguration"></a>

Updates the storage configuration for an existing Kinesis video stream.

This operation allows you to modify the storage tier settings for a stream, enabling you to optimize storage costs and performance based on your access patterns.

 `UpdateStreamStorageConfiguration` is an asynchronous operation.

You must have permissions for the `KinesisVideo:UpdateStreamStorageConfiguration` action.

## Request Syntax
<a name="API_UpdateStreamStorageConfiguration_RequestSyntax"></a>

```
POST /updateStreamStorageConfiguration HTTP/1.1
Content-type: application/json

{
   "CurrentVersion": "string",
   "StreamARN": "string",
   "StreamName": "string",
   "StreamStorageConfiguration": { 
      "DefaultStorageTier": "string"
   }
}
```

## URI Request Parameters
<a name="API_UpdateStreamStorageConfiguration_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_UpdateStreamStorageConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [CurrentVersion](#API_UpdateStreamStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateStreamStorageConfiguration-request-CurrentVersion"></a>
The version of the stream whose storage configuration you want to change. To get the version, call either the `DescribeStream` or the `ListStreams` API.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 64.  
Pattern: `[a-zA-Z0-9]+`   
Required: Yes

 ** [StreamARN](#API_UpdateStreamStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateStreamStorageConfiguration-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream for which you want to update the storage configuration.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_UpdateStreamStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateStreamStorageConfiguration-request-StreamName"></a>
The name of the stream for which you want to update the storage configuration.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

 ** [StreamStorageConfiguration](#API_UpdateStreamStorageConfiguration_RequestSyntax) **   <a name="KinesisVideo-UpdateStreamStorageConfiguration-request-StreamStorageConfiguration"></a>
The new storage configuration for the stream. This includes the default storage tier that determines how stream data is stored and accessed.  
Different storage tiers offer varying levels of performance and cost optimization to match your specific use case requirements.  
Type: [StreamStorageConfiguration](API_StreamStorageConfiguration.md) object  
Required: Yes

## Response Syntax
<a name="API_UpdateStreamStorageConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_UpdateStreamStorageConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_UpdateStreamStorageConfiguration_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 401

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceInUseException **   
When the input `StreamARN` or `ChannelARN` in `CLOUD_STORAGE_MODE` is already mapped to a different Kinesis Video Stream resource, or if the provided input `StreamARN` or `ChannelARN` is not in Active status, try one of the following :   

1. The `DescribeMediaStorageConfiguration` API to determine what the stream given channel is mapped to. 

1. The `DescribeMappedResourceConfiguration` API to determine the channel that the given stream is mapped to. 

1. The `DescribeStream` or `DescribeSignalingChannel` API to determine the status of the resource. 
HTTP Status Code: 400

 ** ResourceNotFoundException **   
Amazon Kinesis Video Streams can't find the stream that you specified.  
HTTP Status Code: 404

 ** VersionMismatchException **   
The stream version that you specified is not the latest version. To get the latest version, use the [DescribeStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html) API.  
HTTP Status Code: 400

## See Also
<a name="API_UpdateStreamStorageConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesisvideo-2017-09-30/UpdateStreamStorageConfiguration) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesisvideo-2017-09-30/UpdateStreamStorageConfiguration) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesisvideo-2017-09-30/UpdateStreamStorageConfiguration) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesisvideo-2017-09-30/UpdateStreamStorageConfiguration) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesisvideo-2017-09-30/UpdateStreamStorageConfiguration) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesisvideo-2017-09-30/UpdateStreamStorageConfiguration) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesisvideo-2017-09-30/UpdateStreamStorageConfiguration) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesisvideo-2017-09-30/UpdateStreamStorageConfiguration) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesisvideo-2017-09-30/UpdateStreamStorageConfiguration) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesisvideo-2017-09-30/UpdateStreamStorageConfiguration) 

# Amazon Kinesis Video Streams Media
<a name="API_Operations_Amazon_Kinesis_Video_Streams_Media"></a>

The following actions are supported by Amazon Kinesis Video Streams Media:
+  [GetMedia](API_dataplane_GetMedia.md) 
+  [PutMedia](API_dataplane_PutMedia.md) 

# GetMedia
<a name="API_dataplane_GetMedia"></a>

 Use this API to retrieve media content from a Kinesis video stream. In the request, you identify the stream name or stream Amazon Resource Name (ARN), and the starting chunk. Kinesis Video Streams then returns a stream of chunks in order by fragment number.

**Note**  
You must first call the `GetDataEndpoint` API to get an endpoint. Then send the `GetMedia` requests to this endpoint using the [--endpoint-url parameter](https://docs.aws.amazon.com/cli/latest/reference/). 

When you put media data (fragments) on a stream, Kinesis Video Streams stores each incoming fragment and related metadata in what is called a "chunk." For more information, see [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html). The `GetMedia` API returns a stream of these chunks starting from the chunk that you specify in the request. 

The `GetMedia` API is designed to operate as a streaming API over a long-running connection. It is not intended for use in a traditional RESTful manner, where a new HTTP connection is established and closed for each fragment. When you invoke the `GetMedia` API, Kinesis Video Streams delivers fragments continuously through a persistent long-running connection using HTTP chunked transfer encoding.

The following limits apply when using the `GetMedia` API:
+ A client can call `GetMedia` up to five times per second per stream. 
+ Kinesis Video Streams sends media data at a rate of up to 25 megabytes per second (or 200 megabits per second) during a `GetMedia` session. 
**Note**  
Use `GetMedia` as a streaming long-running connection to retrieve multiple fragments in a single persistent connection. Don't use the `GetMedia` API in a traditional RESTful manner where you establish and close a new HTTP connection for each fragment. If you attempt more than three concurrent `GetMedia` connections, Kinesis Video Streams throttles the latest connections with a `ConnectionLimitExceededException` error.

**Note**  
The `GetMedia` HTTP response status code will be returned immediately, but the reading of the HTTP response payload will timeout after 3 seconds if there are no ingested fragments available for playback.

**Note**  
If an error is thrown after invoking a Kinesis Video Streams media API, in addition to the HTTP status code and the response body, it includes the following pieces of information:   
 `x-amz-ErrorType` HTTP header – contains a more specific error type in addition to what the HTTP status code provides. 
 `x-amz-RequestId` HTTP header – if you want to report an issue to AWS, the support team can better diagnose the problem if given the Request Id.
Both the HTTP status code and the ErrorType header can be utilized to make programmatic decisions about whether errors are retry-able and under what conditions, as well as provide information on what actions the client programmer might need to take in order to successfully try again.  
For more information, see the **Errors** section at the bottom of this topic, as well as [Common Errors](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html). 

## Request Syntax
<a name="API_dataplane_GetMedia_RequestSyntax"></a>

```
POST /getMedia HTTP/1.1
Content-type: application/json

{
   "StartSelector": { 
      "AfterFragmentNumber": "string",
      "ContinuationToken": "string",
      "StartSelectorType": "string",
      "StartTimestamp": number
   },
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_dataplane_GetMedia_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_dataplane_GetMedia_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [StartSelector](#API_dataplane_GetMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_GetMedia-request-StartSelector"></a>
Identifies the starting chunk to get from the specified stream.   
Type: [StartSelector](API_dataplane_StartSelector.md) object  
Required: Yes

 ** [StreamARN](#API_dataplane_GetMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_GetMedia-request-StreamARN"></a>
The ARN of the stream from where you want to get the media content. If you don't specify the `streamARN`, you must specify the `streamName`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_dataplane_GetMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_GetMedia-request-StreamName"></a>
The Kinesis video stream name from where you want to get the media content. If you don't specify the `streamName`, you must specify the `streamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_dataplane_GetMedia_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-Type: ContentType

Payload
```

## Response Elements
<a name="API_dataplane_GetMedia_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The response returns the following HTTP headers.

 ** [ContentType](#API_dataplane_GetMedia_ResponseSyntax) **   <a name="KinesisVideo-dataplane_GetMedia-response-ContentType"></a>
The content type of the requested media.  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `^[a-zA-Z0-9_\.\-]+$` 

The response returns the following as the HTTP body.

 ** [Payload](#API_dataplane_GetMedia_ResponseSyntax) **   <a name="KinesisVideo-dataplane_GetMedia-response-Payload"></a>
 The payload Kinesis Video Streams returns is a sequence of chunks from the specified stream. For more information about the chunks, see [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html). The chunks that Kinesis Video Streams returns in the `GetMedia` call also include the following additional Matroska (MKV) tags:   
+ AWS\$1KINESISVIDEO\$1CONTINUATION\$1TOKEN (UTF-8 string) - In the event your `GetMedia` call terminates, you can use this continuation token in your next request to get the next chunk where the last request terminated.
+ AWS\$1KINESISVIDEO\$1MILLIS\$1BEHIND\$1NOW (UTF-8 string) - Client applications can use this tag value to determine how far behind the chunk returned in the response is from the latest chunk on the stream. 
+ AWS\$1KINESISVIDEO\$1FRAGMENT\$1NUMBER - Fragment number returned in the chunk.
+ AWS\$1KINESISVIDEO\$1SERVER\$1TIMESTAMP - Server timestamp of the fragment.
+ AWS\$1KINESISVIDEO\$1PRODUCER\$1TIMESTAMP - Producer timestamp of the fragment.
The following tags will be present if an error occurs:  
+ AWS\$1KINESISVIDEO\$1ERROR\$1CODE - String description of an error that caused GetMedia to stop.
+ AWS\$1KINESISVIDEO\$1ERROR\$1ID: Integer code of the error.
The error codes are as follows:  
+ 3002 - Error writing to the stream
+ 4000 - Requested fragment is not found
+ 4500 - Access denied for the stream's KMS key
+ 4501 - Stream's KMS key is disabled
+ 4502 - Validation error on the stream's KMS key
+ 4503 - KMS key specified in the stream is unavailable
+ 4504 - Invalid usage of the KMS key specified in the stream
+ 4505 - Invalid state of the KMS key specified in the stream
+ 4506 - Unable to find the KMS key specified in the stream
+ 5000 - Internal error

## Errors
<a name="API_dataplane_GetMedia_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** ConnectionLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client connections.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** InvalidEndpointException **   
Caller used wrong endpoint to write data to a stream. On receiving such an exception, the user must call `GetDataEndpoint` with `APIName` set to `PUT_MEDIA` and use the endpoint from response to invoke the next `PutMedia` call.   
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform an operation on the given stream, or the token has expired.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
Status Code: 404, The stream with the given name does not exist.  
HTTP Status Code: 404

## See Also
<a name="API_dataplane_GetMedia_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-data-2017-09-30/GetMedia) 

# PutMedia
<a name="API_dataplane_PutMedia"></a>

 Use this API to send media data to a Kinesis video stream. 

**Note**  
You must first call the `GetDataEndpoint` API to get an endpoint. Then send the `PutMedia` requests to this endpoint using the [--endpoint-url parameter](https://docs.aws.amazon.com/cli/latest/reference/). 

In the request, you use the HTTP headers to provide parameter information, for example, stream name, timestamp, and whether the timestamp value is absolute or relative to when the producer started recording. You use the request body to send the media data. Kinesis Video Streams supports only the Matroska (MKV) container format for sending media data using this API. 

You have the following options for sending data using this API:
+ Send media data in real time: For example, a security camera can send frames in real time as it generates them. This approach minimizes the latency between the video recording and data sent on the wire. This is referred to as a continuous producer. In this case, a consumer application can read the stream in real time or when needed. 
+ Send media data offline (in batches): For example, a body camera might record video for hours and store it on the device. Later, when you connect the camera to the docking port, the camera can start a `PutMedia` session to send data to a Kinesis video stream. In this scenario, latency is not an issue. 

When using this API, note the following considerations:
+ You must specify either `streamName` or `streamARN`, but not both.
+ To be able to play the media on the console or via HLS, track 1 of each fragment should contain h.264 encoded video, the CodecID in the fragment metadata should be "V\$1MPEG/ISO/AVC", and the fragment metadata should include AVCC formatted h.264 codec private data. Optionally, track 2 of each fragment should contain AAC encoded audio, the CodecID in the fragment metadata should be "A\$1AAC", and the fragment metadata should include AAC codec private data.
+ The `PutMedia` API is designed to operate as a streaming API over a long-running connection. It is not intended for use in a traditional RESTful manner, where a new HTTP connection is established and closed for each fragment. When using the `PutMedia` API, use HTTP chunked transfer encoding to send fragments continuously over a persistent connection.
+ For each fragment received in a `PutMedia` session, Kinesis Video Streams sends one or more acknowledgements. Potential client-side network considerations might cause you to not get all these acknowledgements as they are generated.
**Note**  
Use `PutMedia` as a streaming long-running connection to send multiple fragments in a single persistent connection. If you attempt more than one concurrent `PutMedia` connection, Kinesis Video Streams throttles the latest connections with a `ConnectionLimitExceededException` error.

The following limits apply when using the `PutMedia` API:
+ A client can call `PutMedia` up to five times per second per stream.
+ A client can send up to five fragments per second per stream.
+ Kinesis Video Streams reads media data at a rate of up to 12.5 MB/second, or 100 Mbps during a `PutMedia` session. 

Note the following constraints. In these cases, Kinesis Video Streams sends the Error acknowledgement in the response. 
+ Fragments that have time codes spanning longer than the maximum allowed limit and that contain more than 50 MB of data are not allowed. 
+ Fragments containing more than three tracks are not allowed. Each frame in every fragment must have the same track number as one of the tracks defined in the fragment header. Additionally, every fragment must contain at least one frame for each track defined in the fragment header.
+ Each fragment must contain at least one frame for each track defined in the fragment metadata.
+ The earliest frame timestamp in a fragment must be after the latest frame timestamp in the previous fragment.
+ An MKV stream containing more than one MKV segment or containing disallowed MKV elements (like `track*`) also results in the Error acknowledgement. 

Kinesis Video Streams stores each incoming fragment and related metadata in what is called a "chunk." The fragment metadata includes the following: 
+ The MKV headers provided at the start of the `PutMedia` request
+ The following Kinesis Video Streams-specific metadata for the fragment:
  +  `server_timestamp` - Timestamp when Kinesis Video Streams started receiving the fragment. 
  +  `producer_timestamp` - Timestamp, when the producer started recording the fragment. Kinesis Video Streams uses three pieces of information received in the request to calculate this value. 
    + The fragment timecode value received in the request body along with the fragment.
    + Two request headers: `producerStartTimestamp` (when the producer started recording) and `fragmentTimeCodeType` (whether the fragment timecode in the payload is absolute or relative).

    Kinesis Video Streams then computes the `producer_timestamp` for the fragment as follows:

     If `fragmentTimeCodeType` is relative, then 

     `producer_timestamp` = `producerStartTimeStamp` \$1 fragment timecode 

    If `fragmentTimeCodeType` is absolute, then 

     `producer_timestamp` = fragment timecode (converted to milliseconds)
  + Unique fragment number assigned by Kinesis Video Streams.

  

**Note**  
 When you make the `GetMedia` request, Kinesis Video Streams returns a stream of these chunks. The client can process the metadata as needed. 

**Note**  
This operation is only available for the AWS SDK for Java. It is not supported in AWS SDKs for other languages.

**Note**  
Kinesis Video Streams does not parse and validate the codec private data during ingestion and archival via the PutMedia API. KVS extracts and validates the necessary information from the codec private data for MPEG-TS and MP4 fragment packaging when consuming the stream via the HLS APIs.

**Note**  
If an error is thrown after invoking a Kinesis Video Streams media API, in addition to the HTTP status code and the response body, it includes the following pieces of information:   
 `x-amz-ErrorType` HTTP header – contains a more specific error type in addition to what the HTTP status code provides. 
 `x-amz-RequestId` HTTP header – if you want to report an issue to AWS, the support team can better diagnose the problem if given the Request Id.
Both the HTTP status code and the ErrorType header can be utilized to make programmatic decisions about whether errors are retry-able and under what conditions, as well as provide information on what actions the client programmer might need to take in order to successfully try again.  
For more information, see the **Errors** section at the bottom of this topic, as well as [Common Errors](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html). 

## Request Syntax
<a name="API_dataplane_PutMedia_RequestSyntax"></a>

```
POST /putMedia HTTP/1.1
x-amzn-stream-name: StreamName
x-amzn-stream-arn: StreamARN
x-amzn-fragment-timecode-type: FragmentTimecodeType
x-amzn-producer-start-timestamp: ProducerStartTimestamp

Payload
```

## URI Request Parameters
<a name="API_dataplane_PutMedia_RequestParameters"></a>

The request uses the following URI parameters.

 ** [FragmentTimecodeType](#API_dataplane_PutMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-request-FragmentTimecodeType"></a>
You pass this value as the `x-amzn-fragment-timecode-type` HTTP header.  
Indicates whether timecodes in the fragments (payload, HTTP request body) are absolute or relative to `producerStartTimestamp`. Kinesis Video Streams uses this information to compute the `producer_timestamp` for the fragment received in the request, as described in the API overview.  
Valid Values: `ABSOLUTE | RELATIVE`   
Required: Yes

 ** [ProducerStartTimestamp](#API_dataplane_PutMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-request-ProducerStartTimestamp"></a>
You pass this value as the `x-amzn-producer-start-timestamp` HTTP header.  
This is the producer timestamp at which the producer started recording the media (not the timestamp of the specific fragments in the request).

 ** [StreamARN](#API_dataplane_PutMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-request-StreamARN"></a>
You pass this value as the `x-amzn-stream-arn` HTTP header.  
Amazon Resource Name (ARN) of the Kinesis video stream where you want to write the media content. If you don't specify the `streamARN`, you must specify the `streamName`.  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+` 

 ** [StreamName](#API_dataplane_PutMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-request-StreamName"></a>
You pass this value as the `x-amzn-stream-name` HTTP header.  
Name of the Kinesis video stream where you want to write the media content. If you don't specify the `streamName`, you must specify the `streamARN`.  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+` 

## Request Body
<a name="API_dataplane_PutMedia_RequestBody"></a>

The request accepts the following binary data.

 ** [Payload](#API_dataplane_PutMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-request-Payload"></a>
 The media content to write to the Kinesis video stream. In the current implementation, Kinesis Video Streams supports only the Matroska (MKV) container format with a single MKV segment. A segment can contain one or more clusters.   
Each MKV cluster maps to a Kinesis video stream fragment. Whatever cluster duration you choose becomes the fragment duration. 

## Response Syntax
<a name="API_dataplane_PutMedia_ResponseSyntax"></a>

```
HTTP/1.1 200

Payload
```

## Response Elements
<a name="API_dataplane_PutMedia_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The response returns the following as the HTTP body.

 ** [Payload](#API_dataplane_PutMedia_ResponseSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-response-Payload"></a>
 After Kinesis Video Streams successfully receives a `PutMedia` request, the service validates the request headers. The service then starts reading the payload and first sends an HTTP 200 response.   
The service then returns a stream containing a series of JSON objects (`Acknowledgement` objects) separated by newlines. The acknowledgements are received on the same connection on which the media data is sent. There can be many acknowledgements for a `PutMedia` request. Each `Acknowledgement` consists of the following key-value pairs:  
+  `AckEventType` - Event type the acknowledgement represents. 
  +  **Buffering:** Kinesis Video Streams has started receiving the fragment. Kinesis Video Streams sends the first Buffering acknowledgement when the first byte of fragment data is received. 
  +  **Received:** Kinesis Video Streams received the entire fragment. If you did not configure the stream to persist the data, the producer can stop buffering the fragment upon receiving this acknowledgement.
  +  **Persisted:** Kinesis Video Streams has persisted the fragment (for example, to Amazon S3). You get this acknowledgement if you configured the stream to persist the data. After you receive this acknowledgement, the producer can stop buffering the fragment.
  +  **Error:** Kinesis Video Streams ran into an error while processing the fragment. You can review the error code and determine the next course of action. 
  +  **Idle:** The `PutMedia` session is in-progress. However, Kinesis Video Streams is currently not receiving data. Kinesis Video Streams sends this acknowledgement periodically for up to 30 seconds after the last received data. If no data is received within the 30 seconds, Kinesis Video Streams closes the request. 
**Note**  
 This acknowledgement can help a producer determine if the `PutMedia` connection is alive, even if it is not sending any data. 
+  `FragmentTimecode` - Fragment timecode for which acknowledgement is sent. 

  The element can be missing if the `AckEventType` is **Idle**. 
+  `FragmentNumber` - Kinesis Video Streams-generated fragment number for which the acknowledgement is sent.
+  `ErrorId` and `ErrorCode` - If the `AckEventType` is `Error`, this field provides corresponding error code. The following is the list of error IDs and their corresponding error codes and error messages:
  + 4000 - STREAM\$1READ\$1ERROR - Error reading the data stream.
  + 4001 - MAX\$1FRAGMENT\$1SIZE\$1REACHED - Fragment size is greater than maximum limit, 50 MB, allowed.
  + 4002 - MAX\$1FRAGMENT\$1DURATION\$1REACHED - Fragment duration is greater than maximum allowed limit.
  + 4003 - MAX\$1CONNECTION\$1DURATION\$1REACHED - Connection duration is greater than maximum allowed threshold.
  + 4004 - FRAGMENT\$1TIMECODE\$1LESSER\$1THAN\$1PREVIOUS - Fragment timecode is less than the timecode previous time code (within a `PutMedia` call, you cannot send fragments out of order).
  + 4005 - MORE\$1THAN\$1ALLOWED\$1TRACKS\$1FOUND - More than one track is found in MKV. (deprecated)
  + 4006 - INVALID\$1MKV\$1DATA - Failed to parse the input stream as valid MKV format.
  + 4007 - INVALID\$1PRODUCER\$1TIMESTAMP - Invalid producer timestamp.
  + 4008 - STREAM\$1NOT\$1ACTIVE - Stream no longer exists (deleted).
  + 4009 - FRAGMENT\$1METADATA\$1LIMIT\$1REACHED - Fragment metadata limit reached. See the [Limits](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html) section of the developer guide.
  + 4010 - TRACK\$1NUMBER\$1MISMATCH - The track number in an MKV frame did not match the tracks in the MKV header.
  + 4011 - FRAMES\$1MISSING\$1FOR\$1TRACK - The fragment did not contain any frames for at least one of the tracks in the MKV header.
  + 4012 - INVALID\$1FRAGMENT\$1METADATA - Fragment metadata name cannot begin with the string ` AWS_`.
  + 4500 - KMS\$1KEY\$1ACCESS\$1DENIED - Access to the stream's specified KMS key is denied.
  + 4501 - KMS\$1KEY\$1DISABLED - The stream's specified KMS key is disabled.
  + 4502 - KMS\$1KEY\$1VALIDATION\$1ERROR - The stream's specified KMS key failed validation.
  + 4503 - KMS\$1KEY\$1UNAVAILABLE - The stream's specified KMS key is unavailable.
  + 4504 - KMS\$1KEY\$1INVALID\$1USAGE - Invalid usage of the stream's specified KMS key.
  + 4505 - KMS\$1KEY\$1INVALID\$1STATE - The stream's specified KMS key is in an invalid state.
  + 4506 - KMS\$1KEY\$1NOT\$1FOUND - The stream's specified KMS key is not found.
  + 5000 - INTERNAL\$1ERROR - Internal service error.
  + 5001 - ARCHIVAL\$1ERROR - Kinesis Video Streams failed to persist fragments to the data store.
The producer, while sending the payload for a long running `PutMedia` request, should read the response for acknowledgements. A producer might receive chunks of acknowledgements at the same time, due to buffering on an intermediate proxy server. A producer that wants to receive timely acknowledgements can send fewer fragments in each `PutMedia` request. 

## Errors
<a name="API_dataplane_PutMedia_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** ConnectionLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client connections.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** InvalidEndpointException **   
Caller used wrong endpoint to write data to a stream. On receiving such an exception, the user must call `GetDataEndpoint` with `APIName` set to `PUT_MEDIA` and use the endpoint from response to invoke the next `PutMedia` call.   
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform an operation on the given stream, or the token has expired.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
Status Code: 404, The stream with the given name does not exist.  
HTTP Status Code: 404

## Examples
<a name="API_dataplane_PutMedia_Examples"></a>

### Acknowledgement Format
<a name="API_dataplane_PutMedia_Example_1"></a>

The format of the acknowledgement is as follows:

```
{
       Acknowledgement : {
          "EventType": enum
          "FragmentTimecode": Long,
          "FragmentNumber": Long,
          "ErrorId" : String       
      }
}
```

## See Also
<a name="API_dataplane_PutMedia_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-data-2017-09-30/PutMedia) 

# Amazon Kinesis Video Streams Archived Media
<a name="API_Operations_Amazon_Kinesis_Video_Streams_Archived_Media"></a>

The following actions are supported by Amazon Kinesis Video Streams Archived Media:
+  [GetClip](API_reader_GetClip.md) 
+  [GetDASHStreamingSessionURL](API_reader_GetDASHStreamingSessionURL.md) 
+  [GetHLSStreamingSessionURL](API_reader_GetHLSStreamingSessionURL.md) 
+  [GetImages](API_reader_GetImages.md) 
+  [GetMediaForFragmentList](API_reader_GetMediaForFragmentList.md) 
+  [ListFragments](API_reader_ListFragments.md) 

# GetClip
<a name="API_reader_GetClip"></a>

Downloads an MP4 file (clip) containing the archived, on-demand media from the specified video stream over the specified time range. 

Both the StreamName and the StreamARN parameters are optional, but you must specify either the StreamName or the StreamARN when invoking this API operation. 

**Note**  
You must first call the `GetDataEndpoint` API to get an endpoint. Then send the `GetClip` requests to this endpoint using the [--endpoint-url parameter](https://docs.aws.amazon.com/cli/latest/reference/). 

An Amazon Kinesis video stream has the following requirements for providing data through MP4:
+  [Video playback track requirements](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/video-playback-requirements.html).
+ Data retention must be greater than 0.
+ The video track of each fragment must contain codec private data in the Advanced Video Coding (AVC) for H.264 format and HEVC for H.265 format. For more information, see [MPEG-4 specification ISO/IEC 14496-15](https://www.iso.org/standard/55980.html). For information about adapting stream data to a given format, see [NAL Adaptation Flags](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-reference-nal.html).
+ The audio track (if present) of each fragment must contain codec private data in the AAC format ([AAC specification ISO/IEC 13818-7](https://www.iso.org/standard/43345.html)) or the [MS Wave format](https://www.mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html).

You can monitor the amount of outgoing data by monitoring the `GetClip.OutgoingBytes` Amazon CloudWatch metric. For information about using CloudWatch to monitor Kinesis Video Streams, see [Monitoring Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/monitoring.html). For pricing information, see [Amazon Kinesis Video Streams Pricing](https://aws.amazon.com/kinesis/video-streams/pricing/) and [AWS Pricing](https://aws.amazon.com/pricing/). Charges for outgoing AWS data apply.

**Important**  
The codec private data (CPD) contained in each fragment contains codec-specific initialization information, such as frame rate, resolution, and encoding profile, which are necessary to properly decode the fragment. CPD changes aren't supported between the target fragments of the resulting clip. The CPD must remain consistent through the queried media, otherwise an error will be returned.

**Important**  
Track changes aren't supported. Tracks must remain consistent throughout the queried media. An error is returned if the fragments in the stream change from having only video to having both audio and video, or if an AAC audio track is changed to an A-Law audio track.

## Request Syntax
<a name="API_reader_GetClip_RequestSyntax"></a>

```
POST /getClip HTTP/1.1
Content-type: application/json

{
   "ClipFragmentSelector": { 
      "FragmentSelectorType": "string",
      "TimestampRange": { 
         "EndTimestamp": number,
         "StartTimestamp": number
      }
   },
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_reader_GetClip_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_reader_GetClip_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ClipFragmentSelector](#API_reader_GetClip_RequestSyntax) **   <a name="KinesisVideo-reader_GetClip-request-ClipFragmentSelector"></a>
The time range of the requested clip and the source of the timestamps.  
Type: [ClipFragmentSelector](API_reader_ClipFragmentSelector.md) object  
Required: Yes

 ** [StreamARN](#API_reader_GetClip_RequestSyntax) **   <a name="KinesisVideo-reader_GetClip-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream for which to retrieve the media clip.   
You must specify either the StreamName or the StreamARN.   
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_reader_GetClip_RequestSyntax) **   <a name="KinesisVideo-reader_GetClip-request-StreamName"></a>
The name of the stream for which to retrieve the media clip.   
You must specify either the StreamName or the StreamARN.   
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_reader_GetClip_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-Type: ContentType

Payload
```

## Response Elements
<a name="API_reader_GetClip_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The response returns the following HTTP headers.

 ** [ContentType](#API_reader_GetClip_ResponseSyntax) **   <a name="KinesisVideo-reader_GetClip-response-ContentType"></a>
The content type of the media in the requested clip.  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `^[a-zA-Z0-9_\.\-]+$` 

The response returns the following as the HTTP body.

 ** [Payload](#API_reader_GetClip_ResponseSyntax) **   <a name="KinesisVideo-reader_GetClip-response-Payload"></a>
Traditional MP4 file that contains the media clip from the specified video stream. The output will contain the first 100 MB or the first 200 fragments from the specified start timestamp. For more information, see [Kinesis Video Streams quotas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html). 

## Errors
<a name="API_reader_GetClip_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded a limit. Try making the call later. For information about limits, see [Kinesis Video Streams quotas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html).  
HTTP Status Code: 400

 ** InvalidArgumentException **   
A specified parameter exceeds its restrictions, is not supported, or can't be used.  
HTTP Status Code: 400

 ** InvalidCodecPrivateDataException **   
The codec private data in at least one of the tracks of the video stream is not valid for this operation.  
HTTP Status Code: 400

 ** InvalidMediaFrameException **   
One or more frames in the requested clip could not be parsed based on the specified codec.  
HTTP Status Code: 400

 ** MissingCodecPrivateDataException **   
No codec private data was found in at least one of tracks of the video stream.  
HTTP Status Code: 400

 ** NoDataRetentionException **   
 `GetImages` was requested for a stream that does not retain data (that is, has a `DataRetentionInHours` of 0).   
HTTP Status Code: 400

 ** NotAuthorizedException **   
Status Code: 403, The caller is not authorized to perform an operation on the given stream, or the token has expired.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
 `GetImages` will throw this error when Kinesis Video Streams can't find the stream that you specified.  
 `GetHLSStreamingSessionURL` and `GetDASHStreamingSessionURL` throw this error if a session with a `PlaybackMode` of `ON_DEMAND` or `LIVE_REPLAY` is requested for a stream that has no fragments within the requested time range, or if a session with a `PlaybackMode` of `LIVE` is requested for a stream that has no fragments within the last 30 seconds.  
HTTP Status Code: 404

 ** UnsupportedStreamMediaTypeException **   
The type of the media (for example, h.264 or h.265 video or AAC or G.711 audio) could not be determined from the codec IDs of the tracks in the first fragment for a playback session. The codec ID for track 1 should be `V_MPEG/ISO/AVC` and, optionally, the codec ID for track 2 should be `A_AAC`.  
HTTP Status Code: 400

## See Also
<a name="API_reader_GetClip_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-reader-data-2017-09-30/GetClip) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-reader-data-2017-09-30/GetClip) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-reader-data-2017-09-30/GetClip) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-reader-data-2017-09-30/GetClip) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-reader-data-2017-09-30/GetClip) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-reader-data-2017-09-30/GetClip) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-reader-data-2017-09-30/GetClip) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-reader-data-2017-09-30/GetClip) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-reader-data-2017-09-30/GetClip) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-reader-data-2017-09-30/GetClip) 

# GetDASHStreamingSessionURL
<a name="API_reader_GetDASHStreamingSessionURL"></a>

Retrieves an MPEG Dynamic Adaptive Streaming over HTTP (DASH) URL for the stream. You can then open the URL in a media player to view the stream contents.

Both the `StreamName` and the `StreamARN` parameters are optional, but you must specify either the `StreamName` or the `StreamARN` when invoking this API operation.

An Amazon Kinesis video stream has the following requirements for providing data through MPEG-DASH:
+  [Video playback track requirements](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/video-playback-requirements.html).
+ Data retention must be greater than 0.
+ The video track of each fragment must contain codec private data in the Advanced Video Coding (AVC) for H.264 format and HEVC for H.265 format. For more information, see [MPEG-4 specification ISO/IEC 14496-15](https://www.iso.org/standard/55980.html). For information about adapting stream data to a given format, see [NAL Adaptation Flags](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-reference-nal.html).
+ The audio track (if present) of each fragment must contain codec private data in the AAC format ([AAC specification ISO/IEC 13818-7](https://www.iso.org/standard/43345.html)) or the [MS Wave format](https://www.mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html).

The following procedure shows how to use MPEG-DASH with Kinesis Video Streams:

1. Call the `GetDataEndpoint` API to get an endpoint. Then send the `GetDASHStreamingSessionURL` requests to this endpoint using the [--endpoint-url parameter](https://docs.aws.amazon.com/cli/latest/reference/). 

1. Retrieve the MPEG-DASH URL using `GetDASHStreamingSessionURL`. Kinesis Video Streams creates an MPEG-DASH streaming session to be used for accessing content in a stream using the MPEG-DASH protocol. `GetDASHStreamingSessionURL` returns an authenticated URL (that includes an encrypted session token) for the session's MPEG-DASH *manifest* (the root resource needed for streaming with MPEG-DASH).
**Note**  
Don't share or store this token where an unauthorized entity can access it. The token provides access to the content of the stream. Safeguard the token with the same measures that you use with your AWS credentials.

   The media that is made available through the manifest consists only of the requested stream, time range, and format. No other media data (such as frames outside the requested window or alternate bitrates) is made available.

1. Provide the URL (containing the encrypted session token) for the MPEG-DASH manifest to a media player that supports the MPEG-DASH protocol. Kinesis Video Streams makes the initialization fragment and media fragments available through the manifest URL. The initialization fragment contains the codec private data for the stream, and other data needed to set up the video or audio decoder and renderer. The media fragments contain encoded video frames or encoded audio samples.

1. The media player receives the authenticated URL and requests stream metadata and media data normally. When the media player requests data, it calls the following actions:
   +  **GetDASHManifest:** Retrieves an MPEG DASH manifest, which contains the metadata for the media that you want to playback.
   +  **GetMP4InitFragment:** Retrieves the MP4 initialization fragment. The media player typically loads the initialization fragment before loading any media fragments. This fragment contains the "`fytp`" and "`moov`" MP4 atoms, and the child atoms that are needed to initialize the media player decoder.

     The initialization fragment does not correspond to a fragment in a Kinesis video stream. It contains only the codec private data for the stream and respective track, which the media player needs to decode the media frames.
   +  **GetMP4MediaFragment:** Retrieves MP4 media fragments. These fragments contain the "`moof`" and "`mdat`" MP4 atoms and their child atoms, containing the encoded fragment's media frames and their timestamps. 
**Important**  
The codec private data (CPD) contained in each fragment contains codec-specific initialization information, such as frame rate, resolution, and encoding profile, which are necessary to properly decode the fragment. CPD changes aren't supported during a streaming session. The CPD must remain consistent through the queried media.
**Important**  
Track changes aren't supported. Tracks must remain consistent throughout the queried media. Streaming will fail if the fragments in the stream change from having only video to having both audio and video, or if an AAC audio track is changed to an A-Law audio track.

     Data retrieved with this action is billable. See [Pricing](https://aws.amazon.com/kinesis/video-streams/pricing/) for details.

**Note**  
For restrictions that apply to MPEG-DASH sessions, see [Kinesis Video Streams quotas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html).

You can monitor the amount of data that the media player consumes by monitoring the `GetMP4MediaFragment.OutgoingBytes` Amazon CloudWatch metric. For information about using CloudWatch to monitor Kinesis Video Streams, see [Monitoring Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/monitoring.html). For pricing information, see [Amazon Kinesis Video Streams Pricing](https://aws.amazon.com/kinesis/video-streams/pricing/) and [AWS Pricing](https://aws.amazon.com/pricing/). Charges for both HLS sessions and outgoing AWS data apply.

For more information about HLS, see [HTTP Live Streaming](https://developer.apple.com/streaming/) on the [Apple Developer site](https://developer.apple.com).

**Important**  
If an error is thrown after invoking a Kinesis Video Streams archived media API, in addition to the HTTP status code and the response body, it includes the following pieces of information:   
 `x-amz-ErrorType` HTTP header – contains a more specific error type in addition to what the HTTP status code provides. 
 `x-amz-RequestId` HTTP header – if you want to report an issue to AWS the support team can better diagnose the problem if given the Request Id.
Both the HTTP status code and the ErrorType header can be utilized to make programmatic decisions about whether errors are retry-able and under what conditions, as well as provide information on what actions the client programmer might need to take in order to successfully try again.  
For more information, see the **Errors** section at the bottom of this topic, as well as [Common Errors](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html). 

## Request Syntax
<a name="API_reader_GetDASHStreamingSessionURL_RequestSyntax"></a>

```
POST /getDASHStreamingSessionURL HTTP/1.1
Content-type: application/json

{
   "DASHFragmentSelector": { 
      "FragmentSelectorType": "string",
      "TimestampRange": { 
         "EndTimestamp": number,
         "StartTimestamp": number
      }
   },
   "DisplayFragmentNumber": "string",
   "DisplayFragmentTimestamp": "string",
   "Expires": number,
   "MaxManifestFragmentResults": number,
   "PlaybackMode": "string",
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_reader_GetDASHStreamingSessionURL_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_reader_GetDASHStreamingSessionURL_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [DASHFragmentSelector](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-DASHFragmentSelector"></a>
The time range of the requested fragment and the source of the timestamps.  
This parameter is required if `PlaybackMode` is `ON_DEMAND` or `LIVE_REPLAY`. This parameter is optional if PlaybackMode is`` `LIVE`. If `PlaybackMode` is `LIVE`, the `FragmentSelectorType` can be set, but the `TimestampRange` should not be set. If `PlaybackMode` is `ON_DEMAND` or `LIVE_REPLAY`, both `FragmentSelectorType` and `TimestampRange` must be set.  
Type: [DASHFragmentSelector](API_reader_DASHFragmentSelector.md) object  
Required: No

 ** [DisplayFragmentNumber](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-DisplayFragmentNumber"></a>
Fragments are identified in the manifest file based on their sequence number in the session. If DisplayFragmentNumber is set to `ALWAYS`, the Kinesis Video Streams fragment number is added to each S element in the manifest file with the attribute name “kvs:fn”. These fragment numbers can be used for logging or for use with other APIs (e.g. `GetMedia` and `GetMediaForFragmentList`). A custom MPEG-DASH media player is necessary to leverage these this custom attribute.  
The default value is `NEVER`.  
Type: String  
Valid Values: `ALWAYS | NEVER`   
Required: No

 ** [DisplayFragmentTimestamp](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-DisplayFragmentTimestamp"></a>
Per the MPEG-DASH specification, the wall-clock time of fragments in the manifest file can be derived using attributes in the manifest itself. However, typically, MPEG-DASH compatible media players do not properly handle gaps in the media timeline. Kinesis Video Streams adjusts the media timeline in the manifest file to enable playback of media with discontinuities. Therefore, the wall-clock time derived from the manifest file may be inaccurate. If DisplayFragmentTimestamp is set to `ALWAYS`, the accurate fragment timestamp is added to each S element in the manifest file with the attribute name “kvs:ts”. A custom MPEG-DASH media player is necessary to leverage this custom attribute.  
The default value is `NEVER`. When [DASHFragmentSelector](API_reader_DASHFragmentSelector.md) is `SERVER_TIMESTAMP`, the timestamps will be the server start timestamps. Similarly, when [DASHFragmentSelector](API_reader_DASHFragmentSelector.md) is `PRODUCER_TIMESTAMP`, the timestamps will be the producer start timestamps.   
Type: String  
Valid Values: `ALWAYS | NEVER`   
Required: No

 ** [Expires](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-Expires"></a>
The time in seconds until the requested session expires. This value can be between 300 (5 minutes) and 43200 (12 hours).  
When a session expires, no new calls to `GetDashManifest`, `GetMP4InitFragment`, or `GetMP4MediaFragment` can be made for that session.  
The default is 300 (5 minutes).  
Type: Integer  
Valid Range: Minimum value of 300. Maximum value of 43200.  
Required: No

 ** [MaxManifestFragmentResults](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-MaxManifestFragmentResults"></a>
The maximum number of fragments that are returned in the MPEG-DASH manifest.  
When the `PlaybackMode` is `LIVE`, the most recent fragments are returned up to this value. When the `PlaybackMode` is `ON_DEMAND`, the oldest fragments are returned, up to this maximum number.  
When there are a higher number of fragments available in a live MPEG-DASH manifest, video players often buffer content before starting playback. Increasing the buffer size increases the playback latency, but it decreases the likelihood that rebuffering will occur during playback. We recommend that a live MPEG-DASH manifest have a minimum of 3 fragments and a maximum of 10 fragments.  
The default is 5 fragments if `PlaybackMode` is `LIVE` or `LIVE_REPLAY`, and 1,000 if `PlaybackMode` is `ON_DEMAND`.   
The maximum value of 1,000 fragments corresponds to more than 16 minutes of video on streams with 1-second fragments, and more than 2 1/2 hours of video on streams with 10-second fragments.  
Type: Long  
Valid Range: Minimum value of 1. Maximum value of 5000.  
Required: No

 ** [PlaybackMode](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-PlaybackMode"></a>
Whether to retrieve live, live replay, or archived, on-demand data.  
Features of the three types of sessions include the following:  
+  ** `LIVE` **: For sessions of this type, the MPEG-DASH manifest is continually updated with the latest fragments as they become available. We recommend that the media player retrieve a new manifest on a one-second interval. When this type of session is played in a media player, the user interface typically displays a "live" notification, with no scrubber control for choosing the position in the playback window to display.
**Note**  
In `LIVE` mode, the newest available fragments are included in an MPEG-DASH manifest, even if there is a gap between fragments (that is, if a fragment is missing). A gap like this might cause a media player to halt or cause a jump in playback. In this mode, fragments are not added to the MPEG-DASH manifest if they are older than the newest fragment in the playlist. If the missing fragment becomes available after a subsequent fragment is added to the manifest, the older fragment is not added, and the gap is not filled.
+  ** `LIVE_REPLAY` **: For sessions of this type, the MPEG-DASH manifest is updated similarly to how it is updated for `LIVE` mode except that it starts by including fragments from a given start time. Instead of fragments being added as they are ingested, fragments are added as the duration of the next fragment elapses. For example, if the fragments in the session are two seconds long, then a new fragment is added to the manifest every two seconds. This mode is useful to be able to start playback from when an event is detected and continue live streaming media that has not yet been ingested as of the time of the session creation. This mode is also useful to stream previously archived media without being limited by the 1,000 fragment limit in the `ON_DEMAND` mode. 
+  ** `ON_DEMAND` **: For sessions of this type, the MPEG-DASH manifest contains all the fragments for the session, up to the number that is specified in `MaxManifestFragmentResults`. The manifest must be retrieved only once for each session. When this type of session is played in a media player, the user interface typically displays a scrubber control for choosing the position in the playback window to display.
In all playback modes, if `FragmentSelectorType` is `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the same start timestamp, the fragment that has the larger fragment number (that is, the newer fragment) is included in the MPEG-DASH manifest. The other fragments are not included. Fragments that have different timestamps but have overlapping durations are still included in the MPEG-DASH manifest. This can lead to unexpected behavior in the media player.  
The default is `LIVE`.  
Type: String  
Valid Values: `LIVE | LIVE_REPLAY | ON_DEMAND`   
Required: No

 ** [StreamARN](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream for which to retrieve the MPEG-DASH manifest URL.  
You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-StreamName"></a>
The name of the stream for which to retrieve the MPEG-DASH manifest URL.  
You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_reader_GetDASHStreamingSessionURL_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "DASHStreamingSessionURL": "string"
}
```

## Response Elements
<a name="API_reader_GetDASHStreamingSessionURL_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [DASHStreamingSessionURL](#API_reader_GetDASHStreamingSessionURL_ResponseSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-response-DASHStreamingSessionURL"></a>
The URL (containing the session token) that a media player can use to retrieve the MPEG-DASH manifest.  
Type: String

## Errors
<a name="API_reader_GetDASHStreamingSessionURL_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded a limit. Try making the call later. For information about limits, see [Kinesis Video Streams quotas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html).  
HTTP Status Code: 400

 ** InvalidArgumentException **   
A specified parameter exceeds its restrictions, is not supported, or can't be used.  
HTTP Status Code: 400

 ** InvalidCodecPrivateDataException **   
The codec private data in at least one of the tracks of the video stream is not valid for this operation.  
HTTP Status Code: 400

 ** MissingCodecPrivateDataException **   
No codec private data was found in at least one of tracks of the video stream.  
HTTP Status Code: 400

 ** NoDataRetentionException **   
 `GetImages` was requested for a stream that does not retain data (that is, has a `DataRetentionInHours` of 0).   
HTTP Status Code: 400

 ** NotAuthorizedException **   
Status Code: 403, The caller is not authorized to perform an operation on the given stream, or the token has expired.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
 `GetImages` will throw this error when Kinesis Video Streams can't find the stream that you specified.  
 `GetHLSStreamingSessionURL` and `GetDASHStreamingSessionURL` throw this error if a session with a `PlaybackMode` of `ON_DEMAND` or `LIVE_REPLAY` is requested for a stream that has no fragments within the requested time range, or if a session with a `PlaybackMode` of `LIVE` is requested for a stream that has no fragments within the last 30 seconds.  
HTTP Status Code: 404

 ** UnsupportedStreamMediaTypeException **   
The type of the media (for example, h.264 or h.265 video or AAC or G.711 audio) could not be determined from the codec IDs of the tracks in the first fragment for a playback session. The codec ID for track 1 should be `V_MPEG/ISO/AVC` and, optionally, the codec ID for track 2 should be `A_AAC`.  
HTTP Status Code: 400

## See Also
<a name="API_reader_GetDASHStreamingSessionURL_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 

# GetHLSStreamingSessionURL
<a name="API_reader_GetHLSStreamingSessionURL"></a>

Retrieves an HTTP Live Streaming (HLS) URL for the stream. You can then open the URL in a browser or media player to view the stream contents.

Both the `StreamName` and the `StreamARN` parameters are optional, but you must specify either the `StreamName` or the `StreamARN` when invoking this API operation.

An Amazon Kinesis video stream has the following requirements for providing data through HLS:
+  [Video playback track requirements](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/video-playback-requirements.html).
+ Data retention must be greater than 0.
+ The video track of each fragment must contain codec private data in the Advanced Video Coding (AVC) for H.264 format or HEVC for H.265 format ([MPEG-4 specification ISO/IEC 14496-15](https://www.iso.org/standard/55980.html)). For information about adapting stream data to a given format, see [NAL Adaptation Flags](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-reference-nal.html).
+ The audio track (if present) of each fragment must contain codec private data in the AAC format ([AAC specification ISO/IEC 13818-7](https://www.iso.org/standard/43345.html)).

Kinesis Video Streams HLS sessions contain fragments in the fragmented MPEG-4 form (also called fMP4 or CMAF) or the MPEG-2 form (also called TS chunks, which the HLS specification also supports). For more information about HLS fragment types, see the [HLS specification](https://tools.ietf.org/html/draft-pantos-http-live-streaming-23).

The following procedure shows how to use HLS with Kinesis Video Streams:

1. Call the `GetDataEndpoint` API to get an endpoint. Then send the `GetHLSStreamingSessionURL` requests to this endpoint using the [--endpoint-url parameter](https://docs.aws.amazon.com/cli/latest/reference/). 

1. Retrieve the HLS URL using `GetHLSStreamingSessionURL`. Kinesis Video Streams creates an HLS streaming session to be used for accessing content in a stream using the HLS protocol. `GetHLSStreamingSessionURL` returns an authenticated URL (that includes an encrypted session token) for the session's HLS *master playlist* (the root resource needed for streaming with HLS).
**Note**  
Don't share or store this token where an unauthorized entity could access it. The token provides access to the content of the stream. Safeguard the token with the same measures that you would use with your AWS credentials.

   The media that is made available through the playlist consists only of the requested stream, time range, and format. No other media data (such as frames outside the requested window or alternate bitrates) is made available.

1. Provide the URL (containing the encrypted session token) for the HLS master playlist to a media player that supports the HLS protocol. Kinesis Video Streams makes the HLS media playlist, initialization fragment, and media fragments available through the master playlist URL. The initialization fragment contains the codec private data for the stream, and other data needed to set up the video or audio decoder and renderer. The media fragments contain H.264-encoded video frames or AAC-encoded audio samples.

1. The media player receives the authenticated URL and requests stream metadata and media data normally. When the media player requests data, it calls the following actions:
   +  **GetHLSMasterPlaylist:** Retrieves an HLS master playlist, which contains a URL for the `GetHLSMediaPlaylist` action for each track, and additional metadata for the media player, including estimated bitrate and resolution.
   +  **GetHLSMediaPlaylist:** Retrieves an HLS media playlist, which contains a URL to access the MP4 initialization fragment with the `GetMP4InitFragment` action, and URLs to access the MP4 media fragments with the `GetMP4MediaFragment` actions. The HLS media playlist also contains metadata about the stream that the player needs to play it, such as whether the `PlaybackMode` is `LIVE` or `ON_DEMAND`. The HLS media playlist is typically static for sessions with a `PlaybackType` of `ON_DEMAND`. The HLS media playlist is continually updated with new fragments for sessions with a `PlaybackType` of `LIVE`. There is a distinct HLS media playlist for the video track and the audio track (if applicable) that contains MP4 media URLs for the specific track. 
   +  **GetMP4InitFragment:** Retrieves the MP4 initialization fragment. The media player typically loads the initialization fragment before loading any media fragments. This fragment contains the "`fytp`" and "`moov`" MP4 atoms, and the child atoms that are needed to initialize the media player decoder.

     The initialization fragment does not correspond to a fragment in a Kinesis video stream. It contains only the codec private data for the stream and respective track, which the media player needs to decode the media frames.
   +  **GetMP4MediaFragment:** Retrieves MP4 media fragments. These fragments contain the "`moof`" and "`mdat`" MP4 atoms and their child atoms, containing the encoded fragment's media frames and their timestamps. 
**Note**  
The codec private data (CPD) contained in each fragment contains codec-specific initialization information, such as frame rate, resolution, and encoding profile, which are necessary for properly decoding the fragment. For both TS and MP4, CPD changes are supported during a streaming session. Therefore, the fragments in a session can have a different information in the CPD without interrupting playback. For each streaming session, only 500 CPD changes are allowed.
**Important**  
Track changes aren't supported. Tracks must remain consistent throughout the queried media. Streaming will fail if the fragments in the stream change from having only video to having both audio and video, or if an AAC audio track is changed to an A-Law audio track.

     Data retrieved with this action is billable. For information, see [Pricing](https://aws.amazon.com/kinesis/video-streams/pricing/).
   +  **GetTSFragment:** Retrieves MPEG TS fragments containing both initialization and media data for all tracks in the stream.
**Note**  
If the `ContainerFormat` is `MPEG_TS`, this API is used instead of `GetMP4InitFragment` and `GetMP4MediaFragment` to retrieve stream media.

     Data retrieved with this action is billable. For more information, see [Kinesis Video Streams pricing](https://aws.amazon.com/kinesis/video-streams/pricing/).

A streaming session URL must not be shared between players. The service might throttle a session if multiple media players are sharing it. For connection limits, see [Kinesis Video Streams quotas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html).

You can monitor the amount of data that the media player consumes by monitoring the `GetMP4MediaFragment.OutgoingBytes` Amazon CloudWatch metric. For information about using CloudWatch to monitor Kinesis Video Streams, see [Monitoring Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/monitoring.html). For pricing information, see [Amazon Kinesis Video Streams Pricing](https://aws.amazon.com/kinesis/video-streams/pricing/) and [AWS Pricing](https://aws.amazon.com/pricing/). Charges for both HLS sessions and outgoing AWS data apply.

See the video playback examples in the documentation guide: [Use the AWS CLI to retrieve an HLS streaming session URL](hls-playback.md#retrieve-hls-url) and [Example: Use HLS in HTML and JavaScript](hls-playback.md#how-hls-ex1).

For more information about HLS, see [HTTP Live Streaming](https://developer.apple.com/streaming/) on the [Apple Developer site](https://developer.apple.com).

**Important**  
If an error is thrown after invoking a Kinesis Video Streams archived media API, in addition to the HTTP status code and the response body, it includes the following pieces of information:   
 `x-amz-ErrorType` HTTP header – contains a more specific error type in addition to what the HTTP status code provides. 
 `x-amz-RequestId` HTTP header – if you want to report an issue to AWS, the support team can better diagnose the problem if given the Request Id.
Both the HTTP status code and the ErrorType header can be utilized to make programmatic decisions about whether errors are retry-able and under what conditions, as well as provide information on what actions the client programmer might need to take in order to successfully try again.  
For more information, see the **Errors** section at the bottom of this topic, as well as [Common Errors](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html). 

## Request Syntax
<a name="API_reader_GetHLSStreamingSessionURL_RequestSyntax"></a>

```
POST /getHLSStreamingSessionURL HTTP/1.1
Content-type: application/json

{
   "ContainerFormat": "string",
   "DiscontinuityMode": "string",
   "DisplayFragmentTimestamp": "string",
   "Expires": number,
   "HLSFragmentSelector": { 
      "FragmentSelectorType": "string",
      "TimestampRange": { 
         "EndTimestamp": number,
         "StartTimestamp": number
      }
   },
   "MaxMediaPlaylistFragmentResults": number,
   "PlaybackMode": "string",
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_reader_GetHLSStreamingSessionURL_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_reader_GetHLSStreamingSessionURL_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ContainerFormat](#API_reader_GetHLSStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetHLSStreamingSessionURL-request-ContainerFormat"></a>
Specifies which format should be used for packaging the media. Specifying the `FRAGMENTED_MP4` container format packages the media into MP4 fragments (fMP4 or CMAF). This is the recommended packaging because there is minimal packaging overhead. The other container format option is `MPEG_TS`. HLS has supported MPEG TS chunks since it was released and is sometimes the only supported packaging on older HLS players. MPEG TS typically has a 5-25 percent packaging overhead. This means MPEG TS typically requires 5-25 percent more bandwidth and cost than fMP4.  
The default is `FRAGMENTED_MP4`.  
Type: String  
Valid Values: `FRAGMENTED_MP4 | MPEG_TS`   
Required: No

 ** [DiscontinuityMode](#API_reader_GetHLSStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetHLSStreamingSessionURL-request-DiscontinuityMode"></a>
Specifies when flags marking discontinuities between fragments are added to the media playlists.  
Media players typically build a timeline of media content to play, based on the timestamps of each fragment. This means that if there is any overlap or gap between fragments (as is typical if [HLSFragmentSelector](API_reader_HLSFragmentSelector.md) is set to `SERVER_TIMESTAMP`), the media player timeline will also have small gaps between fragments in some places, and will overwrite frames in other places. Gaps in the media player timeline can cause playback to stall and overlaps can cause playback to be jittery. When there are discontinuity flags between fragments, the media player is expected to reset the timeline, resulting in the next fragment being played immediately after the previous fragment.   
The following modes are supported:  
+  `ALWAYS`: a discontinuity marker is placed between every fragment in the HLS media playlist. It is recommended to use a value of `ALWAYS` if the fragment timestamps are not accurate.
+  `NEVER`: no discontinuity markers are placed anywhere. It is recommended to use a value of `NEVER` to ensure the media player timeline most accurately maps to the producer timestamps. 
+  `ON_DISCONTINUITY`: a discontinuity marker is placed between fragments that have a gap or overlap of more than 50 milliseconds. For most playback scenarios, it is recommended to use a value of `ON_DISCONTINUITY` so that the media player timeline is only reset when there is a significant issue with the media timeline (e.g. a missing fragment).
The default is `ALWAYS` when [HLSFragmentSelector](API_reader_HLSFragmentSelector.md) is set to `SERVER_TIMESTAMP`, and `NEVER` when it is set to `PRODUCER_TIMESTAMP`.  
Type: String  
Valid Values: `ALWAYS | NEVER | ON_DISCONTINUITY`   
Required: No

 ** [DisplayFragmentTimestamp](#API_reader_GetHLSStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetHLSStreamingSessionURL-request-DisplayFragmentTimestamp"></a>
Specifies when the fragment start timestamps should be included in the HLS media playlist. Typically, media players report the playhead position as a time relative to the start of the first fragment in the playback session. However, when the start timestamps are included in the HLS media playlist, some media players might report the current playhead as an absolute time based on the fragment timestamps. This can be useful for creating a playback experience that shows viewers the wall-clock time of the media.  
The default is `NEVER`. When [HLSFragmentSelector](API_reader_HLSFragmentSelector.md) is `SERVER_TIMESTAMP`, the timestamps will be the server start timestamps. Similarly, when [HLSFragmentSelector](API_reader_HLSFragmentSelector.md) is `PRODUCER_TIMESTAMP`, the timestamps will be the producer start timestamps.   
Type: String  
Valid Values: `ALWAYS | NEVER`   
Required: No

 ** [Expires](#API_reader_GetHLSStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetHLSStreamingSessionURL-request-Expires"></a>
The time in seconds until the requested session expires. This value can be between 300 (5 minutes) and 43200 (12 hours).  
When a session expires, no new calls to `GetHLSMasterPlaylist`, `GetHLSMediaPlaylist`, `GetMP4InitFragment`, `GetMP4MediaFragment`, or `GetTSFragment` can be made for that session.  
The default is 300 (5 minutes).  
Type: Integer  
Valid Range: Minimum value of 300. Maximum value of 43200.  
Required: No

 ** [HLSFragmentSelector](#API_reader_GetHLSStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetHLSStreamingSessionURL-request-HLSFragmentSelector"></a>
The time range of the requested fragment and the source of the timestamps.  
This parameter is required if `PlaybackMode` is `ON_DEMAND` or `LIVE_REPLAY`. This parameter is optional if PlaybackMode is`` `LIVE`. If `PlaybackMode` is `LIVE`, the `FragmentSelectorType` can be set, but the `TimestampRange` should not be set. If `PlaybackMode` is `ON_DEMAND` or `LIVE_REPLAY`, both `FragmentSelectorType` and `TimestampRange` must be set.  
Type: [HLSFragmentSelector](API_reader_HLSFragmentSelector.md) object  
Required: No

 ** [MaxMediaPlaylistFragmentResults](#API_reader_GetHLSStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetHLSStreamingSessionURL-request-MaxMediaPlaylistFragmentResults"></a>
The maximum number of fragments that are returned in the HLS media playlists.  
When the `PlaybackMode` is `LIVE`, the most recent fragments are returned up to this value. When the `PlaybackMode` is `ON_DEMAND`, the oldest fragments are returned, up to this maximum number.  
When there are a higher number of fragments available in a live HLS media playlist, video players often buffer content before starting playback. Increasing the buffer size increases the playback latency, but it decreases the likelihood that rebuffering will occur during playback. We recommend that a live HLS media playlist have a minimum of 3 fragments and a maximum of 10 fragments.  
The default is 5 fragments if `PlaybackMode` is `LIVE` or `LIVE_REPLAY`, and 1,000 if `PlaybackMode` is `ON_DEMAND`.   
The maximum value of 5,000 fragments corresponds to more than 80 minutes of video on streams with 1-second fragments, and more than 13 hours of video on streams with 10-second fragments.  
Type: Long  
Valid Range: Minimum value of 1. Maximum value of 5000.  
Required: No

 ** [PlaybackMode](#API_reader_GetHLSStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetHLSStreamingSessionURL-request-PlaybackMode"></a>
Whether to retrieve live, live replay, or archived, on-demand data.  
Features of the three types of sessions include the following:  
+  ** `LIVE` **: For sessions of this type, the HLS media playlist is continually updated with the latest fragments as they become available. We recommend that the media player retrieve a new playlist on a one-second interval. When this type of session is played in a media player, the user interface typically displays a "live" notification, with no scrubber control for choosing the position in the playback window to display.
**Note**  
In `LIVE` mode, the newest available fragments are included in an HLS media playlist, even if there is a gap between fragments (that is, if a fragment is missing). A gap like this might cause a media player to halt or cause a jump in playback. In this mode, fragments are not added to the HLS media playlist if they are older than the newest fragment in the playlist. If the missing fragment becomes available after a subsequent fragment is added to the playlist, the older fragment is not added, and the gap is not filled.
+  ** `LIVE_REPLAY` **: For sessions of this type, the HLS media playlist is updated similarly to how it is updated for `LIVE` mode except that it starts by including fragments from a given start time. Instead of fragments being added as they are ingested, fragments are added as the duration of the next fragment elapses. For example, if the fragments in the session are two seconds long, then a new fragment is added to the media playlist every two seconds. This mode is useful to be able to start playback from when an event is detected and continue live streaming media that has not yet been ingested as of the time of the session creation. This mode is also useful to stream previously archived media without being limited by the 1,000 fragment limit in the `ON_DEMAND` mode. 
+  ** `ON_DEMAND` **: For sessions of this type, the HLS media playlist contains all the fragments for the session, up to the number that is specified in `MaxMediaPlaylistFragmentResults`. The playlist must be retrieved only once for each session. When this type of session is played in a media player, the user interface typically displays a scrubber control for choosing the position in the playback window to display.
In all playback modes, if `FragmentSelectorType` is `PRODUCER_TIMESTAMP`, and if there are multiple fragments with the same start timestamp, the fragment that has the largest fragment number (that is, the newest fragment) is included in the HLS media playlist. The other fragments are not included. Fragments that have different timestamps but have overlapping durations are still included in the HLS media playlist. This can lead to unexpected behavior in the media player.  
The default is `LIVE`.  
Type: String  
Valid Values: `LIVE | LIVE_REPLAY | ON_DEMAND`   
Required: No

 ** [StreamARN](#API_reader_GetHLSStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetHLSStreamingSessionURL-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream for which to retrieve the HLS master playlist URL.  
You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_reader_GetHLSStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetHLSStreamingSessionURL-request-StreamName"></a>
The name of the stream for which to retrieve the HLS master playlist URL.  
You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_reader_GetHLSStreamingSessionURL_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "HLSStreamingSessionURL": "string"
}
```

## Response Elements
<a name="API_reader_GetHLSStreamingSessionURL_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [HLSStreamingSessionURL](#API_reader_GetHLSStreamingSessionURL_ResponseSyntax) **   <a name="KinesisVideo-reader_GetHLSStreamingSessionURL-response-HLSStreamingSessionURL"></a>
The URL (containing the session token) that a media player can use to retrieve the HLS master playlist.  
Type: String

## Errors
<a name="API_reader_GetHLSStreamingSessionURL_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded a limit. Try making the call later. For information about limits, see [Kinesis Video Streams quotas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html).  
HTTP Status Code: 400

 ** InvalidArgumentException **   
A specified parameter exceeds its restrictions, is not supported, or can't be used.  
HTTP Status Code: 400

 ** InvalidCodecPrivateDataException **   
The codec private data in at least one of the tracks of the video stream is not valid for this operation.  
HTTP Status Code: 400

 ** MissingCodecPrivateDataException **   
No codec private data was found in at least one of tracks of the video stream.  
HTTP Status Code: 400

 ** NoDataRetentionException **   
 `GetImages` was requested for a stream that does not retain data (that is, has a `DataRetentionInHours` of 0).   
HTTP Status Code: 400

 ** NotAuthorizedException **   
Status Code: 403, The caller is not authorized to perform an operation on the given stream, or the token has expired.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
 `GetImages` will throw this error when Kinesis Video Streams can't find the stream that you specified.  
 `GetHLSStreamingSessionURL` and `GetDASHStreamingSessionURL` throw this error if a session with a `PlaybackMode` of `ON_DEMAND` or `LIVE_REPLAY` is requested for a stream that has no fragments within the requested time range, or if a session with a `PlaybackMode` of `LIVE` is requested for a stream that has no fragments within the last 30 seconds.  
HTTP Status Code: 404

 ** UnsupportedStreamMediaTypeException **   
The type of the media (for example, h.264 or h.265 video or AAC or G.711 audio) could not be determined from the codec IDs of the tracks in the first fragment for a playback session. The codec ID for track 1 should be `V_MPEG/ISO/AVC` and, optionally, the codec ID for track 2 should be `A_AAC`.  
HTTP Status Code: 400

## See Also
<a name="API_reader_GetHLSStreamingSessionURL_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-reader-data-2017-09-30/GetHLSStreamingSessionURL) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-reader-data-2017-09-30/GetHLSStreamingSessionURL) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-reader-data-2017-09-30/GetHLSStreamingSessionURL) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-reader-data-2017-09-30/GetHLSStreamingSessionURL) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-reader-data-2017-09-30/GetHLSStreamingSessionURL) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-reader-data-2017-09-30/GetHLSStreamingSessionURL) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-reader-data-2017-09-30/GetHLSStreamingSessionURL) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-reader-data-2017-09-30/GetHLSStreamingSessionURL) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-reader-data-2017-09-30/GetHLSStreamingSessionURL) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-reader-data-2017-09-30/GetHLSStreamingSessionURL) 

# GetImages
<a name="API_reader_GetImages"></a>

Managed support for images provides a fully managed way to get images from the video data streamed and stored in Kinesis Video Streams. You can use images to run machine learning (ML) workloads such as person, pet, or vehicle detection. Images can also be used to add interactive elements to playback, such as image previews for motion events and scrubbing for a video clip. 

GetImages also retrieves a list of images corresponding to each timestamp for a given time range, sampling interval, and image format configuration.

**Note**  
You must first call the `GetDataEndpoint` API to get an endpoint. Then send the `GetImages` requests to this endpoint using the [--endpoint-url parameter](https://docs.aws.amazon.com/cli/latest/reference/). 

 [Video playback track requirements](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/video-playback-requirements.html).

## Request Syntax
<a name="API_reader_GetImages_RequestSyntax"></a>

```
POST /getImages HTTP/1.1
Content-type: application/json

{
   "EndTimestamp": number,
   "Format": "string",
   "FormatConfig": { 
      "string" : "string" 
   },
   "HeightPixels": number,
   "ImageSelectorType": "string",
   "MaxResults": number,
   "NextToken": "string",
   "SamplingInterval": number,
   "StartTimestamp": number,
   "StreamARN": "string",
   "StreamName": "string",
   "WidthPixels": number
}
```

## URI Request Parameters
<a name="API_reader_GetImages_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_reader_GetImages_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [EndTimestamp](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-EndTimestamp"></a>
The end timestamp for the range of images to be generated. If the time range between `StartTimestamp` and `EndTimestamp` is more than 300 seconds above `StartTimestamp`, you will receive an `IllegalArgumentException`.  
Type: Timestamp  
Required: Yes

 ** [Format](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-Format"></a>
The format that will be used to encode the image.  
Type: String  
Valid Values: `JPEG | PNG`   
Required: Yes

 ** [FormatConfig](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-FormatConfig"></a>
The list of a key-value pair structure that contains extra parameters that can be applied when the image is generated. The `FormatConfig` key is the `JPEGQuality`, which indicates the JPEG quality key to be used to generate the image. The `FormatConfig` value accepts ints from 1 to 100. If the value is 1, the image will be generated with less quality and the best compression. If the value is 100, the image will be generated with the best quality and less compression. If no value is provided, the default value of the `JPEGQuality` key will be set to 80.  
Type: String to string map  
Map Entries: Maximum number of 1 item.  
Valid Keys: `JPEGQuality`   
Value Length Constraints: Minimum length of 0. Maximum length of 256.  
Value Pattern: `^[a-zA-Z_0-9]+`   
Required: No

 ** [HeightPixels](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-HeightPixels"></a>
The height of the output image that is used in conjunction with the `WidthPixels` parameter. When both `HeightPixels` and `WidthPixels` parameters are provided, the image will be stretched to fit the specified aspect ratio. If only the `HeightPixels` parameter is provided, its original aspect ratio will be used to calculate the `WidthPixels` ratio. If neither parameter is provided, the original image size will be returned.  
Type: Integer  
Valid Range: Minimum value of 1. Maximum value of 2160.  
Required: No

 ** [ImageSelectorType](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-ImageSelectorType"></a>
The origin of the Server or Producer timestamps to use to generate the images.  
Type: String  
Valid Values: `PRODUCER_TIMESTAMP | SERVER_TIMESTAMP`   
Required: Yes

 ** [MaxResults](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-MaxResults"></a>
The maximum number of images to be returned by the API.   
The default limit is 25 images per API response. Providing a `MaxResults` greater than this value will result in a page size of 25. Any additional results will be paginated. 
Type: Long  
Valid Range: Minimum value of 1. Maximum value of 100.  
Required: No

 ** [NextToken](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-NextToken"></a>
A token that specifies where to start paginating the next set of Images. This is the `GetImages:NextToken` from a previously truncated response.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 4096.  
Pattern: `[a-zA-Z0-9+/]+={0,2}`   
Required: No

 ** [SamplingInterval](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-SamplingInterval"></a>
The time interval in milliseconds (ms) at which the images need to be generated from the stream. The minimum value that can be provided is 200 ms (5 images per second). If the timestamp range is less than the sampling interval, the image from the `startTimestamp` will be returned if available.   
Type: Integer  
Required: No

 ** [StartTimestamp](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-StartTimestamp"></a>
The starting point from which the images should be generated. This `StartTimestamp` must be within an inclusive range of timestamps for an image to be returned.  
Type: Timestamp  
Required: Yes

 ** [StreamARN](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream from which to retrieve the images. You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-StreamName"></a>
The name of the stream from which to retrieve the images. You must specify either the `StreamName` or the `StreamARN`.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

 ** [WidthPixels](#API_reader_GetImages_RequestSyntax) **   <a name="KinesisVideo-reader_GetImages-request-WidthPixels"></a>
The width of the output image that is used in conjunction with the `HeightPixels` parameter. When both `WidthPixels` and `HeightPixels` parameters are provided, the image will be stretched to fit the specified aspect ratio. If only the `WidthPixels` parameter is provided or if only the `HeightPixels` is provided, a `ValidationException` will be thrown. If neither parameter is provided, the original image size from the stream will be returned.  
Type: Integer  
Valid Range: Minimum value of 1. Maximum value of 3840.  
Required: No

## Response Syntax
<a name="API_reader_GetImages_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "Images": [ 
      { 
         "Error": "string",
         "ImageContent": "string",
         "TimeStamp": number
      }
   ],
   "NextToken": "string"
}
```

## Response Elements
<a name="API_reader_GetImages_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [Images](#API_reader_GetImages_ResponseSyntax) **   <a name="KinesisVideo-reader_GetImages-response-Images"></a>
The list of images generated from the video stream. If there is no media available for the given timestamp, the `NO_MEDIA` error will be listed in the output. If an error occurs while the image is being generated, the `MEDIA_ERROR` will be listed in the output as the cause of the missing image.   
Type: Array of [Image](API_reader_Image.md) objects

 ** [NextToken](#API_reader_GetImages_ResponseSyntax) **   <a name="KinesisVideo-reader_GetImages-response-NextToken"></a>
The encrypted token that was used in the request to get more images.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 4096.  
Pattern: `[a-zA-Z0-9+/]+={0,2}` 

## Errors
<a name="API_reader_GetImages_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded a limit. Try making the call later. For information about limits, see [Kinesis Video Streams quotas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html).  
HTTP Status Code: 400

 ** InvalidArgumentException **   
A specified parameter exceeds its restrictions, is not supported, or can't be used.  
HTTP Status Code: 400

 ** NoDataRetentionException **   
 `GetImages` was requested for a stream that does not retain data (that is, has a `DataRetentionInHours` of 0).   
HTTP Status Code: 400

 ** NotAuthorizedException **   
Status Code: 403, The caller is not authorized to perform an operation on the given stream, or the token has expired.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
 `GetImages` will throw this error when Kinesis Video Streams can't find the stream that you specified.  
 `GetHLSStreamingSessionURL` and `GetDASHStreamingSessionURL` throw this error if a session with a `PlaybackMode` of `ON_DEMAND` or `LIVE_REPLAY` is requested for a stream that has no fragments within the requested time range, or if a session with a `PlaybackMode` of `LIVE` is requested for a stream that has no fragments within the last 30 seconds.  
HTTP Status Code: 404

## See Also
<a name="API_reader_GetImages_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-reader-data-2017-09-30/GetImages) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-reader-data-2017-09-30/GetImages) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-reader-data-2017-09-30/GetImages) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-reader-data-2017-09-30/GetImages) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-reader-data-2017-09-30/GetImages) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-reader-data-2017-09-30/GetImages) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-reader-data-2017-09-30/GetImages) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-reader-data-2017-09-30/GetImages) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-reader-data-2017-09-30/GetImages) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-reader-data-2017-09-30/GetImages) 

# GetMediaForFragmentList
<a name="API_reader_GetMediaForFragmentList"></a>

Gets media for a list of fragments (specified by fragment number) from the archived data in an Amazon Kinesis video stream.

**Note**  
You must first call the `GetDataEndpoint` API to get an endpoint. Then send the `GetMediaForFragmentList` requests to this endpoint using the [--endpoint-url parameter](https://docs.aws.amazon.com/cli/latest/reference/). 

For limits, see [Kinesis Video Streams quotas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html).

**Important**  
If an error is thrown after invoking a Kinesis Video Streams archived media API, in addition to the HTTP status code and the response body, it includes the following pieces of information:   
 `x-amz-ErrorType` HTTP header – contains a more specific error type in addition to what the HTTP status code provides. 
 `x-amz-RequestId` HTTP header – if you want to report an issue to AWS, the support team can better diagnose the problem if given the Request Id.
Both the HTTP status code and the ErrorType header can be utilized to make programmatic decisions about whether errors are retry-able and under what conditions, as well as provide information on what actions the client programmer might need to take in order to successfully try again.  
For more information, see the **Errors** section at the bottom of this topic, as well as [Common Errors](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html). 

## Request Syntax
<a name="API_reader_GetMediaForFragmentList_RequestSyntax"></a>

```
POST /getMediaForFragmentList HTTP/1.1
Content-type: application/json

{
   "Fragments": [ "string" ],
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_reader_GetMediaForFragmentList_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_reader_GetMediaForFragmentList_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [Fragments](#API_reader_GetMediaForFragmentList_RequestSyntax) **   <a name="KinesisVideo-reader_GetMediaForFragmentList-request-Fragments"></a>
A list of the numbers of fragments for which to retrieve media. You retrieve these values with [ListFragments](API_reader_ListFragments.md).  
Type: Array of strings  
Array Members: Minimum number of 1 item. Maximum number of 1000 items.  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `^[0-9]+$`   
Required: Yes

 ** [StreamARN](#API_reader_GetMediaForFragmentList_RequestSyntax) **   <a name="KinesisVideo-reader_GetMediaForFragmentList-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream from which to retrieve fragment media. Specify either this parameter or the `StreamName` parameter.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_reader_GetMediaForFragmentList_RequestSyntax) **   <a name="KinesisVideo-reader_GetMediaForFragmentList-request-StreamName"></a>
The name of the stream from which to retrieve fragment media. Specify either this parameter or the `StreamARN` parameter.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_reader_GetMediaForFragmentList_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-Type: ContentType

Payload
```

## Response Elements
<a name="API_reader_GetMediaForFragmentList_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The response returns the following HTTP headers.

 ** [ContentType](#API_reader_GetMediaForFragmentList_ResponseSyntax) **   <a name="KinesisVideo-reader_GetMediaForFragmentList-response-ContentType"></a>
The content type of the requested media.  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `^[a-zA-Z0-9_\.\-]+$` 

The response returns the following as the HTTP body.

 ** [Payload](#API_reader_GetMediaForFragmentList_ResponseSyntax) **   <a name="KinesisVideo-reader_GetMediaForFragmentList-response-Payload"></a>
The payload that Kinesis Video Streams returns is a sequence of chunks from the specified stream. For information about the chunks, see [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html). The chunks that Kinesis Video Streams returns in the `GetMediaForFragmentList` call also include the following additional Matroska (MKV) tags:   
+ AWS\$1KINESISVIDEO\$1FRAGMENT\$1NUMBER - Fragment number returned in the chunk.
+ AWS\$1KINESISVIDEO\$1SERVER\$1SIDE\$1TIMESTAMP - Server-side timestamp of the fragment.
+ AWS\$1KINESISVIDEO\$1PRODUCER\$1SIDE\$1TIMESTAMP - Producer-side timestamp of the fragment.
The following tags will be included if an exception occurs:  
+ AWS\$1KINESISVIDEO\$1FRAGMENT\$1NUMBER - The number of the fragment that threw the exception. 
+ AWS\$1KINESISVIDEO\$1EXCEPTION\$1ERROR\$1CODE - The integer code of the error. 
+ AWS\$1KINESISVIDEO\$1EXCEPTION\$1MESSAGE - A text description of the exception. 

## Errors
<a name="API_reader_GetMediaForFragmentList_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded a limit. Try making the call later. For information about limits, see [Kinesis Video Streams quotas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html).  
HTTP Status Code: 400

 ** InvalidArgumentException **   
A specified parameter exceeds its restrictions, is not supported, or can't be used.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
Status Code: 403, The caller is not authorized to perform an operation on the given stream, or the token has expired.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
 `GetImages` will throw this error when Kinesis Video Streams can't find the stream that you specified.  
 `GetHLSStreamingSessionURL` and `GetDASHStreamingSessionURL` throw this error if a session with a `PlaybackMode` of `ON_DEMAND` or `LIVE_REPLAY` is requested for a stream that has no fragments within the requested time range, or if a session with a `PlaybackMode` of `LIVE` is requested for a stream that has no fragments within the last 30 seconds.  
HTTP Status Code: 404

## See Also
<a name="API_reader_GetMediaForFragmentList_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-reader-data-2017-09-30/GetMediaForFragmentList) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-reader-data-2017-09-30/GetMediaForFragmentList) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-reader-data-2017-09-30/GetMediaForFragmentList) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-reader-data-2017-09-30/GetMediaForFragmentList) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-reader-data-2017-09-30/GetMediaForFragmentList) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-reader-data-2017-09-30/GetMediaForFragmentList) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-reader-data-2017-09-30/GetMediaForFragmentList) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-reader-data-2017-09-30/GetMediaForFragmentList) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-reader-data-2017-09-30/GetMediaForFragmentList) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-reader-data-2017-09-30/GetMediaForFragmentList) 

# ListFragments
<a name="API_reader_ListFragments"></a>

Returns a list of [Fragment](API_reader_Fragment.md) objects from the specified stream and timestamp range within the archived data.

Listing fragments is eventually consistent. This means that even if the producer receives an acknowledgment that a fragment is persisted, the result might not be returned immediately from a request to `ListFragments`. However, results are typically available in less than one second.

**Note**  
You must first call the `GetDataEndpoint` API to get an endpoint. Then send the `ListFragments` requests to this endpoint using the [--endpoint-url parameter](https://docs.aws.amazon.com/cli/latest/reference/). 

**Important**  
If an error is thrown after invoking a Kinesis Video Streams archived media API, in addition to the HTTP status code and the response body, it includes the following pieces of information:   
 `x-amz-ErrorType` HTTP header – contains a more specific error type in addition to what the HTTP status code provides. 
 `x-amz-RequestId` HTTP header – if you want to report an issue to AWS, the support team can better diagnose the problem if given the Request Id.
Both the HTTP status code and the ErrorType header can be utilized to make programmatic decisions about whether errors are retry-able and under what conditions, as well as provide information on what actions the client programmer might need to take in order to successfully try again.  
For more information, see the **Errors** section at the bottom of this topic, as well as [Common Errors](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html). 

## Request Syntax
<a name="API_reader_ListFragments_RequestSyntax"></a>

```
POST /listFragments HTTP/1.1
Content-type: application/json

{
   "FragmentSelector": { 
      "FragmentSelectorType": "string",
      "TimestampRange": { 
         "EndTimestamp": number,
         "StartTimestamp": number
      }
   },
   "MaxResults": number,
   "NextToken": "string",
   "StreamARN": "string",
   "StreamName": "string"
}
```

## URI Request Parameters
<a name="API_reader_ListFragments_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_reader_ListFragments_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [FragmentSelector](#API_reader_ListFragments_RequestSyntax) **   <a name="KinesisVideo-reader_ListFragments-request-FragmentSelector"></a>
Describes the timestamp range and timestamp origin for the range of fragments to return.  
This is only required when the `NextToken` isn't passed in the API.
Type: [FragmentSelector](API_reader_FragmentSelector.md) object  
Required: No

 ** [MaxResults](#API_reader_ListFragments_RequestSyntax) **   <a name="KinesisVideo-reader_ListFragments-request-MaxResults"></a>
The total number of fragments to return. If the total number of fragments available is more than the value specified in `max-results`, then a [ListFragments:NextToken](#KinesisVideo-reader_ListFragments-response-NextToken) is provided in the output that you can use to resume pagination.  
The default value is 100.  
Type: Long  
Valid Range: Minimum value of 1. Maximum value of 1000.  
Required: No

 ** [NextToken](#API_reader_ListFragments_RequestSyntax) **   <a name="KinesisVideo-reader_ListFragments-request-NextToken"></a>
A token to specify where to start paginating. This is the [ListFragments:NextToken](#KinesisVideo-reader_ListFragments-response-NextToken) from a previously truncated response.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 4096.  
Pattern: `[a-zA-Z0-9+/]+={0,2}`   
Required: No

 ** [StreamARN](#API_reader_ListFragments_RequestSyntax) **   <a name="KinesisVideo-reader_ListFragments-request-StreamARN"></a>
The Amazon Resource Name (ARN) of the stream from which to retrieve a fragment list. Specify either this parameter or the `StreamName` parameter.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: No

 ** [StreamName](#API_reader_ListFragments_RequestSyntax) **   <a name="KinesisVideo-reader_ListFragments-request-StreamName"></a>
The name of the stream from which to retrieve a fragment list. Specify either this parameter or the `StreamARN` parameter.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_reader_ListFragments_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "Fragments": [ 
      { 
         "FragmentLengthInMilliseconds": number,
         "FragmentNumber": "string",
         "FragmentSizeInBytes": number,
         "ProducerTimestamp": number,
         "ServerTimestamp": number
      }
   ],
   "NextToken": "string"
}
```

## Response Elements
<a name="API_reader_ListFragments_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [Fragments](#API_reader_ListFragments_ResponseSyntax) **   <a name="KinesisVideo-reader_ListFragments-response-Fragments"></a>
A list of archived [Fragment](API_reader_Fragment.md) objects from the stream that meet the selector criteria. Results are in no specific order, even across pages.  
If there are no fragments in the stream that meet the selector criteria, an empty list is returned.  
Type: Array of [Fragment](API_reader_Fragment.md) objects

 ** [NextToken](#API_reader_ListFragments_ResponseSyntax) **   <a name="KinesisVideo-reader_ListFragments-response-NextToken"></a>
If the returned list is truncated, the operation returns this token to use to retrieve the next page of results. This value is `null` when there are no more results to return.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 4096.  
Pattern: `[a-zA-Z0-9+/]+={0,2}` 

## Errors
<a name="API_reader_ListFragments_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams has throttled the request because you have exceeded a limit. Try making the call later. For information about limits, see [Kinesis Video Streams quotas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html).  
HTTP Status Code: 400

 ** InvalidArgumentException **   
A specified parameter exceeds its restrictions, is not supported, or can't be used.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
Status Code: 403, The caller is not authorized to perform an operation on the given stream, or the token has expired.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
 `GetImages` will throw this error when Kinesis Video Streams can't find the stream that you specified.  
 `GetHLSStreamingSessionURL` and `GetDASHStreamingSessionURL` throw this error if a session with a `PlaybackMode` of `ON_DEMAND` or `LIVE_REPLAY` is requested for a stream that has no fragments within the requested time range, or if a session with a `PlaybackMode` of `LIVE` is requested for a stream that has no fragments within the last 30 seconds.  
HTTP Status Code: 404

## See Also
<a name="API_reader_ListFragments_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-reader-data-2017-09-30/ListFragments) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-reader-data-2017-09-30/ListFragments) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-reader-data-2017-09-30/ListFragments) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-reader-data-2017-09-30/ListFragments) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-reader-data-2017-09-30/ListFragments) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-reader-data-2017-09-30/ListFragments) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-reader-data-2017-09-30/ListFragments) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-reader-data-2017-09-30/ListFragments) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-reader-data-2017-09-30/ListFragments) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-reader-data-2017-09-30/ListFragments) 

# Amazon Kinesis Video Signaling Channels
<a name="API_Operations_Amazon_Kinesis_Video_Signaling_Channels"></a>

The following actions are supported by Amazon Kinesis Video Signaling Channels:
+  [GetIceServerConfig](API_signaling_GetIceServerConfig.md) 
+  [SendAlexaOfferToMaster](API_signaling_SendAlexaOfferToMaster.md) 

# GetIceServerConfig
<a name="API_signaling_GetIceServerConfig"></a>

 **Note:** Before using this API, you must call the `GetSignalingChannelEndpoint` API to request the HTTPS endpoint. You then specify the endpoint and region in your `GetIceServerConfig` API request.

Gets the Interactive Connectivity Establishment (ICE) server configuration information, including URIs, user name, and password which can be used to configure the WebRTC connection. The ICE component uses this configuration information to set up the WebRTC connection, including authenticating with the Traversal Using Relays around NAT (TURN) relay server. 

TURN is a protocol that is used to improve the connectivity of peer-to-peer applications. By providing a cloud-based relay service, TURN ensures that a connection can be established even when one or more peers are incapable of a direct peer-to-peer connection. For more information, see [A REST API For Access To TURN Services](https://tools.ietf.org/html/draft-uberti-rtcweb-turn-rest-00).

 You can invoke this API to establish a fallback mechanism in case either of the peers is unable to establish a direct peer-to-peer connection over a signaling channel. You must specify the Amazon Resource Name (ARN) of your signaling channel in order to invoke this API.

## Request Syntax
<a name="API_signaling_GetIceServerConfig_RequestSyntax"></a>

```
POST /v1/get-ice-server-config HTTP/1.1
Content-type: application/json

{
   "ChannelARN": "string",
   "ClientId": "string",
   "Service": "string",
   "Username": "string"
}
```

## URI Request Parameters
<a name="API_signaling_GetIceServerConfig_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_signaling_GetIceServerConfig_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelARN](#API_signaling_GetIceServerConfig_RequestSyntax) **   <a name="KinesisVideo-signaling_GetIceServerConfig-request-ChannelARN"></a>
The ARN of the signaling channel to be used for the peer-to-peer connection between configured peers.   
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

 ** [ClientId](#API_signaling_GetIceServerConfig_RequestSyntax) **   <a name="KinesisVideo-signaling_GetIceServerConfig-request-ClientId"></a>
Unique identifier for the viewer. Must be unique within the signaling channel.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

 ** [Service](#API_signaling_GetIceServerConfig_RequestSyntax) **   <a name="KinesisVideo-signaling_GetIceServerConfig-request-Service"></a>
Specifies the desired service. Currently, `TURN` is the only valid value.  
Type: String  
Valid Values: `TURN`   
Required: No

 ** [Username](#API_signaling_GetIceServerConfig_RequestSyntax) **   <a name="KinesisVideo-signaling_GetIceServerConfig-request-Username"></a>
An optional user ID to be associated with the credentials.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: No

## Response Syntax
<a name="API_signaling_GetIceServerConfig_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "IceServerList": [ 
      { 
         "Password": "string",
         "Ttl": number,
         "Uris": [ "string" ],
         "Username": "string"
      }
   ]
}
```

## Response Elements
<a name="API_signaling_GetIceServerConfig_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [IceServerList](#API_signaling_GetIceServerConfig_ResponseSyntax) **   <a name="KinesisVideo-signaling_GetIceServerConfig-response-IceServerList"></a>
The list of ICE server information objects.  
Type: Array of [IceServer](API_signaling_IceServer.md) objects

## Errors
<a name="API_signaling_GetIceServerConfig_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Your request was throttled because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** InvalidClientException **   
The specified client is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
The specified resource is not found.  
HTTP Status Code: 404

 ** SessionExpiredException **   
If the client session is expired. Once the client is connected, the session is valid for 45 minutes. Client should reconnect to the channel to continue sending/receiving messages.  
HTTP Status Code: 400

## See Also
<a name="API_signaling_GetIceServerConfig_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-signaling-2019-12-04/GetIceServerConfig) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-signaling-2019-12-04/GetIceServerConfig) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-signaling-2019-12-04/GetIceServerConfig) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-signaling-2019-12-04/GetIceServerConfig) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-signaling-2019-12-04/GetIceServerConfig) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-signaling-2019-12-04/GetIceServerConfig) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-signaling-2019-12-04/GetIceServerConfig) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-signaling-2019-12-04/GetIceServerConfig) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-signaling-2019-12-04/GetIceServerConfig) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-signaling-2019-12-04/GetIceServerConfig) 

# SendAlexaOfferToMaster
<a name="API_signaling_SendAlexaOfferToMaster"></a>

**Note**  
Before using this API, you must call the `GetSignalingChannelEndpoint` API to get an endpoint. You then specify the endpoint and region in your `SendAlexaOfferToMaster` API request.

This API allows you to connect WebRTC-enabled devices with Alexa display devices. When invoked, it sends the Alexa Session Description Protocol (SDP) offer to the master peer. The offer is delivered as soon as the master is connected to the specified signaling channel. This API returns the SDP answer from the connected master. If the master is not connected to the signaling channel, redelivery requests are made until the message expires.

## Request Syntax
<a name="API_signaling_SendAlexaOfferToMaster_RequestSyntax"></a>

```
POST /v1/send-alexa-offer-to-master HTTP/1.1
Content-type: application/json

{
   "ChannelARN": "string",
   "MessagePayload": "string",
   "SenderClientId": "string"
}
```

## URI Request Parameters
<a name="API_signaling_SendAlexaOfferToMaster_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_signaling_SendAlexaOfferToMaster_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [ChannelARN](#API_signaling_SendAlexaOfferToMaster_RequestSyntax) **   <a name="KinesisVideo-signaling_SendAlexaOfferToMaster-request-ChannelARN"></a>
The Amazon Resource Name (ARN) of the signaling channel by which Alexa and the master peer communicate.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 1024.  
Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

 ** [MessagePayload](#API_signaling_SendAlexaOfferToMaster_RequestSyntax) **   <a name="KinesisVideo-signaling_SendAlexaOfferToMaster-request-MessagePayload"></a>
The base64-encoded SDP offer content.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 10000.  
Pattern: `[a-zA-Z0-9+/=]+`   
Required: Yes

 ** [SenderClientId](#API_signaling_SendAlexaOfferToMaster_RequestSyntax) **   <a name="KinesisVideo-signaling_SendAlexaOfferToMaster-request-SenderClientId"></a>
The unique identifier for the sender client.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: Yes

## Response Syntax
<a name="API_signaling_SendAlexaOfferToMaster_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "Answer": "string"
}
```

## Response Elements
<a name="API_signaling_SendAlexaOfferToMaster_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [Answer](#API_signaling_SendAlexaOfferToMaster_ResponseSyntax) **   <a name="KinesisVideo-signaling_SendAlexaOfferToMaster-response-Answer"></a>
The base64-encoded SDP answer content.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 10000.

## Errors
<a name="API_signaling_SendAlexaOfferToMaster_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** ClientLimitExceededException **   
Your request was throttled because you have exceeded the limit of allowed client calls. Try making the call later.  
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** NotAuthorizedException **   
The caller is not authorized to perform this operation.  
HTTP Status Code: 401

 ** ResourceNotFoundException **   
The specified resource is not found.  
HTTP Status Code: 404

## See Also
<a name="API_signaling_SendAlexaOfferToMaster_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-signaling-2019-12-04/SendAlexaOfferToMaster) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-signaling-2019-12-04/SendAlexaOfferToMaster) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-signaling-2019-12-04/SendAlexaOfferToMaster) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-signaling-2019-12-04/SendAlexaOfferToMaster) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-signaling-2019-12-04/SendAlexaOfferToMaster) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-signaling-2019-12-04/SendAlexaOfferToMaster) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-signaling-2019-12-04/SendAlexaOfferToMaster) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-signaling-2019-12-04/SendAlexaOfferToMaster) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-signaling-2019-12-04/SendAlexaOfferToMaster) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-signaling-2019-12-04/SendAlexaOfferToMaster) 

# Amazon Kinesis Video WebRTC Storage
<a name="API_Operations_Amazon_Kinesis_Video_WebRTC_Storage"></a>

The following actions are supported by Amazon Kinesis Video WebRTC Storage:
+  [JoinStorageSession](API_webrtc_JoinStorageSession.md) 
+  [JoinStorageSessionAsViewer](API_webrtc_JoinStorageSessionAsViewer.md) 

# JoinStorageSession
<a name="API_webrtc_JoinStorageSession"></a>

**Note**  
Before using this API, you must call the `GetSignalingChannelEndpoint` API to request the WEBRTC endpoint. You then specify the endpoint and region in your `JoinStorageSession` API request.

Join the ongoing one way-video and/or multi-way audio WebRTC session as a video producing device for an input channel. If there's not an existing session for the channel, create a new streaming session and provide the Amazon Resource Name (ARN) of the signaling channel.

Currently for the `SINGLE_MASTER` type, a video producing device is able to ingest both audio and video media into a stream. Only video producing devices can join the session and record media.

**Important**  
Both audio and video tracks are currently required for WebRTC ingestion.  
Current requirements:  
Video track: H.264
Audio track: Opus
Video:  
Max resolution is SQFHD (1920x1920)
KVS WebRTC ingestion currently supports a specific set of H264 profiles:  
constrained-baseline
baseline
main
high
constrained-high
progressive-high

The resulting ingested video in the Kinesis video stream will have the following parameters: H.264 video and AAC audio.

Once a master participant has negotiated a connection through WebRTC, the ingested media session will be stored in the Kinesis video stream. Multiple viewers are then able to play back real-time media through our Playback APIs.

You can also use existing Kinesis Video Streams features like `HLS` or `DASH` playback, image generation via [GetImages](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-getImages.html), and more with ingested WebRTC media.

**Note**  
S3 image delivery and notifications are not currently supported.

**Note**  
Assume that only one video producing device client can be associated with a session for the channel. If more than one client joins the session of a specific channel as a video producing device, the most recent client request takes precedence. 

 **Additional information** 
+  **Idempotent** - This API is not idempotent.
+  **Retry behavior** - This is counted as a new API call.
+  **Concurrent calls** - Concurrent calls are allowed. An offer is sent once per each call.

## Request Syntax
<a name="API_webrtc_JoinStorageSession_RequestSyntax"></a>

```
POST /joinStorageSession HTTP/1.1
Content-type: application/json

{
   "channelArn": "string"
}
```

## URI Request Parameters
<a name="API_webrtc_JoinStorageSession_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_webrtc_JoinStorageSession_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [channelArn](#API_webrtc_JoinStorageSession_RequestSyntax) **   <a name="KinesisVideo-webrtc_JoinStorageSession-request-channelArn"></a>
 The Amazon Resource Name (ARN) of the signaling channel.   
Note the capitalization of this input parameter.
Type: String  
Pattern: `arn:(aws[a-zA-Z-]*):kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

## Response Syntax
<a name="API_webrtc_JoinStorageSession_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_webrtc_JoinStorageSession_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_webrtc_JoinStorageSession_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 403

 ** ClientLimitExceededException **   
 Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.   
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
The specified resource is not found.  
HTTP Status Code: 404

## See Also
<a name="API_webrtc_JoinStorageSession_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSession) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSession) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSession) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSession) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSession) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSession) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSession) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSession) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSession) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSession) 

# JoinStorageSessionAsViewer
<a name="API_webrtc_JoinStorageSessionAsViewer"></a>

**Note**  
Before using this API, you must call the `GetSignalingChannelEndpoint` API to request the WEBRTC endpoint. You then specify the endpoint and region in your `JoinStorageSessionAsViewer` API request.

 `JoinStorageSessionAsViewer` enables a viewer to join an ongoing cloud-recorded WebRTC streaming session. This API initiates a WebRTC connection by sending an SDP offer and ICE candidates between the viewer and the recording agent, allowing the viewer to receive real-time video from the master through the recording agent and participate in two-way audio communication through the recording agent. Once connected, the viewer's audio, if provided, is forwarded to all other connected peers, including the master participant, and is incorporated into the WebRTC stream being saved to the Kinesis Video stream. 

**Important**  
Viewers currently can't send any video tracks. Viewers can send an optional audio track or no tracks at all.   
Current viewer participant sending requirements:  
Video track: Not supported
Audio track (optional): Opus

If the master participant is currently connected to the video producing device, the resulting ingested video in the Kinesis video stream will have the following parameters: H.264 video and AAC audio. 

**Note**  
Viewer participants connect directly to the storage session and not directly to the master participant. The storage session takes care of mixing, duplicating, and routing the media to the appropriate destination.

**Note**  
If the master participant isn't present, viewers won't be able to hear each other.

Once the viewer participant has negotiated a connection through WebRTC, the ingested audio session will be stored in the Kinesis video stream as long as the master participant is also connected to the storage session. 

You can also use existing Kinesis Video Streams features like `HLS` or `DASH` playback, image generation via [GetImages](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-getImages.html), and more with ingested WebRTC media.

**Note**  
S3 image delivery and notifications are not currently supported.

**Note**  
Assume that only one video producing device client can be associated with a session for the channel. If more than one client joins the session of a specific channel as a video producing device, the most recent client request takes precedence. 

 **Limits** 

The current limits are in place:
+  **Maximum number of viewers:** 3
+  **Maximum time viewer participants remain connected to the storage session without a master participant present:** 3 minutes

**Important**  
If a viewer disconnects from the storage session (closes the peer connection), their quota (viewer limit) remains consumed for 1 minute. During this 1-minute period, the viewer can invoke this API with the same Client ID to rejoin the session without consuming an additional viewer quota. After 1 minute, the viewer quota is released and available for other viewers to join.

 **Additional information** 
+  **Idempotent** - This API is not idempotent.
+  **Retry behavior** - This is counted as a new API call.
+  **Concurrent calls** - Concurrent calls are allowed. An offer is sent once per each call.

## Request Syntax
<a name="API_webrtc_JoinStorageSessionAsViewer_RequestSyntax"></a>

```
POST /joinStorageSessionAsViewer HTTP/1.1
Content-type: application/json

{
   "channelArn": "string",
   "clientId": "string"
}
```

## URI Request Parameters
<a name="API_webrtc_JoinStorageSessionAsViewer_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_webrtc_JoinStorageSessionAsViewer_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [channelArn](#API_webrtc_JoinStorageSessionAsViewer_RequestSyntax) **   <a name="KinesisVideo-webrtc_JoinStorageSessionAsViewer-request-channelArn"></a>
The Amazon Resource Name (ARN) of the signaling channel.  
Note the capitalization of this input parameter.
Type: String  
Pattern: `arn:(aws[a-zA-Z-]*):kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`   
Required: Yes

 ** [clientId](#API_webrtc_JoinStorageSessionAsViewer_RequestSyntax) **   <a name="KinesisVideo-webrtc_JoinStorageSessionAsViewer-request-clientId"></a>
 The unique identifier for the sender client.   
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 256.  
Pattern: `[a-zA-Z0-9_.-]+`   
Required: Yes

## Response Syntax
<a name="API_webrtc_JoinStorageSessionAsViewer_ResponseSyntax"></a>

```
HTTP/1.1 200
```

## Response Elements
<a name="API_webrtc_JoinStorageSessionAsViewer_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.

## Errors
<a name="API_webrtc_JoinStorageSessionAsViewer_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** AccessDeniedException **   
You do not have required permissions to perform this operation.  
HTTP Status Code: 403

 ** ClientLimitExceededException **   
 Kinesis Video Streams has throttled the request because you have exceeded the limit of allowed client calls. Try making the call later.   
HTTP Status Code: 400

 ** InvalidArgumentException **   
The value for this input parameter is invalid.  
HTTP Status Code: 400

 ** ResourceNotFoundException **   
The specified resource is not found.  
HTTP Status Code: 404

## See Also
<a name="API_webrtc_JoinStorageSessionAsViewer_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-webrtc-storage-2018-05-10/JoinStorageSessionAsViewer) 