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 its 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 collection 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 get_vod_output_progress get_multiple_vod_output_progress
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 get_ai_live_caption_languages
Eventcreate_event list_events get_event_details update_event delete_event delete_multiple_events

Recorder

Path
Method
Recordingcreate_recording list_recordings get_recording_details update_recording delete_recording delete_multiple_recordings remove_output_from_recording add_output_to_recording get_recording_output_progress get_multiple_recording_outputs_progress

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 get_drm_requests_histogram get_drm_license_metrics
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.
tagsNoarray of stringTags for the resource.
attributesNoarray of stringCustom attributes (e.g. key=value).
overlays[].startTimeYesstringStart time for the overlay.
overlays[].durationYesinteger (int32)Duration of the overlay.
overlays[].input.typeNoobjectType of overlay input (e.g. URL or S3).
overlays[].input.urlNostringURL of the overlay media (image or video).
overlays[].input.s3BucketNameNostringS3 bucket name for overlay source.
overlays[].input.s3ObjectKeyNostringS3 object key for overlay source.
overlays[].input.s3RegionNostringAWS region of the S3 bucket.
overlays[].input.s3RoleArnNostringIAM role ARN for S3 access.
overlays[].input.s3ExternalIdNostringExternal ID for S3 role assumption.
overlays[].imageXNointeger (int32)Horizontal position of the overlay in pixels.
overlays[].imageYNointeger (int32)Vertical position of the overlay in pixels.
overlays[].widthYesinteger (int32)Width of the overlay in pixels.
overlays[].heightYesinteger (int32)Height of the overlay in pixels.
overlays[].fadeInNointeger (int32)Fade-in duration in milliseconds.
overlays[].fadeOutNointeger (int32)Fade-out duration in milliseconds.
overlays[].opacityNointeger (int32)Opacity of the overlay (0–100).
overlays[].layerNointeger (int32)Layer order for overlapping overlays (higher = on top).

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
id (path)Yesstring (uuid)ID of the VOD asset to which the output will be added.
presetNostringTranscoding preset name (e.g., mp4).
assetIdNostring (uuid)ID of the VOD asset to which the output will be added.
overlays[].startTimeYesstringStart time for the overlay.
overlays[].durationYesinteger (int32)Duration of the overlay.
overlays[].input.typeNoobjectType of overlay input (e.g. URL or S3).
overlays[].input.urlNostringURL of the overlay media (image or video).
overlays[].input.s3BucketNameNostringS3 bucket name for overlay source.
overlays[].input.s3ObjectKeyNostringS3 object key for overlay source.
overlays[].input.s3RegionNostringAWS region of the S3 bucket.
overlays[].input.s3RoleArnNostringIAM role ARN for S3 access.
overlays[].input.s3ExternalIdNostringExternal ID for S3 role assumption.
overlays[].imageXNointeger (int32)Horizontal position of the overlay in pixels.
overlays[].imageYNointeger (int32)Vertical position of the overlay in pixels.
overlays[].widthYesinteger (int32)Width of the overlay in pixels.
overlays[].heightYesinteger (int32)Height of the overlay in pixels.
overlays[].fadeInNointeger (int32)Fade-in duration in milliseconds.
overlays[].fadeOutNointeger (int32)Fade-out duration in milliseconds.
overlays[].opacityNointeger (int32)Opacity of the overlay (0–100).
overlays[].layerNointeger (int32)Layer order for overlapping overlays (higher = on top).

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

Get VOD Output Progress

Returns the current processing progress of a specific output for a VOD asset.

Specifics

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

Request

ParameterRequiredTypeNotes
assetIdYesstringPath param — The unique identifier (UUID) of the asset.
outputIdYesstringThe unique identifier of the specific output.

Response

FieldTypeNotes
progressPercentintegerThe completion percentage of the process (from 0 to 100).
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/vod/v1/assets/asset-12345/outputs/out-720p/progress' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"progressPercent": 50
}

Get Multiple VOD Outputs Progress

Retrieves the processing progress for multiple outputs across multiple VOD assets in a single request.

Specifics

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

Request

