Skip to main content

API reference

In this document you will find all API methods available for Cloud Video Kit.

Authorization

All Cloud Video Kit API methods require authentication with API key obtained from Cloud Video Kit console. Learn more from Authorization document.

API endpoints

Each tenant has it's own unique set of URLs used for Cloud Video Kit API. Make sure to use your tenant's name in all used endpoints.

Example: https://{tenant_name}.api.videokit.cloud/

You can find all endpoints for your tenant on API cheatsheet page in Cloud Video Kit console.

Postman collection

You can download Postman collecction of all API methods with the button below, and import it directly into Postman.

Run In Postman

Make sure to update variables in the collection with your credentials, and you're good to go!

List of available methods


VOD

Path
Method
Assetcreate_VOD_asset list_VOD_assets get_VOD_asset update_VOD_asset delete_VOD_asset delete_multiple_VOD_assets add_output_to_VOD remove_output_from_VOD
Filedelete_file get_file update_file delete_multiple_files list_files get_file_preview_URL start_file_upload get_next_part_upload_URL finish_file_upload cancel_file_upload detect_media_tracks
FileTypesget_file_types
Languageget_languages

Live

Path
Method
Channellist_channels create_channel get_channel_details update_channel delete_channel start_channel stop_channel get_channel_status get_channel_statistics get_channels_status get_channel_configuration get_channel_limit
Eventcreate_event list_events get_event_details update_event delete_event delete_multiple_events

Recorder

Path
Method
Recordingcreate_recording list_recordings get_recoriding_details update_recording delete_recording delete_multiple_recordings remove_output_from_recording add_output_to_recording

Streaming

Path
Method
Adsget_ads_count_analytics get_ads_sum_analytics get_ads_avg_analytics
Assetlist_assets get_asset_details update_asset update_asset_settings
Chaptersdelete_asset_chapter create_asset_chapters
Domainslist_allowed_domains add_allow_domain delete_allow_domain
Imagesdelete_asset_image create_asset_images start_image_upload finish_image_upload get_next_part_upload_url list_images get_image_details delete_uploaded_image delete_multiple_images get_image_frames
Impressionslist_impressions
Metricsget_max_concurrent_viewers
QRCodegenerate_QR_code
Queriesget_queries_median_analytics get_queries_avg_analytics get_queries_count_analytics get_queries_sum_analytics
Settingsget_settings
Tagsdelete_asset_tag create_asset_tags

Core

Path
Method
Tenantget_tenant_status
API accessget_api_keys get_single_api_key create_api_key update_api_key delete_api_key

Transcoder

Path
Method
Presetslist_available_presets

VOD


Create VOD Asset

Creates a VOD asset using input file(s). The input file(s) will be transcoded to the format defined by the preset.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/assets
HTTP methodPOST

Request

ParameterRequiredTypeNotes
transcodedSourcesYesArray of VodSourceArray of source files to be transcoded VodSource
presetYesstringTranscoding preset to be used
metadataNoobjectAdditional metadata for the asset
titleNostringTitle of the asset

Response

FieldTypeNotes
idstringID of the created or processed asset
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/vod/v1/assets \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"transcodedSources": [
{
"fileId": "example_file_id",
"transcodingTracks": [
{
"trackSelector": {
"trackId": "video_track_1"
},
"type": "Video",
"language": "en",
"name": "Main Video Track"
}
],
"fileTypesFlag": "Video"
}
],
"preset": "example_preset",
"metadata": {
"key1": "value1",
"key2": "value2"
},
"title": "My VOD Asset"
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc"
}

List VOD Assets

Retrieves a list of VOD assets.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/assets
HTTP methodGET

Request

ParameterRequiredTypeNotes
statusesNoarray of stringsFilter by asset status (e.g., Available, Processing, etc.).
limitNoint32Number of items per page (default: 100).
pageNoint32Page number to retrieve (default: 1).
fileIdNostring <uuid>Filter assets created with this file ID.
queryNostringText search query.
sortNostringField to sort by (e.g., Metadata.Title, Id, CreateDate).
descNobooleanSort in descending order (default: false).
idsNoarray of stringsFilter by specific asset IDs.
createDateStartNostring <date-time>Filter assets created after this date.
createDateEndNostring <date-time>Filter assets created before this date.
lastModificationDateStartNostring <date-time>Filter assets modified after this date.
lastModificationDateEndNostring <date-time>Filter assets modified before this date.
durationFromNoint64Filter assets with duration greater than or equal to this value.
durationToNoint64Filter assets with duration less than or equal to this value.
presetsNoarray of stringsFilter by transcoding presets.
tagsNoarray of stringsFilter by tags.
attributesNoarray of stringsFilter by attributes in the format [key]=value.

Response

FieldTypeNotes
itemsarray of VodAssetList of VOD assets.
pageCountint32Total number of pages.
pageSizeint32Number of items per page.
totalCountint32Total number of matching items.
pageNumberint32Current page number.
hasMorebooleanIndicates if more pages are available.
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/vod/v1/assets?limit=10&page=1' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "12345678-1234-1234-1234-123456789abc",
"preset": "mp4",
"title": "Sample VOD",
"status": "Available",
"createDate": "2025-06-01T12:00:00Z",
"lastModificationDate": "2025-06-02T12:00:00Z"
}
],
"pageCount": 1,
"pageSize": 10,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get VOD Asset

Retrieves details of a specific VOD asset.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id}
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringVOD asset ID

Response

FieldTypeNotes
idstringVOD asset ID
presetstringTranscoding preset used
transcodedJobIdstringID of the transcoding job
titlestringAsset title
metadataobjectAdditional metadata
tenantIdstringTenant ID
createDatestring <date-time>Creation date
lastModificationDatestring <date-time>Last modification date
statusAssetStatusCurrent status of the asset
fileIdsobjectMap of file IDs to FileTypesFlag
sourcesArray of VodSourceSource files used
endpointsArray of EndpointInfoAvailable endpoints for the asset. EndpointInfo
outputsArray of EntityTranscodingOutputTranscoding outputs. EntityTranscodingOutput
errorMessagestringError message if any
durationMillisecondsint64Duration of the asset in milliseconds
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/vod/v1/assets/12345678-1234-1234-1234-123456789abc \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"preset": "example_preset",
"title": "Sample VOD Asset",
"metadata": {
"key1": "value1",
"key2": "value2"
},
"tenantId": "98765432-9876-9876-9876-987654321fed",
"createDate": "2023-07-01T12:00:00Z",
"lastModificationDate": "2023-07-01T14:30:00Z",
"status": "Available",
"fileIds": {
"video_file_id": "Video"
},
"sources": [
{
"fileId": "video_file_id",
"fileTypesFlag": "Video"
}
],
"endpoints": [
{
"id": "endpoint_1",
"accessType": "Http",
"format": "HLS",
"url": "https://example.com/stream/asset.m3u8"
}
],
"durationMilliseconds": 360000
}

Update VOD Asset

Updates metadata, title, tags, or attributes of a specific VOD asset.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id}
HTTP methodPATCH

Request

ParameterRequiredTypeNotes
idYesstring <uuid>ID of the VOD asset to update.
metadataNoobjectKey-value pairs to update asset metadata.
titleNostringNew title for the asset.
tagsNoarray of stringsTags to associate with the asset.
attributesNoarray of stringsAttributes in the format [key]=value.

Response

FieldTypeNotes
idstring <uuid>ID of the updated asset.
titlestringUpdated title.
metadataobjectUpdated metadata.
tagsarray of stringsUpdated tags.
attributesarray of stringsUpdated attributes.
statusstringCurrent status of the asset.
createDatestring <date-time>Creation timestamp.
lastModificationDatestring <date-time>Last modification timestamp.
REQUEST
curl -X PATCH \
https://{tenant_name}.api.videokit.cloud/vod/v1/assets/12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"title": "Updated Asset Title",
"metadata": {
"Genre": "Documentary",
"Language": "English"
},
"tags": ["education", "history"],
"attributes": ["category=learning"]
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"title": "Updated Asset Title",
"metadata": {
"Genre": "Documentary",
"Language": "English"
},
"tags": ["education", "history"],
"attributes": ["category=learning"],
"status": "Available",
"createDate": "2025-06-01T12:00:00Z",
"lastModificationDate": "2025-07-04T09:00:00Z"
}

Delete VOD Asset

Deletes a specific VOD asset.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
idYesstringVOD asset ID

Response

A successful deletion returns an HTTP 200 status code with no body.

REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/vod/v1/assets/12345678-1234-1234-1234-123456789abc \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
// No content in response body

Delete Multiple VOD Assets

Deletes multiple VOD assets in a single request.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/assets/deletemany
HTTP methodPOST

Request

ParameterRequiredTypeNotes
bodyYesArray of stringArray of VOD asset IDs to be deleted

Response

FieldTypeNotes
(asset_id)ServiceResponseObject containing the deletion status for each asset
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/vod/v1/assets/deletemany \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '["12345678-1234-1234-1234-123456789abc", "87654321-4321-4321-4321-987654321fed"]'
RESPONSE
{
"12345678-1234-1234-1234-123456789abc": {
"status": {
"code": "success",
"status": 200
},
"success": true
},
"87654321-4321-4321-4321-987654321fed": {
"status": {
"code": "success",
"status": 200
},
"success": true
}
}

Add Output to VOD

Adds a new output (e.g., transcoding preset) to an existing VOD asset.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id}/outputs
HTTP methodPOST

Request

ParameterRequiredTypeNotes
idYesstring (uuid)ID of the VOD asset to which the output will be added.
presetYesstringTranscoding preset name (e.g., mp4).
idNostringOptional ID for the output.
expirationDateNostring (date-time)Optional expiration date for the output.
harvestedEndpointInfosNoarray of objectsOptional list of endpoint info objects.

Response

FieldTypeNotes
outputIdstringID of the newly created output.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id}/outputs \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"preset": "mp4",
"id": "output-1080p",
"expirationDate": "2050-01-01T00:00:00Z"
}'
RESPONSE
{
"outputId": "output-1080p"
}

Remove Output from VOD

Deletes a specific output from a VOD asset.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id}/outputs/{outputId}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
idYesstring (uuid)ID of the VOD asset.
outputIdYesstringID of the output to delete.

Response

A successful deletion returns an HTTP 200 status code with no body.

REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id}/outputs/{outputId} \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
HTTP/1.1 200 OK

Delete File

Deletes a specific file.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
idYesstringFile ID

Response

FieldTypeNotes
deletedFileKeystringKey of the deleted file
REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/vod/v1/files/file_12345 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"deletedFileKey": "file_12345"
}

Get File

Retrieves details of a specific file.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringFile ID

Response

FieldTypeNotes
idstringFile ID
tenantIdstringTenant ID
fileKeystringKey of the file
metadataobjectAdditional metadata for the file
statusUploadFileStatusCurrent status of the file
createDatestring <date-time>Creation date
lastModificationDatestring <date-time>Last modification date
vodAssetsArray of stringIDs of VOD assets using this file
fileTypesFileTypesFlagType of the file
fileSizeint64Size of the file in bytes
s3UristringS3 URI of the file
locationstringLocation of the file
bucketstringS3 bucket name
orginalFileNamestringOriginal file name
namestringCurrent name of the file
friendlyNamestringFriendly name of the file
tracksArray of TranscodingTrackDetected tracks in the file TranscodingTrack
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/vod/v1/files/file_12345 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "file_12345",
"tenantId": "98765432-9876-9876-9876-987654321fed",
"fileKey": "path/to/file.mp4",
"metadata": {
"key1": "value1",
"key2": "value2"
},
"status": "Completed",
"createDate": "2023-07-01T12:00:00Z",
"lastModificationDate": "2023-07-01T12:00:00Z",
"vodAssets": ["asset_id_1", "asset_id_2"],
"fileTypes": "Video",
"fileSize": 1048576,
"s3Uri": "s3://bucket-name/path/to/file.mp4",
"location": "path/to/file.mp4",
"bucket": "bucket-name",
"orginalFileName": "original_file.mp4",
"name": "My Video File",
"friendlyName": "My Awesome Video",
"tracks": [
{
"trackSelector": {
"trackId": "video_1"
},
"type": "Video",
"language": "en",
"name": "Main Video Track"
}
]
}

Update File

