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

Notifications (Webhooks)

Path
Method
Webhooklist_webhooks create_webhook get_webhook update_webhook delete_webhook test_webhook get_webhook_signature_secret
Webhook Eventslist_webhook_event_types list_webhook_events

Watermarking

Path
Method
Assetlist_watermarking_assets get_watermarking_asset
DetectJobscreate_watermarking_detection_job
Filelist_watermarking_files get_watermarking_file get_watermarking_file_part_upload_url start_watermarking_file_upload complete_watermarking_file_upload
Revocationlist_revoked_watermarking_sessions revoke_watermarking_sessions unrevoke_watermarking_sessions
Sessionslist_watermarking_sessions get_watermarking_session
Settingsget_watermarking_settings
Tokencreate_redirector–token
Redirectorredirect_to_watermarked_asset redirect_to_watermarked_output redirect_to_watermarked_endpoint

DRM

Path
Method
Key Managementget_SPEKE_1.0_content_keys get_SPEKE_2.0_content_keys get_SPEKE_2.0/CPIX_2.3_content_keys get_Anevia_content_keys get_DRM_certificate
Settingsget_DRM_settings
Statisticsget_license_error_codes list_license_requests get_license_count
Tokenget_drm_token

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.

note

The first available video track is assigned automatically. Audio tracks are not auto-assigned - if none is set in transcodingTracks, the video will be muted.

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": "audio_01"
},
"type": "Audio",
"language": "en",
"name": "Main Audio Track"
}
],
"fileTypesFlag": "Audio"
}
],
"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
}

Notifications (Webhooks)


List Webhooks

Retrieves a list of webhooks.

Method URLhttps://{tenant_name}.api.videokit.cloud/notifications/v1/webhook
HTTP methodGET

Request

ParameterRequiredTypeNotes
PageNoint32Page number
LimitNoint32Page size
SortNostringSort field
DescNoboolDescending

Response

FieldTypeNotes
itemsarrayList of webhooks
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook?Page=1&Limit=10 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{"id": "webhook-uuid", "name": "Webhook 1"}
]
}

Create Webhook

Creates a new webhook.

Method URLhttps://{tenant_name}.api.videokit.cloud/notifications/v1/webhook
HTTP methodPOST

Request

ParameterRequiredTypeNotes
nameYesstringWebhook name
urlYesstringWebhook URL
eventTypesYesarrayEvent types
isEnabledNoboolEnable webhook

Response

FieldTypeNotes
idstringWebhook ID
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{"name": "Webhook 1", "url": "https://example.com/webhook", "eventTypes": ["VodAssetCreated"]}'
RESPONSE
{
"id": "webhook-uuid"
}

Get Webhook

Retrieves details of a specific webhook.

Method URLhttps://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/{id}
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstringWebhook ID

Response

FieldTypeNotes
idstringWebhook ID
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/webhook-uuid \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "webhook-uuid"
}

Update Webhook

Updates a webhook.

Method URLhttps://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/{id}
HTTP methodPATCH

Request

ParameterRequiredTypeNotes
idYesstringWebhook ID
nameNostringWebhook name
urlNostringWebhook URL
eventTypesNoarrayEvent types
isEnabledNoboolEnable webhook

Response

FieldTypeNotes
idstringWebhook ID
REQUEST
curl -X PATCH \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/webhook-uuid \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{"name": "Updated Webhook"}'
RESPONSE
{
"id": "webhook-uuid"
}

Delete Webhook

Deletes a webhook.

Method URLhttps://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/{id}
HTTP methodDELETE

Request

ParameterRequiredTypeNotes
idYesstringWebhook ID

Response

A successful deletion returns HTTP 204 No Content.

REQUEST
curl -X DELETE \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/webhook-uuid \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'

Test Webhook

Sends a test event to a webhook.

Method URLhttps://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/{id}/test
HTTP methodPOST

Request

ParameterRequiredTypeNotes
idYesstringWebhook ID

Response

FieldTypeNotes
responseCodeint32HTTP response code
responseContentstringResponse content
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/webhook-uuid/test \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"responseCode": 200,
"responseContent": "OK"
}

Get Webhook Signature Secret

Retrieves the secret used for webhook signature verification.

Method URLhttps://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/signature-secret
HTTP methodGET

Request

No parameters.

Response

FieldTypeNotes
secretstringWebhook secret
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/signature-secret \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"secret": "webhook-secret"
}

List Webhook Event Types

Returns a list of available webhook event types.

Method URLhttps://{tenant_name}.api.videokit.cloud/notifications/v1/webhook-events/types
HTTP methodGET

Request

No parameters.

Response

FieldTypeNotes
dataarrayList of event types
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook-events/types \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"data": ["VodAssetCreated", "VodAssetDeleted"]
}

List Webhook Events

Returns a list of webhook events.

Method URLhttps://{tenant_name}.api.videokit.cloud/notifications/v1/webhook-events
HTTP methodGET

Request

ParameterRequiredTypeNotes
StartNostringStart date
EndNostringEnd date
StatusesNoarrayStatuses
PageNoint32Page number
LimitNoint32Page size
SortNostringSort field
DescNoboolDescending

Response

FieldTypeNotes
itemsarrayList of webhook events
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook-events?Page=1&Limit=10 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{"id": "event-uuid", "type": "VodAssetCreated"}
]
}

Watermarking


List Watermarking Assets

It returns a list of watermarking assets.

Specifics

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

Request