Parameters in each item of the request body (request body is an array):

ParameterRequiredTypeNotes
[].idYesstringThe unique identifier (UUID) of the VOD asset.
[].outputsYesarrayList of output objects to check for this asset.
[].outputs[].idYesstringThe unique identifier of the specific output.

Response

FieldTypeNotes
[].idstringThe unique identifier (UUID) of the asset.
[].outputsarrayList of progress results for the requested outputs.
[].outputs[].idstringThe identifier of the output.
[].outputs[].progressPercentintegerCompletion percentage (0-100) for this specific output.
REQUEST
curl -X POST \
'https://{tenant_name}.api.videokit.cloud/vod/v1/assets/outputs/progress' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '[{
"id": "11de70db-076d-4ddc-9445-21b43ac1c243",
"outputs": [{
"id": "a5acc0bf-63fd-4388-a17d-871968b79ad7"
}]
}]'
RESPONSE
[
{
"id": "11de70db-076d-4ddc-9445-21b43ac1c243",
"outputs": [
{
"id": "a5acc0bf-63fd-4388-a17d-871968b79ad7",
"progressPercent": 0
}
]
}
]

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.
tagsNoarray of stringTags for the resource.
attributesNoarray of stringCustom attributes (e.g. key=value).

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[].partNumberYesintegerinteger.
parts[].eTagYesstringETag for the part; may be omitted in some upload flows.

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.
redundancyNoobjectChannel redundancy mode: SingleInput or DoubleInput.
latencyNoobjectChannel latency mode: NormalLatency or ReducedLatency.
input.typeNoobjectInput type, e.g., RTMP_PUSH.
input.mp4Sources[].urlNostringInput source URL.
input.mp4Sources[].usernameNostringUser name.
input.mp4Sources[].passwordNostringPassword.
input.whitelistCidrNostringWhitelist CIDR (Classless Inter-Domain Routing) for the input.
input.inputLoss.typeYesobjectThe loss type: COLOR or SLATE.
input.inputLoss.imageSlateUriNostringThe URI of the image slate.
input.inputLoss.colorNostringHex color for input loss screen.
input.mediaConnectInputProtocolNoobjectMediaConnect input protocol.
endpoints[].typeYesobjectEndpoint types, e.g., DashDrm, HlsDrm.
endpoints[].hasVerticalOrientationNobooleanWhether the endpoint supports vertical orientation.
endpoints[].isDrmProtectedNobooleanWhether the endpoint is DRM-protected.
qualities[].resolution.intValueNointeger (int32)Numeric resolution value.
qualities[].resolution.qualityTypeNoobjectResolution quality type (e.g. 360p, 720p).
qualities[].frameRateNoobjectFrame rate per resolution, default 30fps.
restreams[].protocolYesobjectProtocol, e.g., RTMP.
restreams[].idYesstringRestream ID.
restreams[].destinationYesstringDestination name, e.g., Facebook.
restreams[].labelNostringLabel for the restream destination.
restreams[].rtmpDestinations[].urlYesstringRTMP destination URL.
restreams[].rtmpDestinations[].streamKeyYesstringStream key for RTMP destination.
restreams[].hasVerticalOrientationNobooleanWhether the restream supports vertical orientation.
activationModeNoobjectChannel activation mode, EventBased or Manual.
transmissionTypeNoobjectChannel transmission type, Video or Audio.
environmentNoobjectDetermines if channel is MediaLive or MediaLiveAnywhere.
mediaPackageVersionNoobjectV1 or V2.
isWatermarkProtectedNobooleanWhether the content is watermark-protected.
aiLiveCaptioningLanguageCodeNostringLanguage code for AI live captions (e.g. en, pl).
drmKeyModeNoobjectDRM key mode configuration.
broadcastStandardNoobjectBroadcast standard (e.g. HD, UHD).

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",
"hasVerticalOrientation": false,
"isDrmProtected": true
},
{
"type": "HlsDrm",
"hasVerticalOrientation": false,
"isDrmProtected": true
}
],
"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": "0e000000-0003-ac11-17f3-08de79be4280",
"destination": "Facebook",
"rtmpDestinations": [
{
"url": "rtmp://example.domain.com/live1",
"streamKey": "0e000000-0003-ac11-1828-08de79be4280"
},
{
"url": "rtmp://example.domain.com/live2",
"streamKey": "0e000000-0003-ac11-182c-08de79be4280"
}
],
"hasVerticalOrientation": false
}
],
"activationMode": "EventBased",
"transmissionType": "Video",
"environment": "MediaLive",
"mediaPackageVersion": "V1",
"isWatermarkProtected": false,
"drmKeyMode": "SingleKey",
"broadcastStandard": "Pal"
}'
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.idstringInput identifier.
inputs.typestringInput type.
inputs.destinationsarray of ChannelInputEndpointList of destination endpoints for this input.
inputs.destinations.urlstringDestination URL.
inputs.detailsChannelInputDetailsChannelInputDetails.
inputs.details.securityGroupIpsarray of stringAllowed IPs for the security group; optional.
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.mp4Sources[].urlNostringInput source URL.
input.mp4Sources[].usernameNostringUser name.
input.mp4Sources[].passwordNostringPassword.
input.whitelistCidrNostringCIDR whitelist for input.
input.inputLoss.typeNostringInput loss type: COLOR or SLATE.
input.inputLoss.imageSlateUriNostringThe URI of the image slate.
input.inputLoss.colorNostringHex color for input loss screen.
input.mediaConnectInputProtocolNoobjectMediaConnect input protocol.
endpoints[].typeNostringEndpoint types, e.g., DashDrm, HlsDrm.
endpoints[].hasVerticalOrientationNobooleanWhether the endpoint supports vertical orientation.
endpoints[].isDrmProtectedNobooleanWhether the endpoint is DRM-protected.
qualities[].resolution.intValueNointeger (int32)Numeric resolution value.
qualities[].resolution.qualityTypeNoobjectResolution quality type (e.g. 360p, 720p).
qualities[].frameRateNointFrame rate per resolution.
restreamsNoarrayAdd, edit, or remove RTMP services where you want to restream this channel. Max items: 10
restreams[].protocolYesobjectRestream protocol (e.g. RTMP).
restreams[].idYesstringUnique identifier of the restream.
restreams[].destinationYesstringRestream destination URL or identifier.
restreams[].labelNostringLabel for the restream destination.
restreams[].rtmpDestinations[].urlYesstringDestination URL.
restreams[].rtmpDestinations[].streamKeyYesstringStream key.
restreams[].hasVerticalOrientationNobooleanWhether the restream supports vertical orientation.
drmKeyModeNoobjectDRM key mode configuration.
broadcastStandardNoobjectBroadcast standard (e.g. HD, UHD).

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.
[].idstringMetric identifier.
[].descriptionstringMetric description.
[].unitNamestringName of the unit.
[].unitSymbolstringSymbol for the unit (e.g. %).
[].dataarray of StatsPointResultArray of time-series data points.
[].data.timestring (date-time)string (date-time).
[].data.valuenumber (double)number (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
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/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

FieldTypeNotes
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

FieldTypeNotes
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
}