Updates metadata or properties of an uploaded file.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}
HTTP methodPATCH

Request

ParameterRequiredTypeNotes
idYesstring (uuid)ID of the file to update.
metadataNoobjectKey-value pairs to update in file metadata.
nameNostringNew internal name for the file.
friendlyNameNostringUser-friendly name for the file.
tagsNoarray of stringsTags to assign to the file.
attributesNoarray of stringsAttributes in the format [key]=value.

Response

FieldTypeNotes
idstring (uuid)File identifier.
fileKeystringFile storage key.
statusstringUpload status (e.g., Completed).
fileSizeint64Size of the file in bytes.
namestringInternal name of the file.
friendlyNamestringUser-friendly name.
tagsarray of stringsTags assigned to the file.
attributesarray of stringsCustom attributes.
createDatestring (date-time)File creation timestamp.
lastModificationDatestring (date-time)Last modification timestamp.
REQUEST
curl -X PATCH \
https://{tenant_name}.api.videokit.cloud/vod/v1/files/file_12345 \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"friendlyName": "Updated File Name",
"metadata": {
"Category": "Tutorial"
},
"tags": ["learning", "video"]
}'
RESPONSE
{
"id": "file_12345",
"fileKey": "tenant_id/sources/images/uploaded/file.jpg",
"status": "Completed",
"fileSize": 901353,
"name": "updated_file.jpg",
"friendlyName": "Updated File Name",
"tags": ["learning", "video"],
"attributes": ["category=tutorial"],
"createDate": "2023-06-14T15:49:36.797Z",
"lastModificationDate": "2023-06-14T15:49:36.797Z"
}

Delete Multiple Files

Deletes multiple files in a single request.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files/deletemany
HTTP methodPOST

Request

ParameterRequiredTypeNotes
bodyYesArray of stringArray of file IDs to be deleted

Response

FieldTypeNotes
(file_id)ServiceResponseObject containing the deletion status for each file
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/vod/v1/files/deletemany \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '["file_12345", "file_67890"]'
RESPONSE
{
"file_12345": {
"status": {
"code": "success",
"status": 200
},
"success": true
},
"file_67890": {
"status": {
"code": "success",
"status": 200
},
"success": true
}
}

List Files

Retrieves a list of uploaded files.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files
HTTP methodGET

Request

ParameterRequiredTypeNotes
limitNoint32Number of items per page (default: 100).
pageNoint32Page number to retrieve (default: 1).
fileTypeNostringFilter by file type (e.g., Video, Audio, Caption).
statusNostringFilter by file status (e.g., Uploading, Completed, Error).
queryNostringText search query.
sortNostringField to sort by (e.g., CreateDate, FileSize, Metadata.FriendlyName).
descNobooleanSort descending (default: false).
idsNoarray of stringsFilter by specific file IDs.
createDateStartNostring (date-time)Filter by creation date (start).
createDateEndNostring (date-time)Filter by creation date (end).
lastModificationDateStartNostring (date-time)Filter by last modification date (start).
lastModificationDateEndNostring (date-time)Filter by last modification date (end).
statusesNoarray of stringsFilter by multiple statuses.
tagsNoarray of stringsFilter by tags.
attributesNoarray of stringsFilter by attributes (e.g., [key]=value).

Response

FieldTypeNotes
itemsarray of UploadedFileResultList of uploaded files.
pageCountint32Total number of pages.
pageSizeint32Number of items per page.
totalCountint32Total number of items.
pageNumberint32Current page number.
hasMorebooleanIndicates if more pages exist.
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/vod/v1/files?limit=10&page=1' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"fileKey": "tenant_id/sources/images/uploaded/file.jpg",
"status": "Completed",
"fileSize": 901353,
"name": "file.jpg",
"friendlyName": "My File",
"tags": ["tag1", "tag2"],
"attributes": ["category=demo"],
"createDate": "2023-06-14T15:49:36.797Z",
"lastModificationDate": "2023-06-14T15:49:36.797Z"
}
],
"pageCount": 1,
"pageSize": 10,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get File Preview URL

Retrieves a preview URL for a specific file. The URL will expire after some time.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}/preview
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringFile ID

Response

FieldTypeNotes
linkstringPreview URL for the file
expirationDatestring <date-time>Expiration date of the preview URL
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/vod/v1/files/file_12345/preview \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"link": "https://preview.example.com/file_12345?token=abc123",
"expirationDate": "2023-07-02T12:00:00Z"
}

Start File Upload

Initiates a file upload process.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files/start
HTTP methodPOST

Request

ParameterRequiredTypeNotes
nameYesstringName of the file (max 1024 characters)
friendlyNameYesstringFriendly name of the file (max 1024 characters)
metadataNoobjectAdditional metadata for the file
fileSizeYesint64Size of the file in bytes

Response

FieldTypeNotes
fileIdstringID of the file
multipartUrlsArray of stringsURLs for multipart upload
fileKeystringKey of the file
partSizeint64Size of each part for multipart upload
lastPartSizeint64Size of the last part
partsCountint64Total number of parts
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/vod/v1/files/start \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"name": "file-to-upload.mp4",
"friendlyName": "My Awesome Video",
"metadata": {
"category": "entertainment"
},
"fileSize": 76251798
}'
RESPONSE
{
"fileId": "file_12345",
"multipartUrls": [
"https://upload.example.com/part1?token=abc123",
"https://upload.example.com/part2?token=def456"
],
"fileKey": "path/to/my_video.mp4",
"partSize": 50000000,
"lastPartSize": 26251798,
"partsCount": 2
}

Get Next Part Upload URL

Retrieves the URL for uploading the next part of a file.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}/part/{partNumber}
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringFile ID from files/start method
partNumberYesint32Number of the part

Response

FieldTypeNotes
urlstringURL for uploading the part
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/vod/v1/files/file_12345/part/2 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"url": "https://upload.example.com/part2?token=def456"
}

Finish File Upload

Finishes the file upload process. Call this method after uploading all parts.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files/complete
HTTP methodPOST

Request

ParameterRequiredTypeNotes
fileIdYesstringFile ID from the start upload process
partsYesArray of PartETagArray of part numbers and their ETags
parts.partNumberYesinteger
parts.eTagYesstringNullable

Response

FieldTypeNotes
fileIdstringID of the uploaded file
fileKeystringKey of the uploaded file
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/vod/v1/files/complete \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"fileId": "file_12345",
"parts": [
{
"partNumber": 1,
"eTag": "abc123"
},
{
"partNumber": 2,
"eTag": "def456"
}
]
}'
RESPONSE
{
"fileId": "file_12345",
"fileKey": "path/to/my_video.mp4"
}

Cancel File Upload

It cancels the upload of a file.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}/cancel
HTTP methodPOST

Request

ParameterRequiredTypeNotes
idYesstringUploading file ID.
deleteNobooleanIf true, the uploading file will be immediately deleted. Otherwise, it will change to status=Error.
X-Tenant-IdNostringTenant ID is required only if one tenant is active on a given account.

Response

No content is returned upon successful cancellation.

REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/vod/v1/files/12345678-1234-1234-1234-123456789abc/cancel \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: <tenant_id>' \
-d '{
"delete": true
}'
RESPONSE
204 No Content

Detect Media Tracks

Detects media tracks in a specific file.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}/detect
HTTP methodPOST

Request

ParameterRequiredTypeNotes
idYesstringFile ID to detect media tracks for

Response

FieldTypeNotes
tracksArray of TranscodingTrackDetected tracks in the file TranscodingTrack
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/vod/v1/files/file_12345/detect \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"tracks": [
{
"trackSelector": {
"trackId": "video_1"
},
"type": "Video",
"language": "en",
"name": "Main Video Track"
},
{
"trackSelector": {
"trackId": "audio_1"
},
"type": "Audio",
"language": "en",
"name": "English Audio"
},
{
"trackSelector": {
"trackId": "captions_1"
},
"type": "Captions",
"language": "en",
"name": "English Subtitles"
}
]
}

Get File Types

Retrieves a list of supported file types.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/filetypes
HTTP methodGET

Request

This endpoint doesn't require any parameters.

Response

FieldTypeNotes
fileTypesobjectObject with file types as keys and arrays of supported extensions as values
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/vod/v1/filetypes \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"fileTypes": {
"Audio": [".mp3", ".wav"],
"Caption": [".txt", ".srt"],
"Video": [".mp4", ".mxf", ".mov", ".ts"]
}
}

Get Languages

Retrieves a list of supported languages.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/vod/v1/languages
HTTP methodGET

Request

This endpoint doesn't require any parameters.

Response

FieldTypeNotes
languagesArray of stringsList of supported languages
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/vod/v1/languages \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"languages": [
"en",
"pl",
"de",
"fr",
"pt"
]
}

Live


List Channels

It returns list of channels.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels
HTTP methodGET

Request

ParameterRequiredTypeNotes
limitNoint32Page size of channels; default: 100
pageNoint32Number of requested page; default: 1.
queryNostringQuery by metadata or id.
sortNostringProperty to sort by. Examples: Metadata.Title, CreateDate, LastModificationDate
descNobooleanSet to true to sort descending; default: false
idsNoArray of stringsChannel ids
createDateStartNostring <date-time>Filter by creation date (start)
createDateEndNostring <date-time>Filter by creation date (end)
lastModificationDateStartNostring <date-time>Filter by last modification date (start)
lastModificationDateEndNostring <date-time>Filter by last modification date (end)
includeAwsDataNobooleanInclude data from AWS; default: true

Response

FieldTypeNotes
itemsarray of objectsSingle page of listed ChannelResults.
pageCountint32Number of all pages.
pageSizeint32Size of the page.
totalCountint32Number of all items.
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/live/v1/channels?limit=100&page=1&includeAwsData=true' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "12345678-1234-1234-1234-123456789abc",
"endpoints": [
{
"id": "string",
"accessType": "Http",
"format": "SmoothStreaming",
"url": "string",
"preset": "string",
"protection": "None",
"protectionDetails": {
"keyIds": ["string"],
"contentId": "string"
},
"durationMilliseconds": 0,
"size": 0
}
],
"archiveEndpointIds": ["string"],
"transcodeEndpointId": "string",
"cdn": {
"enabled": true
},
"inputs": [
{
"id": "string",
"type": "string",
"destinations": [
{
"url": "string"
}
],
"details": {
"securityGroupIps": ["string"]
}
}
],
"encoding": {
"preset": "string",
"pipelines": 0
},
"status": "Processing",
"internalStatus": "string",
"metadata": {
"property1": "string",
"property2": "string"
},
"createDate": "2019-08-24T14:15:22Z",
"lastModificationDate": "2019-08-24T14:15:22Z",
"automationDisabled": true,
"name": "string"
}
],
"pageCount": 0,
"pageSize": 0,
"totalCount": 0,
"pageNumber": 0,
"hasMore": true
}

Create Channel

Creates a new channel.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels
HTTP methodPOST

Request

ParameterRequiredTypeNotes
nameYesstringChannel name
redundancyNostringRedundancy mode: SingleInput or DoubleInput
latencyNostringLatency mode: NormalLatency or ReducedLatency
input.typeYesstringInput type, e.g., RTMP_PUSH
input.whitelistCidrNostringCIDR whitelist for input
input.inputLoss.typeYesstringInput loss type: COLOR or SLATE
input.inputLoss.colorNostringHex color for input loss screen
endpoints[].typeNostringEndpoint types, e.g., DashDrm, HlsDrm
qualities[].resolutionNostringResolution: 360p, 480p, 720p, etc.
qualities[].frameRateNointFrame rate per resolution
restreams[].protocolNostringProtocol, e.g., RTMP
restreams[].idNostringRestream ID
restreams[].destinationNostringDestination name, e.g., Facebook
restreams[].rtmpDestinations[].urlNostringRTMP destination URL
restreams[].rtmpDestinations[].streamKeyNostringStream key for RTMP destination
activationModeNostringEventBased or Manual
transmissionTypeNostringVideo or Audio
environmentNostringMediaLive or MediaLiveAnywhere
mediaPackageVersionNostringV1 or V2

Response