ParameterRequiredTypeNotes
limitNointeger (int32)Page size of assets; default: 100
pageNointeger (int32)Page number; default: 1
queryNostringSearch query string
createDateStartNostring <date-time>Filter by creation date (start)
createDateEndNostring <date-time>Filter by creation date (end)
sortNostringProperty to sort by
descNobooleanSort descending if true; default: false
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
itemsarray of objectsList of watermarking asset objects
pageCountint32Total number of pages
pageSizeint32Size of the current page
totalCountint32Total number of items
pageNumberint32Current page number
hasMorebooleanIndicates if more pages are available
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/assets?limit=100&page=1&desc=false' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"createDate": "2025-09-30T12:34:56Z",
"metadata": {
"title": "Demo Asset",
"description": "Sample watermarking asset"
}
}
],
"pageCount": 1,
"pageSize": 100,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get Watermarking Asset

Returns details of a specific watermarking asset.

Specifics

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

Request

ParameterRequiredTypeNotes
idYesstring <uuid>ID of the asset
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
idstring <uuid>Asset ID
createDatestring <date-time>Creation timestamp
metadataobjectMetadata associated with the asset
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/assets/123e4567-e89b-12d3-a456-426614174000' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"createDate": "2025-09-30T12:34:56Z",
"metadata": {
"title": "Demo Asset",
"description": "Sample watermarking asset"
}
}

Create Watermarking Detection Job

Creates a detection job for a watermarking file.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/watermarking/v1/detectjobs
HTTP methodPOST

Request

ParameterRequiredTypeNotes
fileIdYesstring <uuid>ID of the file to be processed for watermark detection
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
jobIdstring <uuid>ID of the created detection job
REQUEST
curl -X POST \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/detectjobs' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"fileId": "123e4567-e89b-12d3-a456-426614174000"
}'
RESPONSE
{
"jobId": "987e6543-e21b-12d3-a456-426614174999"
}

List Watermarking Files

It returns a list of watermarking files.

Specifics

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

Request

ParameterRequiredTypeNotes
QueryNostringSearch query string
SortNostringProperty to sort by
DescNobooleanSort descending if true; default: false
PageNointeger (int32)Page number
LimitNointeger (int32)Page size
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
itemsarray of objectsList of watermarking file objects
pageCountint32Total number of pages
pageSizeint32Size of the current page
totalCountint32Total number of items
pageNumberint32Current page number
hasMorebooleanIndicates if more pages are available

Each item includes:

FieldTypeNotes
idstring <uuid>File ID
orginalFileNamestringOriginal name of the uploaded file
createDatestring <date-time>File creation timestamp
uploadStatusenumUpload status
detectionobjectDetection result and progress
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/files?Limit=50&Page=1&Desc=true' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"orginalFileName": "video.mp4",
"createDate": "2025-09-30T12:34:56Z",
"uploadStatus": "Uploaded",
"detection": {
"status": "Detected",
"userNumber": 42,
"userName": "john.doe"
}
}
],
"pageCount": 1,
"pageSize": 50,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get Watermarking File

It returns details of a specific watermarking file.

Specifics

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

Request

ParameterRequiredTypeNotes
idYesstring <uuid>ID of the watermarking file
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
idstring <uuid>File ID
orginalFileNamestringOriginal name of the uploaded file
createDatestring <date-time>File creation timestamp
uploadStatusenumUpload status
detectionobjectDetection result and progress
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/files/123e4567-e89b-12d3-a456-426614174000' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"orginalFileName": "video.mp4",
"createDate": "2025-09-30T12:34:56Z",
"uploadStatus": "Uploaded",
"detection": {
"status": "Detected",
"userNumber": 42,
"userName": "john.doe"
}
}

Get Watermarking File Part Upload URL

It returns a presigned URL for uploading a specific part of a watermarking file.

Specifics

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

Request

ParameterRequiredTypeNotes
idYesstring <uuid>ID of the watermarking file
nrYesinteger <int64>Part number to upload
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
urlstringPresigned URL for part upload
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/files/123e4567-e89b-12d3-a456-426614174000/part/1' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"url": "https://s3.amazonaws.com/bucket/part1?signature=abc123"
}

Start Watermarking File Upload

Initiates a multipart upload for a watermarking file and returns presigned URLs for each part.

Specifics

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

Request

ParameterRequiredTypeNotes
nameNostringInternal name of the file
friendlyNameNostringDisplay name of the file
fileSizeYesinteger <int64>Total size of the file in bytes
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
fileIdstring <uuid>ID of the file
multipartUrlsarray of stringsPresigned URLs for each part
fileKeystringInternal file key
partSizeinteger <int64>Size of each part
lastPartSizeinteger <int64>Size of the last part
partsCountinteger <int64>Total number of parts
REQUEST
curl -X POST \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/files/start-upload' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"name": "video.mp4",
"friendlyName": "Demo Video",
"fileSize": 104857600
}'
RESPONSE
{
"fileId": "123e4567-e89b-12d3-a456-426614174000",
"multipartUrls": [
"https://s3.amazonaws.com/bucket/part1?signature=abc123",
"https://s3.amazonaws.com/bucket/part2?signature=def456"
],
"fileKey": "uploads/video.mp4",
"partSize": 52428800,
"lastPartSize": 52428800,
"partsCount": 2
}

Complete Watermarking File Upload

Finalizes a multipart upload by submitting all part identifiers (ETags).

Specifics

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

Request

ParameterRequiredTypeNotes
fileIdYesstring <uuid>ID of the file being uploaded
partsYesarray of objectsList of uploaded parts with part number and ETag
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Each item in parts includes:

FieldTypeNotes
partNumberinteger <int32>Part number
eTagstringETag returned from upload

Response