Get AI Live Caption Languages

Returns a list of supported AI live caption languages.

Specifics

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

Request

This endpoint doesn't require any parameters.

Response

FieldTypeNotes
namestringLanguage display name (for example, "English, British").
codestringLanguage code (for example, "en-GB").
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/live/v1/channels/ai-live-caption-languages' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
[
{
"name": "English, British",
"code": "en-GB"
},
{
"name": "English, US",
"code": "en-US"
},
{
"name": "French",
"code": "fr-FR"
},
{
"name": "German",
"code": "de-DE"
},
{
"name": "Italian",
"code": "it-IT"
},
{
"name": "Japanese",
"code": "ja-JP"
},
{
"name": "Polish",
"code": "pl-PL"
}
]

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.
metadataNoobjectAny custom data.
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.typeNoobjectType of recording source, for example: LiveChannel.
source.liveChannelDetails.channelIdYesstringChannel ID.
source.liveChannelDetails.startNostring (date-time)Event start time.
source.liveChannelDetails.endNostring (date-time)Event stop time.
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.
archive.delaySecondsNointeger (int32)Delay between stop of the recording and creating persistent archive.
archive.publicNobooleanIf true, recording will be public after archivisation.
archive.expirationDateNostring (date-time)Optional expiration date for this archive. After this time, the recording will be removed.
expirationDateNostring (date-time)Delete entire assets and all their resources.
outputsNoarrayList of output configurations.
outputs[].presetYesstringType of output.
outputs[].expirationDateNostring (date-time)Optional date of removal.
output.presetYesstringType of output.
output.expirationDateNostring (date-time)Optional date of removal.
metadataNoobjectAny custom data.
titleNostringAsset title.
tagsNoarray of stringList of tags.
attributesNoarray of stringCustom attributes (e.g. key=value).
overlays[].startTimeYesstringOverlay start time in format HH:MM:SS:FF (FF is frames) or HH:MM:SS.ms (ms 3 digits).
overlays[].durationYesinteger (int32)Overlay display duration in milliseconds.
overlays[].input.typeNoobjectInput type: URL or S3.
overlays[].input.urlNostringURL of the overlay image (when Type is URL).
overlays[].input.s3BucketNameNostringS3 bucket name (when Type is S3).
overlays[].input.s3ObjectKeyNostringS3 object key (when Type is S3).
overlays[].input.s3RegionNostringS3 bucket region (optional).
overlays[].input.s3RoleArnNostringAWS Role ARN for S3 access (optional).
overlays[].input.s3ExternalIdNostringExternal ID for accessing AWS Role (optional).
overlays[].imageXNointeger (int32)X coordinate position in pixels (top-left origin).
overlays[].imageYNointeger (int32)Y coordinate position in pixels (top-left origin).
overlays[].widthYesinteger (int32)Overlay image width in pixels.
overlays[].heightYesinteger (int32)Overlay image height in pixels.
overlays[].fadeInNointeger (int32)Fade in transition duration in milliseconds (default 0).
overlays[].fadeOutNointeger (int32)Fade out transition duration in milliseconds (default 0).
overlays[].opacityNointeger (int32)Overlay opacity level, range 0-100 (0 = transparent, 100 = opaque).
overlays[].layerNointeger (int32)Z-order layer number (0 = bottom layer).

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": "2026-03-04T06:00:00+00:00",
"end": "2026-03-04T06:05:00+00:00"
}
},
"catchup": {
"enabled": true
},
"archive": {
"enabled": true,
"delaySeconds": 0,
"public": false
},
"outputs": [
{
"preset": "mp4"
}
],
"output": {
"preset": "mp4"
},
"metadata": {
"title": "The Matrix"
},
"title": "The Matrix",
"tags": [],
"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.
tagsNoarray of stringFilter by tags.
attributesNoarray of stringFilter by attributes.

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

