Pular navegação

API de vídeo

Operações principais com vídeos e uploads.

Videos

O objeto vídeo

CampoTipoDescrição
idstringIdentificador único do objeto.
project_idstring
folder_idstring
versionnumber
titlestring
descriptionstring
statusenumValores possíveis: pending, uploading, pre-processing, processing, aborted, done, error
progressnumberProgresso do processamento do vídeo
durationnumberDuração do vídeo em segundos
assets[]Asset
has_audioboolIndica se o vídeo tem áudio.
audio_tracks[]AudioTrackFaixas de áudio disponíveis para download (id, language, label, file_size, filetype, original_name, download_link). Ausente quando o vídeo não tem faixas de áudio.
chaptersChapters
privacy_typeenumValores possíveis: anywhere,nowhere, custom
privacy_domains[]stringDomínios na lista de permissões
posterPoster
additional_materials[]AdditionalMaterial
additional_materials_enabledbool
annotation_text_enabledbool
annotation_video_enabledbool
created_atdatetime
updated_atdatetime
play_linkstringLink para o player
embed_linkstringLink para incorporar o player
subtitlesSubtitles
subtitles_enabledbooleanExibir/ocultar legendas no player
hls_linkstringLink para o manifesto HLS

Lista de vídeos

GET {{baseHost}}/v1/videos

Retorna a lista de vídeos. Os resultados são paginados e podem ser filtrados por parâmetros de consulta.

Responses
{  "meta": {    "pagination": {      "page": 1,      "per_page": 1,      "total": 10    },    "order": {      "created_at": "desc",      "title": "asc"    }  },  "data": [    {      "id": "vKSxQyZScoQfP29oothREi",      "project_id": "mNFQz2wYTBhLkPBCo9oS8m",      "folder_id": null,      "version": 0,      "title": "sample_video",      "description": "",      "status": "uploading",      "progress": 100,      "duration": 0,      "assets": [],      "chapters": {        "items": [],        "enabled": false,        "show_on_load": false      },      "privacy_type": "anywhere",      "privacy_domains": [],      "poster": null,      "additional_materials": null,      "additional_materials_enabled": false,      "play_link": "https://kinescope.io/199511994",      "embed_link": "https://kinescope.io/embed/199511994",      "created_at": "2020-08-31T09:03:00.106436Z",      "updated_at": null,      "subtitles": [],      "subtitles_enabled": false,      "hls_link": "https://kinescope.io/199511994/master.m3u8"    }  ]}

Obter vídeo

GET {{baseHost}}/v1/videos/:video_id

Retorna os dados de um vídeo pelo seu identificador único.