FieldTypeNotes
fileIdstring <uuid>ID of the completed file
fileKeystringInternal file key
REQUEST
curl -X POST \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/files/complete-upload' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"fileId": "123e4567-e89b-12d3-a456-426614174000",
"parts": [
{ "partNumber": 1, "eTag": "etag-part-1" },
{ "partNumber": 2, "eTag": "etag-part-2" }
]
}'
RESPONSE
{
"fileId": "123e4567-e89b-12d3-a456-426614174000",
"fileKey": "uploads/video.mp4"
}

List Revoked Watermarking Sessions

It returns a list of revoked watermarking sessions, user names, and user numbers.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/watermarking/v1/revocation
HTTP methodGET

Request

ParameterRequiredTypeNotes
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
revokedUserNumbersarray of int64List of revoked user numbers
revokedUserNamesarray of stringsList of revoked user names
revokedSessionsarray of stringsList of revoked session IDs
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/revocation' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"revokedUserNumbers": [42, 99],
"revokedUserNames": ["john.doe", "jane.smith"],
"revokedSessions": ["session-abc123", "session-def456"]
}

Revoke Watermarking Sessions

Revokes watermarking sessions, user names, or user numbers.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/watermarking/v1/revocation/revoke
HTTP methodPOST

Request

ParameterRequiredTypeNotes
userNameNostringName of the user to revoke
userNumberNointeger <int64>User number to revoke
sessionIdNostringSession ID to revoke
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
objectStandard service response indicating success or failure
REQUEST
curl -X POST \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/revocation/revoke' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"userName": "john.doe",
"userNumber": 42,
"sessionId": "session-abc123"
}'
RESPONSE
{
"code": null,
"status": 200,
"message": "Revocation successful",
"requestId": "79104EXAMPLEB723",
"details": []
}

Unrevoke Watermarking Sessions

Restores access to previously revoked watermarking sessions, user names, or user numbers.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/watermarking/v1/revocation/unrevoke
HTTP methodPOST

Request

ParameterRequiredTypeNotes
userNameNostringName of the user to unrevoke
userNumberNointeger <int64>User number to unrevoke
sessionIdNostringSession ID to unrevoke
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
objectStandard service response indicating success or failure
REQUEST
curl -X POST \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/revocation/unrevoke' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"userName": "john.doe",
"userNumber": 42,
"sessionId": "session-abc123"
}'
RESPONSE
{
"code": null,
"status": 200,
"message": "Unrevocation successful",
"requestId": "79104EXAMPLEB723",
"details": []
}

List Watermarking Sessions

It returns a list of watermarking sessions.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/watermarking/v1/sessions
HTTP methodGET

Request

ParameterRequiredTypeNotes
QueryNostringSearch query string
AssetIdNostring <uuid>Filter by asset ID
IPNostringFilter by IP address
UserNameNostringFilter by user name
UserNumberNointeger <int64>Filter by user number
CreateDateStartNostring <date-time>Filter by creation date (start)
CreateDateEndNostring <date-time>Filter by creation date (end)
BlockedNobooleanFilter by blocked status
SortNostringProperty to sort by
DescNobooleanSort descending if true; default: false
PageNointeger <int32>Page number
LimitNointeger <int32>Page size
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
itemsarray of objectsList of watermarking session objects
pageCountint32Total number of pages
pageSizeint32Size of the current page
totalCountint32Total number of items
pageNumberint32Current page number
hasMorebooleanIndicates if more pages are available

Each item includes:

FieldTypeNotes
idstring <uuid>Session ID
assetIdstring <uuid>Associated asset ID
userNamestringName of the user
userNumberinteger <int64>User number
sequenceHexstringWatermark sequence in hex
eccAlgorithmstringECC algorithm used
ipstringIP address
userAgentstringUser agent string
createDatestring <date-time>Session creation timestamp
lastModificationDatestring <date-time>Last modification timestamp
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/sessions?Limit=50&Page=1&Desc=true' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "session-abc123",
"assetId": "123e4567-e89b-12d3-a456-426614174000",
"userName": "john.doe",
"userNumber": 42,
"sequenceHex": "a1b2c3d4",
"eccAlgorithm": "ECC-X",
"ip": "192.168.1.1",
"userAgent": "Mozilla/5.0",
"createDate": "2025-09-30T12:34:56Z",
"lastModificationDate": "2025-10-01T08:00:00Z"
}
],
"pageCount": 1,
"pageSize": 50,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get Watermarking Session

It returns details of a specific watermarking session.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/watermarking/v1/sessions/{id}
HTTP methodGET

Request

ParameterRequiredTypeNotes
idYesstring <uuid>ID of the watermarking session
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
idstring <uuid>Session ID
assetIdstring <uuid>Associated asset ID
userNamestringName of the user
userNumberinteger <int64>User number
sequenceHexstringWatermark sequence in hex
eccAlgorithmstringECC algorithm used
ipstringIP address
userAgentstringUser agent string
createDatestring <date-time>Session creation timestamp
lastModificationDatestring <date-time>Last modification timestamp
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/sessions/session-abc123' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "session-abc123",
"assetId": "123e4567-e89b-12d3-a456-426614174000",
"userName": "john.doe",
"userNumber": 42,
"sequenceHex": "a1b2c3d4",
"eccAlgorithm": "ECC-X",
"ip": "192.168.1.1",
"userAgent": "Mozilla/5.0",
"createDate": "2025-09-30T12:34:56Z",
"lastModificationDate": "2025-10-01T08:00:00Z"
}

Get Watermarking Settings

It returns watermarking configuration settings for the tenant.

Specifics

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

Request

ParameterRequiredTypeNotes
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
incomingTokenKeystringKey used for incoming token validation
eccAlgorithmstringECC algorithm used for watermarking
automaticallyStartDetectingAfterUploadbooleanWhether detection starts automatically after upload
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/settings' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"incomingTokenKey": "abc123tokenkey",
"eccAlgorithm": "ECC-X",
"automaticallyStartDetectingAfterUpload": true
}