FieldTypeNotes
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 stopping the recording and creating persistent archive.
archive.publicbooleanIf true, recording will be public after archivisation.
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.
bodyYesarray of stringsArray of recording IDs to delete.

Response

FieldTypeNotes
<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.
presetYesstringTranscoding preset.
idNostringID of this output.
expirationDateNostringOptional date of removal.
overlays[].startTimeYesstringOverlay start time in format HH:MM:SS:FF (FF is frames) or HH:MM:SS.ms (ms 3 digits).
overlays[].durationYesinteger (int32)Overlay display duration in milliseconds.
overlays[].input.typeNoobjectInput type: URL or S3.
overlays[].input.urlNostringURL of the overlay image (when Type is URL).
overlays[].input.s3BucketNameNostringS3 bucket name (when Type is S3).
overlays[].input.s3ObjectKeyNostringS3 object key (when Type is S3).
overlays[].input.s3RegionNostringS3 bucket region (optional).
overlays[].input.s3RoleArnNostringAWS Role ARN for S3 access (optional).
overlays[].input.s3ExternalIdNostringExternal ID for accessing AWS Role (optional).
overlays[].imageXNointeger (int32)X coordinate position in pixels (top-left origin).
overlays[].imageYNointeger (int32)Y coordinate position in pixels (top-left origin).
overlays[].widthYesinteger (int32)Overlay image width in pixels.
overlays[].heightYesinteger (int32)Overlay image height in pixels.
overlays[].fadeInNointeger (int32)Fade in transition duration in milliseconds (default 0).
overlays[].fadeOutNointeger (int32)Fade out transition duration in milliseconds (default 0).
overlays[].opacityNointeger (int32)Overlay opacity level, range 0-100 (0 = transparent, 100 = opaque).
overlays[].layerNointeger (int32)Z-order layer number (0 = bottom layer).