FieldTypeNotes
idstringID of the created channel
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/live/v1/channels \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"name": "chn-1",
"redundancy": "DoubleInput",
"latency": "NormalLatency",
"input": {
"type": "RTMP_PUSH",
"whitelistCidr": "0.0.0.0/0",
"inputLoss": {
"type": "COLOR",
"color": "000000"
}
},
"endpoints": [
{ "type": "DashDrm" },
{ "type": "HlsDrm" }
],
"qualities": [
{ "resolution": "360p", "frameRate": 25 },
{ "resolution": "480p", "frameRate": 30 },
{ "resolution": "720p", "frameRate": 50 },
{ "resolution": "1080p", "frameRate": 60 },
{ "resolution": "2160p", "frameRate": 60 }
],
"restreams": [
{
"protocol": "RTMP",
"id": "0f000000-ac11-0242-a160-08dd5be2bb79",
"destination": "Facebook",
"rtmpDestinations": [
{
"url": "rtmp://example.domain.com/live1",
"streamKey": "0f000000-ac11-0242-a1ac-08dd5be2bb79"
},
{
"url": "rtmp://example.domain.com/live2",
"streamKey": "0f000000-ac11-0242-a1af-08dd5be2bb79"
}
]
}
],
"activationMode": "EventBased",
"transmissionType": "Video",
"environment": "MediaLive",
"mediaPackageVersion": "V1"
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc"
}

Get Channel Details

Gets channel details.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringChannel Id

Response

FieldTypeNotes
idstringChannel Id
endpointsarrayChannel endpoints
archiveEndpointIdsarrayEndpoint names that will be used for recording
transcodeEndpointIdstringEndpoint name used for transcoding of archived recording
cdnobjectCDN channel info
cdn.enabledbooleanCDN channel info
inputsarrayList of channel inputs (ingest points)
inputs.idstringnullable
inputs.typestringnullable
inputs.destinationsarray of ChannelInputEndpointnullable
inputs.destinations.urlstringnullable
inputs.detailsChannelInputDetails
inputs.details.securityGroupIpsarray of stringnullable
encodingobjectChannel encoding information
encoding.presetstringChannel encoding information
encoding.pipelinesintegerChannel encoding information
statusenumChannel status. Possible values: Processing, Off, On, Starting, Stopping, Error
internalStatusstringInternal status of the channel
metadataobjectChannel metadata
createDatestringCreation date
lastModificationDatestringLast modification date
automationDisabledbooleanIndicates if automation is disabled
namestringChannel name
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/live/v1/channels/12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"endpoints": [
{
"id": "string",
"accessType": "Http",
"format": "SmoothStreaming",
"url": "string",
"preset": "string",
"protection": "None",
"protectionDetails": {
"keyIds": [
"string"
],
"contentId": "string"
},
"durationMilliseconds": 0,
"size": 0
}
],
"archiveEndpointIds": [
"string"
],
"transcodeEndpointId": "string",
"cdn": {
"enabled": true
},
"inputs": [
{
"id": "string",
"type": "string",
"destinations": [
{
"url": "string"
}
],
"details": {
"securityGroupIps": [
"string"
]
}
}
],
"encoding": {
"preset": "string",
"pipelines": 0
},
"status": "Processing",
"internalStatus": "string",
"metadata": {
"property1": "string",
"property2": "string"
},
"createDate": "2019-08-24T14:15:22Z",
"lastModificationDate": "2019-08-24T14:15:22Z",
"automationDisabled": true,
"name": "string"
}

Update Channel

Updates selected fields of an existing channel.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}
HTTP methodPATCH

Request

ParameterRequiredTypeNotes
idYesstringID of the channel to update (in URL path)
automationDisabledNobooleanDisable or enable automation
nameNostringNew name for the channel
input.typeNostringInput type, e.g., RTMP_PUSH
input.whitelistCidrNostringCIDR whitelist for input
input.inputLoss.typeNostringInput loss type: COLOR or SLATE
input.inputLoss.colorNostringHex color for input loss screen
endpoints[].typeNostringEndpoint types, e.g., DashDrm, HlsDrm
qualities[].resolutionNostringResolution: 360p, 480p, 720p, etc.
qualities[].frameRateNointFrame rate per resolution
restreamsNoarrayAdd, edit, or remove RTMP services where you want to restream this channel. Max items: 10 Restream

Response

FieldTypeNotes
idstringID of the updated channel
REQUEST
curl -X PATCH \
https://{tenant_name}.api.videokit.cloud/live/v1/channels/12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"automationDisabled": true,
"name": "Updated Channel Name",
"input": {
"type": "RTMP_PUSH",
"whitelistCidr": "0.0.0.0/0",
"inputLoss": {
"type": "COLOR",
"color": "000000"
}
},
"endpoints": [
{ "type": "DashDrm" },
{ "type": "HlsDrm" }
],
"qualities": [
{ "resolution": "720p", "frameRate": 50 },
{ "resolution": "1080p", "frameRate": 60 }
],
"restreams": [
{
"protocol": "RTMP",
"id": "0f000000-ac11-0242-a160-08dd5be2bb79",
"destination": "Facebook",
"rtmpDestinations": [
{
"url": "rtmp://example.domain.com/live1",
"streamKey": "0f000000-ac11-0242-a1ac-08dd5be2bb79"
}
]
}
]
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc"
}

Delete Channel

Deletes a channel.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
idYesstringChannel identifier (path parameter)

Response

Returns a ServiceResponse object indicating the success of the operation.

REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/live/v1/channels/12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"status": {
"code": "success",
"message": "Channel deleted successfully"
},
"success": true
}

Start Channel

Starts a channel.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}/start
HTTP methodPOST

Request

ParameterRequiredTypeNotes
idYesstringChannel Id (path parameter)

Response

This method doesn't return a specific response body. Check the HTTP status code for the operation result.

REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/live/v1/channels/12345678-1234-1234-1234-123456789abc/start \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'

Stop Channel

Stops a channel.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}/stop
HTTP methodPOST

Request

ParameterRequiredTypeNotes
idYesstringChannel Id (path parameter)

Response

This method doesn't return a specific response body. Check the HTTP status code for the operation result.

REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/live/v1/channels/12345678-1234-1234-1234-123456789abc/stop \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'

Get Channel Status

Returns status info about a channel.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}/status
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringChannel Id (path parameter)

Response

FieldTypeNotes
idstringChannel Id
statusenumChannel status. Possible values: Processing, Off, On, Starting, Stopping, Error
internalStatusstringInternal status of the channel
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/live/v1/channels/12345678-1234-1234-1234-123456789abc/status \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: String^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-4-[0-9a-f]{12}$'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"status": "Processing",
"internalStatus": "string"
}

Get Channel Statistics

Returns channel statistics.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}/stats
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringChannel Id (path parameter)
startNostring <date-time>Start time of stats stream
endNostring <date-time>End time of stats stream
periodSecondsNoint32Granularity. Multiple of 60, default: 60
aggregationFunctionNostringSum or Avg, Sum is default

Response

FieldTypeNotes
metricsobjectObject containing StatsMetricResult objects
[].idstringnullable
[].descriptionstringnullable
[].unitNamestringnullable
[].unitSymbolstringnullable
[].dataarray of StatsPointResultnullable
[].data.timestring (date-time)
[].data.valuenumber (double)
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/live/v1/channels/12345678-1234-1234-1234-123456789abc/stats?start=2023-07-25T00:00:00Z&end=2023-07-25T23:59:59Z&periodSeconds=3600&aggregationFunction=Sum' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"metrics": {
"metric1": {
"id": "string",
"description": "string",
"unitName": "string",
"unitSymbol": "string",
"data": [
{
"time": "2023-07-25T00:00:00Z",
"value": 123.45
},
{
"time": "2023-07-25T01:00:00Z",
"value": 234.56
}
]
}
}
}

Get Channels Status

Returns status info about multiple channels.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channelsstatus
HTTP methodGET

Request

ParameterRequiredTypeNotes
idsNoarray of stringComma separated list of channel ids

Response

FieldData TypeNotes
idstringnullable, Channel Id
statusenumChannel status. Possible values: Processing, Off, On, Starting, Stopping, Error
internalStatusstringnullable, Internal status of the channel
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/live/v1/channelsstatus?ids=12345678-1234-1234-1234-123456789abc,87654321-4321-4321-4321-987654321cba' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
[
{
"id": "12345678-1234-1234-1234-123456789abc",
"status": "Processing",
"internalStatus": "string"
},
{
"id": "87654321-4321-4321-4321-987654321cba",
"status": "On",
"internalStatus": "string"
}
]

Get Channel Configuration

It returns the AWS configuration for a specific channel.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}/configuration
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringChannel ID.
X-Tenant-IdNostringTenant ID is required only if one tenant is active on a given account.

Response

FieldData typeNotes
idstringChannel ID.
configurationobjectAWS configuration details for the channel.
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/live/v1/channels/12345678-1234-1234-1234-123456789abc/configuration \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: <tenant_id>'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"configuration": {
"awsRegion": "us-east-1",
"bucketName": "channel-bucket",
"accessKey": "AKIAXXXXXXXXXXXXXXXX",
"secretKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
}

Get Channel Limit

It returns the channel limit for the active tenant.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/channels/limit
HTTP methodGET

Request

ParameterRequiredTypeNotes
X-Tenant-IdNostringTenant ID is required only if one tenant is active on a given account.

Response

FieldData typeNotes
limitint32Channel limit for the active tenant.
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/live/v1/channels/limit \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: <tenant_id>'
RESPONSE
{
"limit": 10
}

Create Event

Creates a new event on a specified channel.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/events
HTTP methodPOST

Request

ParameterRequiredTypeNotes
channelIdYesstringID of the channel the event belongs to
startYesstring <date-time>Event start time in ISO 8601 format
endYesstring <date-time>Event end time in ISO 8601 format
titleNostringOptional title of the event
ensureChannelNobooleanIf true, the live channel will be automatically started for this event
metadata.titleNostringTitle of the event (used in metadata)
tagsNoarray of stringsOptional tags
attributesNoarray of stringsOptional attributes in format [key]=value

Response

FieldTypeNotes
idstringID of the created event
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/live/v1/events \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"channelId": "cot-live-ch1",
"start": "2025-03-05T11:00:00+00:00",
"end": "2025-03-05T11:05:00+00:00",
"ensureChannel": true,
"title": "The Matrix",
"metadata": {
"Title": "The Matrix"
},
"tags": [],
"attributes": []
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc"
}

List Events

Returns a list of all events, optionally filtered by channel, time range, metadata, and other parameters.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/events
HTTP methodGET

Request

ParameterRequiredTypeNotes
channelIdNostringFilter events by channel ID
searchStartNostring <date-time>Start of search time range
searchEndNostring <date-time>End of search time range
limitNoint32Number of events to return; default: 100
pageNoint32Page number; default: 1
queryNostringQuery by metadata or ID
sortNostringSort by property (e.g., ChannelId, Start, Metadata.Title)
descNobooleanSort descending; default: false
idsNoarray of UUIDsFilter by specific event IDs
createDateStartNostring <date-time>Filter by creation date (start)
createDateEndNostring <date-time>Filter by creation date (end)
lastModificationDateStartNostring <date-time>Filter by last modification date (start)
lastModificationDateEndNostring <date-time>Filter by last modification date (end)
channelsNoarray of stringsFilter by multiple channel IDs
statusesNoarray of stringsFilter by event statuses (e.g., Live, Scheduled, Finished)
tagsNoarray of stringsFilter by tags
attributesNoarray of stringsFilter by attributes in format [key]=value

Response

FieldTypeNotes
itemsarray of objectsList of event objects
items[].idstringUnique identifier of the event
items[].channelIdstringID of the channel the event belongs to
items[].startstring <date-time>Start time of the event
items[].endstring <date-time>End time of the event
items[].titlestringTitle of the event
items[].ensureChannelbooleanWhether the channel should auto-start
items[].metadataobjectCustom metadata key-value pairs
items[].tagsarray of stringsTags associated with the event
items[].attributesarray of stringsAttributes in [key]=value format
items[].createDatestring <date-time>Creation timestamp
items[].lastModificationDatestring <date-time>Last modification timestamp
items[].statusstringStatus of the event (e.g., Scheduled)
items[].catchupobjectCatchup endpoints (if available)
pageCountint32Number of all pages
pageSizeint32Size of the page
totalCountint32Total number of matching events
pageNumberint32Current page number
hasMorebooleanIndicates if more pages are available
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/live/v1/events?limit=100&page=1&sort=Start&desc=false' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "12345678-1234-1234-1234-123456789abc",
"channelId": "cot-live-ch1",
"start": "2025-03-05T11:00:00+00:00",
"end": "2025-03-05T11:05:00+00:00",
"title": "The Matrix",
"ensureChannel": true,
"metadata": {
"Title": "The Matrix"
},
"tags": [],
"attributes": [],
"createDate": "2025-03-01T10:00:00+00:00",
"lastModificationDate": "2025-03-01T10:00:00+00:00",
"status": "Scheduled"
}
],
"pageCount": 1,
"pageSize": 100,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get Event Details