Create Redirector Token

Generates a redirector token for accessing watermarking-protected content.

Specifics

Method URLhttps://{tenant_name}.api.videokit.cloud/watermarking/v1/token
HTTP methodPOST

Request

ParameterRequiredTypeNotes
userNameNostringName of the user requesting the token
assetIdNostring <uuid>ID of the asset to be accessed
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
tokenstringRedirector token
expirationTimestring <date-time>Expiration timestamp of the token
sessionIdstringAssociated watermarking session ID
REQUEST
curl -X POST \
'https://{tenant_name}.api.videokit.cloud/watermarking/v1/token' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"userName": "john.doe",
"assetId": "123e4567-e89b-12d3-a456-426614174000"
}'
RESPONSE
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expirationTime": "2025-10-02T14:00:00Z",
"sessionId": "session-abc123"
}

Redirect to Watermarked Asset

Redirects to a watermarked asset using a token and optional playback parameters.

Specifics

Method URLhttps://{tenant_name}.redir-wm.videokit.cloud/redirector/v1/redir/{tenantId}/{assetId}.{format}
HTTP methodGET

Request

ParameterRequiredTypeNotes
tenantIdYesstringTenant identifier
assetIdYesstring <uuid>Asset ID
formatYesstringOutput format (e.g., mp4, m3u8)
userTokenNostringRedirector token
noRedirectNobooleanIf true, returns metadata instead of redirecting
startNostringStart time for playback
endNostringEnd time for playback
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
objectWatermarking session metadata or redirect response
REQUEST
curl -X GET \
'https://{tenant_name}.redir-wm.videokit.cloud/redirector/v1/redir/tenant123/123e4567-e89b-12d3-a456-426614174000.mp4?userToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&noRedirect=true' \
-H 'Content-Type: application/json' \
-H 'X-Tenant-Id: tenant123'
RESPONSE
{
"id": "session-abc123",
"assetId": "123e4567-e89b-12d3-a456-426614174000",
"userName": "john.doe",
"userNumber": 42,
"sequenceHex": "a1b2c3d4",
"eccAlgorithm": "ECC-X",
"ip": "192.168.1.1",
"userAgent": "Mozilla/5.0",
"createDate": "2025-09-30T12:34:56Z",
"lastModificationDate": "2025-10-01T08:00:00Z"
}

Redirect to Watermarked Output

Redirects to a specific output of a watermarked asset using a redirector token.

Specifics

Method URLhttps://{tenant_name}.redir-wm.videokit.cloud/redirector/v1/redir/{tenantId}/{assetId}/{outputId}.{format}
HTTP methodGET

Request

ParameterRequiredTypeNotes
tenantIdYesstringTenant identifier
assetIdYesstring <uuid>Asset ID
outputIdYesstringOutput ID
formatYesstringOutput format (e.g., mp4, m3u8)
userTokenNostringRedirector token
noRedirectNobooleanIf true, returns metadata instead of redirecting
startNostringStart time for playback
endNostringEnd time for playback
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
idstring <uuid>Session ID
assetIdstring <uuid>Associated asset ID
userNamestringName of the user
userNumberinteger <int64>User number
sequenceHexstringWatermark sequence in hex
eccAlgorithmstringECC algorithm used
ipstringIP address
userAgentstringUser agent string
createDatestring <date-time>Session creation timestamp
lastModificationDatestring <date-time>Last modification timestamp
REQUEST
curl -X GET \
'https://{tenant_name}.redir-wm.videokit.cloud/redirector/v1/redir/tenant123/123e4567-e89b-12d3-a456-426614174000/output01.mp4?userToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&noRedirect=true' \
-H 'Content-Type: application/json' \
-H 'X-Tenant-Id: tenant123'
RESPONSE
{
"id": "session-abc123",
"assetId": "123e4567-e89b-12d3-a456-426614174000",
"userName": "john.doe",
"userNumber": 42,
"sequenceHex": "a1b2c3d4",
"eccAlgorithm": "ECC-X",
"ip": "192.168.1.1",
"userAgent": "Mozilla/5.0",
"createDate": "2025-09-30T12:34:56Z",
"lastModificationDate": "2025-10-01T08:00:00Z"
}

Redirect to Watermarked Endpoint

Redirects to a specific endpoint of a watermarked output using a redirector token.

Specifics

Method URLhttps://{tenant_name}.redir-wm.videokit.cloud/redirector/v1/redir/{tenantId}/{assetId}/{outputId}/{endpointId}.{format}
HTTP methodGET

Request

ParameterRequiredTypeNotes
tenantIdYesstringTenant identifier
assetIdYesstring <uuid>Asset ID
outputIdYesstringOutput ID
endpointIdYesstringEndpoint ID
formatYesstringOutput format (e.g., mp4, m3u8)
userTokenNostringRedirector token
noRedirectNobooleanIf true, returns metadata instead of redirecting
startNostringStart time for playback
endNostringEnd time for playback
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account

Response

