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
Parameter | Type | Required | Description |
---|---|---|---|
templateName | String | Mandatory | recording template name. |
domain | String | Mandatory | ingest domain name |
app | String | Optional | app name. if not specified, the recording template will be applied to all apps. |
stream | String | Optional | stream name. if not specified, the recording template will be applied to all streams. |
recordingFrom | String | Mandatory | recording from. Valid values: ingest, delivery. |
recordingFormat | String | Mandatory | recording format. Valid values: mp4, hls, dash. |
bucket | String | Mandatory | bucket name to store the recording. |
path | String | Mandatory | storage path under the bucket. |
Response
Response Body
Parameter | Type | Required | Description |
---|---|---|---|
templateName | String | Mandatory | recording template name. |
created | Timestamp | Mandatory | Timestamp of created time in UTC timezone. Default is now. |
status | String | Mandatory | Status of recording template. Valid values: active, inactive. |
domain | String | Mandatory | ingest domain name |
app | String | Optional | app name. if not specified, the recording template will be applied to all apps. |
stream | String | Optional | stream name. if not specified, the recording template will be applied to all streams. |
recordingFrom | String | Mandatory | recording from. Valid values: ingest, delivery. |
recordingFormat | Array | Mandatory | recording formats. Valid values: mp4, hls, dash. |
Status Codes, Error Codes and Error Messages
Status Code | Error Code | Error Message |
---|---|---|
400 | LLS.RecordingTemplate.InvalidTemplateName | Recording template name invalid. |
400 | LLS.RecordingTemplate.TemplateNotFound | Template not found. |
400 | LLS.RecordingTemplate.DomainNotFound | Domain not found. |
400 | LLS.RecordingTemplate.AppNotFound | App not found. |
400 | LLS.RecordingTemplate.StreamNotFound | Stream not found. |
400 | LLS.RecordingTemplate.InvalidRecordingFrom | Invalid recording from. |
400 | LLS.RecordingTemplate.InvalidRecordingFormat | Invalid recording format. |
400 | LLS.RecordingTemplate.BucketNotFound | Bucket not found. |
400 | LLS.RecordingTemplate.InvalidStatus | Invalid status. |
400 | LLS.RecordingTemplate.InvalidPath | Invalid path. |
400 | LLS.RecordingTemplate.TemplateExists | Template already exists. |
400 | LLS.RecordingTemplate.ConflictTemplate | Template 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