Gets event details.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/events/{id}
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringEvent id (path parameter). Pattern: ^[a-zA-Z0-9_-]{1,128}$

Response

FieldTypeNotes
idstringUnique identifier of the event
channelIdstringIdentifier of the channel
startstring <date-time>Start time of the event
endstring <date-time>End time of the event
ensureChannelbooleanFlag to automatically turn on/off the channel for this event
titlestringAsset title
catchupobjectCatchup information
catchup.endpointsarrayArray of endpoint objects
metadataobjectEvent metadata dictionary
createDatestring <date-time>Creation date of the event
lastModificationDatestring <date-time>Last modification date of the event
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/live/v1/events/event-12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "event-12345678-1234-1234-1234-123456789abc",
"channelId": "cot-live-ch1",
"start": "2024-07-19T11:00:00+00:00",
"end": "2024-07-19T11:05:00+00:00",
"ensureChannel": true,
"title": "The Matrix",
"catchup": {
"endpoints": []
},
"metadata": {
"Title": "The Matrix"
},
"createDate": "2023-07-25T10:30:00Z",
"lastModificationDate": "2023-07-25T10:30:00Z"
}

Update Event

Updates selected fields of an existing event.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/events/{id}
HTTP methodPATCH

Request

ParameterRequiredTypeNotes
idYesstringID of the event to update (in URL path)
startNostring <date-time>New start time of the event
endNostring <date-time>New end time of the event
titleNostringNew title of the event
ensureChannelNobooleanWhether to auto-start the channel
metadataNoobjectKey-value pairs to update in metadata
tagsNoarray of stringsTags to update
attributesNoarray of stringsAttributes in [key]=value format

Response

FieldTypeNotes
idstringID of the updated event
channelIdstringID of the associated channel
startstring <date-time>Start time of the event
endstring <date-time>End time of the event
titlestringTitle of the event
ensureChannelbooleanWhether the channel auto-starts
metadataobjectUpdated metadata
tagsarray of stringsUpdated tags
attributesarray of stringsUpdated attributes
createDatestring <date-time>Creation timestamp
lastModificationDatestring <date-time>Last modification timestamp
statusstringStatus of the event (e.g., Scheduled, Live, Finished)
catchupobjectCatchup endpoints (if available)
REQUEST
curl -X PATCH \
https://{tenant_name}.api.videokit.cloud/live/v1/events/event-12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"title": "Updated Matrix",
"start": "2025-03-05T11:00:00+00:00",
"end": "2025-03-05T11:10:00+00:00",
"metadata": {
"Title": "Updated Matrix"
},
"tags": ["updated"],
"attributes": ["genre=action"]
}'
RESPONSE
{
"id": "event-12345678-1234-1234-1234-123456789abc",
"channelId": "cot-live-ch1",
"start": "2025-03-05T11:00:00+00:00",
"end": "2025-03-05T11:10:00+00:00",
"title": "Updated Matrix",
"ensureChannel": true,
"metadata": {
"Title": "Updated Matrix"
},
"tags": ["updated"],
"attributes": ["genre=action"],
"createDate": "2025-03-01T10:00:00+00:00",
"lastModificationDate": "2025-03-01T10:05:00+00:00",
"status": "Scheduled",
"catchup": {
"endpoints": []
}
}

Delete Event

Deletes an event.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/events/{id}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
idYesstringEvent id (path parameter). Pattern: ^[a-zA-Z0-9_-]{1,128}$

Response

A successful deletion returns an HTTP 200 status code with no body.

REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/live/v1/events/event-12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
HTTP/1.1 200 OK

Delete Multiple Events

Deletes multiple events.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/live/v1/events/deletemany
HTTP methodPOST

Request

The request body should contain an array of event ids to be deleted.

Response

FieldTypeNotes
{eventId}objectObject with event id as key and ServiceResponse as value
{eventId}.statusobjectStatus information
{eventId}.status.codestringStatus code (e.g., "success")
{eventId}.status.messagestringStatus message
{eventId}.successbooleanIndicates if the operation was successful
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/live/v1/events/deletemany \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '["event-12345678-1234-1234-1234-123456789abc", "event-87654321-4321-4321-4321-987654321cba"]'
RESPONSE
{
"event-12345678-1234-1234-1234-123456789abc": {
"status": {
"code": "success",
"message": "Event deleted successfully"
},
"success": true
},
"event-87654321-4321-4321-4321-987654321cba": {
"status": {
"code": "success",
"message": "Event deleted successfully"
},
"success": true
}
}

Recorder


Create Recording

Creates a new recording.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/cvr/v1/recordings
HTTP methodPOST

Request

ParameterRequiredTypeNotes
sourceYesobjectRecording source details.
source.typeYesRecordingSourceTypeRecordingSourceType
source.liveChannelDetailsNoLiveSourceMessageLiveSourceMessage
source.liveChannelDetails.channelIdNostringChannel ID. Example: "dazn-test-1"
source.liveChannelDetails.startNostring (date-time)Event start time. Example: "2020-11-18T13:07:43.486Z"
source.liveChannelDetails.endNostring (date-time)Event stop time. Example: "2020-11-18T14:07:43.486Z"
catchupNoobjectCatchup settings object.
catchup.enabledNobooleanIf true, temporary stream address will be created (typically valid for 14 days)
archiveNoobjectArchive settings object.
archive.enabledNobooleanIf true, the recording will be archived to persistent storage
publicNobooleanVisibility of the recording.
outputsNoarrayList of output configurations.
outputs.presetNostringType of output. Example: "mp4"
outputs.idNostringId of this output. Example: "output1"
metadataNoobjectCustom metadata object.
metadata.titleNostringAsset title
metadata.attributesNoobjectAttributes object
metadata.attributes.keyNostringAttribute key
metadata.attributes.valueNostringAttribute value

Response

FieldTypeNotes
idstringID of the created recording.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"source": {
"type": "LiveChannel",
"liveChannelDetails": {
"channelId": "cot-live-ch1",
"start": "2025-02-13T08:00:00+00:00",
"end": "2025-02-13T08:05:00+00:00"
}
},
"catchup": {
"enabled": true
},
"archive": {
"enabled": true
},
"public": false,
"outputs": [
{
"id": "file1",
"preset": "mp4"
}
],
"metadata": {
"title": "The Matrix",
"attributes": [
{
"key": "genre",
"value": "sci-fi"
}
]
}
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc"
}

List Recordings

Returns a list of recordings.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/cvr/v1/recordings
HTTP methodGET

Request

ParameterRequiredTypeNotes
limitNoint32Number of recordings to return; default: 100
pageNoint32Number of requested page; default: 1
searchStartNostring <date-time>Start time for recording search
searchEndNostring <date-time>End time for recording search
channelIdNostringChannel ID of the recording
queryNostringText query to search by metadata
sortNostringProperty to sort by. Examples: Source.LiveChannelDetails.Start, Metadata.Title, CreateDate, LastModificationDate
descNobooleanSet to true to sort descending; default: false
idsNoarray of UUIDsList of recording IDs
createDateStartNostring <date-time>Filter by creation date (start)
createDateEndNostring <date-time>Filter by creation date (end)
lastModificationDateStartNostring <date-time>Filter by last modification date (start)
lastModificationDateEndNostring <date-time>Filter by last modification date (end)
statusesNoarrayFilter by asset statuses (e.g., Pending, Available, etc.)
channelsNoarray of stringsFilter by channel IDs

Response

FieldTypeNotes
itemsarray of objectsList of recordings. RecordingResult
pageCountint32Number of all pages
pageSizeint32Size of the page
totalCountint32Total number of items
pageNumberint32Current page number
hasMorebooleanWhether more pages are available
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings?limit=1&page=1' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "12345678-1234-1234-1234-123456789abc",
"title": "The Matrix",
"status": "Available",
"createDate": "2025-02-13T08:00:00Z",
"lastModificationDate": "2025-02-13T08:10:00Z",
"durationMilliseconds": 300000,
"metadata": {
"title": "The Matrix",
"genre": "sci-fi"
}
}
],
"pageCount": 1,
"pageSize": 1,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get Recording Details

Get details of a specific recording.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/{id}
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringRecording id
X-Tenant-IdNostringTenantId required if one tenant is active

Response

FieldData typeNotes
idstringRecording Id
sourceobjectRecording source details
catchupobjectCatchup details
catchup.enabledbooleanIf true, temporary stream address will be created (typically valid for 14 days)
catchup.expirationTimestring (date-time)Time when this catchup becomes unavailable
catchup.endpointsarrayEndpoints for this catchup
archiveobjectArchive details
archive.enabledbooleanIf true, the recording will be archived to persistent storage
archive.delaySecondsintegerDelay between stop of the recording and creating persistent archive
archive.publicbooleanShould the persistent archive be publicly available
archive.expirationDatestring (date-time)Expiration date for this archive
archive.statusAssetStatusAssetStatus
archive.endpointsarrayPersistent endpoints created for this archive
archive.archivisationCompletedDatestring (date-time)Time of successful archivisation completed (used for metering)
outputsarrayAdditional outputs
outputs.statusAssetStatusAssetStatus
outputs.presetstringPreset name for this output. For example 'mp4'
outputs.idstringId of this output, unique in scope of this recording
outputs.expirationDatestring (date-time)After this time, the output will be permanently deleted
outputs.endpointsarray of EndpointInfoAdditional Endpoints generated for this recording
expirationDatestringAsset expiration date
statusstringRecording status
metadataobjectAsset metadata
errorMessagestringError information
createDatestringCreation date
lastModificationDatestringLast modification date
durationMillisecondsint64Duration in milliseconds
titlestringAsset title
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/12345678-1234-1234-1234-123456789abc \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"source": {
"type": "LiveChannel",
"liveChannelDetails": {
"channelId": "cot-live-ch1",
"start": "2024-07-19T12:00:00+00:00",
"end": "2024-07-19T12:05:00+00:00"
}
},
"catchup": {
"enabled": true,
"expirationTime": "2024-08-02T12:05:00+00:00",
"endpoints": [
{
"id": "catchup-endpoint-1",
"accessType": "Http",
"format": "HLS",
"url": "https://example.com/catchup/12345678-1234-1234-1234-123456789abc.m3u8"
}
]
},
"archive": {
"enabled": true,
"public": false,
"status": "Available",
"endpoints": [
{
"id": "archive-endpoint-1",
"accessType": "Http",
"format": "MP4",
"url": "https://example.com/archive/12345678-1234-1234-1234-123456789abc.mp4"
}
]
},
"outputs": [
{
"status": "Available",
"preset": "mp4",
"id": "file1",
"endpoints": [
{
"id": "output-endpoint-1",
"accessType": "Http",
"format": "MP4",
"url": "https://example.com/output/12345678-1234-1234-1234-123456789abc-file1.mp4"
}
]
}
],
"status": "Available",
"metadata": {
"title": "The Matrix"
},
"createDate": "2024-07-19T12:00:00+00:00",
"lastModificationDate": "2024-07-19T12:05:00+00:00",
"durationMilliseconds": 300000,
"title": "The Matrix"
}

Update Recording

Updates selected fields of a recording.

note

The source can only be changed for recordings in Pending status (before they are archived).

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/{id}
HTTP methodPATCH

Request