Responses
{  "data": {    "id": "<UUID>",    "project_id": "<UUID>",    "folder_id": null,    "player_id": "<UUID>",    "version": 1,    "title": " Encrypted, saved (2024.09.08 13:35)",    "subtitle": "",    "description": "",    "status": "done",    "progress": 0,    "duration": 66.00001,    "assets": [      {        "id": "<UUID>",        "video_id": "<UUID>",        "original_name": "original.ts",        "file_size": 4862244,        "md5": "a05d6c66884dc7f8c5136b6c9d95fef7",        "filetype": "ts",        "quality": "original",        "resolution": "1920x1080",        "created_at": "2024-09-08T10:35:17.087638Z",        "url": "https://kinescopecdn.net/<UUID>/videos/<UUID>/assets/<UUID>/original.mp4?expires=<EXPIRES>&sign=<SIGNATURE>",        "download_link": "https://s3.kinescope.io/<UUID>/videos/<UUID>/mp4/original.ts?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<CREDENTIAL>"      },      {        "id": "<UUID>",        "video_id": "<UUID>",        "original_name": "1080p.mp4",        "file_size": 4292636,        "filetype": "mp4",        "quality": "1080p",        "resolution": "1920x1080",        "created_at": "2024-09-08T10:35:30.549646Z",        "download_link": ""      },      {        "id": "<UUID>",        "video_id": "<UUID>",        "original_name": "720p.mp4",        "file_size": 3217594,        "filetype": "mp4",        "quality": "720p",        "resolution": "1280x720",        "created_at": "2024-09-08T10:35:30.549646Z",        "download_link": ""      },      {        "id": "<UUID>",        "video_id": "<UUID>",        "original_name": "480p.mp4",        "file_size": 2031032,        "filetype": "mp4",        "quality": "480p",        "resolution": "852x480",        "created_at": "2024-09-08T10:35:30.549646Z",        "download_link": ""      },      {        "id": "<UUID>",        "video_id": "<UUID>",        "original_name": "360p.mp4",        "file_size": 1451443,        "filetype": "mp4",        "quality": "360p",        "resolution": "640x360",        "created_at": "2024-09-08T10:35:30.549646Z",        "download_link": ""      }    ],    "has_audio": true,    "audio_tracks": [      {        "id": "<UUID>",        "language": "en",        "label": "English",        "file_size": 4292636,        "filetype": "mp4",        "original_name": "audio_en.mp4",        "download_link": "https://s3.kinescope.io/<UUID>/videos/<UUID>/audio/<UUID>.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<CREDENTIAL>"      },      {        "id": "<UUID>",        "language": "ru",        "label": "Русский",        "file_size": 4185220,        "filetype": "mp4",        "original_name": "audio_ru.mp4",        "download_link": "https://s3.kinescope.io/<UUID>/videos/<UUID>/audio/<UUID>.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<CREDENTIAL>"      }    ],    "chapters": {      "items": [],      "enabled": false    },    "privacy_type": "anywhere",    "privacy_domains": [],    "privacy_email_domains": [],    "privacy_share": {},    "tags": [],    "poster": {      "id": "<UUID>",      "type": "image",      "media_id": "<UUID>",      "status": "done",      "active": true,      "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",      "from_time": 0,      "to_time": 0    },    "additional_materials": [],    "additional_materials_enabled": false,    "annotation_text_enabled": false,    "annotation_video_enabled": false,    "play_link": "https://kinescope.io/vN1xLXadcCk94aCuZHR5i2",    "embed_link": "https://kinescope.io/embed/vN1xLXadcCk94aCuZHR5i2",    "created_at": "2024-09-08T10:35:11.674333Z",    "updated_at": "2026-03-05T14:04:37.150678Z",    "subtitles": [],    "subtitles_enabled": false,    "hls_link": "https://kinescope.io/vN1xLXadcCk94aCuZHR5i2/master.m3u8",    "chat_preview": false,    "chat_inside_player": "",    "chat_expand_on_load": false,    "meta": {      "event_id": "<UUID>",      "stream_id": "<UUID>"    }  }}
{  "error": {    "code": 400404,    "message": "not found"  }}

Atualizar vídeo

PATCH {{baseHost}}/v1/videos/:video_id

Atualiza o vídeo indicado. Só os campos enviados no corpo da requisição são alterados; os demais ficam como estão.

Esta requisição atualiza somente os campos enviados.

Campos que podem ser atualizados: title, description, privacy_type, privacy_domains, additional_materials_enabled

Request body (json)
{  "title": "New title",  "description": "New description",  "privacy_type": "custom",  "privacy_domains": [    "my_domain.io"  ],  "additional_materials_enabled": false,  "tags": [    "tag 1",    "tag 2",    "tag 3"  ]}
Responses
{  "data": {    "id": "iuFPEzdC2Jtf8aCcvMJQ8h",    "workspace_id": "s8vL2Zr3CxCj1A8HmxoGhp",    "project_id": "hfHfAgq4g2nxxtg8DQ3Twi",    "folder_id": null,    "storage_id": "mucjva43n3sLsw5YRwsZYS",    "short_id": 199511990,    "version": 0,    "title": "New title",    "description": "New description",    "status": "done",    "progress": 0,    "duration": 179.305,    "assets": [      {        "id": "i7r58w3Lt3bPoPyX27tprT",        "video_id": "iuFPEzdC2Jtf8aCcvMJQ8h",        "original_name": "original.mp4",        "file_size": 5603249,        "filetype": "QuickTime / MOV",        "quality": "original",        "resolution": "320x240",        "created_at": "2020-08-30T16:10:08.091561Z",        "updated_at": null,        "deleted_at": null      },      {        "id": "kdwSHkB2e1AH8veDLuCnUP",        "video_id": "iuFPEzdC2Jtf8aCcvMJQ8h",        "original_name": "360p.mp4",        "file_size": 4196287,        "filetype": "QuickTime / MOV",        "quality": "360p",        "resolution": "320x240",        "created_at": "2020-08-30T16:10:14.087606Z",        "updated_at": null,        "deleted_at": null      }    ],    "chapters": {      "items": [],      "enabled": false,      "show_on_load": false    },    "privacy_type": "nowhere",    "privacy_domains": [      "my_domain.io"    ],    "poster": {      "id": "eHqAqKuMi4JTsAoMvf5GRs",      "video_id": "iuFPEzdC2Jtf8aCcvMJQ8h",      "storage_id": "mucjva43n3sLsw5YRwsZYS"    },    "additional_materials": [],    "additional_materials_enabled": false,    "created_at": "2020-08-30T16:10:05.702154Z",    "updated_at": null,    "deleted_at": null  }}

