Content Management
This document is a machine-translated draft and is currently undergoing review. Some content may be inaccurate or differ from the original Korean version. For the most precise information, refer to the Korean documentation.
- Common authentication: All API versions use a common authentication method via a query string parameter (
?access_token=). For the common specification on error determination criteria, refer to the Core Changes section of the API v3 migration guide. - Transcoding: For specifications regarding transcoding progress status retrieval and transcoded files, refer to the Transcoding Management document.
Retrieve all content list
- Legacy (v1):
GET/media/library/media_content - Legacy (v2): Not supported (only content list retrieval by channel is supported)
- Changed (v3):
GET/media-contents
- Change in response data structure: The location of the array returned in the response object has been standardized from the previous
result.item[]todata[], and apaginationobject has been added for pagination handling. - Array item fields: The detailed field specifications of individual content items within the array are identical to those in "Retrieve content information" below.
Retrieve content list by channel
Refer to the Content list by channel section in the Channel Management document.
Retrieve content list by category
- Legacy (v1/v2): Not supported
- Changed (v3):
GET/categories/{category_key}/media-contents
Request parameters and response structure details
Request parameters
The request parameter specification fully matches the configuration of the Retrieve all content list API.
Response structure specification
{
"status": 200,
"data": [
{
"title": "string",
"upload_file_key": "string"
}
],
"pagination": {
"current_page": 1,
"per_page": 10,
"total": 100
}
}
Create content upload URL
- Legacy (v1):
POST/media_auth/upload/create_url - Legacy (v2): Not supported
- Changed (v3):
POST/upload/create-url
- Upload processing host: The issued
upload_urlis returned targeting the upload-dedicated domainhttps://upload.kr.kollus.com, rather than the common domain address. - Field name change: The
will_be_expired_atfield from v1 has been changed toexpired_atin v3.
Request body and response structure details
Request body
| Field | Data Type | Required | Description |
|---|---|---|---|
expire_time | Integer | Optional | Upload URL validity duration (default: 600 seconds, maximum: 21600 seconds) |
title | String | Required | Content title |
category_key | String | Optional | Unique identifier of the category for classification |
is_encryption_upload | Integer | Optional | Encryption setting (0: standard content(unencrypted), 1: encrypted content) |
is_audio_upload | Integer | Optional | Audio-only content setting (0: includes video, 1: audio only) |
use_ai_script | Integer | Optional | Whether to apply AI Speed |
use_ai_subtitle | Integer | Optional | Whether to generate AI Subtitle |
use_ai_outline | Integer | Optional | Whether to generate AI Summary |
ai_subtitle_language | String | Optional | AI Subtitle language setting (primary language used in the video or audio) |
ai_subtitle_status | Integer | Optional | AI Subtitle visibility setting (0: private, 1: public) |
ai_subtitle_kind | Integer | Optional | AI Subtitle type setting (0: main subtitle, 1: sub subtitle) |
Response structure comparison
- v1
{
"error": 0,
"message": "success",
"result": {
"upload_url": "https://upload.kr.kollus.com/old-upload-path",
"progress_url": "https://upload.kr.kollus.com/old-progress-path",
"upload_file_key": "v1_file_key",
"will_be_expired_at": 1672531199
}
}
- v3
{
"status": 201,
"data": {
"upload_url": "https://upload.kr.kollus.com/v3-upload-path",
"progress_url": "https://upload.kr.kollus.com/v3-progress-path",
"upload_file_key": "v3_file_key",
"expired_at": 1672531199
}
}
Retrieve content information
- Legacy (v1):
GET/media/library/media_content/{upload_file_key} - Legacy (v2):
GET/vod/media-contents/{upload_file_key} - Changed (v3):
GET/media-contents/{upload_file_key}
- v1 → v3 conversion: The overall flat structure and field names are retained, but many data types have been changed. (e.g., conversion from
IntegertoBoolean, and type change fromUnix TimestamptoISO8601string) - v2 → v3 conversion: The nested sub-object structures (
kind,category,original_file) that had multiple layers in v2 have been changed to an intuitive flat structure in v3. - Removal of v1-only fields: The
transcoding_files,channels, andmetadatafields that were included in the previous v1 response have been completely removed in v3.
Detailed response field mapping
| Field | v1 Spec | v2 Spec | v3 Spec | Migration Notes |
|---|---|---|---|---|
kind | Integer + kind_name | kind.{type, value} object | Integer + kind_name | Only the v2 structure is returned as a nested object type |
duration | String | Integer (unit: seconds) | String (HH:MM:SS) | v3 uses timecode format |
category | category_name / _key (flat) | category.{id, key, name, level_path} (nested) | category_name / _key (flat) | v3 returns the same flat structure as v1 |
original_file | original_file_name / _size (flat) | original_file.{name, size} (nested) | Returns flat structure | File size format: String (v1) → Integer (v2/v3) |
use_encryption | Integer (0 or 1) | Boolean | Boolean | The integer variable from v1 has been changed to Boolean type |
status | Integer (e.g., 1) | Boolean | Boolean | The integer variable from v1 has been changed to Boolean type |
transcoded_at, created_at, updated_at | Unix Integer | ISO8601 string | ISO8601 string | - |
vr_* | Not supported | vr_information.{type, value} | vr_info.{projection_type, stereo_mode} | The key name has changed in v3 compared to v2 |
human_readable_original_file_size | Provided | Not supported | Provided | Size value converted for data readability (e.g., "823.5MB") |
media_information | 3 categories (file, video, audio) | 2 categories (audio missing) | 3 categories (file, video, audio) | v3 fully provides all 3 categories of information, same as v1 |
transcoding_stage | Provided | Not supported | Provided | For detailed code specifications, refer to the Transcoding Management document |
transcoding_stage_name | Provided | Not supported | Provided | For detailed code specifications, refer to the Transcoding Management document |
poster_url, snapshot_url | Provided | Not supported | Provided | Added representative image URL information field |
is_passthrough | - | - | Boolean | Content status/mapping field added in v3 |
media_content_keys[] | - | - | Array | Content status/mapping field added in v3 |
Update content information
- Legacy (v1):
POST/media/media_content/update - Legacy (v2):
PUT/vod/media-contents/{upload_file_key} - Changed (v3):
PUT/media-contents/{upload_file_key}
- Target identification method: v1 specified the target using the unique identifying integer
idin the request body, whereas v3 identifies it via the{upload_file_key}in the URL path. - VR setting structuring: In v2, flat parameters (
projection_type,stereo_mode) were sent, but in v3, they must be sent grouped under fields (vr.projection_type,vr.stereo_mode) beneath the parentvrobject.
Request body and response structure details
Retrieve content metadata
- Legacy (v1):
GET/media/library/get_metadata/{upload_file_key} - Legacy (v2): Not supported
- Changed (v3): Not supported
In v3, a dedicated metadata retrieval endpoint is not provided, and the metadata detail field within the Retrieve content information response has also been consistently deprecated.
Update content metadata
- Legacy (v1):
POST/media/library/update_metadata/{upload_file_key} - Legacy (v2): Not supported
- Changed (v3): Not supported
In accordance with the deprecation policy for the metadata retrieval API above, the metadata update feature has also been deprecated in v3.
Delete content
- Legacy (v1/v2): Not supported (there was no feature for physically deleting content, so the lifecycle was managed only through enable/disable control.)
- Changed (v3):
DELETE/media-contents/{upload_file_key}
Response structure details
Response structure specification
{
"data": [],
"status": "ok"
}
Change content category
- Legacy (v1):
POST/media/library/change_category/{upload_file_key}(category_keyincluded in the body) - Legacy (v2): Not supported
- Changed (v3):
PUT/media-contents/{upload_file_key}/categories/{category_key}
- HTTP method change: The HTTP method has been changed from
POSTtoPUT. - Parameter location change: The
category_key, which was sent in the request body in v1, has been integrated as a path parameter in v3.
Response structure details
- v1:
{ error, message }(no separate result data) - v3:
{ "data": ApiVodMediaContentCategory, "status": "ok" }(returns result information with the new category mapped)
Disable content
- Legacy (v1):
POST/media/library/set_disable/{upload_file_key} - Legacy (v2): Not supported
- Changed (v3):
PUT/media-contents/{upload_file_key}/disable
- HTTP method change: The HTTP method has been changed from
POSTtoPUT. - Response standardization: Responses are returned in the
ApiVodMediaContentStatusobject structure.
Enable content
- Legacy (v1):
POST/media/library/set_enable/{upload_file_key} - Legacy (v2): Not supported
- Changed (v3):
PUT/media-contents/{upload_file_key}/enable
- HTTP method change: The HTTP method has been changed from
POSTtoPUT. - Response standardization: Returned as
{ "data": ApiVodMediaContentStatus, "status": "ok" }.
Upload poster image
- Legacy (v1):
POST/media/library/upload_poster/{upload_file_key} - Legacy (v2): Not supported
- Changed (v3):
POST/media-contents/{upload_file_key}/poster
- Required field: Starting from v3, the
multipart/form-dataheader format must be used to pass thefilefield (Binary data, required) in the request body. - Response structure: The v1 result message return method has been replaced with v3's standardized format (
{ "data": [], "status": "ok" }).
Download poster image
- Legacy (v1/v2): Not supported
- Changed (v3):
GET/media-contents/{upload_file_key}/poster/download
Response structure details
Response structure specification
{
"data": {
"expires": "2026-07-01T09:12:08+00:00",
"download_url": "https://download.kr.kollus.com/path-to-poster-file"
}
}
Download original file
- Legacy (v1): Not supported
- Legacy (v2):
GET/vod/media-contents/{upload_file_key}/original/download - Changed (v3):
GET/media-contents/{upload_file_key}/original-file/download
- Path name change: The path name previously declared as
originalhas been changed tooriginal-file. - Field information replacement: The download URI field name
download_uriin the v2 response object has been uniformly changed todownload_urlin v3.
Response structure specification
{
"data": {
"expires": "2026-07-01T09:12:08+00:00",
"download_url": "https://download.kr.kollus.com/path-to-original-file"
}
}
Create snapshot image (v2 only)
- Legacy (v1): Not supported
- Legacy (v2):
POST/vod/media-contents/{upload_file_key}/snapshot - Changed (v3): Not supported
The v2 script feature that allowed users to directly customize a timecode point to instantly regenerate a thumbnail image has been completely deprecated in v3. In v3, only the fixed snapshot information (snapshot_url) automatically generated by the initial system scheduler during media upload processing can be retrieved.
Download snapshot image (v2 only)
- Legacy (v1): Not supported
- Legacy (v2):
POST/vod/media-contents/get-snapshot-download-link(pathincluded in the body) - Changed (v3): Not supported
Due to the deprecation of the snapshot image creation feature, the snapshot image download API is also not provided in v3.