FieldTypeNotes
idstring <uuid>Session ID
assetIdstring <uuid>Associated asset ID
userNamestringName of the user
userNumberinteger <int64>User number
sequenceHexstringWatermark sequence in hex
eccAlgorithmstringECC algorithm used
ipstringIP address
userAgentstringUser agent string
createDatestring <date-time>Session creation timestamp
lastModificationDatestring <date-time>Last modification timestamp
REQUEST
curl -X GET \
'https://{tenant_name}.redir-wm.videokit.cloud/redirector/v1/redir/tenant123/123e4567-e89b-12d3-a456-426614174000/output01/endpoint01.mp4?userToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&noRedirect=true' \
-H 'Content-Type: application/json' \
-H 'X-Tenant-Id: tenant123'
RESPONSE
{
"id": "session-abc123",
"assetId": "123e4567-e89b-12d3-a456-426614174000",
"userName": "john.doe",
"userNumber": 42,
"sequenceHex": "a1b2c3d4",
"eccAlgorithm": "ECC-X",
"ip": "192.168.1.1",
"userAgent": "Mozilla/5.0",
"createDate": "2025-09-30T12:34:56Z",
"lastModificationDate": "2025-10-01T08:00:00Z"
}

DRM


Get SPEKE 1.0 content keys

Returns content keys for a SPEKE 1.0 key request.

Specifics

Method URLhttps://{tenant_name}.api.drm.cloud/kms/v1/speke
HTTP methodPOST

Request headers

HeaderRequiredValue
Content-TypeYesapplication/xml
X-Api-KeyYes{your_api_key}
X-Tenant-IdYesTenant ID

Request body

ParameterRequiredTypeNotes
bodyYesapplication/xmlSPEKE 1.0 XML document containing the key request.

Response

FieldTypeNotes
XML Documentapplication/xmlThe SPEKE 1.0 XML response document containing the content keys.
REQUEST
curl -X POST \
'https://{tenant_name}.api.drm.cloud/kms/v1/speke' \
-H 'Content-Type: application/xml' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenantid}' \
-d '<CPIX xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="id-257a7e27-3c63-430e-86ed-45706e9a4b90" xmlns="urn:dashif:org:cpix">
<ContentKeyList>
<ContentKey kid="989598de-4956-47d8-a92f-1a23c5c27550" />
</ContentKeyList>
<DRMSystemList>
<DRMSystem kid="989598de-4956-47d8-a92f-1a23c5c27550" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" />
<DRMSystem kid="989598de-4956-47d8-a92f-1a23c5c27550" systemId="9a04f079-9840-4286-ab92-e65be0885f95" />
<DRMSystem kid="989598de-4956-47d8-a92f-1a23c5c27550" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" />
</DRMSystemList>
</CPIX>'
RESPONSE
<CPIX xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="id-b1045d84-be56-45fa-b70a-ed8f87101548" xmlns="urn:dashif:org:cpix">
<ContentKeyList>
<ContentKey kid="194b653f-159c-4a60-b898-2bf843655476" />
</ContentKeyList>
<DRMSystemList>
<DRMSystem kid="194b653f-159c-4a60-b898-2bf843655476" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" />
<DRMSystem kid="194b653f-159c-4a60-b898-2bf843655476" systemId="9a04f079-9840-4286-ab92-e65be0885f95" />
<DRMSystem kid="194b653f-159c-4a60-b898-2bf843655476" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" />
</DRMSystemList>
</CPIX>

Get SPEKE 2.0 content keys

Returns content keys for SPEKE 2.0 request.

Specifics

Method URLhttps://{tenant_name}.api.drm.cloud/kms/v1/speke2
HTTP methodPOST

Request headers

HeaderRequiredValue
Content-TypeYesapplication/xml
X-Api-KeyYes{your_api_key}
X-Tenant-IdYesTenant ID

Request body

ParameterRequiredTypeNotes
bodyYesapplication/xmlSPEKE 2.0 / CPIX 2.3 XML document containing the key request.

Response

FieldTypeNotes
XML Documentapplication/xmlThe SPEKE 2.0 / CPIX 2.3 XML response document containing the content keys.
REQUEST
curl -X POST \
'https://{tenant_name}.api.drm.cloud/kms/v1/speke2' \
-H 'Content-Type: application/xml' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenantid}' \
-d '<cpix:CPIX xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" contentId="contentid-c8c456b1-06dd-454d-bdaa-00e5ca6dba97" version="2.0" xmlns:cpix="urn:dashif:org:cpix">
<cpix:ContentKeyList>
<cpix:ContentKey commonEncryptionScheme="cenc" kid="6a600a91-9138-4760-a6d8-284be47adee8" />
<cpix:ContentKey commonEncryptionScheme="cbcs" kid="173e5b43-8870-4b60-967e-1cd5a0841674" />
</cpix:ContentKeyList>
<cpix:DRMSystemList>
<cpix:DRMSystem kid="6a600a91-9138-4760-a6d8-284be47adee8" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
<cpix:PSSH />
</cpix:DRMSystem>
<cpix:DRMSystem kid="6a600a91-9138-4760-a6d8-284be47adee8" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
<cpix:PSSH />
</cpix:DRMSystem>
<cpix:DRMSystem kid="173e5b43-8870-4b60-967e-1cd5a0841674" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" />
</cpix:DRMSystemList>
<cpix:ContentKeyUsageRuleList>
<cpix:ContentKeyUsageRule kid="6a600a91-9138-4760-a6d8-284be47adee8" intendedTrackType="ALL">
<cpix:VideoFilter />
</cpix:ContentKeyUsageRule>
<cpix:ContentKeyUsageRule kid="173e5b43-8870-4b60-967e-1cd5a0841674" intendedTrackType="ALL">
<cpix:AudioFilter />
</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>'
RESPONSE
<cpix:CPIX xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" contentId="contentid-5b28532c-76b0-4b2c-81f8-3dbbd2514973" version="2.0" xmlns:cpix="urn:dashif:org:cpix">
<cpix:ContentKeyList>
<cpix:ContentKey commonEncryptionScheme="cenc" kid="bc5a3f37-0432-4442-aff6-0bb42d33e436" />
<cpix:ContentKey commonEncryptionScheme="cbcs" kid="4dfd4820-e9a9-48af-8074-1e4048066a34" />
</cpix:ContentKeyList>
</cpix:CPIX>

