API reference
In this document you will find all API methods available for Cloud Video Kit.
Authorization
All Cloud Video Kit API methods require authentication with API key obtained from Cloud Video Kit console. Learn more from Authorization document.
API endpoints
Each tenant has it's own unique set of URLs used for Cloud Video Kit API.
Make sure to use your tenant's name in all used endpoints.
Example:
https://{tenant_name}.api.videokit.cloud/
You can find all endpoints for your tenant on API cheatsheet page in Cloud Video Kit console.
Postman collection
You can download Postman collecction of all API methods with the button below, and import it directly into Postman.

Make sure to update variables in the collection with your credentials, and you're good to go!
List of available methods
VOD
Live
Recorder
Streaming
Core
Transcoder
Notifications (Webhooks)
Watermarking
DRM
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.
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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/assets |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
transcodedSources | Yes | Array of VodSource | Array of source files to be transcoded VodSource |
preset | Yes | string | Transcoding preset to be used |
metadata | No | object | Additional metadata for the asset |
title | No | string | Title of the asset |
Response
| Field | Type | Notes |
|---|
id | string | ID 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/assets |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
statuses | No | array of strings | Filter by asset status (e.g., Available, Processing, etc.). |
limit | No | int32 | Number of items per page (default: 100). |
page | No | int32 | Page number to retrieve (default: 1). |
fileId | No | string <uuid> | Filter assets created with this file ID. |
query | No | string | Text search query. |
sort | No | string | Field to sort by (e.g., Metadata.Title, Id, CreateDate). |
desc | No | boolean | Sort in descending order (default: false). |
ids | No | array of strings | Filter by specific asset IDs. |
createDateStart | No | string <date-time> | Filter assets created after this date. |
createDateEnd | No | string <date-time> | Filter assets created before this date. |
lastModificationDateStart | No | string <date-time> | Filter assets modified after this date. |
lastModificationDateEnd | No | string <date-time> | Filter assets modified before this date. |
durationFrom | No | int64 | Filter assets with duration greater than or equal to this value. |
durationTo | No | int64 | Filter assets with duration less than or equal to this value. |
presets | No | array of strings | Filter by transcoding presets. |
tags | No | array of strings | Filter by tags. |
attributes | No | array of strings | Filter by attributes in the format [key]=value. |
Response
| Field | Type | Notes |
|---|
items | array of VodAsset | List of VOD assets. |
pageCount | int32 | Total number of pages. |
pageSize | int32 | Number of items per page. |
totalCount | int32 | Total number of matching items. |
pageNumber | int32 | Current page number. |
hasMore | boolean | Indicates 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | VOD asset ID |
Response
| Field | Type | Notes |
|---|
id | string | VOD asset ID |
preset | string | Transcoding preset used |
transcodedJobId | string | ID of the transcoding job |
title | string | Asset title |
metadata | object | Additional metadata |
tenantId | string | Tenant ID |
createDate | string <date-time> | Creation date |
lastModificationDate | string <date-time> | Last modification date |
status | AssetStatus | Current status of the asset |
fileIds | object | Map of file IDs to FileTypesFlag |
sources | Array of VodSource | Source files used |
endpoints | Array of EndpointInfo | Available endpoints for the asset. EndpointInfo |
outputs | Array of EntityTranscodingOutput | Transcoding outputs. EntityTranscodingOutput |
errorMessage | string | Error message if any |
durationMilliseconds | int64 | Duration 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id} |
| HTTP method | PATCH |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string <uuid> | ID of the VOD asset to update. |
metadata | No | object | Key-value pairs to update asset metadata. |
title | No | string | New title for the asset. |
tags | No | array of strings | Tags to associate with the asset. |
attributes | No | array of strings | Attributes in the format [key]=value. |
Response
| Field | Type | Notes |
|---|
id | string <uuid> | ID of the updated asset. |
title | string | Updated title. |
metadata | object | Updated metadata. |
tags | array of strings | Updated tags. |
attributes | array of strings | Updated attributes. |
status | string | Current status of the asset. |
createDate | string <date-time> | Creation timestamp. |
lastModificationDate | string <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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | VOD 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}'
Delete Multiple VOD Assets
Deletes multiple VOD assets in a single request.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/vod/v1/assets/deletemany |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
body | Yes | Array of string | Array of VOD asset IDs to be deleted |
Response
| Field | Type | Notes |
|---|
| (asset_id) | ServiceResponse | Object 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id}/outputs |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string (uuid) | ID of the VOD asset to which the output will be added. |
preset | Yes | string | Transcoding preset name (e.g., mp4). |
id | No | string | Optional ID for the output. |
expirationDate | No | string (date-time) | Optional expiration date for the output. |
harvestedEndpointInfos | No | array of objects | Optional list of endpoint info objects. |
Response
| Field | Type | Notes |
|---|
outputId | string | ID 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/assets/{id}/outputs/{outputId} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string (uuid) | ID of the VOD asset. |
outputId | Yes | string | ID 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}'
Delete File
Deletes a specific file.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files/{id} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | File ID |
Response
| Field | Type | Notes |
|---|
deletedFileKey | string | Key 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | File ID |
Response
| Field | Type | Notes |
|---|
id | string | File ID |
tenantId | string | Tenant ID |
fileKey | string | Key of the file |
metadata | object | Additional metadata for the file |
status | UploadFileStatus | Current status of the file |
createDate | string <date-time> | Creation date |
lastModificationDate | string <date-time> | Last modification date |
vodAssets | Array of string | IDs of VOD assets using this file |
fileTypes | FileTypesFlag | Type of the file |
fileSize | int64 | Size of the file in bytes |
s3Uri | string | S3 URI of the file |
location | string | Location of the file |
bucket | string | S3 bucket name |
orginalFileName | string | Original file name |
name | string | Current name of the file |
friendlyName | string | Friendly name of the file |
tracks | Array of TranscodingTrack | Detected 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files/{id} |
| HTTP method | PATCH |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string (uuid) | ID of the file to update. |
metadata | No | object | Key-value pairs to update in file metadata. |
name | No | string | New internal name for the file. |
friendlyName | No | string | User-friendly name for the file. |
tags | No | array of strings | Tags to assign to the file. |
attributes | No | array of strings | Attributes in the format [key]=value. |
Response
| Field | Type | Notes |
|---|
id | string (uuid) | File identifier. |
fileKey | string | File storage key. |
status | string | Upload status (e.g., Completed). |
fileSize | int64 | Size of the file in bytes. |
name | string | Internal name of the file. |
friendlyName | string | User-friendly name. |
tags | array of strings | Tags assigned to the file. |
attributes | array of strings | Custom attributes. |
createDate | string (date-time) | File creation timestamp. |
lastModificationDate | string (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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files/deletemany |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
body | Yes | Array of string | Array of file IDs to be deleted |
Response
| Field | Type | Notes |
|---|
| (file_id) | ServiceResponse | Object 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
limit | No | int32 | Number of items per page (default: 100). |
page | No | int32 | Page number to retrieve (default: 1). |
fileType | No | string | Filter by file type (e.g., Video, Audio, Caption). |
status | No | string | Filter by file status (e.g., Uploading, Completed, Error). |
query | No | string | Text search query. |
sort | No | string | Field to sort by (e.g., CreateDate, FileSize, Metadata.FriendlyName). |
desc | No | boolean | Sort descending (default: false). |
ids | No | array of strings | Filter by specific file IDs. |
createDateStart | No | string (date-time) | Filter by creation date (start). |
createDateEnd | No | string (date-time) | Filter by creation date (end). |
lastModificationDateStart | No | string (date-time) | Filter by last modification date (start). |
lastModificationDateEnd | No | string (date-time) | Filter by last modification date (end). |
statuses | No | array of strings | Filter by multiple statuses. |
tags | No | array of strings | Filter by tags. |
attributes | No | array of strings | Filter by attributes (e.g., [key]=value). |
Response
| Field | Type | Notes |
|---|
items | array of UploadedFileResult | List of uploaded files. |
pageCount | int32 | Total number of pages. |
pageSize | int32 | Number of items per page. |
totalCount | int32 | Total number of items. |
pageNumber | int32 | Current page number. |
hasMore | boolean | Indicates 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}/preview |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | File ID |
Response
| Field | Type | Notes |
|---|
link | string | Preview URL for the file |
expirationDate | string <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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files/start |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
name | Yes | string | Name of the file (max 1024 characters) |
friendlyName | Yes | string | Friendly name of the file (max 1024 characters) |
metadata | No | object | Additional metadata for the file |
fileSize | Yes | int64 | Size of the file in bytes |
Response
| Field | Type | Notes |
|---|
fileId | string | ID of the file |
multipartUrls | Array of strings | URLs for multipart upload |
fileKey | string | Key of the file |
partSize | int64 | Size of each part for multipart upload |
lastPartSize | int64 | Size of the last part |
partsCount | int64 | Total 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}/part/{partNumber} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | File ID from files/start method |
partNumber | Yes | int32 | Number of the part |
Response
| Field | Type | Notes |
|---|
url | string | URL 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files/complete |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
fileId | Yes | string | File ID from the start upload process |
parts | Yes | Array of PartETag | Array of part numbers and their ETags |
parts.partNumber | Yes | integer | |
parts.eTag | Yes | string | Nullable |
Response
| Field | Type | Notes |
|---|
fileId | string | ID of the uploaded file |
fileKey | string | Key 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}/cancel |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Uploading file ID. |
delete | No | boolean | If true, the uploading file will be immediately deleted. Otherwise, it will change to status=Error. |
X-Tenant-Id | No | string | Tenant 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
}'
Detects media tracks in a specific file.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/vod/v1/files/{id}/detect |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | File ID to detect media tracks for |
Response
| Field | Type | Notes |
|---|
tracks | Array of TranscodingTrack | Detected 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/filetypes |
| HTTP method | GET |
Request
This endpoint doesn't require any parameters.
Response
| Field | Type | Notes |
|---|
fileTypes | object | Object 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 URL | https://{tenant_name}.api.videokit.cloud/vod/v1/languages |
| HTTP method | GET |
Request
This endpoint doesn't require any parameters.
Response
| Field | Type | Notes |
|---|
languages | Array of strings | List 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
limit | No | int32 | Page size of channels; default: 100 |
page | No | int32 | Number of requested page; default: 1. |
query | No | string | Query by metadata or id. |
sort | No | string | Property to sort by. Examples: Metadata.Title, CreateDate, LastModificationDate |
desc | No | boolean | Set to true to sort descending; default: false |
ids | No | Array of strings | Channel ids |
createDateStart | No | string <date-time> | Filter by creation date (start) |
createDateEnd | No | string <date-time> | Filter by creation date (end) |
lastModificationDateStart | No | string <date-time> | Filter by last modification date (start) |
lastModificationDateEnd | No | string <date-time> | Filter by last modification date (end) |
includeAwsData | No | boolean | Include data from AWS; default: true |
Response
| Field | Type | Notes |
|---|
items | array of objects | Single page of listed ChannelResults. |
pageCount | int32 | Number of all pages. |
pageSize | int32 | Size of the page. |
totalCount | int32 | Number 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
name | Yes | string | Channel name |
redundancy | No | string | Redundancy mode: SingleInput or DoubleInput |
latency | No | string | Latency mode: NormalLatency or ReducedLatency |
input.type | Yes | string | Input type, e.g., RTMP_PUSH |
input.whitelistCidr | No | string | CIDR whitelist for input |
input.inputLoss.type | Yes | string | Input loss type: COLOR or SLATE |
input.inputLoss.color | No | string | Hex color for input loss screen |
endpoints[].type | No | string | Endpoint types, e.g., DashDrm, HlsDrm |
qualities[].resolution | No | string | Resolution: 360p, 480p, 720p, etc. |
qualities[].frameRate | No | int | Frame rate per resolution |
restreams[].protocol | No | string | Protocol, e.g., RTMP |
restreams[].id | No | string | Restream ID |
restreams[].destination | No | string | Destination name, e.g., Facebook |
restreams[].rtmpDestinations[].url | No | string | RTMP destination URL |
restreams[].rtmpDestinations[].streamKey | No | string | Stream key for RTMP destination |
activationMode | No | string | EventBased or Manual |
transmissionType | No | string | Video or Audio |
environment | No | string | MediaLive or MediaLiveAnywhere |
mediaPackageVersion | No | string | V1 or V2 |
Response
| Field | Type | Notes |
|---|
id | string | ID of the created channel |
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/live/v1/channels \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"name": "chn-1",
"redundancy": "DoubleInput",
"latency": "NormalLatency",
"input": {
"type": "RTMP_PUSH",
"whitelistCidr": "0.0.0.0/0",
"inputLoss": {
"type": "COLOR",
"color": "000000"
}
},
"endpoints": [
{ "type": "DashDrm" },
{ "type": "HlsDrm" }
],
"qualities": [
{ "resolution": "360p", "frameRate": 25 },
{ "resolution": "480p", "frameRate": 30 },
{ "resolution": "720p", "frameRate": 50 },
{ "resolution": "1080p", "frameRate": 60 },
{ "resolution": "2160p", "frameRate": 60 }
],
"restreams": [
{
"protocol": "RTMP",
"id": "0f000000-ac11-0242-a160-08dd5be2bb79",
"destination": "Facebook",
"rtmpDestinations": [
{
"url": "rtmp://example.domain.com/live1",
"streamKey": "0f000000-ac11-0242-a1ac-08dd5be2bb79"
},
{
"url": "rtmp://example.domain.com/live2",
"streamKey": "0f000000-ac11-0242-a1af-08dd5be2bb79"
}
]
}
],
"activationMode": "EventBased",
"transmissionType": "Video",
"environment": "MediaLive",
"mediaPackageVersion": "V1"
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc"
}
Get Channel Details
Gets channel details.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Channel Id |
Response
| Field | Type | Notes |
|---|
id | string | Channel Id |
endpoints | array | Channel endpoints |
archiveEndpointIds | array | Endpoint names that will be used for recording |
transcodeEndpointId | string | Endpoint name used for transcoding of archived recording |
cdn | object | CDN channel info |
cdn.enabled | boolean | CDN channel info |
inputs | array | List of channel inputs (ingest points) |
inputs.id | string | nullable |
inputs.type | string | nullable |
inputs.destinations | array of ChannelInputEndpoint | nullable |
inputs.destinations.url | string | nullable |
inputs.details | ChannelInputDetails | |
inputs.details.securityGroupIps | array of string | nullable |
encoding | object | Channel encoding information |
encoding.preset | string | Channel encoding information |
encoding.pipelines | integer | Channel encoding information |
status | enum | Channel status. Possible values: Processing, Off, On, Starting, Stopping, Error |
internalStatus | string | Internal status of the channel |
metadata | object | Channel metadata |
createDate | string | Creation date |
lastModificationDate | string | Last modification date |
automationDisabled | boolean | Indicates if automation is disabled |
name | string | Channel 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels/{id} |
| HTTP method | PATCH |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | ID of the channel to update (in URL path) |
automationDisabled | No | boolean | Disable or enable automation |
name | No | string | New name for the channel |
input.type | No | string | Input type, e.g., RTMP_PUSH |
input.whitelistCidr | No | string | CIDR whitelist for input |
input.inputLoss.type | No | string | Input loss type: COLOR or SLATE |
input.inputLoss.color | No | string | Hex color for input loss screen |
endpoints[].type | No | string | Endpoint types, e.g., DashDrm, HlsDrm |
qualities[].resolution | No | string | Resolution: 360p, 480p, 720p, etc. |
qualities[].frameRate | No | int | Frame rate per resolution |
restreams | No | array | Add, edit, or remove RTMP services where you want to restream this channel. Max items: 10 Restream |
Response
| Field | Type | Notes |
|---|
id | string | ID 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels/{id} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Channel 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}/start |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Channel 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}/stop |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Channel 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}/status |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Channel Id (path parameter) |
Response
| Field | Type | Notes |
|---|
id | string | Channel Id |
status | enum | Channel status. Possible values: Processing, Off, On, Starting, Stopping, Error |
internalStatus | string | Internal 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}/stats |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Channel Id (path parameter) |
start | No | string <date-time> | Start time of stats stream |
end | No | string <date-time> | End time of stats stream |
periodSeconds | No | int32 | Granularity. Multiple of 60, default: 60 |
aggregationFunction | No | string | Sum or Avg, Sum is default |
Response
| Field | Type | Notes |
|---|
metrics | object | Object containing StatsMetricResult objects |
[].id | string | nullable |
[].description | string | nullable |
[].unitName | string | nullable |
[].unitSymbol | string | nullable |
[].data | array of StatsPointResult | nullable |
[].data.time | string (date-time) | |
[].data.value | 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/channelsstatus |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
ids | No | array of string | Comma separated list of channel ids |
Response
| Field | Data Type | Notes |
|---|
id | string | nullable, Channel Id |
status | enum | Channel status. Possible values: Processing, Off, On, Starting, Stopping, Error |
internalStatus | string | nullable, Internal status of the channel |
REQUEST
curl -X GET \
'https://{tenant_name}.api.videokit.cloud/live/v1/channelsstatus?ids=12345678-1234-1234-1234-123456789abc,87654321-4321-4321-4321-987654321cba' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
[
{
"id": "12345678-1234-1234-1234-123456789abc",
"status": "Processing",
"internalStatus": "string"
},
{
"id": "87654321-4321-4321-4321-987654321cba",
"status": "On",
"internalStatus": "string"
}
]
Get Channel Configuration
It returns the AWS configuration for a specific channel.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels/{id}/configuration |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Channel ID. |
X-Tenant-Id | No | string | Tenant ID is required only if one tenant is active on a given account. |
Response
| Field | Data type | Notes |
|---|
id | string | Channel ID. |
configuration | object | AWS 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/channels/limit |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
X-Tenant-Id | No | string | Tenant ID is required only if one tenant is active on a given account. |
Response
| Field | Data type | Notes |
|---|
limit | int32 | Channel 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>'
Create Event
Creates a new event on a specified channel.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/live/v1/events |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
channelId | Yes | string | ID of the channel the event belongs to |
start | Yes | string <date-time> | Event start time in ISO 8601 format |
end | Yes | string <date-time> | Event end time in ISO 8601 format |
title | No | string | Optional title of the event |
ensureChannel | No | boolean | If true, the live channel will be automatically started for this event |
metadata.title | No | string | Title of the event (used in metadata) |
tags | No | array of strings | Optional tags |
attributes | No | array of strings | Optional attributes in format [key]=value |
Response
| Field | Type | Notes |
|---|
id | string | ID 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/events |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
channelId | No | string | Filter events by channel ID |
searchStart | No | string <date-time> | Start of search time range |
searchEnd | No | string <date-time> | End of search time range |
limit | No | int32 | Number of events to return; default: 100 |
page | No | int32 | Page number; default: 1 |
query | No | string | Query by metadata or ID |
sort | No | string | Sort by property (e.g., ChannelId, Start, Metadata.Title) |
desc | No | boolean | Sort descending; default: false |
ids | No | array of UUIDs | Filter by specific event IDs |
createDateStart | No | string <date-time> | Filter by creation date (start) |
createDateEnd | No | string <date-time> | Filter by creation date (end) |
lastModificationDateStart | No | string <date-time> | Filter by last modification date (start) |
lastModificationDateEnd | No | string <date-time> | Filter by last modification date (end) |
channels | No | array of strings | Filter by multiple channel IDs |
statuses | No | array of strings | Filter by event statuses (e.g., Live, Scheduled, Finished) |
tags | No | array of strings | Filter by tags |
attributes | No | array of strings | Filter by attributes in format [key]=value |
Response
| Field | Type | Notes |
|---|
items | array of objects | List of event objects |
items[].id | string | Unique identifier of the event |
items[].channelId | string | ID of the channel the event belongs to |
items[].start | string <date-time> | Start time of the event |
items[].end | string <date-time> | End time of the event |
items[].title | string | Title of the event |
items[].ensureChannel | boolean | Whether the channel should auto-start |
items[].metadata | object | Custom metadata key-value pairs |
items[].tags | array of strings | Tags associated with the event |
items[].attributes | array of strings | Attributes in [key]=value format |
items[].createDate | string <date-time> | Creation timestamp |
items[].lastModificationDate | string <date-time> | Last modification timestamp |
items[].status | string | Status of the event (e.g., Scheduled) |
items[].catchup | object | Catchup endpoints (if available) |
pageCount | int32 | Number of all pages |
pageSize | int32 | Size of the page |
totalCount | int32 | Total number of matching events |
pageNumber | int32 | Current page number |
hasMore | boolean | Indicates 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/events/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Event id (path parameter). Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
Response
| Field | Type | Notes |
|---|
id | string | Unique identifier of the event |
channelId | string | Identifier of the channel |
start | string <date-time> | Start time of the event |
end | string <date-time> | End time of the event |
ensureChannel | boolean | Flag to automatically turn on/off the channel for this event |
title | string | Asset title |
catchup | object | Catchup information |
catchup.endpoints | array | Array of endpoint objects |
metadata | object | Event metadata dictionary |
createDate | string <date-time> | Creation date of the event |
lastModificationDate | string <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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/events/{id} |
| HTTP method | PATCH |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | ID of the event to update (in URL path) |
start | No | string <date-time> | New start time of the event |
end | No | string <date-time> | New end time of the event |
title | No | string | New title of the event |
ensureChannel | No | boolean | Whether to auto-start the channel |
metadata | No | object | Key-value pairs to update in metadata |
tags | No | array of strings | Tags to update |
attributes | No | array of strings | Attributes in [key]=value format |
Response
| Field | Type | Notes |
|---|
id | string | ID of the updated event |
channelId | string | ID of the associated channel |
start | string <date-time> | Start time of the event |
end | string <date-time> | End time of the event |
title | string | Title of the event |
ensureChannel | boolean | Whether the channel auto-starts |
metadata | object | Updated metadata |
tags | array of strings | Updated tags |
attributes | array of strings | Updated attributes |
createDate | string <date-time> | Creation timestamp |
lastModificationDate | string <date-time> | Last modification timestamp |
status | string | Status of the event (e.g., Scheduled, Live, Finished) |
catchup | object | Catchup 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 URL | https://{tenant_name}.api.videokit.cloud/live/v1/events/{id} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Event 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}'
Delete Multiple Events
Deletes multiple events.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/live/v1/events/deletemany |
| HTTP method | POST |
Request
The request body should contain an array of event ids to be deleted.
Response
| Field | Type | Notes |
|---|
{eventId} | object | Object with event id as key and ServiceResponse as value |
{eventId}.status | object | Status information |
{eventId}.status.code | string | Status code (e.g., "success") |
{eventId}.status.message | string | Status message |
{eventId}.success | boolean | Indicates 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 URL | https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
source | Yes | object | Recording source details. |
source.type | Yes | RecordingSourceType | RecordingSourceType |
source.liveChannelDetails | No | LiveSourceMessage | LiveSourceMessage |
source.liveChannelDetails.channelId | No | string | Channel ID. Example: "dazn-test-1" |
source.liveChannelDetails.start | No | string (date-time) | Event start time. Example: "2020-11-18T13:07:43.486Z" |
source.liveChannelDetails.end | No | string (date-time) | Event stop time. Example: "2020-11-18T14:07:43.486Z" |
catchup | No | object | Catchup settings object. |
catchup.enabled | No | boolean | If true, temporary stream address will be created (typically valid for 14 days) |
archive | No | object | Archive settings object. |
archive.enabled | No | boolean | If true, the recording will be archived to persistent storage |
public | No | boolean | Visibility of the recording. |
outputs | No | array | List of output configurations. |
outputs.preset | No | string | Type of output. Example: "mp4" |
outputs.id | No | string | Id of this output. Example: "output1" |
metadata | No | object | Custom metadata object. |
metadata.title | No | string | Asset title |
metadata.attributes | No | object | Attributes object |
metadata.attributes.key | No | string | Attribute key |
metadata.attributes.value | No | string | Attribute value |
Response
| Field | Type | Notes |
|---|
id | string | ID of the created recording. |
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"source": {
"type": "LiveChannel",
"liveChannelDetails": {
"channelId": "cot-live-ch1",
"start": "2025-02-13T08:00:00+00:00",
"end": "2025-02-13T08:05:00+00:00"
}
},
"catchup": {
"enabled": true
},
"archive": {
"enabled": true
},
"public": false,
"outputs": [
{
"id": "file1",
"preset": "mp4"
}
],
"metadata": {
"title": "The Matrix",
"attributes": [
{
"key": "genre",
"value": "sci-fi"
}
]
}
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc"
}
List Recordings
Returns a list of recordings.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
limit | No | int32 | Number of recordings to return; default: 100 |
page | No | int32 | Number of requested page; default: 1 |
searchStart | No | string <date-time> | Start time for recording search |
searchEnd | No | string <date-time> | End time for recording search |
channelId | No | string | Channel ID of the recording |
query | No | string | Text query to search by metadata |
sort | No | string | Property to sort by. Examples: Source.LiveChannelDetails.Start, Metadata.Title, CreateDate, LastModificationDate |
desc | No | boolean | Set to true to sort descending; default: false |
ids | No | array of UUIDs | List of recording IDs |
createDateStart | No | string <date-time> | Filter by creation date (start) |
createDateEnd | No | string <date-time> | Filter by creation date (end) |
lastModificationDateStart | No | string <date-time> | Filter by last modification date (start) |
lastModificationDateEnd | No | string <date-time> | Filter by last modification date (end) |
statuses | No | array | Filter by asset statuses (e.g., Pending, Available, etc.) |
channels | No | array of strings | Filter by channel IDs |
Response
| Field | Type | Notes |
|---|
items | array of objects | List of recordings. RecordingResult |
pageCount | int32 | Number of all pages |
pageSize | int32 | Size of the page |
totalCount | int32 | Total number of items |
pageNumber | int32 | Current page number |
hasMore | boolean | Whether 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 URL | https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Recording id |
X-Tenant-Id | No | string | TenantId required if one tenant is active |
Response
| Field | Data type | Notes |
|---|
id | string | Recording Id |
source | object | Recording source details |
catchup | object | Catchup details |
catchup.enabled | boolean | If true, temporary stream address will be created (typically valid for 14 days) |
catchup.expirationTime | string (date-time) | Time when this catchup becomes unavailable |
catchup.endpoints | array | Endpoints for this catchup |
archive | object | Archive details |
archive.enabled | boolean | If true, the recording will be archived to persistent storage |
archive.delaySeconds | integer | Delay between stop of the recording and creating persistent archive |
archive.public | boolean | Should the persistent archive be publicly available |
archive.expirationDate | string (date-time) | Expiration date for this archive |
archive.status | AssetStatus | AssetStatus |
archive.endpoints | array | Persistent endpoints created for this archive |
archive.archivisationCompletedDate | string (date-time) | Time of successful archivisation completed (used for metering) |
outputs | array | Additional outputs |
outputs.status | AssetStatus | AssetStatus |
outputs.preset | string | Preset name for this output. For example 'mp4' |
outputs.id | string | Id of this output, unique in scope of this recording |
outputs.expirationDate | string (date-time) | After this time, the output will be permanently deleted |
outputs.endpoints | array of EndpointInfo | Additional Endpoints generated for this recording |
expirationDate | string | Asset expiration date |
status | string | Recording status |
metadata | object | Asset metadata |
errorMessage | string | Error information |
createDate | string | Creation date |
lastModificationDate | string | Last modification date |
durationMilliseconds | int64 | Duration in milliseconds |
title | string | Asset 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.
The source can only be changed for recordings in Pending status (before they are archived).
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/{id} |
| HTTP method | PATCH |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Recording ID (UUID format) |
source | No | object | Recording source details. |
source.type | Yes | RecordingSourceType | RecordingSourceType |
source.liveChannelDetails | No | LiveSourceMessage | LiveSourceMessage |
source.liveChannelDetails.channelId | No | string | Channel ID. Example: "dazn-test-1" |
source.liveChannelDetails.start | No | string (date-time) | Event start time. Example: "2020-11-18T13:07:43.486Z" |
source.liveChannelDetails.end | No | string (date-time) | Event stop time. Example: "2020-11-18T14:07:43.486Z" |
catchup | No | object | Catchup settings. |
catchup.enabled | No | boolean | catchup.enabled |
archive | No | object | Archive settings. |
archive.enabled | No | boolean | If true, the recording will be archived to persistent |
archive.public | No | boolean | If true, recording will be public after archivisation |
archive.delaySeconds | No | integer | Delay between stop of the recording and creating persistent archive. Max: 2592000, Min: 0 |
title | No | string | New title of the recording |
metadata | No | object | Metadata fields to update (key-value pairs) |
tags | No | array | List of tags |
attributes | No | array | List of attributes in [key]=value format |
Response
| Field | Type | Notes |
|---|
id | string | Recording ID |
title | string | Title of the recording |
status | string | Status of the recording |
createDate | string | Creation timestamp |
lastModificationDate | string | Last modification timestamp |
durationMilliseconds | int64 | Duration of the recording in milliseconds |
metadata | object | Updated 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 URL | https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/{id} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Recording id |
X-Tenant-Id | No | string | TenantId 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}'
Delete Multiple Recordings
Delete multiple recordings at once.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/deletemany |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
X-Tenant-Id | No | string | TenantId required if one tenant is active |
Request Body: An array of recording IDs to delete.
Response
| Field | Data type | Notes |
|---|
<id> | object | Object with deletion status for each ID |
<id>.status | ServiceStatus | ServiceStatus |
<id>.status.code | string | Application level error code. Example: "common_1" |
<id>.status.status | integer | HTTP status |
<id>.status.message | string | Developer friendly message. Example: "Asset ID not found" |
<id>.success | boolean | Set 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 URL | https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/{recordingId}/outputs/{id} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
recordingId | Yes | string | Recording id |
id | Yes | string | Output Id |
X-Tenant-Id | No | string | TenantId 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}'
Add Output to Recording
Add output to an existing recording (this will trigger transcoding once the recording is recorded).
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/{id}/outputs |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Recording id |
X-Tenant-Id | No | string | TenantId required if one tenant is active |
Request Body:
| Field | Required | Type | Notes |
|---|
preset | Yes | string | Transcoding preset |
id | No | string | Id of this output |
expirationDate | No | string | Optional date of removal |
Response
| Field | Data type | Notes |
|---|
items | array of objects | Array of created output IDs |
pageCount | int32 | Number of pages |
pageSize | int32 | Size of the page |
totalCount | int32 | Total number of items |
pageNumber | int32 | Current page number |
hasMore | boolean | If there are more pages |
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/cvr/v1/recordings/12345678-1234-1234-1234-123456789abc/outputs \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"preset": "mp4",
"id": "new-output-1",
"expirationDate": "2050-01-01T00:00:00Z"
}'
RESPONSE
{
"items": [
{
"id": "new-output-1"
}
],
"pageCount": 1,
"pageSize": 1,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}
Streaming
Get Ads Count Analytics
Get ads count analytics.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/ads/queries/count |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
start | No | string <date-time> | Start of timeframe which is queried in UTC format. |
end | No | string <date-time> | End of timeframe which is queried in UTC format. |
filters | No | array of objects | Analytics Query Filters. |
orderBy | No | array of objects | Analytics order by filters. |
interval | No | string | Time interval. |
groupBy | No | array of strings | Array of strings. |
limit | No | int64 | Maximum number of rows returned (max. 200). |
offset | No | int64 | Offset of data. |
dimension | Yes | string | Analytic dimension. |
Response
| Field | Data type | Notes |
|---|
rowCount | int64 | Number of rows returned. |
rows | array of arrays | Array of objects. |
columnLabels | array of objects | Column labels. |
columnLabels.key | string | Key. |
columnLabels.label | string | Label. |
contextDescription | array of objects | Context description. |
contextDescription.label | string | Label name. |
contextDescription.description | string | Description. |
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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/ads/queries/sum |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
start | No | string <date-time> | Start of timeframe which is queried in UTC format. |
end | No | string <date-time> | End of timeframe which is queried in UTC format. |
filters | No | array of objects | Analytics Query Filters. |
orderBy | No | array of objects | Analytics order by filters. |
interval | No | string | Time interval. |
groupBy | No | array of strings | Array of strings. |
limit | No | int64 | Maximum number of rows returned (max. 200). |
offset | No | int64 | Offset of data. |
dimension | Yes | string | Analytic dimension. |
Response
| Field | Data type | Notes |
|---|
rowCount | int64 | Number of rows returned. |
rows | array of arrays | Array of objects. |
columnLabels | array of objects | Column labels. |
columnLabels.key | string | Key. |
columnLabels.label | string | Label. |
contextDescription | array of objects | Context description. |
contextDescription.label | string | Label name. |
contextDescription.description | string | Description. |
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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/ads/queries/avg |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
start | No | string <date-time> | Start of timeframe which is queried in UTC format. |
end | No | string <date-time> | End of timeframe which is queried in UTC format. |
filters | No | array of objects | Analytics Query Filters. |
orderBy | No | array of objects | Analytics order by filters. |
interval | No | string | Time interval. |
groupBy | No | array of strings | Array of strings. |
limit | No | int64 | Maximum number of rows returned (max. 200). |
offset | No | int64 | Offset of data. |
dimension | Yes | string | Analytic dimension. |
Response
| Field | Data type | Notes |
|---|
rowCount | int64 | Number of rows returned. |
rows | array of arrays | Array of objects. |
columnLabels | array of objects | Column labels. |
columnLabels.key | string | Key. |
columnLabels.label | string | Label. |
contextDescription | array of objects | Context description. |
contextDescription.label | string | Label name. |
contextDescription.description | string | Description. |
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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
limit | No | int32 | Number of recordings to return. Default: 100 |
page | No | int32 | Number of requested page. Default: 1 |
query | No | string | Text query to search by metadata. |
sort | No | string | Property name to sort by. Metadata.Title, CreateDate, LastModificationDate. |
desc | No | boolean | Set to true to order descending. Default: false |
ids | No | array of strings | List of asset IDs. |
channelId | No | string | Channel identifier. |
isDrm | No | boolean | Filter DRM assets. |
source | No | string | [Obsolete] Asset source module: Live, Recorder, Vod. |
status | No | string | Asset status. |
type | No | string | Asset type: LiveEvent, LiveChannel, Recording, Vod. |
durationFrom | No | int64 | Asset duration from (in milliseconds). |
durationTo | No | int64 | Asset duration to (in milliseconds). |
searchStart | No | string <date-time> | Search date start range. |
searchEnd | No | string <date-time> | Search date end range. |
createDateStart | No | string <date-time> | Create date start range. |
createDateEnd | No | string <date-time> | Create date end range. |
lastModificationDateStart | No | string <date-time> | Last modification date start range. |
lastModificationDateEnd | No | string <date-time> | Last modification date end range. |
channels | No | array of strings | Filter by multiple channel IDs. |
statuses | No | array of strings | Filter by multiple statuses. |
types | No | array of strings | Filter by multiple asset types. |
tags | No | array of strings | Filter by tags. |
attributes | No | array of strings | Filter by attributes in [key]=value format. |
Response
| Field | Type | Notes |
|---|
items | array of objects | One page of listed AssetResult objects. |
pageCount | int32 | Number of all pages. |
pageSize | int32 | Size of the page. |
totalCount | int32 | Number of all items. |
pageNumber | int32 | Number of this page. |
hasMore | boolean | Indicates 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Asset id. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
Response
| Field | Data type | Notes |
|---|
id | string | Player asset Id. |
status | string | Asset status. |
metadata | object | Asset metadata. |
outputs | array of objects | Additional outputs, generated after archivisation. |
outputs.status | AssetStatus | Output status. |
outputs.preset | string | Preset name for this output. |
outputs.id | string | Id of this output. |
outputs.expirationDate | string (date-time) | Expiration date of the output. |
outputs.endpoints | array of EndpointInfo | Additional Endpoints generated for this recording. EndpointInfo |
createDate | string <date-time> | Create date. |
lastModificationDate | string <date-time> | Last modification date. |
durationMilliseconds | int64 | Duration time in milliseconds. |
source | string | Asset source. |
type | string | Asset type. |
channelId | string | Channel identifier. |
start | string <date-time> | Start time of the event. |
end | string <date-time> | End time of the event. |
isDrm | boolean | Is DRM content. |
preset | string | Preset info. |
tokenRequiredPolicy | object | Token required policy. |
title | string | Asset title. |
description | string | Asset description. |
tags | array of objects | Asset tags. |
tags.id | string | Tag ID. |
tags.name | string | Tag name. |
images | object | Asset images. |
images.id | string | Image ID. |
images.url | string | Image URL. |
images.name | string | Image name. |
chapters | array of objects | Asset chapters. |
chapters.id | string | Chapter ID. |
chapters.startSecond | integer | Start time in seconds. |
chapters.endSecond | integer | End time in seconds. |
chapters.durationSeconds | integer | Duration in seconds (read-only). |
chapters.title | string | Chapter title. |
settings | object | Asset settings. |
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc.",
"status": "Processing",
"metadata": {
"Title": "The Matrix"
},
"outputs": [
{
"status": "Processing",
"preset": "mp4",
"id": "output-1",
"expirationDate": "2023-06-14T15:49:36.7973126+02:00",
"endpoints": [
{
"id": "endpoint-1",
"accessType": "Http",
"format": "MP4",
"url": "https://example.com/video.mp4",
"protection": "None"
}
]
}
],
"createDate": "2023-06-14T15:49:36.7973126+02:00",
"lastModificationDate": "2023-06-14T15:49:36.7973126+02:00",
"durationMilliseconds": 3600000,
"source": "Vod",
"type": "Vod",
"channelId": "cot-channel-ch1",
"isDrm": true,
"preset": "dash_hls_1080p",
"tokenRequiredPolicy": {
"asset": "inherit",
"tenant": "true"
},
"title": "The Matrix",
"description": "A computer hacker learns from mysterious rebels about the true nature of his reality and his role in the war against its controllers.",
"tags": [
{
"name": "action",
"id": "00000000-0000-0000-0000-000000000001"
}
],
"images": {
"poster": {
"Id": "poster-guid",
"Name": "matrix_poster.jpg",
"Url": "https://example.com/images/matrix_poster.jpg"
}
},
"chapters": [
{
"title": "Opening Scene",
"start": 0,
"end": 180
}
],
"settings": {
"tokenRequired": {
"asset": "Enabled",
"tenant": "Enabled"
},
"devToolsAccess": {
"asset": "Disabled",
"tenant": "Disabled"
},
"cap": {
"asset": "Enabled",
"tenant": "Enabled"
},
"analytics": {
"asset": "Enabled",
"tenant": "Enabled"
},
"codeObfuscation": {
"asset": "Enabled",
"tenant": "Enabled"
}
}
}
Update Asset
Updates selected fields of an existing asset.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId} |
| HTTP method | PATCH |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Asset identifier (path parameter). |
tokenRequiredPolicy | No | string | Token policy for the asset. Values: Inherit, True, False. |
images.{key}.id | No | string (UUID) | Image ID. |
images.{key}.name | No | string | Image file name. |
images.{key}.url | No | string | Public URL to the image. |
chapters[].title | No | string | Chapter title. |
chapters[].startSecond | No | integer (int64) | Start time of the chapter in seconds. |
chapters[].endSecond | No | integer (int64) | End time of the chapter in seconds. Optional. |
description | No | string | Description of the asset. |
tags[] | No | array[string] | List of tags to assign to the asset. |
attributes[] | No | array[string] | List of attributes in [key]=value format. |
Response
| Field | Type | Notes |
|---|
id | string | Asset ID |
status | string | Asset status |
title | string | Asset title |
description | string | Asset description |
metadata | object | Key-value metadata |
tags[] | array[string] | Tags assigned to the asset |
attributes[] | array[string] | Attributes assigned to the asset |
images.{key}.id | string | Image ID |
images.{key}.name | string | Image name |
images.{key}.url | string | Image URL |
chapters[].title | string | Chapter title |
chapters[].startSecond | integer | Chapter start time |
chapters[].endSecond | integer | Chapter end time |
createDate | string <date-time> | Creation timestamp |
lastModificationDate | string <date-time> | Last modification timestamp |
durationMilliseconds | integer | Duration in milliseconds |
source | string | Asset source: Live, Recorder, Vod, etc. |
type | string | Asset type: LiveEvent, Recording, Vod, etc. |
channelId | string | Channel identifier |
start | string <date-time> | Start time of the event |
end | string <date-time> | End time of the event |
isDrm | boolean | Whether the asset is DRM protected |
preset | string | Preset name |
tokenRequiredPolicy.asset | string | Token policy for asset |
tokenRequiredPolicy.tenant | string | Token policy for tenant |
settings.tokenRequired.asset | string | Token required setting for asset |
settings.tokenRequired.tenant | string | Token required setting for tenant |
settings.devToolsAccess.asset | string | Dev tools access setting for asset |
settings.devToolsAccess.tenant | string | Dev tools access setting for tenant |
settings.cap.asset | string | CAP setting for asset |
settings.cap.tenant | string | CAP setting for tenant |
settings.analytics.asset | string | Analytics setting for asset |
settings.analytics.tenant | string | Analytics setting for tenant |
settings.codeObfuscation.asset | string | Code obfuscation setting for asset |
settings.codeObfuscation.tenant | string | Code obfuscation setting for tenant |
isWatermarkProtected | boolean | Whether 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/settings |
| HTTP method | PATCH |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Asset id. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
tokenRequired | No | string | Token required status. |
devToolsAccess | No | string | Dev tools access status. |
cap | No | string | CAP status. |
analytics | No | string | Analytics status. |
codeObfuscation | No | string | Code obfuscation status. |
Response
| Field | Data type | Notes |
|---|
id | string | Player asset Id. |
status | string | Asset status. |
metadata | object | Asset metadata. |
outputs | array of objects | Additional outputs, generated after archivisation. |
createDate | string <date-time> | Create date. |
lastModificationDate | string <date-time> | Last modification date. |
durationMilliseconds | int64 | Duration time in milliseconds. |
source | string | Asset source. |
type | string | Asset type. |
channelId | string | Channel identifier. |
start | string <date-time> | Start time of the event. |
end | string <date-time> | End time of the event. |
isDrm | boolean | Is DRM content. |
preset | string | Preset info. |
tokenRequiredPolicy | object | Token required policy. |
title | string | Asset title. |
description | string | Asset description. |
tags | array of objects | Asset tags. |
images | object | Asset images. |
chapters | array of objects | Asset chapters. |
settings | object | Asset 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/chapters/{chapterId} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
chapterId | Yes | string | Streaming 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/chapters |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
chapters | No | array of objects | Asset chapters. |
Response
This method returns a 200 OK status code on success with no response body.
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/chapters \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
-d '{
"chapters": [
{
"title": "chapter-001",
"startSecond": 35
},
{
"title": "chapter-002",
"startSecond": 60,
"endSecond": 100
}
]
}'
List Allowed Domains
List allowed domains.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/domains |
| HTTP method | GET |
Response
| Field | Data type | Notes |
|---|
| - | array of objects | Array of allowed domains. |
playerDomainId | string | Player domain identifier. |
analyticsDomainId | string | Analytic domain identifier. |
url | string | Domain 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/domains |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
url | Yes | string | Allow domain url. |
Response
| Field | Data type | Notes |
|---|
playerDomainId | string | Player domain identifier. |
analyticsDomainId | string | Analytic domain identifier. |
url | string | Domain 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/domains |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
playerDomainId | No | string | Player domain id. |
analyticsDomainId | No | string | Analytics 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/{imageKey} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
imageKey | Yes | string | Image 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
images | No | object | Dictionary 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/start |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
name | Yes | string | File name, allowed alphanumeric and underscore characters. |
fileSize | Yes | int64 | File size in bytes. |
Response
| Field | Data type | Notes |
|---|
fileId | string | File identifier. |
multipartUrls | array of strings | URLs to upload parts of file to. |
fileKey | string | File storage id. |
partSize | int64 | Size of each file part in bytes. |
lastPartSize | int64 | Size of last file part. |
partsCount | int64 | Number 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/complete |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
fileId | Yes | string | File identifier. |
parts | Yes | array of objects | List of uploaded parts. |
parts.partNumber | Yes | integer | Part number. |
parts.eTag | Yes | string | Etag header from part upload response. |
Response
| Field | Data type | Notes |
|---|
fileId | string | File identifier. |
fileKey | string | File storage id. |
url | string | Location 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/{fileId}/part/{partNumber} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
fileId | Yes | string | File id from files/start method. |
partNumber | Yes | int32 | Number of part. |
Response
| Field | Data type | Notes |
|---|
url | string | Part 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
limit | No | int32 | Number of items per page. Default: 100 |
page | No | int32 | Request page number. Default: 1 |
fileType | No | string | File type. |
status | No | string | File status. |
query | No | string | Text search query. |
sort | No | string | Field to sort by. Examples: CreateDate, LastModificationDate, FileSize. |
desc | No | boolean | Sort descending. Default: false |
ids | No | array of strings | File identifiers. |
createDateStart | No | string <date-time> | Create date start range. |
createDateEnd | No | string <date-time> | Create date end range. |
lastModificationDateEnd | No | string <date-time> | Last modification date end range. |
lastModificationDateStart | No | string <date-time> | Last modification date start range. |
Response
| Field | Data type | Notes |
|---|
items | array of objects | One page of listed UploadedFileResult. |
pageCount | int32 | Number of all pages. |
pageSize | int32 | Size of the page. |
totalCount | int32 | Number of all items. |
pageNumber | int32 | Number of this page. |
hasMore | boolean | Actual 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/{fileId} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
fileId | Yes | string | File id from files/start method. |
Response
| Field | Data type | Notes |
|---|
id | string | File identifier. |
fileKey | string | File storage id. |
status | string | File status. |
fileSize | int64 | File size. |
s3Uri | string | s3 uri path. |
url | string | Location url. |
bucket | string | s3 bucket name. |
orginalFileName | string | Original file name. |
name | string | File name. |
createDate | string <date-time> | Create date. |
lastModificationDate | string <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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/{fileId} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
fileId | Yes | string | File id from files/start method. |
Response
| Field | Data type | Notes |
|---|
deletedFileKey | string | Deleted 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/uploaded/deletemany |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
body | Yes | array of strings | File id from files/start method |
Response
| Field | Data type | Notes |
|---|
[fileId] | object | Service response for each file ID |
[fileId].status | ServiceStatus | Service status details |
[fileId].status.code | string | Application level error code |
[fileId].status.message | string | Developer friendly message |
[fileId].success | boolean | Set 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/images/frames |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
Response
| Field | Data type | Notes |
|---|
items | array of strings | Single page of listed objects. |
items[].s3Uri | string | S3 URI of the image frame |
items[].url | string | url of the image frame |
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/12345678-1234-1234-1234-123456789abc/images/frames \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}' \
RESPONSE
{
"00000000-0000-0000-0000-000000000000": {
"s3Uri": "s3://bucket-name/path/to/file.jpg"
"url": "https://example.com/images/file.jpg"
},
"11111111-1111-1111-1111-111111111111": {
"s3Uri": "s3://bucket-name/path/to/file2.jpg"
"url": "https://example.com/images/file2.jpg"
}
}
List Impressions
List of impressions.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/impressions |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
start | No | string <date-time> | Start of timeframe which is queried in UTC format. |
end | No | string <date-time> | End of timeframe which is queried in UTC format. |
filters | No | array of objects | Analytics Query Filters. |
limit | No | int64 | Maximum number of rows returned (max. 200). |
Response
| Field | Data type | Notes |
|---|
impressions | array of objects | Array of impressions. |
impressions.impressionId | string | Random 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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/metrics/max_concurrentviewers |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
start | No | string <date-time> | Start of timeframe which is queried in UTC format. |
end | No | string <date-time> | End of timeframe which is queried in UTC format. |
filters | No | array of objects | Analytics Query Filters. |
orderBy | No | array of objects | Analytics order by filters. |
interval | No | string | Time interval. |
groupBy | No | array of strings | Array of strings. |
limit | No | int64 | Maximum number of rows returned (max. 200). |
offset | No | int64 | Offset of data. |
Response
| Field | Data type | Notes |
|---|
rowCount | int64 | Number of rows returned. |
rows | array of arrays | Array of objects. |
columnLabels | array of objects | Column labels. |
columnLabels.key | string | Key. |
columnLabels.label | string | Label. |
contextDescription | array of objects | Context description. |
contextDescription.label | string | Label name. |
contextDescription.description | string | Description. |
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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/qrcode/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Streaming asset identifier. Pattern: ^[a-zA-Z0-9_-]{1,128}$ |
Muted | No | boolean | Player muted. |
Autoplay | No | boolean | Player autoplay. |
TimeShift | No | boolean | Player timeshift. |
Analytics | No | boolean | Analytics 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.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/median |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
start | No | string <date-time> | Start of timeframe which is queried in UTC format. |
end | No | string <date-time> | End of timeframe which is queried in UTC format. |
filters | No | array of objects | Analytics Query Filters. |
orderBy | No | array of objects | Analytics order by filters. |
interval | No | string | Time interval. |
groupBy | No | array of strings | Array of strings. |
limit | No | int64 | Maximum number of rows returned (max. 200). |
offset | No | int64 | Offset of data. |
dimension | Yes | string | Metric dimension. |
includeContext | No | boolean | Whether context data should be included in the response. |
Response
| Field | Data type | Notes |
|---|
rowCount | int64 | Number of rows returned. |
rows | array of arrays | Array of objects. |
columnLabels | array of objects | Column labels. |
columnLabels.key | string | Key. |
columnLabels.label | string | Label. |
contextDescription | array of objects | Context description. |
contextDescription.label | string | Label name. |
contextDescription.description | string | Description. |
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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/avg |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
start | No | string <date-time> | Start of timeframe which is queried in UTC format. |
end | No | string <date-time> | End of timeframe which is queried in UTC format. |
filters | No | array of objects | Analytics Query Filters. |
orderBy | No | array of objects | Analytics order by filters. |
interval | No | string | Time interval. |
groupBy | No | array of strings | Array of strings. |
limit | No | int64 | Maximum number of rows returned (max. 200). |
offset | No | int64 | Offset of data. |
dimension | Yes | string | Metric dimension. |
includeContext | No | boolean | Whether context data should be included in the response. |
Response
| Field | Data type | Notes |
|---|
rowCount | int64 | Number of rows returned. |
rows | array of arrays | Array of objects. |
columnLabels | array of objects | Column labels. |
columnLabels.key | string | Key. |
columnLabels.label | string | Label. |
contextDescription | array of objects | Context description. |
contextDescription.label | string | Label name. |
contextDescription.description | string | Description. |
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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/count |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
start | No | string <date-time> | Start of timeframe which is queried in UTC format. |
end | No | string <date-time> | End of timeframe which is queried in UTC format. |
filters | No | array of objects | Analytics Query Filters. |
orderBy | No | array of objects | Analytics order by filters. |
interval | No | string | Time interval. |
groupBy | No | array of strings | Array of strings. |
limit | No | int64 | Maximum number of rows returned (max. 200). |
offset | No | int64 | Offset of data. |
dimension | Yes | string | Metric dimension. |
includeContext | No | boolean | Whether context data should be included in the response. |
Response
| Field | Data type | Notes |
|---|
rowCount | int64 | Number of rows returned. |
rows | array of arrays | Array of objects. |
columnLabels | array of objects | Column labels. |
columnLabels.key | string | Key. |
columnLabels.label | string | Label. |
contextDescription | array of objects | Context description. |
contextDescription.label | string | Label name. |
contextDescription.description | string | Description. |
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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/analytics/queries/sum |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
start | No | string <date-time> | Start of timeframe which is queried in UTC format. |
end | No | string <date-time> | End of timeframe which is queried in UTC format. |
filters | No | array of objects | Analytics Query Filters. |
orderBy | No | array of objects | Analytics order by filters. |
interval | No | string | Time interval. |
groupBy | No | array of strings | Array of strings. |
limit | No | int64 | Maximum number of rows returned (max. 200). |
offset | No | int64 | Offset of data. |
dimension | Yes | string | Metric dimension. |
includeContext | No | boolean | Whether context data should be included in the response. |
Response
| Field | Data type | Notes |
|---|
rowCount | int64 | Number of rows returned. |
rows | array of arrays | Array of objects. |
columnLabels | array of objects | Column labels. |
columnLabels.key | string | Key. |
columnLabels.label | string | Label. |
contextDescription | array of objects | Context description. |
contextDescription.label | string | Label name. |
contextDescription.description | string | Description. |
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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/settings |
| HTTP method | GET |
Response
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 URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/tags/{tag} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Asset identifier (path parameter). |
tag | Yes | string | Tag 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}'
Adds one or more tags to a specific asset.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/streaming/v1/assets/{assetId}/tags |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string | Asset identifier (path parameter). |
tags | Yes | array of objects | List 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 URL | https://{tenant_name}.api.videokit.cloud/core/v1/settings/tenant/{id}/status |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Tenant ID. |
X-Tenant-Id | No | string | Tenant ID is required only if one tenant is active on a given account. |
Response
| Field | Data type | Notes |
|---|
status | string | Tenant status (e.g., Active, Blocked, Deleted, SettingUp, Error). |
message | string | Additional 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 URL | https://{tenant_name}.api.videokit.cloud/core/v1/api-key |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
Query | No | string | Text query to filter API keys |
Sort | No | string | Field to sort by |
Desc | No | boolean | Set to true to sort descending |
Page | No | int32 | Page number |
Limit | No | int32 | Number of items per page |
Response
| Field | Type | Notes |
|---|
items | array of objects | Single page of listed objects. |
items.id | string | API Key ID. |
items.name | string | API Key name. |
items.roleId | string | Role name associated with the API Key. |
items.roleId | string | Role ID associated with the API Key. |
items.createdAt | string | API Key creation timestamp. |
pageCount | int32 | Number of all pages. |
pageSize | int32 | Size of the page. |
totalCount | int32 | Number 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 URL | https://{tenant_name}.api.videokit.cloud/core/v1/api-key/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | API Key ID. |
X-Tenant-Id | No | string | Tenant ID is required only if one tenant is active on a given account. |
Response
| Field | Data type | Notes |
|---|
id | string | API Key ID. |
name | string | API Key name. |
roleId | string | Role 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 URL | https://{tenant_name}.api.videokit.cloud/core/v1/api-key |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
X-Tenant-Id | No | string | Tenant ID is required only if one tenant is active on a given account. |
name | Yes | string | Name of the API Key. |
roleId | Yes | string | Role ID associated with the API Key. |
Response
| Field | Data type | Notes |
|---|
id | string | API Key ID. |
name | string | API Key name. |
roleId | string | Role ID associated with the API Key. |
REQUEST
curl -X POST \
https://{tenant_name}.api.videokit.cloud/core/v1/api-key \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: <tenant_id>' \
-d '{
"name": "API Key 1",
"roleId": "role-123"
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"name": "API Key 1",
"roleId": "role-123"
}
Update API Key
It updates an existing API key.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/core/v1/api-key/{id} |
| HTTP method | PUT |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | API Key ID. |
X-Tenant-Id | No | string | Tenant ID is required only if one tenant is active on a given account. |
name | Yes | string | Updated name of the API Key. |
roleId | Yes | string | Updated Role ID associated with the API Key. |
Response
| Field | Data type | Notes |
|---|
id | string | API Key ID. |
name | string | Updated API Key name. |
roleId | string | Updated Role ID associated with the API Key. |
REQUEST
curl -X PUT \
https://{tenant_name}.api.videokit.cloud/core/v1/api-key/12345678-1234-1234-1234-123456789abc \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: <tenant_id>' \
-d '{
"name": "Updated API Key 1",
"roleId": "role-456"
}'
RESPONSE
{
"id": "12345678-1234-1234-1234-123456789abc",
"name": "Updated API Key 1",
"roleId": "role-456"
}
Delete API Key
It deletes an API key by its ID.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/core/v1/api-key/{id} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | API Key ID. |
X-Tenant-Id | No | string | Tenant 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>'
Transcoder
List Available Presets
List available presets for output generation.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/transcoder/v1/presets |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
limit | No | int32 | Page size of presets; default: 100 |
page | No | int32 | Number of requested page; default: 1 |
Response
| Field | Data type | Notes |
|---|
items | array of objects | Single page of listed presets |
items[].name | string | Name of the preset |
items[].description | string | Description of the preset |
items[].createsDownload | boolean | Indicates if the preset creates a downloadable output |
pageCount | int32 | Number of all pages |
pageSize | int32 | Size of the page |
totalCount | int32 | Number of all items |
pageNumber | int32 | Number of this page |
hasMore | boolean | Actual 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 URL | https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
Page | No | int32 | Page number |
Limit | No | int32 | Page size |
Sort | No | string | Sort field |
Desc | No | bool | Descending |
Response
| Field | Type | Notes |
|---|
items | array | List of webhooks |
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook?Page=1&Limit=10 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{"id": "webhook-uuid", "name": "Webhook 1"}
]
}
Create Webhook
Creates a new webhook.
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
name | Yes | string | Webhook name |
url | Yes | string | Webhook URL |
eventTypes | Yes | array | Event types |
isEnabled | No | bool | Enable webhook |
Response
| Field | Type | Notes |
|---|
id | string | Webhook 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"]}'
Get Webhook
Retrieves details of a specific webhook.
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Webhook ID |
Response
| Field | Type | Notes |
|---|
id | string | Webhook 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}'
Update Webhook
Updates a webhook.
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/{id} |
| HTTP method | PATCH |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Webhook ID |
name | No | string | Webhook name |
url | No | string | Webhook URL |
eventTypes | No | array | Event types |
isEnabled | No | bool | Enable webhook |
Response
| Field | Type | Notes |
|---|
id | string | Webhook 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"}'
Delete Webhook
Deletes a webhook.
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/{id} |
| HTTP method | DELETE |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Webhook 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 URL | https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/{id}/test |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string | Webhook ID |
Response
| Field | Type | Notes |
|---|
responseCode | int32 | HTTP response code |
responseContent | string | Response 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 URL | https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook/signature-secret |
| HTTP method | GET |
Request
No parameters.
Response
| Field | Type | Notes |
|---|
secret | string | Webhook 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 URL | https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook-events/types |
| HTTP method | GET |
Request
No parameters.
Response
| Field | Type | Notes |
|---|
data | array | List 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 URL | https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook-events |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
Start | No | string | Start date |
End | No | string | End date |
Statuses | No | array | Statuses |
Page | No | int32 | Page number |
Limit | No | int32 | Page size |
Sort | No | string | Sort field |
Desc | No | bool | Descending |
Response
| Field | Type | Notes |
|---|
items | array | List of webhook events |
REQUEST
curl -X GET \
https://{tenant_name}.api.videokit.cloud/notifications/v1/webhook-events?Page=1&Limit=10 \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{"id": "event-uuid", "type": "VodAssetCreated"}
]
}
Watermarking
List Watermarking Assets
It returns a list of watermarking assets.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/assets |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
limit | No | integer (int32) | Page size of assets; default: 100 |
page | No | integer (int32) | Page number; default: 1 |
query | No | string | Search query string |
createDateStart | No | string <date-time> | Filter by creation date (start) |
createDateEnd | No | string <date-time> | Filter by creation date (end) |
sort | No | string | Property to sort by |
desc | No | boolean | Sort descending if true; default: false |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
items | array of objects | List of watermarking asset objects |
pageCount | int32 | Total number of pages |
pageSize | int32 | Size of the current page |
totalCount | int32 | Total number of items |
pageNumber | int32 | Current page number |
hasMore | boolean | Indicates 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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/assets/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string <uuid> | ID of the asset |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
id | string <uuid> | Asset ID |
createDate | string <date-time> | Creation timestamp |
metadata | object | Metadata 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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/detectjobs |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
fileId | Yes | string <uuid> | ID of the file to be processed for watermark detection |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
jobId | string <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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/files |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
Query | No | string | Search query string |
Sort | No | string | Property to sort by |
Desc | No | boolean | Sort descending if true; default: false |
Page | No | integer (int32) | Page number |
Limit | No | integer (int32) | Page size |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
items | array of objects | List of watermarking file objects |
pageCount | int32 | Total number of pages |
pageSize | int32 | Size of the current page |
totalCount | int32 | Total number of items |
pageNumber | int32 | Current page number |
hasMore | boolean | Indicates if more pages are available |
Each item includes:
| Field | Type | Notes |
|---|
id | string <uuid> | File ID |
orginalFileName | string | Original name of the uploaded file |
createDate | string <date-time> | File creation timestamp |
uploadStatus | enum | Upload status |
detection | object | Detection 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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/files/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string <uuid> | ID of the watermarking file |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
id | string <uuid> | File ID |
orginalFileName | string | Original name of the uploaded file |
createDate | string <date-time> | File creation timestamp |
uploadStatus | enum | Upload status |
detection | object | Detection 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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/files/{id}/part/{nr} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string <uuid> | ID of the watermarking file |
nr | Yes | integer <int64> | Part number to upload |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
url | string | Presigned 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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/files/start-upload |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
name | No | string | Internal name of the file |
friendlyName | No | string | Display name of the file |
fileSize | Yes | integer <int64> | Total size of the file in bytes |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
fileId | string <uuid> | ID of the file |
multipartUrls | array of strings | Presigned URLs for each part |
fileKey | string | Internal file key |
partSize | integer <int64> | Size of each part |
lastPartSize | integer <int64> | Size of the last part |
partsCount | integer <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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/files/complete-upload |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
fileId | Yes | string <uuid> | ID of the file being uploaded |
parts | Yes | array of objects | List of uploaded parts with part number and ETag |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Each item in parts includes:
| Field | Type | Notes |
|---|
partNumber | integer <int32> | Part number |
eTag | string | ETag returned from upload |
Response
| Field | Type | Notes |
|---|
fileId | string <uuid> | ID of the completed file |
fileKey | string | Internal 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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/revocation |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
revokedUserNumbers | array of int64 | List of revoked user numbers |
revokedUserNames | array of strings | List of revoked user names |
revokedSessions | array of strings | List 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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/revocation/revoke |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
userName | No | string | Name of the user to revoke |
userNumber | No | integer <int64> | User number to revoke |
sessionId | No | string | Session ID to revoke |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
| — | object | Standard 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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/revocation/unrevoke |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
userName | No | string | Name of the user to unrevoke |
userNumber | No | integer <int64> | User number to unrevoke |
sessionId | No | string | Session ID to unrevoke |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
| — | object | Standard 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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/sessions |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
Query | No | string | Search query string |
AssetId | No | string <uuid> | Filter by asset ID |
IP | No | string | Filter by IP address |
UserName | No | string | Filter by user name |
UserNumber | No | integer <int64> | Filter by user number |
CreateDateStart | No | string <date-time> | Filter by creation date (start) |
CreateDateEnd | No | string <date-time> | Filter by creation date (end) |
Blocked | No | boolean | Filter by blocked status |
Sort | No | string | Property to sort by |
Desc | No | boolean | Sort descending if true; default: false |
Page | No | integer <int32> | Page number |
Limit | No | integer <int32> | Page size |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
items | array of objects | List of watermarking session objects |
pageCount | int32 | Total number of pages |
pageSize | int32 | Size of the current page |
totalCount | int32 | Total number of items |
pageNumber | int32 | Current page number |
hasMore | boolean | Indicates if more pages are available |
Each item includes:
| Field | Type | Notes |
|---|
id | string <uuid> | Session ID |
assetId | string <uuid> | Associated asset ID |
userName | string | Name of the user |
userNumber | integer <int64> | User number |
sequenceHex | string | Watermark sequence in hex |
eccAlgorithm | string | ECC algorithm used |
ip | string | IP address |
userAgent | string | User agent string |
createDate | string <date-time> | Session creation timestamp |
lastModificationDate | string <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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/sessions/{id} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
id | Yes | string <uuid> | ID of the watermarking session |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
id | string <uuid> | Session ID |
assetId | string <uuid> | Associated asset ID |
userName | string | Name of the user |
userNumber | integer <int64> | User number |
sequenceHex | string | Watermark sequence in hex |
eccAlgorithm | string | ECC algorithm used |
ip | string | IP address |
userAgent | string | User agent string |
createDate | string <date-time> | Session creation timestamp |
lastModificationDate | string <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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/settings |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
incomingTokenKey | string | Key used for incoming token validation |
eccAlgorithm | string | ECC algorithm used for watermarking |
automaticallyStartDetectingAfterUpload | boolean | Whether 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 URL | https://{tenant_name}.api.videokit.cloud/watermarking/v1/token |
| HTTP method | POST |
Request
| Parameter | Required | Type | Notes |
|---|
userName | No | string | Name of the user requesting the token |
assetId | No | string <uuid> | ID of the asset to be accessed |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
token | string | Redirector token |
expirationTime | string <date-time> | Expiration timestamp of the token |
sessionId | string | Associated 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 URL | https://{tenant_name}.redir-wm.videokit.cloud/redirector/v1/redir/{tenantId}/{assetId}.{format} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
tenantId | Yes | string | Tenant identifier |
assetId | Yes | string <uuid> | Asset ID |
format | Yes | string | Output format (e.g., mp4, m3u8) |
userToken | No | string | Redirector token |
noRedirect | No | boolean | If true, returns metadata instead of redirecting |
start | No | string | Start time for playback |
end | No | string | End time for playback |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
| — | object | Watermarking 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 URL | https://{tenant_name}.redir-wm.videokit.cloud/redirector/v1/redir/{tenantId}/{assetId}/{outputId}.{format} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
tenantId | Yes | string | Tenant identifier |
assetId | Yes | string <uuid> | Asset ID |
outputId | Yes | string | Output ID |
format | Yes | string | Output format (e.g., mp4, m3u8) |
userToken | No | string | Redirector token |
noRedirect | No | boolean | If true, returns metadata instead of redirecting |
start | No | string | Start time for playback |
end | No | string | End time for playback |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
id | string <uuid> | Session ID |
assetId | string <uuid> | Associated asset ID |
userName | string | Name of the user |
userNumber | integer <int64> | User number |
sequenceHex | string | Watermark sequence in hex |
eccAlgorithm | string | ECC algorithm used |
ip | string | IP address |
userAgent | string | User agent string |
createDate | string <date-time> | Session creation timestamp |
lastModificationDate | string <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 URL | https://{tenant_name}.redir-wm.videokit.cloud/redirector/v1/redir/{tenantId}/{assetId}/{outputId}/{endpointId}.{format} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
tenantId | Yes | string | Tenant identifier |
assetId | Yes | string <uuid> | Asset ID |
outputId | Yes | string | Output ID |
endpointId | Yes | string | Endpoint ID |
format | Yes | string | Output format (e.g., mp4, m3u8) |
userToken | No | string | Redirector token |
noRedirect | No | boolean | If true, returns metadata instead of redirecting |
start | No | string | Start time for playback |
end | No | string | End time for playback |
X-Tenant-Id | No | string <uuid> | Required if multiple tenants are active on the account |
Response
| Field | Type | Notes |
|---|
id | string <uuid> | Session ID |
assetId | string <uuid> | Associated asset ID |
userName | string | Name of the user |
userNumber | integer <int64> | User number |
sequenceHex | string | Watermark sequence in hex |
eccAlgorithm | string | ECC algorithm used |
ip | string | IP address |
userAgent | string | User agent string |
createDate | string <date-time> | Session creation timestamp |
lastModificationDate | string <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 URL | https://{tenant_name}.api.drm.cloud/kms/v1/speke |
| HTTP method | POST |
| Header | Required | Value |
|---|
Content-Type | Yes | application/xml |
X-Api-Key | Yes | {your_api_key} |
X-Tenant-Id | Yes | Tenant ID |
Request body
| Parameter | Required | Type | Notes |
|---|
body | Yes | application/xml | SPEKE 1.0 XML document containing the key request. |
Response
| Field | Type | Notes |
|---|
XML Document | application/xml | The 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 URL | https://{tenant_name}.api.drm.cloud/kms/v1/speke2 |
| HTTP method | POST |
| Header | Required | Value |
|---|
Content-Type | Yes | application/xml |
X-Api-Key | Yes | {your_api_key} |
X-Tenant-Id | Yes | Tenant ID |
Request body
| Parameter | Required | Type | Notes |
|---|
body | Yes | application/xml | SPEKE 2.0 / CPIX 2.3 XML document containing the key request. |
Response
| Field | Type | Notes |
|---|
XML Document | application/xml | The 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 URL | https://{tenant_name}.api.drm.cloud/kms/v1/cpix |
| HTTP method | POST |
| Header | Required | Value |
|---|
Content-Type | Yes | application/xml |
X-Api-Key | Yes | {your_api_key} |
X-Tenant-Id | Yes | Tenant ID |
Request body
| Parameter | Required | Type | Notes |
|---|
body | Yes | application/xml | SPEKE 2.0 / CPIX 2.3 XML document containing the key request. |
Response
| Field | Type | Notes |
|---|
XML Document | application/xml | The 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.
Access to this endpoint may require additional configuration. Please contact our support team before using this API method.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.drm.videokit.cloud/kms/v1/cpix-anevia/{brandGuid}/{kid} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
brandGuid | Yes | string (path) | The service identifier. |
kid | Yes | string (path) | The Key ID (KID) for the content key. |
X-Tenant-Id | No | string (header) | TenantId is required only if that one tenant is active on a given account. |
Response
| Field | Type | Notes |
|---|
XML Document | application/xml | The 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 URL | https://{tenant_name}.la.drm.cloud/license/v1/certificate/{system}?brandGuid={brand_guid} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
system | Yes | enum | Path parameter. DRM System, possible values: widevine, fairplay. |
brandGuid | No | string | Path parameter. Optional brand identifier. |
Response
| Field | Type | Notes |
|---|
Certificate Data | Text/Binary | The 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 URL | https://{tenant_name}.api.drm.cloud/drm/v1/settings |
| HTTP method | GET |
| Parameter | Required | Type | Notes |
|---|
X-Tenant-Id | No | string | TenantId is required only if that one tenant is active on a given account. |
Response
| Field | Type | Description |
|---|
tenantId | string | Unique identifier for the tenant |
licenseAcquisition | object | Configuration for license acquisition |
licenseAcquisition.authorization | object | Authorization settings for license acquisition |
licenseAcquisition.authorization.enabled | boolean | Indicates if authorization is enabled |
licenseAcquisition.authorization.signingKey | string | Key used for signing authorization requests |
licenseAcquisition.authorization.signingAlgorithm | string | Algorithm used for signing authorization |
licenseAcquisition.endpoints | array of objects | List of license acquisition endpoints |
licenseAcquisition.endpoints.licenseUrl | string | URL for license acquisition |
licenseAcquisition.endpoints.certificateUrl | string | URL for certificate retrieval |
licenseAcquisition.endpoints.systemName | string | Name of the DRM system |
licenseAcquisition.endpoints.systemId | string | Identifier of the DRM system |
licenseAcquisition.endpoints.system | enum | DRM system type (Widevine, PlayReady, Fairplay) |
kms | object | Key Management System configuration |
kms.endpoints | array of objects | List of KMS endpoints |
kms.endpoints.url | string | URL of the KMS endpoint |
kms.endpoints.protocol | string | Protocol used by the KMS endpoint |
kms.basicAuth | array of objects | Basic authentication credentials |
kms.basicAuth.login | string | Username for basic authentication |
kms.basicAuth.password | string | Password for basic authentication |
kms.oAuth | object | OAuth authentication configuration |
kms.oAuth.clientId | string | OAuth client identifier |
kms.oAuth.clientSecret | string | OAuth client secret |
kms.oAuth.tokenUrl | string | URL to obtain OAuth token |
kms.oAuth.grantType | string | OAuth 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 URL | https://{tenant_name}.api.drm.cloud/drm/v1/license-error-codes |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
X-Tenant-Id | No | string (header) | TenantId is required only if that one tenant is active on a given account. |
Response
| Field | Type | Notes |
|---|
items | Array of string | List of error code strings |
REQUEST
curl -X GET \
https://{tenant_name}.api.drm.cloud/drm/v1/license-error-codes \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
[
"LICENSE_EXPIRED",
"DEVICE_LIMIT_REACHED",
"INVALID_TOKEN"
]
List License Requests
Retrieves a paginated list of license requests based on various filter criteria.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.drm.cloud/drm/v1/list-requests |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
RequestTimeStart | Yes | string (date-time) | Start of the time range for the request search. |
RequestTimeEnd | Yes | string (date-time) | End of the time range for the request search. |
DrmSystem | No | Array | Filter by DRM System (e.g., Widevine, PlayReady). |
RequestType | No | Array | Filter by Request Type. |
HttpStatus | No | Array of integer | Filter by HTTP Status code. |
ErrorCode | No | Array of string | Filter by specific error codes. |
Country | No | Array of string | Filter by Country. |
ISP | No | Array of string | Filter by ISP. |
IP | No | string | Filter by specific IP address. |
TokenUserId | No | string | Filter by User ID found in the token. |
Token | No | string | Filter by specific Token. |
DeviceType | No | Array of string | Filter by Device Type. |
PlatformOS | No | Array of string | Filter by OS. |
OSVersion | No | Array of string | Filter by OS Version. |
Browser | No | Array of string | Filter by Browser. |
BrowserVersion | No | Array of string | Filter by Browser Version. |
TokenContentId | No | Array of string | Filter by Content ID. |
BrandName | No | Array of string | Filter by Brand Name. |
Model | No | Array of string | Filter by Device Model. |
Sort | No | string | Sorting field. Possible values: ip, userAgent, token, tokenContentId, tokenUserId, system, httpStatus, requestType, errorCode, @timestamp, country, isp, deviceType, os, osVersion, osVersion, browser, browserVersion, brandName, model, details. |
Desc | No | boolean | Sort descending if true. |
Page | No | integer | Page number. |
Limit | No | integer | Items per page. |
Response
| Field | Type | Notes |
|---|
items | Array of LicenseRequestResponse | List of license request objects. |
pageCount | integer | Total number of pages. |
pageSize | integer | Number of items per page. |
totalCount | integer | Total number of items. |
pageNumber | integer | Current page number. |
hasMore | boolean | Indicates if there are more items available. |
REQUEST
curl -X GET \
"https://{tenant_name}.api.drm.cloud/drm/v1/list-requests?RequestTimeStart=2023-01-01T00:00:00Z&RequestTimeEnd=2023-01-02T00:00:00Z&Limit=10" \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
{
"items": [
{
"id": "req_123000-e0e5-5647-ad2a-08de228cdb29",
"tenantId": "e0932216-e0e5-5647-ad2a-08de228cd30a",
"system": "Widevine",
"requestType": "License",
"ip": "192.168.1.1",
"country": "US",
"isp": "Verizon",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0",
"deviceType": "desktop",
"browser": "Microsoft Edge",
"browserVersion": "142.0.0.0",
"os": "Mac",
"osVersion": "10.15.7",
"token": "eyJhQwMDAsPzDPj8IaOXqdwhxA7jIWzA",
"tokenUserId": "",
"licenseUrl": "https://tenant_abc.la.drm.cloud/acquire-license/widevine",
"requestTime": "2025-11-13T08:15:50.0910024+00:00",
"httpStatus": 200,
"payloadLength": 3955,
"responseLength": 868,
"details": [],
"brandName": "Apple",
"model": ""
}
],
"pageCount": 1,
"pageSize": 10,
"totalCount": 1,
"pageNumber": 1,
"hasMore": false
}
Get License Count
Retrieves the count of licenses issued, grouped by DRM system.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.drm.cloud/drm/v1/license-count |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
Type | Yes | enum | Type of aggregation. Possible values:DayByDay, MonthByMonth, HourByHour. |
RequestTimeStart | No | string (date-time) | Start of the time range. |
RequestTimeEnd | No | string (date-time) | End of the time range. |
HttpStatus | No | Array of string | Filter by HTTP Status. |
Response
| Field | Type | Notes |
|---|
date | string | Date/Time bucket for the count. |
widevine | integer | Count of Widevine licenses. |
fairplay | integer | Count of FairPlay licenses. |
playready | integer | Count of PlayReady licenses. |
REQUEST
curl -X GET \
"https://{tenant_name}.api.drm.cloud/drm/v1/license-count?Type=MonthByMonth" \
-H 'X-Api-Key: {your_api_key}' \
-H 'X-Tenant-Id: {tenant_id}'
RESPONSE
[
{
"date": "2023-01-01T00:00:00Z",
"widevine": 150,
"fairplay": 120,
"playready": 80
}
]
Get DRM Token
Retrieves a DRM token for a specific asset.
Specifics
| |
|---|
| Method URL | https://{tenant_name}.api.drm.cloud/drm/v1/token/{assetId} |
| HTTP method | GET |
Request
| Parameter | Required | Type | Notes |
|---|
assetId | Yes | string (path) | The ID of the asset for which to generate the token. |
X-Tenant-Id | No | string (header) | TenantId is required only if that one tenant is active on a given account. |
Response
| Field | Type | Notes |
|---|
token | string | Token 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"
}