ParameterRequiredTypeNotes
idYesstringRecording ID (UUID format)
sourceNoobjectRecording source details.
source.typeYesRecordingSourceTypeRecordingSourceType
source.liveChannelDetailsNoLiveSourceMessageLiveSourceMessage
source.liveChannelDetails.channelIdNostringChannel ID. Example: "dazn-test-1"
source.liveChannelDetails.startNostring (date-time)Event start time. Example: "2020-11-18T13:07:43.486Z"
source.liveChannelDetails.endNostring (date-time)Event stop time. Example: "2020-11-18T14:07:43.486Z"
catchupNoobjectCatchup settings.
catchup.enabledNobooleancatchup.enabled
archiveNoobjectArchive settings.
archive.enabledNobooleanIf true, the recording will be archived to persistent
archive.publicNobooleanIf true, recording will be public after archivisation
archive.delaySecondsNointegerDelay between stop of the recording and creating persistent archive. Max: 2592000, Min: 0
titleNostringNew title of the recording
metadataNoobjectMetadata fields to update (key-value pairs)
tagsNoarrayList of tags
attributesNoarrayList of attributes in [key]=value format

Response

FieldTypeNotes
idstringRecording ID
titlestringTitle of the recording
statusstringStatus of the recording
createDatestringCreation timestamp
lastModificationDatestringLast modification timestamp
durationMillisecondsint64Duration of the recording in milliseconds
metadataobjectUpdated metadata
REQUEST
curl -X PATCH \
https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"title": "The Matrix Reloaded",
"metadata": {
"genre": "action"
},
"catchup": {
"enabled": false
},
"archive": {
"enabled": true,
"public": true,
"delaySeconds": 60
}
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"title": "The Matrix Reloaded",
"status": "Available",
"createDate": "2025-02-13T08:00:00Z",
"lastModificationDate": "2025-02-13T08:15:00Z",
"durationMilliseconds": 300000,
"metadata": {
"genre": "action"
}
}

Delete Recording

Delete a specific recording.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/{id}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
idYesstringRecording id
X-Tenant-IdNostringTenantId required if one tenant is active

Response

A successful deletion returns an HTTP 200 status code with no body.

REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/12345678-1234-1234-1234-123456789abc \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
HTTP/1.1 200 OK

Delete Multiple Recordings

Delete multiple recordings at once.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/deletemany
HTTP methodPOST

Request

ParameterRequiredTypeNotes
X-Tenant-IdNostringTenantId required if one tenant is active

Request Body: An array of recording IDs to delete.

Response

FieldData typeNotes
<id>objectObject with deletion status for each ID
<id>.statusServiceStatusServiceStatus
<id>.status.codestringApplication level error code. Example: "common_1"
<id>.status.statusintegerHTTP status
<id>.status.messagestringDeveloper friendly message. Example: "Asset ID not found"
<id>.successbooleanSet if the request was processed successfully
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/deletemany \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '["12345678-1234-1234-1234-123456789abc", "87654321-4321-4321-4321-cba987654321"]'
RESPONSE
{
"12345678-1234-1234-1234-123456789abc": {
"status": {
"code": "success",
"status": 200,
"message": "Recording deleted successfully"
},
"success": true
},
"87654321-4321-4321-4321-cba987654321": {
"status": {
"code": "success",
"status": 200,
"message": "Recording deleted successfully"
},
"success": true
}
}

Remove Output from Recording

Remove one output from a recording.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/{recordingId}/outputs/{id}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
recordingIdYesstringRecording id
idYesstringOutput Id
X-Tenant-IdNostringTenantId required if one tenant is active

Response

A successful deletion returns an HTTP 200 status code with no body.

REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/12345678-1234-1234-1234-123456789abc/outputs/file1 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
HTTP/1.1 200 OK

Add Output to Recording

Add output to an existing recording (this will trigger transcoding once the recording is recorded).

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/{id}/outputs
HTTP methodPOST

Request

ParameterRequiredTypeNotes
idYesstringRecording id
X-Tenant-IdNostringTenantId required if one tenant is active

Request Body:

FieldRequiredTypeNotes
presetYesstringTranscoding preset
idNostringId of this output
expirationDateNostringOptional date of removal

Response

FieldData typeNotes
itemsarray of objectsArray of created output IDs
pageCountint32Number of pages
pageSizeint32Size of the page
totalCountint32Total number of items
pageNumberint32Current page number
hasMorebooleanIf there are more pages
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/12345678-1234-1234-1234-123456789abc/outputs \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"preset": "mp4",
"id": "new-output-1",
"expirationDate": "2050-01-01T00:00:00Z"
}'
RESPONSE
{
"items": [
{
"id": "new-output-1"
}
],
"pageCount": 1,
"pageSize": 1,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Streaming


Get Ads Count Analytics

Get ads count analytics.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/ads/queries/count
HTTP methodPOST

Request

ParameterRequiredTypeNotes
startNostring <date-time>Start of timeframe which is queried in UTC format.
endNostring <date-time>End of timeframe which is queried in UTC format.
filtersNoarray of objectsAnalytics Query Filters.
orderByNoarray of objectsAnalytics order by filters.
intervalNostringTime interval.
groupByNoarray of stringsArray of strings.
limitNoint64Maximum number of rows returned (max. 200).
offsetNoint64Offset of data.
dimensionYesstringAnalytic dimension.

Response

FieldData typeNotes
rowCountint64Number of rows returned.
rowsarray of arraysArray of objects.
columnLabelsarray of objectsColumn labels.
columnLabels.keystringKey.
columnLabels.labelstringLabel.
contextDescriptionarray of objectsContext description.
contextDescription.labelstringLabel name.
contextDescription.descriptionstringDescription.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/ads/queries/count \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"start": "2024-09-15T08:10:37.560Z",
"end": "2024-09-22T08:10:37.560Z",
"dimension": "PAGE_LOAD_TIME"
}'
RESPONSE
{
"rowCount": 141,
"rows": [
[
1691580900000,
4095,
1
]
],
"columnLabels": [
{
"key": "PLAYED",
"label": "Played (ms)"
}
],
"contextDescription": [
{
"label": "Sessions",
"description": "Number of Sessions"
}
]
}

Get Ads Sum Analytics

Get ads sum analytics.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/ads/queries/sum
HTTP methodPOST

Request

ParameterRequiredTypeNotes
startNostring <date-time>Start of timeframe which is queried in UTC format.
endNostring <date-time>End of timeframe which is queried in UTC format.
filtersNoarray of objectsAnalytics Query Filters.
orderByNoarray of objectsAnalytics order by filters.
intervalNostringTime interval.
groupByNoarray of stringsArray of strings.
limitNoint64Maximum number of rows returned (max. 200).
offsetNoint64Offset of data.
dimensionYesstringAnalytic dimension.

Response

FieldData typeNotes
rowCountint64Number of rows returned.
rowsarray of arraysArray of objects.
columnLabelsarray of objectsColumn labels.
columnLabels.keystringKey.
columnLabels.labelstringLabel.
contextDescriptionarray of objectsContext description.
contextDescription.labelstringLabel name.
contextDescription.descriptionstringDescription.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/ads/queries/sum \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"start": "2024-09-15T08:10:37.560Z",
"end": "2024-09-22T08:10:37.560Z",
"dimension": "PAGE_LOAD_TIME"
}'
RESPONSE
{
"rowCount": 141,
"rows": [
[
1691580900000,
4095,
1
]
],
"columnLabels": [
{
"key": "PLAYED",
"label": "Played (ms)"
}
],
"contextDescription": [
{
"label": "Sessions",
"description": "Number of Sessions"
}
]
}

Get Ads Avg Analytics

Get ads avg analytics.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/ads/queries/avg
HTTP methodPOST

Request

ParameterRequiredTypeNotes
startNostring <date-time>Start of timeframe which is queried in UTC format.
endNostring <date-time>End of timeframe which is queried in UTC format.
filtersNoarray of objectsAnalytics Query Filters.
orderByNoarray of objectsAnalytics order by filters.
intervalNostringTime interval.
groupByNoarray of stringsArray of strings.
limitNoint64Maximum number of rows returned (max. 200).
offsetNoint64Offset of data.
dimensionYesstringAnalytic dimension.

Response

FieldData typeNotes
rowCountint64Number of rows returned.
rowsarray of arraysArray of objects.
columnLabelsarray of objectsColumn labels.
columnLabels.keystringKey.
columnLabels.labelstringLabel.
contextDescriptionarray of objectsContext description.
contextDescription.labelstringLabel name.
contextDescription.descriptionstringDescription.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/ads/queries/avg \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"start": "2024-09-15T08:10:37.560Z",
"end": "2024-09-22T08:10:37.560Z",
"dimension": "PAGE_LOAD_TIME"
}'
RESPONSE
{
"rowCount": 141,
"rows": [
[
1691580900000,
4095,
1
]
],
"columnLabels": [
{
"key": "PLAYED",
"label": "Played (ms)"
}
],
"contextDescription": [
{
"label": "Sessions",
"description": "Number of Sessions"
}
]
}

List Assets

List all assets.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets
HTTP methodGET

Request

ParameterRequiredTypeNotes
limitNoint32Number of recordings to return. Default: 100
pageNoint32Number of requested page. Default: 1
queryNostringText query to search by metadata.
sortNostringProperty name to sort by. Metadata.Title, CreateDate, LastModificationDate.
descNobooleanSet to true to order descending. Default: false
idsNoarray of stringsList of asset IDs.
channelIdNostringChannel identifier.
isDrmNobooleanFilter DRM assets.
sourceNostring[Obsolete] Asset source module: Live, Recorder, Vod.
statusNostringAsset status.
typeNostringAsset type: LiveEvent, LiveChannel, Recording, Vod.
durationFromNoint64Asset duration from (in milliseconds).
durationToNoint64Asset duration to (in milliseconds).
searchStartNostring <date-time>Search date start range.
searchEndNostring <date-time>Search date end range.
createDateStartNostring <date-time>Create date start range.
createDateEndNostring <date-time>Create date end range.
lastModificationDateStartNostring <date-time>Last modification date start range.
lastModificationDateEndNostring <date-time>Last modification date end range.
channelsNoarray of stringsFilter by multiple channel IDs.
statusesNoarray of stringsFilter by multiple statuses.
typesNoarray of stringsFilter by multiple asset types.
tagsNoarray of stringsFilter by tags.
attributesNoarray of stringsFilter by attributes in [key]=value format.

Response

FieldTypeNotes
itemsarray of objectsOne page of listed AssetResult objects.
pageCountint32Number of all pages.
pageSizeint32Size of the page.
totalCountint32Number of all items.
pageNumberint32Number of this page.
hasMorebooleanIndicates if more pages are available.
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/streaming/v1/assets?limit=100&page=1' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "12345678-1234-1234-1234-123456789abc",
"status": "Processing",
"metadata": {
"Title": "The Matrix"
},
"outputs": [
{
"status": "Processing",
"preset": "mp4",
"id": "output-1",
"expirationDate": "2023-06-14T15:49:36.797+02:00",
"endpoints": [
{
"id": "endpoint-1",
"accessType": "Http",
"format": "MP4",
"url": "https://example.com/video.mp4",
"protection": "None"
}
]
}
],
"createDate": "2023-06-14T15:49:36.797+02:00",
"lastModificationDate": "2023-06-14T15:49:36.797+02:00",
"durationMilliseconds": 3600000,
"source": "Vod",
"type": "Vod",
"channelId": "cot-channel-ch1",
"isDrm": true,
"preset": "dash_hls_1080p",
"title": "The Matrix",
"description": "A computer hacker learns from mysterious rebels about the true nature of his reality and his role in the war against its controllers.",
"tags": ["action"],
"images": {
"poster": {
"Id": "poster-guid",
"Name": "matrix_poster.jpg",
"Url": "https://example.com/images/matrix_poster.jpg"
}
},
"chapters": [
{
"title": "Opening Scene",
"start": 0,
"end": 180
}
],
"settings": {
"tokenRequired": {
"asset": "Enabled",
"tenant": "Enabled"
},
"devToolsAccess": {
"asset": "Disabled",
"tenant": "Disabled"
},
"cap": {
"asset": "Enabled",
"tenant": "Enabled"
},
"analytics": {
"asset": "Enabled",
"tenant": "Enabled"
},
"codeObfuscation": {
"asset": "Enabled",
"tenant": "Enabled"
}
}
}
],
"pageCount": 1,
"pageSize": 100,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get Asset Details

Get asset details.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}
HTTP methodGET

Request

ParameterRequiredTypeNotes
assetIdYesstringAsset id. Pattern: ^[a-zA-Z0-9_-]{1,128}$

Response