Get SPEKE 2.0 / CPIX 2.3 content keys

Returns content keys for SPEKE 2.0 / CPIX 2.3 request.

Specifics

Method URLhttps://{tenant_name}.api.drm.cloud/kms/v1/cpix
HTTP methodPOST

Request headers

HeaderRequiredValue
Content-TypeYesapplication/xml
X-Api-KeyYes{your_api_key}
X-Tenant-IdYesTenant ID

Request body

ParameterRequiredTypeNotes
bodyYesapplication/xmlSPEKE 2.0 / CPIX 2.3 XML document containing the key request.

Response

FieldTypeNotes
XML Documentapplication/xmlThe SPEKE 2.0 / CPIX 2.3 XML response document containing the content keys.
REQUEST
curl -X POST \
'https://{tenant_name}.api.drm.cloud/kms/v1/cpix' \
-H 'Content-Type: application/xml' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenantid}' \
-d '<cpix:CPIX xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" contentId="contentid-a855cec0-c28f-4ccd-9390-ffceee5e0561" version="2.0" xmlns:cpix="urn:dashif:org:cpix">
<cpix:ContentKeyList>
<cpix:ContentKey commonEncryptionScheme="cenc" kid="52d72a05-4f32-4c42-9194-4cbce7ac1509" />
<cpix:ContentKey commonEncryptionScheme="cbcs" kid="b491ea26-95b0-4279-b305-b02d8680b8b5" />
</cpix:ContentKeyList>
<cpix:DRMSystemList>
<cpix:DRMSystem kid="52d72a05-4f32-4c42-9194-4cbce7ac1509" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
<cpix:PSSH />
</cpix:DRMSystem>
<cpix:DRMSystem kid="52d72a05-4f32-4c42-9194-4cbce7ac1509" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
<cpix:PSSH />
</cpix:DRMSystem>
<cpix:DRMSystem kid="b491ea26-95b0-4279-b305-b02d8680b8b5" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" />
</cpix:DRMSystemList>
<cpix:ContentKeyUsageRuleList>
<cpix:ContentKeyUsageRule kid="52d72a05-4f32-4c42-9194-4cbce7ac1509" intendedTrackType="ALL">
<cpix:VideoFilter />
</cpix:ContentKeyUsageRule>
<cpix:ContentKeyUsageRule kid="b491ea26-95b0-4279-b305-b02d8680b8b5" intendedTrackType="ALL">
<cpix:AudioFilter />
</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>'
RESPONSE
<cpix:CPIX xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" contentId="contentid-214beb3e-a3b1-455e-9028-c9c147096f89" version="2.0" xmlns:cpix="urn:dashif:org:cpix">
<cpix:ContentKeyList>
<cpix:ContentKey commonEncryptionScheme="cenc" kid="1094b78a-de69-4c7d-9da7-a4ac6bcefbd7" />
<cpix:ContentKey commonEncryptionScheme="cbcs" kid="d9c98677-070d-40a5-b23e-ae545d6af85c" />
</cpix:ContentKeyList>
<cpix:DRMSystemList>
<cpix:DRMSystem kid="1094b78a-de69-4c7d-9da7-a4ac6bcefbd7" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
<cpix:PSSH />
</cpix:DRMSystem>
<cpix:DRMSystem kid="1094b78a-de69-4c7d-9da7-a4ac6bcefbd7" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
<cpix:PSSH />
</cpix:DRMSystem>
<cpix:DRMSystem kid="d9c98677-070d-40a5-b23e-ae545d6af85c" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" />
</cpix:DRMSystemList>
<cpix:ContentKeyUsageRuleList>
<cpix:ContentKeyUsageRule kid="1094b78a-de69-4c7d-9da7-a4ac6bcefbd7" intendedTrackType="ALL">
<cpix:VideoFilter />
</cpix:ContentKeyUsageRule>
<cpix:ContentKeyUsageRule kid="d9c98677-070d-40a5-b23e-ae545d6af85c" intendedTrackType="ALL">
<cpix:AudioFilter />
</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>

Get Anevia content keys

Returns content keys for CPIX Anevia request.

caution

Access to this endpoint may require additional configuration. Please contact our support team before using this API method.

Specifics

Method URLhttps://{tenant_name}.api.drm.videokit.cloud/kms/v1/cpix-anevia/{brandGuid}/{kid}
HTTP methodGET

Request

ParameterRequiredTypeNotes
brandGuidYesstring (path)The service identifier.
kidYesstring (path)The Key ID (KID) for the content key.
X-Tenant-IdNostring (header)TenantId is required only if that one tenant is active on a given account.

Response

FieldTypeNotes
XML Documentapplication/xmlThe SPEKE 1.0 XML response document containing the content keys.
REQUEST
curl -X GET \
'https://{tenant_name}.api.drm.videokit.cloud/kms/v1/cpix-anevia/{brandGuid}/{kid}'
RESPONSE
<CPIX xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="id-99157ea6-b21d-4a8d-b3ea-856c11c9f4c1" xmlns="urn:dashif:org:cpix">
<ContentKeyList>
<ContentKey kid="a4649412-9c4f-43f5-baf1-4ffb9557dcf5" />
</ContentKeyList>
<DRMSystemList>
<DRMSystem kid="a4649412-9c4f-43f5-baf1-4ffb9557dcf5" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" />
<DRMSystem kid="a4649412-9c4f-43f5-baf1-4ffb9557dcf5" systemId="9a04f079-9840-4286-ab92-e65be0885f95" />
<DRMSystem kid="a4649412-9c4f-43f5-baf1-4ffb9557dcf5" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" />
</DRMSystemList>
</CPIX>

