Skip to main content

Create a Recording Template

Create a recording template for an ingest domain, an app, or a stream.

Request

Request-Line

POST /lls/v1.0/template/recording

Request Body

ParameterTypeRequiredDescription
templateNameStringMandatoryrecording template name.
domainStringMandatoryingest domain name
appStringOptionalapp name. if not specified, the recording template will be applied to all apps.
streamStringOptionalstream name. if not specified, the recording template will be applied to all streams.
recordingFromStringMandatoryrecording from. Valid values: ingest, delivery.
recordingFormatStringMandatoryrecording format. Valid values: mp4, hls, dash.
bucketStringMandatorybucket name to store the recording.
pathStringMandatorystorage path under the bucket.

Response

Response Body

ParameterTypeRequiredDescription
templateNameStringMandatoryrecording template name.
createdTimestampMandatoryTimestamp of created time in UTC timezone. Default is now.
statusStringMandatoryStatus of recording template. Valid values: active, inactive.
domainStringMandatoryingest domain name
appStringOptionalapp name. if not specified, the recording template will be applied to all apps.
streamStringOptionalstream name. if not specified, the recording template will be applied to all streams.
recordingFromStringMandatoryrecording from. Valid values: ingest, delivery.
recordingFormatArrayMandatoryrecording formats. Valid values: mp4, hls, dash.

Status Codes, Error Codes and Error Messages

Status CodeError CodeError Message
400LLS.RecordingTemplate.InvalidTemplateNameRecording template name invalid.
400LLS.RecordingTemplate.TemplateNotFoundTemplate not found.
400LLS.RecordingTemplate.DomainNotFoundDomain not found.
400LLS.RecordingTemplate.AppNotFoundApp not found.
400LLS.RecordingTemplate.StreamNotFoundStream not found.
400LLS.RecordingTemplate.InvalidRecordingFromInvalid recording from.
400LLS.RecordingTemplate.InvalidRecordingFormatInvalid recording format.
400LLS.RecordingTemplate.BucketNotFoundBucket not found.
400LLS.RecordingTemplate.InvalidStatusInvalid status.
400LLS.RecordingTemplate.InvalidPathInvalid path.
400LLS.RecordingTemplate.TemplateExistsTemplate already exists.
400LLS.RecordingTemplate.ConflictTemplateTemplate conflict.

Examples

Create a domain-level recording template with mp4 format from ingest stream

Request

POST /lls/v1.0/template/recording HTTP/1.1
{
"templateName": "domainTemplate",
"domain": "ingest.example.com",
"recordingFrom": "ingest",
"recordingFormat": ["mp4"],
"bucket": "my-bucket",
"path": "/recording/mp4/"
}

Successful Response Body

{
"templateName": "domainTemplate",
"created": "2025-07-15T08:47:10Z",
"status": "active",
"domain": "ingest.example.com",
"recordingFrom": "ingest",
"recordingFormat": ["mp4", "hls"],
"bucket": "my-bucket",
"path": "/recording/mp4/"
}

Create a domain+app level recording template with hls format from ingest stream

Request

POST /lls/v1.0/template/recording HTTP/1.1
{
"templateName": "appTemplate",
"domain": "ingest.example.com",
"app": "live",
"recordingFrom": "ingest",
"recordingFormat": ["hls"],
"bucket": "my-bucket",
"path": "/recording/hls/"
}

Successful Response Body

{
"templateName": "appTemplate",
"created": "2025-07-15T08:48:30Z",
"status": "active",
"domain": "ingest.example.com",
"app": "live",
"recordingFrom": "ingest",
"recordingFormat": ["hls"],
"bucket": "my-bucket",
"path": "/recording/hls/"
}

Create a domain+app+stream level recording template with hls format from ingest stream

Request

POST /lls/v1.0/template/recording HTTP/1.1
{
"templateName": "streamTemplate",
"domain": "ingest.example.com",
"app": "live",
"stream": "stream1",
"recordingFrom": "ingest",
"recordingFormat": ["hls"],
"bucket": "my-bucket",
"path": "/recording/hls/"
}

Successful Response Body

{
"templateName": "streamTemplate",
"created": "2025-07-15T08:49:45Z",
"status": "active",
"domain": "ingest.example.com",
"app": "live",
"stream": "stream1",
"recordingFrom": "ingest",
"recordingFormat": ["hls"],
"bucket": "my-bucket",
"path": "/recording/hls/"
}

Create a recording template from delivery stream

Request

POST /lls/v1.0/template/recording HTTP/1.1
{
"templateName": "deliveryTemplate",
"domain": "ingest.example.com",
"app": "live",
"stream": "stream1",
"recordingFrom": "delivery",
"recordingFormat": ["hls"],
"bucket": "my-bucket",
"path": "/recording/hls/"
}

Successful Response Body

{
"templateName": "deliveryTemplate",
"created": "2025-07-15T08:51:30Z",
"status": "active",
"domain": "ingest.example.com",
"app": "live",
"stream": "stream1",
"recordingFrom": "delivery",
"recordingFormat": ["hls"],
"bucket": "my-bucket",
"path": "/recording/hls/"
}
Rate Limits

Rate limiting is posed upon the API, please kindly check your API calls to ensure complying with the rate limit below:

  • 100 requests per minute
  • 1000 requests per hour