FieldData typeNotes
idstringPlayer asset Id.
statusstringAsset status.
metadataobjectAsset metadata.
outputsarray of objectsAdditional outputs, generated after archivisation.
outputs.statusAssetStatusOutput status.
outputs.presetstringPreset name for this output.
outputs.idstringId of this output.
outputs.expirationDatestring (date-time)Expiration date of the output.
outputs.endpointsarray of EndpointInfoAdditional Endpoints generated for this recording. EndpointInfo
createDatestring <date-time>Create date.
lastModificationDatestring <date-time>Last modification date.
durationMillisecondsint64Duration time in milliseconds.
sourcestringAsset source.
typestringAsset type.
channelIdstringChannel identifier.
startstring <date-time>Start time of the event.
endstring <date-time>End time of the event.
isDrmbooleanIs DRM content.
presetstringPreset info.
tokenRequiredPolicyobjectToken required policy.
titlestringAsset title.
descriptionstringAsset description.
tagsarray of objectsAsset tags.
tags.idstringTag ID.
tags.namestringTag name.
imagesobjectAsset images.
images.idstringImage ID.
images.urlstringImage URL.
images.namestringImage name.
chaptersarray of objectsAsset chapters.
chapters.idstringChapter ID.
chapters.startSecondintegerStart time in seconds.
chapters.endSecondintegerEnd time in seconds.
chapters.durationSecondsintegerDuration in seconds (read-only).
chapters.titlestringChapter title.
settingsobjectAsset settings.
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc.",
"status": "Processing",
"metadata": {
"Title": "The Matrix"
},
"outputs": [
{
"status": "Processing",
"preset": "mp4",
"id": "output-1",
"expirationDate": "2023-06-14T15:49:36.7973126+02:00",
"endpoints": [
{
"id": "endpoint-1",
"accessType": "Http",
"format": "MP4",
"url": "https://example.com/video.mp4",
"protection": "None"
}
]
}
],
"createDate": "2023-06-14T15:49:36.7973126+02:00",
"lastModificationDate": "2023-06-14T15:49:36.7973126+02:00",
"durationMilliseconds": 3600000,
"source": "Vod",
"type": "Vod",
"channelId": "cot-channel-ch1",
"isDrm": true,
"preset": "dash_hls_1080p",
"tokenRequiredPolicy": {
"asset": "inherit",
"tenant": "true"
},
"title": "The Matrix",
"description": "A computer hacker learns from mysterious rebels about the true nature of his reality and his role in the war against its controllers.",
"tags": [
{
"name": "action",
"id": "00000000-0000-0000-0000-000000000001"
}
],
"images": {
"poster": {
"Id": "poster-guid",
"Name": "matrix_poster.jpg",
"Url": "https://example.com/images/matrix_poster.jpg"
}
},
"chapters": [
{
"title": "Opening Scene",
"start": 0,
"end": 180
}
],
"settings": {
"tokenRequired": {
"asset": "Enabled",
"tenant": "Enabled"
},
"devToolsAccess": {
"asset": "Disabled",
"tenant": "Disabled"
},
"cap": {
"asset": "Enabled",
"tenant": "Enabled"
},
"analytics": {
"asset": "Enabled",
"tenant": "Enabled"
},
"codeObfuscation": {
"asset": "Enabled",
"tenant": "Enabled"
}
}
}

Update Asset

Updates selected fields of an existing asset.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}
HTTP methodPATCH

Request

ParameterRequiredTypeNotes
assetIdYesstringAsset identifier (path parameter).
tokenRequiredPolicyNostringToken policy for the asset. Values: Inherit, True, False.
images.{key}.idNostring (UUID)Image ID.
images.{key}.nameNostringImage file name.
images.{key}.urlNostringPublic URL to the image.
chapters[].titleNostringChapter title.
chapters[].startSecondNointeger (int64)Start time of the chapter in seconds.
chapters[].endSecondNointeger (int64)End time of the chapter in seconds. Optional.
descriptionNostringDescription of the asset.
tags[]Noarray[string]List of tags to assign to the asset.
attributes[]Noarray[string]List of attributes in [key]=value format.

Response

FieldTypeNotes
idstringAsset ID
statusstringAsset status
titlestringAsset title
descriptionstringAsset description
metadataobjectKey-value metadata
tags[]array[string]Tags assigned to the asset
attributes[]array[string]Attributes assigned to the asset
images.{key}.idstringImage ID
images.{key}.namestringImage name
images.{key}.urlstringImage URL
chapters[].titlestringChapter title
chapters[].startSecondintegerChapter start time
chapters[].endSecondintegerChapter end time
createDatestring <date-time>Creation timestamp
lastModificationDatestring <date-time>Last modification timestamp
durationMillisecondsintegerDuration in milliseconds
sourcestringAsset source: Live, Recorder, Vod, etc.
typestringAsset type: LiveEvent, Recording, Vod, etc.
channelIdstringChannel identifier
startstring <date-time>Start time of the event
endstring <date-time>End time of the event
isDrmbooleanWhether the asset is DRM protected
presetstringPreset name
tokenRequiredPolicy.assetstringToken policy for asset
tokenRequiredPolicy.tenantstringToken policy for tenant
settings.tokenRequired.assetstringToken required setting for asset
settings.tokenRequired.tenantstringToken required setting for tenant
settings.devToolsAccess.assetstringDev tools access setting for asset
settings.devToolsAccess.tenantstringDev tools access setting for tenant
settings.cap.assetstringCAP setting for asset
settings.cap.tenantstringCAP setting for tenant
settings.analytics.assetstringAnalytics setting for asset
settings.analytics.tenantstringAnalytics setting for tenant
settings.codeObfuscation.assetstringCode obfuscation setting for asset
settings.codeObfuscation.tenantstringCode obfuscation setting for tenant
isWatermarkProtectedbooleanWhether watermark protection is enabled
REQUEST
curl -X PATCH \
'https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"title": "Updated Title",
"description": "Updated description.",
"tokenRequiredPolicy": "True",
"tags": ["updated", "featured"],
"attributes": ["genre=drama"],
"images": {
"poster": {
"id": "poster-guid",
"name": "updated_poster.jpg",
"url": "https://example.com/images/updated_poster.jpg"
}
},
"chapters": [
{
"title": "Intro",
"startSecond": 0,
"endSecond": 60
}
]
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"status": "Available",
"title": "Updated Title",
"description": "Updated description.",
"tags": ["updated", "featured"],
"attributes": ["genre=drama"],
"images": {
"poster": {
"id": "poster-guid",
"name": "updated_poster.jpg",
"url": "https://example.com/images/updated_poster.jpg"
}
},
"chapters": [
{
"title": "Intro",
"startSecond": 0,
"endSecond": 60
}
],
"createDate": "2023-06-14T15:49:36.797Z",
"lastModificationDate": "2025-07-04T09:00:00.000Z"
}

Update Asset Settings

Update asset settings.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/settings
HTTP methodPATCH

Request

ParameterRequiredTypeNotes
assetIdYesstringAsset id. Pattern: ^[a-zA-Z0-9_-]{1,128}$
tokenRequiredNostringToken required status.
devToolsAccessNostringDev tools access status.
capNostringCAP status.
analyticsNostringAnalytics status.
codeObfuscationNostringCode obfuscation status.

Response

FieldData typeNotes
idstringPlayer asset Id.
statusstringAsset status.
metadataobjectAsset metadata.
outputsarray of objectsAdditional outputs, generated after archivisation.
createDatestring <date-time>Create date.
lastModificationDatestring <date-time>Last modification date.
durationMillisecondsint64Duration time in milliseconds.
sourcestringAsset source.
typestringAsset type.
channelIdstringChannel identifier.
startstring <date-time>Start time of the event.
endstring <date-time>End time of the event.
isDrmbooleanIs DRM content.
presetstringPreset info.
tokenRequiredPolicyobjectToken required policy.
titlestringAsset title.
descriptionstringAsset description.
tagsarray of objectsAsset tags.
imagesobjectAsset images.
chaptersarray of objectsAsset chapters.
settingsobjectAsset settings.
REQUEST
curl -X PATCH \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/settings \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"tokenRequired": "Enabled",
"devToolsAccess": "Disabled",
"cap": "Enabled",
"analytics": "Enabled",
"codeObfuscation": "Enabled"
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc.",
"status": "Processing",
"metadata": {
"Title": "The Matrix"
},
"createDate": "2023-06-14T15:49:36.7973126+02:00",
"lastModificationDate": "2023-06-14T16:00:00.0000000+02:00",
"durationMilliseconds": 3600000,
"source": "Vod",
"type": "Vod",
"channelId": "cot-channel-ch1",
"isDrm": true,
"preset": "dash_hls_1080p",
"tokenRequiredPolicy": {
"asset": "inherit",
"tenant": "true"
},
"title": "The Matrix",
"description": "A computer hacker learns from mysterious rebels about the true nature of his reality and his role in the war against its controllers.",
"tags": [
{
"name": "action",
"id": "00000000-0000-0000-0000-000000000001"
}
],
"settings": {
"tokenRequired": {
"asset": "Enabled",
"tenant": "Enabled"
},
"devToolsAccess": {
"asset": "Disabled",
"tenant": "Disabled"
},
"cap": {
"asset": "Enabled",
"tenant": "Enabled"
},
"analytics": {
"asset": "Enabled",
"tenant": "Enabled"
},
"codeObfuscation": {
"asset": "Enabled",
"tenant": "Enabled"
}
}
}

Delete Asset Chapter

Delete asset chapter.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/chapters/{chapterId}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
chapterIdYesstringStreaming asset chapter identifier.

Response

This method returns a 200 OK status code on success with no response body.

REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/chapters/chapter1 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'

Create Asset Chapters

Create asset chapters.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/chapters
HTTP methodPOST

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
chaptersNoarray of objectsAsset chapters.

Response

This method returns a 200 OK status code on success with no response body.

REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/chapters \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"chapters": [
{
"title": "chapter-001",
"startSecond": 35
},
{
"title": "chapter-002",
"startSecond": 60,
"endSecond": 100
}
]
}'

List Allowed Domains

List allowed domains.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/domains
HTTP methodGET

Response

FieldData typeNotes
-array of objectsArray of allowed domains.
playerDomainIdstringPlayer domain identifier.
analyticsDomainIdstringAnalytic domain identifier.
urlstringDomain Url.
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/streaming/v1/domains \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
[
{
"playerDomainId": "00000000-0000-0000-0000-000000000000",
"analyticsDomainId": "00000000-0000-0000-0000-000000000000",
"url": "https://example.domain.com"
}
]

Add Allow Domain

Add new allow domain for player.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/domains
HTTP methodPOST

Request

ParameterRequiredTypeNotes
urlYesstringAllow domain url.

Response

FieldData typeNotes
playerDomainIdstringPlayer domain identifier.
analyticsDomainIdstringAnalytic domain identifier.
urlstringDomain Url.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/domains \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"url": "https://your.domain.com"
}'
RESPONSE
{
"playerDomainId": "00000000-0000-0000-0000-000000000000",
"analyticsDomainId": "00000000-0000-0000-0000-000000000000",
"url": "https://your.domain.com"
}

Delete Allow Domain

Delete allow domain for player.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/domains
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
playerDomainIdNostringPlayer domain id.
analyticsDomainIdNostringAnalytics domain id.

Response

This method returns a 200 OK status code on success with no response body.

REQUEST
curl -X DELETE \
'https://{tenant_name}.api.videokit.cloud/streaming/v1/domains?playerDomainId=00000000-0000-0000-0000-000000000000&analyticsDomainId=00000000-0000-0000-0000-000000000000' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'

Delete Asset Image

Delete asset image.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/{imageKey}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
imageKeyYesstringImage key name.

Response

This method returns a 200 OK status code on success with no response body.

REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images/poster \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'

Create Asset Images

Create asset images.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images
HTTP methodPOST

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
imagesNoobjectDictionary of images.

Response

This method returns a 200 OK status code on success with no response body.

REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"images": {
"poster": {
"Id": "guid",
"Name": "photo01.jpg",
"Url": "https://domain.com/image.jpg"
},
"image1": {
"Id": "guid",
"Name": "image1.jpg",
"Url": "https://domain.com/image2.jpg"
}
}
}'

Start Image Upload

Start image upload.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/start
HTTP methodPOST

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
nameYesstringFile name, allowed alphanumeric and underscore characters.
fileSizeYesint64File size in bytes.