Excluir vídeo

DELETE {{baseHost}}/v1/videos/:video_id

Exclui o vídeo permanentemente. A ação não pode ser desfeita.

Responses
{  "data": {    "success": true  }}

Mover vídeo para outro projeto e pasta

PUT {{baseHost}}/v1/videos/:video_id/move

Move o vídeo para outro projeto e/ou outra pasta. O ID do vídeo não muda.

Request body (json)
{  "project_id": "3kAyiWTAZQKKZxg1GfjKvS",  "folder_id": "2MxB8wx35jHQjhCPczBamu"}

Atualizar capítulos

PUT {{baseHost}}/v1/videos/:video_id/chapters

Substitui os marcadores de capítulo do vídeo pela lista enviada. Envie um array vazio para remover todos os capítulos.

Request body (json)
{  "items": [    {      "time": 10000,      "title": "Chapter at 10sec"    }  ],  "enabled": true}
Responses
{  "data": {    "items": [      {        "time": 10000,        "title": "Chapter at 10sec"      }    ],    "enabled": true  }}

Concatenar vídeo

POST {{baseHost}}/v1/videos/:video_id/concat

Junta o vídeo de origem com um ou mais vídeos em um novo vídeo. O vídeo original fica intacto, e o conteúdo combinado vai para um vídeo novo.

Request body (json)
{  "prepend": [    {      "video_id": "<UUID>"    }  ],  "append": [    {      "video_id": "<UUID>"    }  ],  "replace": false}

Copiar vídeo

POST {{baseHost}}/v1/videos/:video_id/copy

Cria uma cópia completa do vídeo e, se você quiser, coloca a cópia em outro projeto ou pasta.

Request body (json)
{  "parent_id": "<UUID>"}

Cortar vídeo

POST {{baseHost}}/v1/videos/:video_id/cut

Corta o vídeo para o intervalo de tempo indicado. O resultado é gravado no mesmo ID de vídeo; os bytes originais são substituídos.

Cria um vídeo com corte de tempo ou de quadro.

CampoTipoDescrição
project_idstringnão obrigatório
folder_idstringnão obrigatório
titlestringnão obrigatório
descriptionstringnão obrigatório
cropcrop_objectw,h — largura, altura
x,y — canto superior esquerdo
trim[]trim_objectstart — hora de início
length — duração do vídeo
Request body (json)
{  "crop": {    "w": 300,    "h": 200,    "x": 100,    "y": 80,    "quality": "360p"  },  "trim": [    {      "start": 6,      "length": 2    },    {      "start": 1,      "length": 2    }  ]}

Videos

Enviar vídeo

POST

Envia um novo vídeo. O envio é multipart; quando ele termina, o servidor devolve o objeto do vídeo.

Veja o guia:

https://kinescope.notion.site/abe1183fe61b4e00a4f8c358bd27413d

Cabeçalhos
ParâmetroDescrição
X-Parent-ID``
X-Video-TitleNovo vídeo
X-Video-DescriptionDescrição do vídeo
X-File-Namevideo.mp4
X-Poster-URLurl do pôster
X-Video-URLhttp://example.ru/video.mp4
X-Replace-Video-IDVideoID para substituir