Skip to contentSkip to navigationSkip to topbar
On this page

Encrypted Compositions


(warning)

Warning

This documentation is for reference only. We are no longer onboarding new customers to Programmable Video. Existing customers can continue to use the product until December 5, 2026(link takes you to an external page).

We recommend migrating your application to the API provided by our preferred video partner, Zoom. We've prepared this migration guide(link takes you to an external page) to assist you in minimizing any service disruption.

(information)

Overview

overview page anchor

The Twilio Composition Settings REST API lets you configure Twilio to store your compositions encrypted. Composition Settings work per-account (i.e. project). If you activate encryption, all Video Compositions in your account (or project) will get encrypted.

This document contains reference information about the Composition Settings REST API for encryption. For a step-by-step guide, you can also read the Encrypting your Stored Media developer guide



These are the URI schemes for the Composition Settings REST API and the supported methods:

  • /v1/CompositionSettings/Default
    • GET : Retrieves current Composition Settings.
    • POST : Updates the Composition Settings.

Composition Settings instance resource

composition-settings-instance-resource page anchor

The Default CompositionSettings resource holds the default composition settings for the given Twilio account (or project). Its configuration will be applied to all Recording Compositions created in such account (or project).

Base URL

base-url page anchor

The Compositions Settings default resource is located at the following Base URL:

1
https://video.twilio.com/v1/CompositionSettings/Default
2

A CompositionSettings resource has the following properties:

Property nameTypeRequiredDescriptionChild properties
account_sidSID<AC>Optional
Not PII

The SID of the Account that created the CompositionSettings resource.

Pattern: ^AC[0-9a-fA-F]{32}$Min length: 34Max length: 34

friendly_namestringOptional

The string that you assigned to describe the resource and that will be shown in the console


aws_credentials_sidSID<CR>Optional

The SID of the stored Credential resource.

Pattern: ^CR[0-9a-fA-F]{32}$Min length: 34Max length: 34

aws_s3_urlstring<uri>Optional

The URL of the AWS S3 bucket where the compositions are stored. We only support DNS-compliant URLs like https://documentation-example-twilio-bucket/compositions, where compositions is the path in which you want the compositions to be stored. This URL accepts only URI-valid characters, as described in the RFC 3986(link takes you to an external page).


aws_storage_enabledbooleanOptional

Whether all compositions are written to the aws_s3_url. When false, all compositions are stored in our cloud.


encryption_key_sidSID<CR>Optional

The SID of the Public Key resource used for encryption.

Pattern: ^CR[0-9a-fA-F]{32}$Min length: 34Max length: 34

encryption_enabledbooleanOptional

Whether all compositions are stored in an encrypted form. The default is false.


urlstring<uri>Optional

The absolute URL of the resource.

In the table above, the following properties are reserved for the feature called External S3 Storage:

  • aws_credentials_sid
  • aws_s3_url
  • aws_storage_enabled

HTTP GET: Get Settings

http-get page anchor

Retrieves your account's default Composition Settings.

For example:

Fetch Composition SettingsLink to code sample: Fetch Composition Settings
1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function fetchCompositionSettings() {
11
const compositionSetting = await client.video.compositionSettings().fetch();
12
13
console.log(compositionSetting.accountSid);
14
}
15
16
fetchCompositionSettings();

Output

1
{
2
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
3
"friendly_name": "string",
4
"aws_credentials_sid": "CRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
5
"encryption_key_sid": "CRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
6
"aws_s3_url": "https://my-super-duper-bucket.s3.amazonaws.com/my/path/",
7
"aws_storage_enabled": true,
8
"encryption_enabled": true,
9
"url": "https://video.twilio.com/v1/CompositionSettings/Default"
10
}

HTTP POST: Set Settings

http-post page anchor

Sets your account's default Composition Settings. POST requests support the following parameters:

Encoding type:application/x-www-form-urlencoded
SchemaExample
Property nameTypeRequiredDescriptionChild properties
FriendlyNamestringrequired

A descriptive string that you create to describe the resource and show to the user in the console


AwsCredentialsSidSID<CR>Optional

The SID of the stored Credential resource.

Pattern: ^CR[0-9a-fA-F]{32}$Min length: 34Max length: 34

EncryptionKeySidSID<CR>Optional

The SID of the Public Key resource to use for encryption.

Pattern: ^CR[0-9a-fA-F]{32}$Min length: 34Max length: 34

AwsS3Urlstring<uri>Optional

The URL of the AWS S3 bucket where the compositions should be stored. We only support DNS-compliant URLs like https://documentation-example-twilio-bucket/compositions, where compositions is the path in which you want the compositions to be stored. This URL accepts only URI-valid characters, as described in the RFC 3986(link takes you to an external page).


AwsStorageEnabledbooleanOptional

Whether all compositions should be written to the aws_s3_url. When false, all compositions are stored in our cloud.


EncryptionEnabledbooleanOptional

Whether all compositions should be stored in an encrypted form. The default is false.

In the table above, the following parameters are reserved for the feature called External S3 Storage:

  • AwsCredentialsSid
  • AwsS3Url
  • AwsStorageEnabled

Enabling Encrypted Compositions

enable-encryption page anchor

The following code snippets illustrate how you can set Encryption in your Compositions settings:

Creates or updates the configuration to upload encrypted files to an external S3 bucketLink to code sample: Creates or updates the configuration to upload encrypted files to an external S3 bucket
1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function createCompositionSettings() {
11
const compositionSetting = await client.video.compositionSettings().create({
12
awsCredentialsSid: "CRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
13
awsS3Url: "https://my-bucket.s3.amazonaws.com/recordings",
14
awsStorageEnabled: true,
15
encryptionEnabled: true,
16
encryptionKeySid: "CRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
17
friendlyName: "Upload encrypted",
18
});
19
20
console.log(compositionSetting.accountSid);
21
}
22
23
createCompositionSettings();

Output

1
{
2
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
3
"friendly_name": "Upload encrypted",
4
"aws_credentials_sid": "CRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
5
"encryption_key_sid": "CRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
6
"aws_s3_url": "https://my-bucket.s3.amazonaws.com/recordings",
7
"aws_storage_enabled": true,
8
"encryption_enabled": true,
9
"url": "https://video.twilio.com/v1/CompositionSettings/Default"
10
}

Known Problems and Limitations

known-problems-and-limitations page anchor
  • No known problems.

Need some help?

Terms of service

Copyright © 2024 Twilio Inc.