Response

FieldData typeNotes
fileIdstringFile identifier.
multipartUrlsarray of stringsURLs to upload parts of file to.
fileKeystringFile storage id.
partSizeint64Size of each file part in bytes.
lastPartSizeint64Size of last file part.
partsCountint64Number of parts that the file has to be divided into.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images/uploaded/start \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"name": "file.jpg",
"fileSize": 7000
}'
RESPONSE
{
"fileId": "00000000-0000-0000-0000-000000000000",
"multipartUrls": [
"https://buekct-name.s3.eu-west-1.amazonaws.com/file.jpg?uploadId=upload-chunk-1",
"https://buekct-name.s3.eu-west-1.amazonaws.com/file.jpg?uploadId=upload-chunk-2"
],
"fileKey": "tenant_id/sources/images/uploaded/file.jpg",
"partSize": 5123100,
"lastPartSize": 9000,
"partsCount": 20
}

Finish Image Upload

Finishing image upload. Call this method after uploading all parts.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/complete
HTTP methodPOST

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
fileIdYesstringFile identifier.
partsYesarray of objectsList of uploaded parts.
parts.partNumberYesintegerPart number.
parts.eTagYesstringEtag header from part upload response.

Response

FieldData typeNotes
fileIdstringFile identifier.
fileKeystringFile storage id.
urlstringLocation url.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images/uploaded/complete \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"fileId": "00000000-0000-0000-0000-000000000000",
"parts": [
{
"partNumber": 1,
"eTag": "kjjfds9f9sd23jkjfsduf9sji234ifds"
},
{
"partNumber": 2,
"eTag": "ko2kjc0skngfo0a1dklkf0osojk54jfs"
}
]
}'
RESPONSE
{
"fileId": "00000000-0000-0000-0000-000000000000",
"fileKey": "tenant_id/sources/images/uploaded/file.jpg",
"url": "https://example.cloudfront.net/bucket-name/tenant_id/images/file.jpg"
}

Get Next Part Upload URL

Get next part upload URL.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/{fileId}/part/{partNumber}
HTTP methodGET

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
fileIdYesstringFile id from files/start method.
partNumberYesint32Number of part.

Response

FieldData typeNotes
urlstringPart upload url.
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images/uploaded/00000000-0000-0000-0000-000000000000/part/1 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"url": "https://buekct-name.s3.eu-west-1.amazonaws.com/file.jpg?uploadId=upload-chunk-1"
}

List Images

Lists images.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded
HTTP methodGET

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
limitNoint32Number of items per page. Default: 100
pageNoint32Request page number. Default: 1
fileTypeNostringFile type.
statusNostringFile status.
queryNostringText search query.
sortNostringField to sort by. Examples: CreateDate, LastModificationDate, FileSize.
descNobooleanSort descending. Default: false
idsNoarray of stringsFile identifiers.
createDateStartNostring <date-time>Create date start range.
createDateEndNostring <date-time>Create date end range.
lastModificationDateEndNostring <date-time>Last modification date end range.
lastModificationDateStartNostring <date-time>Last modification date start range.

Response

FieldData typeNotes
itemsarray of objectsOne page of listed UploadedFileResult.
pageCountint32Number of all pages.
pageSizeint32Size of the page.
totalCountint32Number of all items.
pageNumberint32Number of this page.
hasMorebooleanActual number of matching records is larger than TotalCount.
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images/uploaded?limit=100&page=1' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"fileKey": "tenant_id/sources/images/uploaded/file.jpg",
"status": "Completed",
"fileSize": 901353,
"s3Uri": "s3://bucket-name/tenant_id/images/file.jpg",
"url": "https://example.cloudfront.net/bucket-name/tenant_id/images/file.jpg",
"bucket": "bucket-name",
"orginalFileName": "file.jpg",
"name": "file.jpg",
"createDate": "2023-06-14T15:49:36.7973126+02:00",
"lastModificationDate": "2023-06-14T15:49:36.7973126+02:00"
}
],
"pageCount": 1,
"pageSize": 100,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get Image Details

Get image details.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/{fileId}
HTTP methodGET

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
fileIdYesstringFile id from files/start method.

Response

FieldData typeNotes
idstringFile identifier.
fileKeystringFile storage id.
statusstringFile status.
fileSizeint64File size.
s3Uristrings3 uri path.
urlstringLocation url.
bucketstrings3 bucket name.
orginalFileNamestringOriginal file name.
namestringFile name.
createDatestring <date-time>Create date.
lastModificationDatestring <date-time>Last modification date.
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images/uploaded/00000000-0000-0000-0000-000000000000 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "00000000-0000-0000-0000-000000000000",
"fileKey": "tenant_id/sources/images/uploaded/file.jpg",
"status": "Completed",
"fileSize": 901353,
"s3Uri": "s3://bucket-name/tenant_id/images/file.jpg",
"url": "https://example.cloudfront.net/bucket-name/tenant_id/images/file.jpg",
"bucket": "bucket-name",
"orginalFileName": "file.jpg",
"name": "file.jpg",
"createDate": "2023-06-14T15:49:36.7973126+02:00",
"lastModificationDate": "2023-06-14T15:49:36.7973126+02:00"
}

Delete Uploaded Image

Delete uploaded image.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/{fileId}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
fileIdYesstringFile id from files/start method.

Response

FieldData typeNotes
deletedFileKeystringDeleted file key.
REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images/uploaded/00000000-0000-0000-0000-000000000000 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"deletedFileKey": "tenant_id/sources/images/uploaded/file.jpg"
}

Delete Multiple Images

Delete multiple images.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/deletemany
HTTP methodPOST

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
bodyYesarray of stringsFile id from files/start method

Response

FieldData typeNotes
[fileId]objectService response for each file ID
[fileId].statusServiceStatusService status details
[fileId].status.codestringApplication level error code
[fileId].status.messagestringDeveloper friendly message
[fileId].successbooleanSet if the request was processed successfully
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images/uploaded/deletemany \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '["00000000-0000-0000-0000-000000000000", "11111111-1111-1111-1111-111111111111"]'
RESPONSE
{
"00000000-0000-0000-0000-000000000000": {
"status": {
"code": "success",
"message": "File deleted successfully"
},
"success": true
},
"11111111-1111-1111-1111-111111111111": {
"status": {
"code": "error",
"message": "File not found"
},
"success": false
}
}

Get Image Frames

Get image frames for given asset

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/frames
HTTP methodGET

Request

ParameterRequiredTypeNotes
assetIdYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$

Response

FieldData typeNotes
itemsarray of stringsSingle page of listed objects.
items[].s3UristringS3 URI of the image frame
items[].urlstringurl of the image frame
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images/frames \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
RESPONSE
{
"00000000-0000-0000-0000-000000000000": {
"s3Uri": "s3://bucket-name/path/to/file.jpg"
"url": "https://example.com/images/file.jpg"
},
"11111111-1111-1111-1111-111111111111": {
"s3Uri": "s3://bucket-name/path/to/file2.jpg"
"url": "https://example.com/images/file2.jpg"
}
}

List Impressions

List of impressions.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/impressions
HTTP methodPOST

Request

ParameterRequiredTypeNotes
startNostring <date-time>Start of timeframe which is queried in UTC format.
endNostring <date-time>End of timeframe which is queried in UTC format.
filtersNoarray of objectsAnalytics Query Filters.
limitNoint64Maximum number of rows returned (max. 200).

Response

FieldData typeNotes
impressionsarray of objectsArray of impressions.
impressions.impressionIdstringRandom UUID that is used to identify a session.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/impressions \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"start": "2024-09-15T08:10:37.560Z",
"end": "2024-09-22T08:10:37.560Z",
"limit": 100
}'
RESPONSE
{
"impressions": [
{
"impressionId": "00000000-0000-0000-0000-000000000000"
},
{
"impressionId": "11111111-1111-1111-1111-111111111111"
}
]
}

Get Max Concurrent Viewers

Get max concurrent viewers analytics.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/metrics/max_concurrentviewers
HTTP methodPOST

Request

ParameterRequiredTypeNotes
startNostring <date-time>Start of timeframe which is queried in UTC format.
endNostring <date-time>End of timeframe which is queried in UTC format.
filtersNoarray of objectsAnalytics Query Filters.
orderByNoarray of objectsAnalytics order by filters.
intervalNostringTime interval.
groupByNoarray of stringsArray of strings.
limitNoint64Maximum number of rows returned (max. 200).
offsetNoint64Offset of data.

Response

FieldData typeNotes
rowCountint64Number of rows returned.
rowsarray of arraysArray of objects.
columnLabelsarray of objectsColumn labels.
columnLabels.keystringKey.
columnLabels.labelstringLabel.
contextDescriptionarray of objectsContext description.
contextDescription.labelstringLabel name.
contextDescription.descriptionstringDescription.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/metrics/max_concurrentviewers \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"start": "2024-09-15T08:10:37.560Z",
"end": "2024-09-22T08:10:37.560Z",
"interval": "DAY"
}'
RESPONSE
{
"rowCount": 31,
"rows": [
[
1672531200000,
150
],
[
1672617600000,
200
]
],
"columnLabels": [
{
"key": "TIMESTAMP",
"label": "Timestamp"
},
{
"key": "MAX_CONCURRENT_VIEWERS",
"label": "Max Concurrent Viewers"
}
],
"contextDescription": [
{
"label": "Max Concurrent Viewers",
"description": "Maximum number of concurrent viewers"
}
]
}

Generate QR Code

Generates a QR Code for the asset from the streaming module.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/qrcode/{id}
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringStreaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$
MutedNobooleanPlayer muted.
AutoplayNobooleanPlayer autoplay.
TimeShiftNobooleanPlayer timeshift.
AnalyticsNobooleanAnalytics enabled.

Response

Returns a QR code image.

REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/streaming/v1/qrcode/12345678-1234-1234-1234-123456789abc?Muted=true&Autoplay=true' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'

Get Queries Median Analytics

Get queries median analytics.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/median
HTTP methodPOST

Request

ParameterRequiredTypeNotes
startNostring <date-time>Start of timeframe which is queried in UTC format.
endNostring <date-time>End of timeframe which is queried in UTC format.
filtersNoarray of objectsAnalytics Query Filters.
orderByNoarray of objectsAnalytics order by filters.
intervalNostringTime interval.
groupByNoarray of stringsArray of strings.
limitNoint64Maximum number of rows returned (max. 200).
offsetNoint64Offset of data.
dimensionYesstringMetric dimension.
includeContextNobooleanWhether context data should be included in the response.

Response

FieldData typeNotes
rowCountint64Number of rows returned.
rowsarray of arraysArray of objects.
columnLabelsarray of objectsColumn labels.
columnLabels.keystringKey.
columnLabels.labelstringLabel.
contextDescriptionarray of objectsContext description.
contextDescription.labelstringLabel name.
contextDescription.descriptionstringDescription.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/median \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"start": "2024-09-15T08:10:37.560Z",
"end": "2024-09-22T08:10:37.560Z",
"dimension": "PAGE_LOAD_TIME",
"interval": "DAY"
}'
RESPONSE
{
"rowCount": 31,
"rows": [
[
1672531200000,
250
],
[
1672617600000,
300
]
],
"columnLabels": [
{
"key": "TIMESTAMP",
"label": "Timestamp"
},
{
"key": "PAGE_LOAD_TIME",
"label": "Page Load Time (ms)"
}
],
"contextDescription": [
{
"label": "Page Load Time",
"description": "Median page load time in milliseconds"
}
]
}

Get Queries Avg Analytics

Get queries avg analytics.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/avg
HTTP methodPOST

Request

ParameterRequiredTypeNotes
startNostring <date-time>Start of timeframe which is queried in UTC format.
endNostring <date-time>End of timeframe which is queried in UTC format.
filtersNoarray of objectsAnalytics Query Filters.
orderByNoarray of objectsAnalytics order by filters.
intervalNostringTime interval.
groupByNoarray of stringsArray of strings.
limitNoint64Maximum number of rows returned (max. 200).
offsetNoint64Offset of data.
dimensionYesstringMetric dimension.
includeContextNobooleanWhether context data should be included in the response.

Response