Get DRM Certificate

Returns the certificate for the specified DRM system.

Specifics

Method URLhttps://{tenant_name}.la.drm.cloud/license/v1/certificate/{system}?brandGuid={brand_guid}
HTTP methodGET

Request

ParameterRequiredTypeNotes
systemYesenumPath parameter. DRM System, possible values: widevine, fairplay.
brandGuidNostringPath parameter. Optional brand identifier.

Response

FieldTypeNotes
Certificate DataText/BinaryThe raw certificate data for the specified DRM system.
REQUEST
curl -X GET \
'https://{tenant_name}.la.drm.cloud/license/v1/certificate/{system}?brandGuid={brand_guid}' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenantid}'
RESPONSE
Note: The successful response returns the raw certificate data, in text or binary format.

Get DRM Settings

Retrieves the DRM settings for the tenant.

Specifics

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

Request headers

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

Response

FieldTypeDescription
tenantIdstringUnique identifier for the tenant
licenseAcquisitionobjectConfiguration for license acquisition
licenseAcquisition.authorizationobjectAuthorization settings for license acquisition
licenseAcquisition.authorization.enabledbooleanIndicates if authorization is enabled
licenseAcquisition.authorization.signingKeystringKey used for signing authorization requests
licenseAcquisition.authorization.signingAlgorithmstringAlgorithm used for signing authorization
licenseAcquisition.endpointsarray of objectsList of license acquisition endpoints
licenseAcquisition.endpoints.licenseUrlstringURL for license acquisition
licenseAcquisition.endpoints.certificateUrlstringURL for certificate retrieval
licenseAcquisition.endpoints.systemNamestringName of the DRM system
licenseAcquisition.endpoints.systemIdstringIdentifier of the DRM system
licenseAcquisition.endpoints.systemenumDRM system type (Widevine, PlayReady, Fairplay)
kmsobjectKey Management System configuration
kms.endpointsarray of objectsList of KMS endpoints
kms.endpoints.urlstringURL of the KMS endpoint
kms.endpoints.protocolstringProtocol used by the KMS endpoint
kms.basicAutharray of objectsBasic authentication credentials
kms.basicAuth.loginstringUsername for basic authentication
kms.basicAuth.passwordstringPassword for basic authentication
kms.oAuthobjectOAuth authentication configuration
kms.oAuth.clientIdstringOAuth client identifier
kms.oAuth.clientSecretstringOAuth client secret
kms.oAuth.tokenUrlstringURL to obtain OAuth token
kms.oAuth.grantTypestringOAuth grant type
REQUEST
curl -X GET \
https://{tenant_name}.api.drm.cloud/drm/v1/settings \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"tenantId": "e0949105-0246-4594-a01e-fdja181888930a",
"licenseAcquisition": {
"authorization": {
"enabled": true,
"signingKey": "lSwH782yAH3ikdygywagduygwau+vt2uAAzNs=",
"signingAlgorithm": "HS256"
},
"endpoints": [
{
"licenseUrl": "https://tenant123.la.drm.cloud/acquire-license/widevine?brandGuid=e0949105-0246-4594-a01e-fdja181888930a",
"certificateUrl": "https://tenant123.la.drm.cloud/certificate/widevine?brandGuid=e0949105-0246-4594-a01e-fdja181888930a",
"systemName": "Widevine",
"systemId": "edef8ba9-79d6-4ace-a32c8-27dcd51d21ed",
"system": "Widevine"
},
{
"licenseUrl": "https://tenant123.la.drm.cloud/acquire-license/fairplay?brandGuid=e0949105-0246-4594-a01e-fdja181888930a",
"certificateUrl": "https://tenant123.la.drm.cloud/certificate/fairplay?brandGuid=e0949105-0246-4594-a01e-fdja181888930a",
"systemName": "Fairplay",
"systemId": "94ce86fb-07ff-4f43-ad3b8-93d2fa968ca2",
"system": "Fairplay"
},
{
"licenseUrl": "https://tenant123.la.drm.cloud/acquire-license/playready?brandGuid=e0949105-0246-4594-a01e-fdja181888930a",
"systemName": "PlayReady",
"systemId": "9a04f079-9840-4286-ab492-e65be0885f95",
"system": "PlayReady"
}
]
},
"kms": {
"endpoints": [
{
"url": "https://tenant123.api.drm.cloud/kms/cpix?tenantId=e0949105-0246-4594-a01e-fdja181888930a",
"protocol": "CPIX"
},
{
"url": "https://tenant123.api.drm.cloud/kms/speke?tenantId=e0949105-0246-4594-a01e-fdja181888930a",
"protocol": "SPEKE"
},
{
"url": "https://tenant123.api.drm.cloud/kms/speke2?tenantId=e0949105-0246-4594-a01e-fdja181888930a",
"protocol": "SPEKE 2"
},
{
"url": "https://tenant123.api.drm.cloud/kms/cpix-anevia/e0949105-0246-4594-a01e-fdja181888930a",
"protocol": "Ateme/Anevia "
}
],
"basicAuth": [
{
"login": "tenant123",
"password": "Ktu0k1d189h0juYaxHAlpqkQJJHhw8w"
}
],
"oAuth": {
"clientId": "axHAlpqkQJJHhw8wSKtu0k1d189h0",
"clientSecret": "kQJJHhw8wS-fI8wSKtu0k1d1-_rKtu0k1d189h0_QJJHhw8wSEgaQJJHh8E",
"tokenUrl": "https://auth.videokit.cloud/oauth/token",
"grantType": "client_credentials"
}
}
}