Response

FieldTypeNotes
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
}

Get Recording Output Progress

It returns progress details for a single recording output.

Specifics

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

Request

ParameterRequiredTypeNotes
recordingIdYesstringPath param — ID of the recording.
outputIdYesstringPath param — ID of the output for that recording.

Response

FieldTypeNotes
progressPercentintegerPercent value: 0–100.
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/123e4567-89ab-4cd1-2345-123456789abc/outputs/abcd-ef01-2345/progress' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"progressPercent": 75
}

Get Multiple Recording Outputs Progress

It returns progress details for multiple recording outputs.

Specifics

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

Request

ParameterRequiredTypeNotes
[]YesarrayRoot. An array of recording configuration objects.
[].idYesstringRecording identifier.
[].outputsYesarrayArray of output objects for this recording.
[].outputs[].idYesstringOutput identifier.

Response

FieldTypeNotes
[]arrayArray of per-recording results (see example).
[].idstringRecording identifier.
[].outputsarrayArray of output progress objects.
[].outputs[].idstringOutput identifier.
[].outputs[].progressPercentintegerProgress percent (0–100).
REQUEST
curl -X POST \
'https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/outputs/progress' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '[{
"id": "123e4567-89ab-4cd1-2345-123456789abc",
"outputs": [{
"id": "123e4567-89ab-4cd1-2345-123456789def"
}]
}]'
RESPONSE
[
{
"id": "f3f8d7c0-fd0b-4e52-81c8-e18a2c1d2098",
"outputs": [
{
"id": "74777b52-8a48-43f6-8344-1c5313569ef4",
"progressPercent": 0
}
]
}
]

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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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
limitNointeger (int32)Number of recordings to return.
pageNointeger (int32)Number of requested page.
queryNostringText query to search by metadata.
sortNostringProperty name to sort by. Metadata.Title, CreateDate, LastModificationDate.
descNobooleanSet to true to order descending.
idsNoarray of stringList of asset ids.
channelIdNostringChannel identifier.
isDrmNobooleanFilter DRM assets.
sourceNoobject[Obsolete] Asset source module Live / Recorder / Vod.
statusNoobjectAsset status.
typeNoobjectAsset type LiveEvent / LiveChannel / Recording / Vod.
durationFromNointeger (int64)Asset duration from.
durationToNointeger (int64)Asset duration to.
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

FieldTypeNotes
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.
tokenRequiredPolicy.assetstringToken requirement policy at asset level.
tokenRequiredPolicy.tenantstringToken requirement policy at tenant level.
titlestringAsset title.
descriptionstringAsset description.
imagesobjectAsset images.
chaptersarray of objectsAsset chapters.
chapters.idstringChapter ID.
chapters.titlestringChapter title.
chapters.startSecondintegerStart time in seconds.
chapters.endSecondintegerEnd time in seconds.
settingsobjectAsset settings.
settings.tokenRequired.assetobjectToken required setting for the asset.
settings.tokenRequired.tenantobjectTenant option status.
settings.devToolsAccess.assetobjectDevTools access setting for the asset.
settings.devToolsAccess.tenantobjectTenant option status.
settings.cap.assetobjectCAP setting for the asset.
settings.cap.tenantobjectTenant option status.
settings.analytics.assetobjectAnalytics setting for the asset.
settings.analytics.tenantobjectTenant option status.
settings.codeObfuscation.assetobjectCode obfuscation setting for the asset.
settings.codeObfuscation.tenantobjectTenant option status.
tagsarray of stringTags for the resource.
attributesarray of stringCustom attributes (e.g. key=value).
isWatermarkProtectedbooleanWhether the content is watermark-protected.
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

