Create composition hook

POST /v1/CompositionHooks

Recording composition hooks

Body

  • AudioSources array[string]

    An array of track names from the same group room to merge into the compositions created by the composition hook. Can include zero or more track names. A composition triggered by the composition hook includes all audio sources specified in audio_sources except those specified in audio_sources_excluded. The track names in this parameter can include an asterisk as a wild card character, which matches zero or more characters in a track name. For example, student* includes tracks named student as well as studentTeam.

  • An array of track names to exclude. A composition triggered by the composition hook includes all audio sources specified in audio_sources except for those specified in audio_sources_excluded. The track names in this parameter can include an asterisk as a wild card character, which matches zero or more characters in a track name. For example, student* excludes student as well as studentTeam. This parameter can also be empty.

  • Enabled boolean

    Whether the composition hook is active. When true, the composition hook will be triggered for every completed Group Room in the account. When false, the composition hook will never be triggered.

  • Format string

    The container format of the media files used by the compositions created by the composition hook. Can be: mp4 or webm and the default is webm. If mp4 or webm, audio_sources must have one or more tracks and/or a video_layout element must contain a valid video_sources list, otherwise an error occurs.

    Values are mp4 or webm.

  • FriendlyName string Required

    A descriptive string that you create to describe the resource. It can be up to 100 characters long and it must be unique within the account.

  • A string that describes the columns (width) and rows (height) of the generated composed video in pixels. Defaults to 640x480. The string's format is {width}x{height} where:

    • 16 <= {width} <= 1280
    • 16 <= {height} <= 1280
    • {width} * {height} <= 921,600

    Typical values are:

    • HD = 1280x720
    • PAL = 1024x576
    • VGA = 640x480
    • CIF = 320x240

    Note that the resolution imposes an aspect ratio to the resulting composition. When the original video tracks are constrained by the aspect ratio, they are scaled to fit. See Specifying Video Layouts for more info.

  • StatusCallback string(uri)

    The URL we should call using the status_callback_method to send status information to your application on every composition event. If not provided, status callback events will not be dispatched.

  • StatusCallbackMethod string(http-method)

    The HTTP method we should use to call status_callback. Can be: POST or GET and the default is POST.

    Values are HEAD, GET, POST, PATCH, PUT, or DELETE.

  • Trim boolean

    Whether to clip the intervals where there is no active media in the Compositions triggered by the composition hook. The default is true. Compositions with trim enabled are shorter when the Room is created and no Participant joins for a while as well as if all the Participants leave the room and join later, because those gaps will be removed. See Specifying Video Layouts for more info.

  • An object that describes the video layout of the composition hook in terms of regions. See Specifying Video Layouts for more info.

Responses

  • Created

    Hide response attributes Show response attributes object
    • account_sid string | null

      The SID of the Account that created the resource

      Minimum length is 34, maximum length is 34. Format should match the following pattern: ^AC[0-9a-fA-F]{32}$.

    • audio_sources array[string] | null

      The array of track names to include in the compositions created by the composition hook

    • audio_sources_excluded array[string] | null

      The array of track names to exclude from the compositions created by the composition hook

    • date_created string(date-time) | null

      The ISO 8601 date and time in GMT when the resource was created

    • date_updated string(date-time) | null

      The ISO 8601 date and time in GMT when the resource was last updated

    • enabled boolean | null

      Whether the CompositionHook is active

    • format string | null

      The container format of the media files used by the compositions created by the composition hook

      Values are mp4 or webm.

    • friendly_name string | null

      The string that you assigned to describe the resource

    • resolution string | null

      The dimensions of the video image in pixels expressed as columns (width) and rows (height)

    • sid string | null

      The unique string that identifies the resource

      Minimum length is 34, maximum length is 34. Format should match the following pattern: ^HK[0-9a-fA-F]{32}$.

    • status_callback string(uri) | null

      The URL to send status information to your application

    • status_callback_method string(http-method) | null

      The HTTP method we should use to call status_callback

      Values are HEAD, GET, POST, PATCH, PUT, or DELETE.

    • trim boolean | null

      Whether intervals with no media are clipped

    • url string(uri) | null

      The absolute URL of the resource

    • A JSON object that describes the video layout of the Composition

POST /v1/CompositionHooks
curl \
 -X POST https://video.twilio.com/v1/CompositionHooks \
 --user "username:password" \
 -H "Content-Type: application/x-www-form-urlencoded" \
 -d 'AudioSources=string&AudioSourcesExcluded=string&Enabled=true&Format=mp4&FriendlyName=string&Resolution=string&StatusCallback=https%3A%2F%2Fexample.com&StatusCallbackMethod=HEAD&Trim=true'
Request example
{
  "AudioSources": [
    "string"
  ],
  "AudioSourcesExcluded": [
    "string"
  ],
  "Enabled": true,
  "Format": "mp4",
  "FriendlyName": "string",
  "Resolution": "string",
  "StatusCallback": "https://example.com",
  "StatusCallbackMethod": "HEAD",
  "Trim": true
}
Request examples
{
  "AudioSources": [
    "string"
  ],
  "AudioSourcesExcluded": [
    "string"
  ],
  "Enabled": true,
  "Format": "mp4",
  "FriendlyName": "string",
  "Resolution": "string",
  "StatusCallback": "https://example.com",
  "StatusCallbackMethod": "HEAD",
  "Trim": true
}
Response examples (201)
{
  "account_sid": "string",
  "audio_sources": [
    "string"
  ],
  "audio_sources_excluded": [
    "string"
  ],
  "date_created": "2023-05-04T09:42:00+00:00",
  "date_updated": "2023-05-04T09:42:00+00:00",
  "enabled": true,
  "format": "mp4",
  "friendly_name": "string",
  "resolution": "string",
  "sid": "string",
  "status_callback": "https://example.com",
  "status_callback_method": "HEAD",
  "trim": true,
  "url": "https://example.com"
}
Response examples (201)
{
  "account_sid": "string",
  "audio_sources": [
    "string"
  ],
  "audio_sources_excluded": [
    "string"
  ],
  "date_created": "2024-05-04T09:42:00+00:00",
  "date_updated": "2024-05-04T09:42:00+00:00",
  "enabled": true,
  "format": "mp4",
  "friendly_name": "string",
  "resolution": "string",
  "sid": "string",
  "status_callback": "https://example.com",
  "status_callback_method": "HEAD",
  "trim": true,
  "url": "https://example.com"
}