Recordings
Check if recording is possible
- GET /channels/(string: uuid)/record/possible
Method to check if recording can be started for given Channel. Recording can be started if at least one Owner of a Channel has valid and confirmed email address so that Horn can send email when recording will be available.
- Parameters:
uuid (string) – The channel ID to check recording availability for for
Download asset using JWT
Download recording
- GET /channels/(string: channelId)/recordings/(string: recordingId)/download
Generate URL to download the recording. This method will result in an time-limited download URL that allows to get recording assets. Only channel owner can invoke that call.
- Parameters:
channelId (string) – Channel for which given recording belongs
recordingId (string) – Recording identifier you want to fetch details of
- Query Parameters:
ttl (string) – Optional time to live parameter. Specifies how long URL will be valid. Specify as a number and a unit, e.g. “1m” for 1 minute, “1d” for one day, etc. If not provided, the default TTL (5 minutes) will be used.
kind (string)
- Response JSON Object:
url (string)
Get recording asset details
- GET /channels/(string: channelId)/recordings/(string: recordingId)/assets/(string: assetId)
Get details of one recording asset
- Parameters:
channelId (string) – Channel for which given recording belongs
recordingId (string) – Recording identifier you want to fetch details of
assetId (string) – Actual Asset id you want to fetch details of
- Response JSON Object:
format (string) – Format of the file. I.e. CMS or MP4
streamUserId (option[long]) – [default: None] ID of an user that this asset belongs to. It makes sense only for individual streams
startTime (long)
size (option[long]) – [default: None] Size of asset in bytes
state (recordingassetstate.value) – State of this asset uploading process
url (option[string]) – [default: None] URL for this asset
relativePath (option[string]) – Path to this asset relative to recording root (when uploading to provider)
label (string) – Some description of this asset
endTime (option[long])
id (string) – The ID of this asset
userId (option[long]) – [default: None] ID of user that has the uploaded file (the user who setup recording details for channel and received the file on his provider account.
kind (recordingassetkind.value) – What kind of asset type is it (audio, video, other)
isIndividual (boolean) – Is this an individual stream from some user?
recordingId (string) – The ID of the recording
group (option[string]) – [default: None] To which group given asset belongs. The group is usually just a streamId from the CMS StartStream message but could also be used when we group two individual streams into one asset during recording (i.e. when a reconnection happens for a stream)
Get recording details
- GET /channels/(string: channelId)/recordings/(string: recordingId)
Get details about one specific recording.
- Parameters:
channelId (string) – Channel for which given recording belongs
recordingId (string) – Recording identifier you want to fetch details of
- Response JSON Object:
channel (string) – The ID of the channel
startTime (long) – When recording started
endTime (option[long]) – When recording ended. None means recording is still in progress
id (string) – The ID of this recording
session (string) – The ID of the channel session
readyTime (option[long]) – When recording was processed and became ready to download. None means recording is still processing.
Get recording download credentials
- GET /channels/(string: channelId)/recordings/(string: recordingId)/credentials
Generate a JWT token that can be used to download recording assets. The token will be valid for the specified duration.
- Parameters:
channelId (string) – Channel for which given recording belongs
recordingId (string) – Recording identifier you want to fetch details of
- Query Parameters:
ttl (string) – Optional time to live parameter. Specifies how long token will be valid. Specify as a number and a unit, e.g. “1m” for 1 minute, “1d” for one day, etc. If not provided, the default TTL (5 minutes) will be used.
- Response JSON Object:
jwt (string) – The JWT token for recording downloads
List available recording assets
- GET /channels/recording/assets/(string: jwtToken)
Returns a list of available assets that can be downloaded using the provided JWT token. The assets can include the main recording archive, combined video, captions, and other formats.
- Parameters:
jwtToken (string) – JWT token with recording payload
- Response JSON Array of Objects:
format (string) – File format of the asset
size (option[long]) – Size of the asset in bytes
label (string) – Human readable label for the asset
id (string) – Asset identifier
language (option[string]) – Optional language code for text assets like captions
kind (string) – Type of asset (archive, combined_video, captions, other)
List recording assets
- GET /channels/(string: channelId)/recordings/(string: recordingId)/assets
List recordings assets generated for given channel recording
- Parameters:
channelId (string) – Channel for which given recording belongs
recordingId (string) – Recording identifier you want to fetch details of
- Response JSON Array of Objects:
format (string) – Format of the file. I.e. CMS or MP4
streamUserId (option[long]) – [default: None] ID of an user that this asset belongs to. It makes sense only for individual streams
startTime (long)
size (option[long]) – [default: None] Size of asset in bytes
state (recordingassetstate.value) – State of this asset uploading process
url (option[string]) – [default: None] URL for this asset
relativePath (option[string]) – Path to this asset relative to recording root (when uploading to provider)
label (string) – Some description of this asset
endTime (option[long])
id (string) – The ID of this asset
userId (option[long]) – [default: None] ID of user that has the uploaded file (the user who setup recording details for channel and received the file on his provider account.
kind (recordingassetkind.value) – What kind of asset type is it (audio, video, other)
isIndividual (boolean) – Is this an individual stream from some user?
recordingId (string) – The ID of the recording
group (option[string]) – [default: None] To which group given asset belongs. The group is usually just a streamId from the CMS StartStream message but could also be used when we group two individual streams into one asset during recording (i.e. when a reconnection happens for a stream)
List recordings for channel
- GET /channels/(string: channelId)/recordings
List recordings for given channel
- Parameters:
channelId (string) – Channel UUID for which you want to list recordings
- Query Parameters:
session (string) – If defined, recordings will be filtered just for this particular session
limit (string) – Limit amount of results. Needed for implementing pagination
offset (string) – Offset at which start looking for results in database. Needed for implementing pagination
sort (string) – By what column sort results. Possible values: [“started”, “ended”]. Default is “started”
order (string) – In which order sort results. Possible values: [“asc”, “desc”]. Default is “desc”
Response:
{ total: number results: list }
where total is a total amount of elements matching criteria results objects has following fields:
{ channel: string // The ID of the channel startTime: long // When recording started endTime: option[long] // When recording ended. None means recording is still in progress id: string // The ID of this recording session: string // The ID of the channel session readyTime: option[long] // When recording was processed and became ready to download. None means recording is still processing. }
Start recording
- POST /channels/(string: uuid)/record
Initiate a recording for the requested channel. If this request is made for unsupported channel modes, a RECORDING_NOT_PERMITTED error is returned. Recordings will be uploaded in 30 minute segments to the upload provider. Recordings can be terminated in request and are also terminated if the channel becomes inactive. Recording can only be initiated by an operator. Note that recordings can be configured by one operator to upload to a specific provider but can be initiated by any operator.
- Parameters:
uuid (string) – The channel ID to start recording for.