Posters
Create poster by time
https://api.kinescope.io/v1/videos/:video_id/postersGenerates a poster image from a frame of the video at the specified timestamp. The poster is attached to the video and can be made active.
{
"from_time": 2.3333
}Set active poster
https://api.kinescope.io/v1/videos/:video_id/posters/:poster_id/activeMarks the specified poster as the active one — it will be shown in the video player and in lists.
Posters list
https://api.kinescope.io/v1/videos/:video_id/postersReturns a list of posters. Results are paginated and can be filtered via query parameters.
{
"meta": {
"pagination": {
"page": 1,
"per_page": 10,
"total": 1
},
"order": {
"created_at": "desc"
}
},
"data": [
{
"id": "<UUID>",
"type": "image",
"from_time": 0,
"status": "done",
"active": true,
"to_time": 0,
"original": "https://kinescopecdn.net/<UUID>/posters/<UUID>/<UUID>.jpg",
"md": "https://kinescopecdn.net/<UUID>/posters/<UUID>/md/<UUID>.jpg",
"sm": "https://kinescopecdn.net/<UUID>/posters/<UUID>/sm/<UUID>.jpg",
"xs": "https://kinescopecdn.net/<UUID>/posters/<UUID>/xs/<UUID>.jpg"
}
]
}Get poster
https://api.kinescope.io/v1/videos/:video_id/posters/:poster_idRetrieves the details of a single poster by its unique ID.
{
"data": {
"id": "<UUID>",
"type": "image",
"from_time": 0,
"status": "done",
"active": true,
"to_time": 0,
"original": "https://kinescopecdn.net/<UUID>/posters/<UUID>/<UUID>.jpg",
"md": "https://kinescopecdn.net/<UUID>/posters/<UUID>/md/<UUID>.jpg",
"sm": "https://kinescopecdn.net/<UUID>/posters/<UUID>/sm/<UUID>.jpg",
"xs": "https://kinescopecdn.net/<UUID>/posters/<UUID>/xs/<UUID>.jpg"
}
}{
"error": {
"code": 400404,
"message": "not found"
}
}Delete poster
https://api.kinescope.io/v1/videos/:video_id/posters/:poster_idPermanently deletes the poster. This action cannot be undone.
Subtitles
Add subtitle file
https://api.kinescope.io/v1/videos/:video_id/subtitlesUploads a subtitle file (VTT or SRT) and attaches it to the video under the specified language.
| Parameter | Type | Description |
|---|---|---|
language | text | Example: ru |
description | text | Example: subtitle file description |
file | file | — |
{
"data": {
"id": "<UUID>",
"video_id": "<UUID>",
"description": "subtitle file description",
"language": "ru",
"file": "",
"file_name": "<UUID>.vtt",
"hls_file": "",
"url": "https://kinescopecdn.net/<UUID>/subtitles/<UUID>/<UUID>?expires=<EXPIRES>&sign=<SIGNATURE>"
}
}Generate subtitles automatically
https://api.kinescope.io/v1/videos/:video_id/subtitles/autoQueues speech recognition for the video and creates one subtitle track per requested language. Pass the languages as ISO 639-1 codes in languages; an unknown code is rejected with 400, and either all tracks are created or none are.
The response returns immediately, before recognition starts, so every track comes back with status: "pending", an empty data object and an empty url. Poll GET /v1/videos/:video_id/subtitles/:subtitle_id until status becomes done — the recognised cues and the .vtt URL appear at that point.
| Parameter | Type | Description |
|---|---|---|
languages | array of string | Languages to recognise, as ISO 639-1 codes. One subtitle track is created per element. Example: ["ru", "en"] |
{
"languages": [
"ru",
"en"
]
}{
"data": [
{
"id": "<UUID>",
"video_id": "<UUID>",
"description": "",
"language": "ru",
"status": "pending",
"position": 1,
"data": {},
"active": true,
"url": "",
"updated_at": "2024-03-04T11:54:32.451502Z",
"file": "",
"file_name": "<UUID>.vtt",
"hls_file": ""
}
]
}Copy
https://api.kinescope.io/v1/videos/:video_id/subtitles/:subtitle_id/copyDuplicates a subtitle track. Useful for creating a variant based on an existing translation.
{
"data": {
"id": "<UUID>",
"video_id": "<UUID>",
"description": "desc",
"language": "ru",
"file": "",
"file_name": null,
"hls_file": "",
"url": "https://kinescopecdn.net/<UUID>/subtitles/<UUID>/<UUID>?expires=<EXPIRES>&sign=<SIGNATURE>"
}
}List subtitles
https://api.kinescope.io/v1/videos/:video_id/subtitlesReturns a list of subtitles. Results are paginated and can be filtered via query parameters.
{
"data": null
}Get subtitle
https://api.kinescope.io/v1/videos/:video_id/subtitles/:subtitle_idRetrieves the details of a single subtitle by its unique ID.
{
"data": {
"id": "<UUID>",
"video_id": "<UUID>",
"description": "subtitle file description",
"language": "ru",
"file": "",
"file_name": "<UUID>.vtt",
"hls_file": "",
"url": "https://kinescopecdn.net/<UUID>/subtitles/<UUID>/<UUID>?expires=<EXPIRES>&sign=<SIGNATURE>"
}
}Reorder
https://api.kinescope.io/v1/videos/:video_id/subtitles/reorderChanges the order of subtitle tracks. Pass the full list of subtitle IDs in the desired order.
[
"<UUID>",
"<UUID>",
"<UUID>",
"<UUID>"
]{
"data": {
"id": "<UUID>",
"video_id": "<UUID>",
"description": "subtitle file description",
"language": "ru",
"file": "",
"file_name": "<UUID>.vtt",
"hls_file": "",
"url": "https://kinescopecdn.net/<UUID>/subtitles/<UUID>/<UUID>?expires=<EXPIRES>&sign=<SIGNATURE>"
}
}Update subtitle info
https://api.kinescope.io/v1/videos/:video_id/subtitles/:subtitle_idUpdates the metadata of a subtitle track (language, description, ordering).
{
"language": "ru",
"description": "desc111"
}{
"data": {
"id": "<UUID>",
"video_id": "<UUID>",
"description": "desc",
"language": "ru",
"file": "",
"file_name": null,
"hls_file": "",
"url": "https://kinescopecdn.net/<UUID>/subtitles/<UUID>/<UUID>?expires=<EXPIRES>&sign=<SIGNATURE>"
}
}Delete subtitle
https://api.kinescope.io/v1/videos/:video_id/subtitles/:subtitle_idPermanently deletes the subtitle. This action cannot be undone.
{
"data": {
"success": true
}
}Annotations
Add annotation
https://api.kinescope.io/v1/videos/:video_id/annotationsCreates a new annotation. Returns the newly created object on success.
{
"video_id": "<UUID>",
"annotation_poster_id": "<UUID>",
"type": "video",
"title": "new annotation",
"link": "https://example.com",
"start_time": 0,
"end_time": 10000
}{
"data": {
"id": "<UUID>",
"media_id": "<UUID>",
"video_id": "<UUID>",
"annotation_type": "video",
"title": "annotation 1",
"link": "",
"start_time": 20000,
"end_time": 21000,
"annotation_poster_id": null,
"created_at": "2024-03-04T11:54:32.451502Z",
"updated_at": null
}
}Get annotation
https://api.kinescope.io/v1/videos/:video_id/annotations/:annotation_idRetrieves the details of a single annotation by its unique ID.
{
"data": {
"id": "<UUID>",
"media_id": "<UUID>",
"video_id": null,
"annotation_type": "text",
"title": "ann1",
"link": "",
"start_time": 0,
"end_time": 6740,
"annotation_poster_id": "<UUID>",
"created_at": "2024-02-27T10:04:30.259938Z",
"updated_at": null
}
}List annotations
https://api.kinescope.io/v1/videos/:video_id/annotationsReturns a list of annotations. Results are paginated and can be filtered via query parameters.
{
"data": []
}Update annotation
https://api.kinescope.io/v1/videos/:video_id/annotations/:annotation_idUpdates the specified annotation. Only fields provided in the request body are changed; others are left unchanged.
{
"video_id": "<UUID>",
"annotation_poster_id": "<UUID>",
"title": "new annotation",
"link": "https://example.com",
"start_time": 0,
"end_time": 10000
}{
"data": {
"id": "<UUID>",
"media_id": "<UUID>",
"video_id": "<UUID>",
"annotation_type": "video",
"title": "annotation 1",
"link": "",
"start_time": 20000,
"end_time": 21000,
"annotation_poster_id": null,
"created_at": "2024-03-04T11:54:32.451502Z",
"updated_at": null
}
}Delete annotation
https://api.kinescope.io/v1/videos/:video_id/annotations/:annotation_idPermanently deletes the annotation. This action cannot be undone.
{
"data": {
"success": true
}
}Additional materials
Upload additional material
https://uploader.kinescope.io/additional-materialUploads a file to be attached to a video as additional material (e.g. a PDF handout or source files).
| Parameter | Description |
|---|---|
X-Video-ID | 4iUMUmb63dLAvnbsMRkSUX |
X-File-Name | material.png |
X-Title | Material title |
Get download link
https://api.kinescope.io/v1/additional-materials/:material_id/linkReturns a short-lived signed URL for downloading the material.
{
"data": {
"link": "https://kinescopecdn.net/<UUID>/materials/<UUID>?expires=<EXPIRES>&sign=<SIGNATURE>"
}
}Update additional material
https://api.kinescope.io/v1/additional-materials/:material_idUpdates the specified additional material. Only fields provided in the request body are changed; others are left unchanged.
{
"title": "New title"
}{
"data": {
"id": "8VYZT2rW5vbvRBcWruuNFo",
"video_id": "fq48rAScQ5zAYKJ2gYHZ3w",
"storage_id": "mucjva43n3sLsw5YRwsZYS",
"title": "New title",
"filename": "img.png",
"filetype": "image/png",
"size": 163427,
"position": 1,
"created_at": "2020-08-30T15:14:03.792708Z",
"updated_at": "2020-08-31T10:22:43.67869Z",
"deleted_at": null
}
}Reorder additional materials
https://api.kinescope.io/v1/additional-materials/reorderChanges the display order of the additional materials attached to a video.
[
"8VYZT2rW5vbvRBcWruuNFo",
"b32Wjbh6a3pYNaKvfxhXFU"
]{
"data": {
"success": true
}
}Delete additional material
https://api.kinescope.io/v1/additional-materials/:material_idPermanently deletes the additional material. This action cannot be undone.
{
"data": {
"success": true
}
}Posters
Upload poster
https://uploader.kinescope.io/v2/posterUploads a custom poster image for a live event.
| Parameter | Description |
|---|---|
X-Video-ID | 4iUMUmb63dLAvnbsMRkSUX |
X-Poster-URL | url to poster |