FieldData typeNotes
rowCountint64Number of rows returned.
rowsarray of arraysArray of objects.
columnLabelsarray of objectsColumn labels.
columnLabels.keystringKey.
columnLabels.labelstringLabel.
contextDescriptionarray of objectsContext description.
contextDescription.labelstringLabel name.
contextDescription.descriptionstringDescription.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/avg \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"start": "2024-09-15T08:10:37.560Z",
"end": "2024-09-22T08:10:37.560Z",
"dimension": "PLAYED",
"interval": "DAY"
}'
RESPONSE
{
"rowCount": 31,
"rows": [
[
1672531200000,
1800000
],
[
1672617600000,
2100000
]
],
"columnLabels": [
{
"key": "TIMESTAMP",
"label": "Timestamp"
},
{
"key": "PLAYED",
"label": "Average Played Time (ms)"
}
],
"contextDescription": [
{
"label": "Average Played Time",
"description": "Average played time in milliseconds"
}
]
}

Get Queries Count Analytics

Get queries count analytics.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/count
HTTP methodPOST

Request

ParameterRequiredTypeNotes
startNostring <date-time>Start of timeframe which is queried in UTC format.
endNostring <date-time>End of timeframe which is queried in UTC format.
filtersNoarray of objectsAnalytics Query Filters.
orderByNoarray of objectsAnalytics order by filters.
intervalNostringTime interval.
groupByNoarray of stringsArray of strings.
limitNoint64Maximum number of rows returned (max. 200).
offsetNoint64Offset of data.
dimensionYesstringMetric dimension.
includeContextNobooleanWhether context data should be included in the response.

Response

FieldData typeNotes
rowCountint64Number of rows returned.
rowsarray of arraysArray of objects.
columnLabelsarray of objectsColumn labels.
columnLabels.keystringKey.
columnLabels.labelstringLabel.
contextDescriptionarray of objectsContext description.
contextDescription.labelstringLabel name.
contextDescription.descriptionstringDescription.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/count \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"start": "2024-09-15T08:10:37.560Z",
"end": "2024-09-22T08:10:37.560Z",
"dimension": "IMPRESSIONS",
"interval": "DAY"
}'
RESPONSE
{
"rowCount": 31,
"rows": [
[
1672531200000,
1000
],
[
1672617600000,
1200
]
],
"columnLabels": [
{
"key": "TIMESTAMP",
"label": "Timestamp"
},
{
"key": "IMPRESSIONS",
"label": "Impressions Count"
}
],
"contextDescription": [
{
"label": "Impressions",
"description": "Number of impressions"
}
]
}

Get Queries Sum Analytics

Get queries sum analytics.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/sum
HTTP methodPOST

Request

ParameterRequiredTypeNotes
startNostring <date-time>Start of timeframe which is queried in UTC format.
endNostring <date-time>End of timeframe which is queried in UTC format.
filtersNoarray of objectsAnalytics Query Filters.
orderByNoarray of objectsAnalytics order by filters.
intervalNostringTime interval.
groupByNoarray of stringsArray of strings.
limitNoint64Maximum number of rows returned (max. 200).
offsetNoint64Offset of data.
dimensionYesstringMetric dimension.
includeContextNobooleanWhether context data should be included in the response.

Response

FieldData typeNotes
rowCountint64Number of rows returned.
rowsarray of arraysArray of objects.
columnLabelsarray of objectsColumn labels.
columnLabels.keystringKey.
columnLabels.labelstringLabel.
contextDescriptionarray of objectsContext description.
contextDescription.labelstringLabel name.
contextDescription.descriptionstringDescription.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/sum \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"start": "2023-01-01T00:00:00Z",
"end": "2023-01-31T23:59:59Z",
"dimension": "PLAYED",
"interval": "DAY"
}'
RESPONSE
{
"rowCount": 31,
"rows": [
[
1672531200000,
18000000
],
[
1672617600000,
21000000
]
],
"columnLabels": [
{
"key": "TIMESTAMP",
"label": "Timestamp"
},
{
"key": "PLAYED",
"label": "Total Played Time (ms)"
}
],
"contextDescription": [
{
"label": "Total Played Time",
"description": "Sum of played time in milliseconds"
}
]
}

Get Settings

Get settings for player module.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/settings
HTTP methodGET

Response

FieldData typeNotes
tenantIdstringTenant id.
tenantNamestringTenant name.
playerEncryptedDatastringPlayer Encrypted data.
contentAcquisitionInfoobjectContentAcquisitionInfo
licenseAcquisitionInfoobjectLicenseAcquisitionInfo
bitmovinPlayerInfoobjectBitmovinPlayerInfo
capInfoobjectCapInfo
allowedDomainsarray of objectsList of AllowedDomain.
playerConfigInfoobjectPlayer configuration information.
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/streaming/v1/settings \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"tenantId": "00000000-0000-0000-0000-000000000000",
"tenantName": "tenant01",
"playerEncryptedData": "encrypted_data_string",
"contentAcquisitionInfo": {
"acquireContentUrl": "https://example.player.videokit.cloud/player/v1/acquirecontent/bitmovin/web",
"sourceConfigUrl": "https://example.player.videokit.cloud/v1/sourceconfig",
"authorization": {
"tokenRequiredPolicy": true,
"signingKey": "SGVsbG8=",
"signingAlgorithm": "HS256"
}
},
"licenseAcquisitionInfo": {
"enabled": true,
"authorization": {
"signingKey": "SGVsbG8=",
"signingAlgorithm": "HS256"
},
"endpoints": [
{
"licenseUrl": "https://example.la.drm.cloud/acquire-license/fairplay",
"systemName": "Fairplay",
"systemId": "94ce86fb-07ff-4f43-adb8-93d2fa968ca2"
}
]
},
"bitmovinPlayerInfo": {
"embedUrl": "https://example.streaming.videokit.cloud/v1/embed/bitmovin",
"sourceConfigUrl": "https://example.player.videokit.cloud/v1/sourceconfig",
"playerLicense": {
"key": "00000000-0000-0000-0000-000000000000",
"impressions": 90,
"maxImpressions": 5000,
"id": "00000000-0000-0000-0000-000000000000"
},
"analyticsLicense": {
"key": "00000000-0000-0000-0000-000000000000",
"impressions": 90,
"maxImpressions": 5000
}
},
"capInfo": {
"enabled": true,
"capUrl": "https://example.cap.videokit.cloud/heartbeat/v1/heartbeat/00000000-0000-0000-0000-000000000000",
"signingKey": "SGVsbG8="
},
"allowedDomains": [
{
"playerDomainId": "00000000-0000-0000-0000-000000000000",
"analyticsDomainId": "00000000-0000-0000-0000-000000000000",
"url": "https://example.domain.com"
}
],
"playerConfigInfo": {
"devToolsAccess": false,
"analytics": true,
"codeObfuscation": true
}
}

Delete Asset Tag

Removes a specific tag from an asset.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/tags/{tag}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
assetIdYesstringAsset identifier (path parameter).
tagYesstringTag to be removed (path parameter).

Response

This method returns a 200 OK status code on success with no response body.

REQUEST
curl -X DELETE \
'https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/tags/{tag}' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'

Create Asset Tags

Adds one or more tags to a specific asset.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/tags
HTTP methodPOST

Request

ParameterRequiredTypeNotes
assetIdYesstringAsset identifier (path parameter).
tagsYesarray of objectsList of tags to be added. Attributes in the format [key]=value

Response

This method returns a 200 OK status code on success with no response body.

REQUEST
curl -X POST \
'https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/tags' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"tags": [
{ "name": "comedy" },
{ "name": "featured" }
]
}'

Core


Get Tenant Status

It returns the status of a tenant.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/core/v1/settings/tenant/{id}/status
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringTenant ID.
X-Tenant-IdNostringTenant ID is required only if one tenant is active on a given account.

Response

FieldData typeNotes
statusstringTenant status (e.g., Active, Blocked, Deleted, SettingUp, Error).
messagestringAdditional message about the tenant status.
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/core/v1/settings/tenant/12345678-1234-1234-1234-123456789abc/status \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: <tenant_id>'
RESPONSE
{
"status": "Active",
"message": "Tenant is active and running."
}

Get API Keys

Returns a list of API keys details.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/core/v1/api-key
HTTP methodGET

Request

ParameterRequiredTypeNotes
QueryNostringText query to filter API keys
SortNostringField to sort by
DescNobooleanSet to true to sort descending
PageNoint32Page number
LimitNoint32Number of items per page

Response

FieldTypeNotes
itemsarray of objectsSingle page of listed objects.
items.idstringAPI Key ID.
items.namestringAPI Key name.
items.roleIdstringRole name associated with the API Key.
items.roleIdstringRole ID associated with the API Key.
items.createdAtstringAPI Key creation timestamp.
pageCountint32Number of all pages.
pageSizeint32Size of the page.
totalCountint32Number of all items.
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/core/v1/api-key?Query=admin&Sort=name&Desc=true&Page=1&Limit=10' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "12345678-1234-1234-1234-123456789abc",
"name": "API Key 1",
"roleName": "Admin",
"roleId": "role-123",
"createdAt": "2025-05-19T09:35:36.538996+00:00"
}
],
"pageCount": 1,
"pageSize": 100,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get Single API Key

It returns the details of a specific API key by its ID.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/core/v1/api-key/{id}
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringAPI Key ID.
X-Tenant-IdNostringTenant ID is required only if one tenant is active on a given account.

Response

FieldData typeNotes
idstringAPI Key ID.
namestringAPI Key name.
roleIdstringRole ID associated with the API Key.
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/core/v1/api-key/12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: <tenant_id>'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"name": "API Key 1",
"roleId": "role-123"
}

Create API Key

It creates a new API key.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/core/v1/api-key
HTTP methodPOST

Request

ParameterRequiredTypeNotes
X-Tenant-IdNostringTenant ID is required only if one tenant is active on a given account.
nameYesstringName of the API Key.
roleIdYesstringRole ID associated with the API Key.

Response

FieldData typeNotes
idstringAPI Key ID.
namestringAPI Key name.
roleIdstringRole ID associated with the API Key.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/core/v1/api-key \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: <tenant_id>' \
-d '{
"name": "API Key 1",
"roleId": "role-123"
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"name": "API Key 1",
"roleId": "role-123"
}

Update API Key

It updates an existing API key.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/core/v1/api-key/{id}
HTTP methodPUT

Request

ParameterRequiredTypeNotes
idYesstringAPI Key ID.
X-Tenant-IdNostringTenant ID is required only if one tenant is active on a given account.
nameYesstringUpdated name of the API Key.
roleIdYesstringUpdated Role ID associated with the API Key.

Response

FieldData typeNotes
idstringAPI Key ID.
namestringUpdated API Key name.
roleIdstringUpdated Role ID associated with the API Key.
REQUEST
curl -X PUT \
https://{tenant_name}.api.videokit.cloud/core/v1/api-key/12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: <tenant_id>' \
-d '{
"name": "Updated API Key 1",
"roleId": "role-456"
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"name": "Updated API Key 1",
"roleId": "role-456"
}

Delete API Key

It deletes an API key by its ID.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/core/v1/api-key/{id}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
idYesstringAPI Key ID.
X-Tenant-IdNostringTenant ID is required only if one tenant is active on a given account.

Response

No content is returned upon successful deletion.

REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/core/v1/api-key/12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: <tenant_id>'
RESPONSE
204 No Content

Transcoder


List Available Presets

List available presets for output generation.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/transcoder/v1/presets
HTTP methodGET

Request

ParameterRequiredTypeNotes
limitNoint32Page size of presets; default: 100
pageNoint32Number of requested page; default: 1

Response

FieldData typeNotes
itemsarray of objectsSingle page of listed presets
items[].namestringName of the preset
items[].descriptionstringDescription of the preset
items[].createsDownloadbooleanIndicates if the preset creates a downloadable output
pageCountint32Number of all pages
pageSizeint32Size of the page
totalCountint32Number of all items
pageNumberint32Number of this page
hasMorebooleanActual number of matching records is larger than TotalCount
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/transcoder/v1/presets?limit=10&page=1' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"name": "preset1",
"description": "HD 1080p preset",
"createsDownload": true
},
{
"name": "preset2",
"description": "SD 720p preset",
"createsDownload": false
}
],
"pageCount": 1,
"pageSize": 10,
"totalCount": 2,
"pageNumber": 1,
"hasMore": false
}