FieldTypeNotes
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.
chapters[].titleNostringChapter title.
chapters[].startSecondNointeger (int64)Chapter start second.
chapters[].endSecondNointeger (int64)Chapter end second.

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

Request

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

Response

Response body: array of domain objects. Each element has:

FieldTypeNotes
-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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
[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

FieldTypeNotes
itemsarray of stringsSingle page of listed objects.
items[].s3UristringS3 URI of the image frame.
items[].urlstringURL of the image frame.
items[].bucketstringBucket name.
items[].idstringFrame identifier.
items[].namestringFrame name.
items[].fileKeystringFile key.
items[].createDatestring (date-time)Create date.
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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

FieldTypeNotes
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.
roleTypeYesstringRole type associated with the API Key.

Response

FieldTypeNotes
idstringAPI Key ID.
namestringAPI Key name.
roleTypestringRole type 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",
"roleType": "Admin"
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"name": "API Key 1",
"roleType": "Admin"
}

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.
roleTypeYesstringUpdated Role type associated with the API Key.

Response

FieldTypeNotes
idstringAPI Key ID.
namestringUpdated API Key name.
roleTypestringUpdated Role type 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",
"roleType": "Admin"
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"name": "Updated API Key 1",
"roleType": "Admin"
}

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.
mediaTypeNoobjectMedia type filter (e.g. video, audio).

Response

FieldTypeNotes
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.
items[].mediaTypeobjectMedia type of the preset.
items[].noTranscodingbooleanWhether the preset skips transcoding.
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.
descNobooleanDescending.

Response

FieldTypeNotes
itemsarrayList of webhooks.
items[].idstring (uuid)Unique identifier of the item.
items[].namestringName of the item.
items[].urlstringURL of the item.
items[].isEnabledbooleanWhether the item is enabled.
items[].statusobjectStatus of the item.
items[].createDatestring (date-time)Creation date and time (ISO 8601).
items[].eventTypesarray (EEventType)List of event types associated with the item.
totalCountinteger (int32)Total number of items across all pages.
pageNumberinteger (int32)Current page number (1-based).
pageSizeinteger (int32)Number of items per page.
pageCountinteger (int32)Total number of pages.
hasMorebooleanWhether more pages are available.
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.
isEnabledNobooleanEnable 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.
isEnabledNobooleanEnable 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.
descNobooleanDescending.

Response

FieldTypeNotes
itemsarrayList of webhook events.
items[].idstring (uuid)Unique identifier of the item.
items[].lastSendAttemptstring (date-time)Timestamp of the last send attempt.
items[].typeobjectType of the item.
items[].statusobjectStatus of the item.
items[].payloadobjectPayload data of the item.
items[].sendAttempts[].timestring (date-time)Time of the send attempt.
items[].sendAttempts[].responseCodeinteger (int32)HTTP response code of the attempt.
items[].sendAttempts[].responseContentstringResponse body of the attempt.
items[].occuredAtstring (date-time)When the event occurred (ISO 8601).
totalCountinteger (int32)Total number of items across all pages.
pageNumberinteger (int32)Current page number (1-based).
pageSizeinteger (int32)Number of items per page.
pageCountinteger (int32)Total number of pages.
hasMorebooleanWhether more pages are available.
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.
parts[].partNumberNointeger (int32)Part number.
parts[].eTagNostringETag returned from upload.
X-Tenant-IdNostring <uuid>Required if multiple tenants are active on the account.

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

FieldTypeNotes
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

Returns a paginated list of DRM license requests based on filtered criteria.

Specifics

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

Request

