Create composition hook

POST /v1/CompositionHooks

Recording composition hooks

application/x-www-form-urlencoded

Body

  • 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.

  • 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.

  • VideoLayout

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

  • 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.

  • AudioSourcesExcluded array[string]

    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.

  • Resolution string

    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.

  • Format string

    The container format of the media files used by the compositions created by the composition hook. 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.

  • 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 GET or POST.

  • 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.

Responses

  • 201 application/json

    Created

    Hide headers attributes Show headers attributes
    • Access-Control-Allow-Origin string

      Specify the origin(s) allowed to access the resource

    • Access-Control-Allow-Methods string

      Specify the HTTP methods allowed when accessing the resource

    • Access-Control-Allow-Headers string

      Specify the headers allowed when accessing the resource

    • Access-Control-Allow-Credentials boolean

      Indicates whether the browser should include credentials

    • Access-Control-Expose-Headers string

      Headers exposed to the client

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

      The SID of the Account that created the CompositionHook resource.

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

    • friendly_name string | null

      The string that you assigned to describe the resource. Can be up to 100 characters long and must be unique within the account.

    • enabled boolean | null

      Whether the CompositionHook is active. When true, the CompositionHook is triggered for every completed Group Room on the account. When false, the CompositionHook is never triggered.

    • date_created string(date-time) | null

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

    • date_updated string(date-time) | null

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

    • sid string | null

      The unique string that we created to identify the CompositionHook resource.

      Minimum length is 34, maximum length is 34. Format should match the following pattern: ^HK[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. 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 property 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. Please, be aware that either video_layout or audio_sources have to be provided to get a valid creation request

    • audio_sources_excluded array[string] | null

      The array of track names to exclude from the compositions created by the composition hook. 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 property 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.

    • video_layout object | null

      A JSON object that describes the video layout of the composition in terms of regions as specified in the HTTP POST request that created the CompositionHook resource. See POST Parameters for more information. Please, be aware that either video_layout or audio_sources have to be provided to get a valid creation request

    • resolution string | null

      The dimensions of the video image in pixels expressed as columns (width) and rows (height). The string's format is {width}x{height}, such as 640x480.

    • trim boolean | null

      Whether intervals with no media are clipped, as specified in the POST request that created the CompositionHook resource. 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.

    • format string

      The container format of the media files used by the compositions created by the composition hook. 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.

    • status_callback string(uri) | null

      The URL we call using the status_callback_method to send status information to your application.

    • status_callback_method string(http-method) | null

      The HTTP method we should use to call status_callback. Can be POST or GET and defaults to POST.

      Values are GET or POST.

    • url string(uri) | null

      The absolute URL of the resource.

POST /v1/CompositionHooks
curl \
 --request POST 'https://video.twilio.com/v1/CompositionHooks' \
 --user "username:password" \
 --header "Content-Type: application/x-www-form-urlencoded" \
 --data 'Trim=true&Format=mp4&Enabled=false&Resolution=1280x720&VideoLayout=%7B%7D&AudioSources=user*&AudioSources=moderator&FriendlyName=My+composition+hook&StatusCallback=http%3A%2F%2Fwww.example.com&AudioSourcesExcluded=admin&StatusCallbackMethod=POST'
Request example
{"Trim"=>true, "Format"=>"mp4", "Enabled"=>false, "Resolution"=>"1280x720", "VideoLayout"=>"{}", "AudioSources"=>["user*", "moderator"], "FriendlyName"=>"My composition hook", "StatusCallback"=>"http://www.example.com", "AudioSourcesExcluded"=>["admin"], "StatusCallbackMethod"=>"POST"}
Response examples (201)
{
  "sid": "HKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "url": "https://video.twilio.com/v1/CompositionHooks/HKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "trim": true,
  "format": "mp4",
  "enabled": false,
  "resolution": "1280x720",
  "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "date_created": "2015-07-30T20:00:00Z",
  "date_updated": null,
  "video_layout": {
    "custom": {
      "reuse": "show_oldest",
      "width": 800,
      "x_pos": 100,
      "y_pos": 600,
      "z_pos": 10,
      "height": 0,
      "max_rows": 0,
      "max_columns": 0,
      "video_sources": [
        "user*"
      ],
      "cells_excluded": [
        2,
        3
      ],
      "video_sources_excluded": [
        "moderator"
      ]
    }
  },
  "audio_sources": [
    "user*",
    "moderator"
  ],
  "friendly_name": "My composition hook",
  "status_callback": "http://www.example.com",
  "audio_sources_excluded": [
    "admin"
  ],
  "status_callback_method": "POST"
}