Get License Error Codes

Retrieves a list of known license error codes.

Specifics

Method URLhttps://{tenant_name}.api.drm.cloud/drm/v1/license-error-codes
HTTP methodGET

Request

ParameterRequiredTypeNotes
X-Tenant-IdNostring (header)TenantId is required only if that one tenant is active on a given account.

Response

FieldTypeNotes
itemsArray of stringList of error code strings
REQUEST
curl -X GET \
https://{tenant_name}.api.drm.cloud/drm/v1/license-error-codes \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
[
"LICENSE_EXPIRED",
"DEVICE_LIMIT_REACHED",
"INVALID_TOKEN"
]

List License Requests

Retrieves a paginated list of license requests based on various filter criteria.

Specifics

Method URLhttps://{tenant_name}.api.drm.cloud/drm/v1/list-requests
HTTP methodGET

Request

ParameterRequiredTypeNotes
RequestTimeStartYesstring (date-time)Start of the time range for the request search.
RequestTimeEndYesstring (date-time)End of the time range for the request search.
DrmSystemNoArrayFilter by DRM System (e.g., Widevine, PlayReady).
RequestTypeNoArrayFilter by Request Type.
HttpStatusNoArray of integerFilter by HTTP Status code.
ErrorCodeNoArray of stringFilter by specific error codes.
CountryNoArray of stringFilter by Country.
ISPNoArray of stringFilter by ISP.
IPNostringFilter by specific IP address.
TokenUserIdNostringFilter by User ID found in the token.
TokenNostringFilter by specific Token.
DeviceTypeNoArray of stringFilter by Device Type.
PlatformOSNoArray of stringFilter by OS.
OSVersionNoArray of stringFilter by OS Version.
BrowserNoArray of stringFilter by Browser.
BrowserVersionNoArray of stringFilter by Browser Version.
TokenContentIdNoArray of stringFilter by Content ID.
BrandNameNoArray of stringFilter by Brand Name.
ModelNoArray of stringFilter by Device Model.
SortNostringSorting field. Possible values: ip, userAgent, token, tokenContentId, tokenUserId, system, httpStatus, requestType, errorCode, @timestamp, country, isp, deviceType, os, osVersion, osVersion, browser, browserVersion, brandName, model, details.
DescNobooleanSort descending if true.
PageNointegerPage number.
LimitNointegerItems per page.

Response

FieldTypeNotes
itemsArray of LicenseRequestResponseList of license request objects.
pageCountintegerTotal number of pages.
pageSizeintegerNumber of items per page.
totalCountintegerTotal number of items.
pageNumberintegerCurrent page number.
hasMorebooleanIndicates if there are more items available.
REQUEST
curl -X GET \
"https://{tenant_name}.api.drm.cloud/drm/v1/list-requests?RequestTimeStart=2023-01-01T00:00:00Z&RequestTimeEnd=2023-01-02T00:00:00Z&Limit=10" \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "req_123000-e0e5-5647-ad2a-08de228cdb29",
"tenantId": "e0932216-e0e5-5647-ad2a-08de228cd30a",
"system": "Widevine",
"requestType": "License",
"ip": "192.168.1.1",
"country": "US",
"isp": "Verizon",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0",
"deviceType": "desktop",
"browser": "Microsoft Edge",
"browserVersion": "142.0.0.0",
"os": "Mac",
"osVersion": "10.15.7",
"token": "eyJhQwMDAsPzDPj8IaOXqdwhxA7jIWzA",
"tokenUserId": "",
"licenseUrl": "https://tenant_abc.la.drm.cloud/acquire-license/widevine",
"requestTime": "2025-11-13T08:15:50.0910024+00:00",
"httpStatus": 200,
"payloadLength": 3955,
"responseLength": 868,
"details": [],
"brandName": "Apple",
"model": ""
}
],
"pageCount": 1,
"pageSize": 10,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}

Get License Count

Retrieves the count of licenses issued, grouped by DRM system.

Specifics

Method URLhttps://{tenant_name}.api.drm.cloud/drm/v1/license-count
HTTP methodGET

Request

ParameterRequiredTypeNotes
TypeYesenumType of aggregation. Possible values:DayByDay, MonthByMonth, HourByHour.
RequestTimeStartNostring (date-time)Start of the time range.
RequestTimeEndNostring (date-time)End of the time range.
HttpStatusNoArray of stringFilter by HTTP Status.

Response

FieldTypeNotes
datestringDate/Time bucket for the count.
widevineintegerCount of Widevine licenses.
fairplayintegerCount of FairPlay licenses.
playreadyintegerCount of PlayReady licenses.
REQUEST
curl -X GET \
"https://{tenant_name}.api.drm.cloud/drm/v1/license-count?Type=MonthByMonth" \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
[
{
"date": "2023-01-01T00:00:00Z",
"widevine": 150,
"fairplay": 120,
"playready": 80
}
]

Get DRM Token

Retrieves a DRM token for a specific asset.

Specifics

Method URLhttps://{tenant_name}.api.drm.cloud/drm/v1/token/{assetId}
HTTP methodGET

Request

ParameterRequiredTypeNotes
assetIdYesstring (path)The ID of the asset for which to generate the token.
X-Tenant-IdNostring (header)TenantId is required only if that one tenant is active on a given account.

Response

FieldTypeNotes
tokenstringToken for specified asset.
REQUEST
curl -X GET \
https://{tenant_name}.api.drm.cloud/drm/v1/token/12345678-1234-1234-1234-123456789abc \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"token": "eyJc9LCJwG3ybnEr0IPj7A7nhTDB9fQ.yfTjBVgWoFkNlCJwbGF5cmVhpYVTQ2m7p4"
}