ParameterRequiredTypeNotes
RequestTimeStartYesstring <date-time>Start of the date range filter.
RequestTimeEndYesstring <date-time>End of the date range filter.
DrmSystemNoarray<string>Filter by DRM system: Widevine, PlayReady, Fairplay.
RequestTypeNoarray<string>e.g., License, Renewal, Certificate, Release.
HttpStatusNoarray<integer>Filter by HTTP status codes (e.g., 200, 403).
ErrorCodeNoarray<string>Filter by specific error codes.
CountryNoarray<string>Filter by country code.
ISPNoarray<string>Filter by Internet Service Provider.
IPNostringFilter by specific IP address.
TokenUserIdNostringFilter by the User ID present in the DRM token.
TokenContentIdNoarray<string>Filter by Content IDs present in the DRM token.
DeviceTypeNoarray<string>Filter by device category (e.g., desktop).
PlatformOSNoarray<string>Filter by Operating System (e.g., Mac, Windows).
BrandNameNoarray<string>Filter by device manufacturer (e.g., Apple, Samsung).
PageNointegerPage number (0-based indexing).
LimitNointegerNumber of items per page.
SortNostringField name to sort by.
DescNobooleanSet to true for descending order.

Response Fields

FieldTypeNotes
itemsarrayArray of license request objects (see Item Fields below).
pageCountintegerTotal number of pages available.
pageSizeintegerCurrent page size.
totalCountintegerTotal number of items matching the query.
pageNumberintegerThe current page index.
hasMorebooleanIndicates if additional pages are available.
Item Fields
FieldTypeNotes
idstringUnique identifier for the license request.
systemstringDRM system used (Widevine, PlayReady, FairPlay).
requestTypestringType of request (e.g., License).
tokenUserIdstringUser ID extracted from the token.
tokenContentIdstringContent ID extracted from the token.
requestTimestringISO 8601 timestamp of the request.
httpStatusintegerResulting HTTP status code.
errorCodestringInternal error code, if applicable.
widevineobjectDetailed metrics for Widevine requests.
fairplayobjectDetailed metrics for Fairplay requests.
playreadyobjectDetailed metrics for PlayReady requests.
REQUEST
curl -X GET \
'https://{tenant_name}.api.drm.cloud/drm/v1/list-requests?RequestTimeStart=1%2F1%2F2025&RequestTimeEnd=12%2F30%2F2025' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "02000000-f2aa-bcbf-6de6-08de3e352ffb",
"tenantId": "e0932216-a01e-4594-0246-fae3b3f8930a",
"system": "Fairplay",
"requestType": "License",
"ip": "203.0.113.5",
"country": "PL",
"isp": "ExampleISP",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15",
"deviceType": "desktop",
"browser": "Safari",
"browserVersion": "26.0",
"os": "Mac",
"osVersion": "10.15.7",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTAwMSIsImV4cCI6MTY4MDAwMDAwMH0.examplesignature",
"licenseUrl": "https://tenant.example.drm/acquire-license/fairplay",
"requestTime": "2025-12-18T12:58:49.2384703+00:00",
"httpStatus": 403,
"errorCode": "drm_3031",
"errorMessage": "Token expired at 12/18/2025 11:41:55 AM",
"payloadLength": 6496,
"responseLength": 0,
"details": [],
"brandName": "Apple",
"model": "Unknown",
"logId": "abce3034-7cc7-484a-8ec3-5877d844c8f6",
"fairplay": {
"deviceId": "device-000000000008665e5e3dca000000000000",
"platform": "Apple",
"deviceClass": 3,
"deviceType": 1,
"osVersion": "26.0.0",
"certificateSerialNumber": "cert-0000000773398e0986b0000000000000000",
"securityLevel": 3,
"supportsHdcp": true,
"supportsOfflineKey": true,
"supportedProtocolVersions": [
1
],
"streamingIndicator": 0,
"sessionId": "session-09e23fb000",
"assetId": "asset-005b4e695b4e685aee0000"
}
}
],
"pageCount": 1,
"pageSize": 100,
"totalCount": 1,
"pageNumber": 0,
"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 Requests Histogram

Returns an aggregated count of DRM license requests grouped by a specific time interval.

Specifics

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

Request

ParameterRequiredTypeNotes
RequestTimeStartYesstring <date-time>Start of the date range filter.
RequestTimeEndYesstring <date-time>End of the date range filter.
granularityNostringTime bucket size: FifteenMinutes, OneHour, SixHours, Day.
DrmSystemNoarray<string>Filter by DRM system: Widevine, PlayReady, Fairplay.
RequestTypeNoarray<string>Filter by request type (e.g., License, Renewal).
HttpStatusNoarray<integer>Filter by HTTP status codes.
CountryNoarray<string>Filter by country code.
DeviceTypeNoarray<string>Filter by device category (e.g., mobile, desktop).
TokenUserIdNostringFilter by the User ID present in the DRM token.
TokenContentIdNoarray<string>Filter by Content IDs present in the DRM token.

Response

The response returns an array of histogram data points.

FieldTypeNotes
datestringISO 8601 formatted start time of the time bucket.
timestampintegerUnix timestamp (milliseconds) of the time bucket.
countintegerNumber of requests recorded within this time bucket.
REQUEST
curl -X GET \
'https://{tenant_name}.api.drm.cloud/drm/v1/histogram?RequestTimeStart=1%2F1%2F2025&RequestTimeEnd=12%2F30%2F2025' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
[
{
"date": "2025-09-25T11:00:00+00:00",
"timestamp": 1758798000000,
"count": 2
},
{
"date": "2025-09-25T12:00:00+00:00",
"timestamp": 1758801600000,
"count": 0
}
]

Get DRM License Metrics

Returns a detailed set of performance and usage metrics for DRM licenses. Provides time-series data grouped by specific metric types, allowing for granular analysis of license acquisition success and failure rates across different DRM systems.

Specifics

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

Request

ParameterRequiredTypeNotes
StartNostring <date-time>Start of the metrics interval.
EndNostring <date-time>End of the metrics interval.

Response

The response is an array of objects containing a mapped collection of metrics and their associated time-series data points.

Field PathTypeNotes
metricsobjectA map of metric identifiers (keys) to their data results.
metrics.{key}.idstringThe unique identifier for the metric (e.g., requests_Widevine_LicenseOk).
metrics.{key}.descriptionstringHuman-readable explanation of what the metric tracks.
metrics.{key}.unitNamestringName of the measurement unit (e.g., Count).
metrics.{key}.unitSymbolstringSymbol of the measurement unit (may be empty).
metrics.{key}.dataarrayList of individual time-series data points.
metrics.{key}.data[].timestringISO 8601 timestamp for the data point.
metrics.{key}.data[].valuenumberThe numerical value recorded at that time.
REQUEST
curl -X GET \
'https://{tenant_name}.api.drm.cloud/drm/v1/license-metrics' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"metrics": {
"requests_Widevine_LicenseOk": {
"id": "requests_Widevine_LicenseOk",
"description": "Widevine License acquired",
"unitName": "Count",
"unitSymbol": "",
"data": [
{
"time": "2026-01-12T10:00:00Z",
"value": 150.0
}
]
},
"requests_Fairplay_LicenseOk": {
"id": "requests_Fairplay_LicenseOk",
"description": "Fairplay License acquired",
"unitName": "Count",
"unitSymbol": "",
"data": []
},
"requests_PlayReady_LicenseOk": {
"id": "requests_PlayReady_LicenseOk",
"description": "PlayReady License acquired",
"unitName": "Count",
"unitSymbol": "",
"data": []
},
"requests_Widevine_LicenseFailed_4xx": {
"id": "requests_Widevine_LicenseFailed_4xx",
"description": "Widevine Licenses denied",
"unitName": "Count",
"unitSymbol": "",
"data": [
{
"time": "2026-01-12T10:00:00Z",
"value": 2.0
}
]
},
"requests_Fairplay_LicenseFailed_4xx": {
"id": "requests_Fairplay_LicenseFailed_4xx",
"description": "Fairplay Licenses denied",
"unitName": "Count",
"unitSymbol": "",
"data": []
},
"requests_PlayReady_LicenseFailed_4xx": {
"id": "requests_PlayReady_LicenseFailed_4xx",
"description": "PlayReady Licenses denied",
"unitName": "Count",
"unitSymbol": "",
"data": []
}
}
}

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"
}