Add Video Captions/Chapters/Subtitles

To update the video thumbnail

API URL

Please note that the API URL for video uploads is upload.dyntube.com and not api.dyntube.com.

File format

Captions should be in WebVTT or SRT format.

Post the file using HTML From

  • The file can be added to form input named "file".

  • The Content-Type should be multipart/form-data.

To upload a captions/subtitle file

POST https://upload.dyntube.com/v1/videos/captions/{video-id}

Request Body

 {
        "ok": true,
        "error": null,
        "captions": object
 }

Code Samples

C#

using System;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;

class Program
{
    static void Main(string[] args)
    {
        string videoId = "your_video_id";
        string bearerToken = "your_bearer_token";
        string filePath = "path/to/captions.vtt";
        string language = "en";
        string label = "English";
        bool isDefault = true;
        bool isRtl = false;
        string url = $"https://upload.dyntube.com/v1/videos/captions/{videoId}";

        using (var httpClient = new HttpClient())
        {
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);

            using (var form = new MultipartFormDataContent())
            {
                form.Add(new StreamContent(File.OpenRead(filePath)), "file", "captions.vtt");
                form.Add(new StringContent(language), "language");
                form.Add(new StringContent(label), "label");
                form.Add(new StringContent(isDefault.ToString()), "default");
                form.Add(new StringContent(isRtl.ToString()), "rtl");

                var response = httpClient.PostAsync(url, form).Result;

                if (response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    Console.WriteLine("Captions updated successfully.");
                }
                else
                {
                    Console.WriteLine($"Error updating captions. Status code: {response.StatusCode}");
                }
            }
        }
    }
}

Node.js

const fs = require('fs');
const axios = require('axios');

const videoId = 'your_video_id';
const bearerToken = 'your_bearer_token';
const filePath = 'path/to/captions.vtt';
const language = 'en';
const label = 'English';
const isDefault = true;
const isRtl = false;
const url = `https://upload.dyntube.com/v1/videos/captions/${videoId}`;

const config = {
    headers: {
        Authorization: `Bearer ${bearerToken}`,
        'Content-Type': 'multipart/form-data',
    }
};

const formData = new FormData();
formData.append('file', fs.createReadStream(filePath), 'captions.vtt');
formData.append('language', language);
formData.append('label', label);
formData.append('default', isDefault ? 1 : 0);
formData.append('rtl', isRtl ? 1 : 0);

axios.post(url, formData, config)
    .then(response => {
        if (response.status === 200) {
            console.log('Captions updated successfully.');
        } else {
            console.log(`Error updating captions. Status code: ${response.status}`);
        }
    })
    .catch(error => {
        console.log(`Error updating captions. ${error}`);
    });

Python

import requests

video_id = 'your_video_id'
bearer_token = 'your_bearer_token'
file_path = 'path/to/captions.vtt'
language = 'en'
label = 'English'
is_default = True
is_rtl = False
url = f'https://upload.dyntube.com/v1/videos/captions/{video_id}'

headers = {
    'Authorization': f'Bearer {bearer_token}',
}

files = {
    'file': ('captions.vtt', open(file_path, 'rb')),
}

data = {
    'language': language,
    'label': label,
    'default': int(is_default),
    'rtl': int(is_rtl),
}

response = requests.post(url, headers=headers, files=files, data=data)

if response.status_code == 200:
    print('Captions updated successfully.')
else:
    print(f'Error updating captions. Status code: {response.status_code}')

PHP

<?php

$videoId = 'your_video_id';
$bearerToken = 'your_bearer_token';
$filePath = 'path/to/captions.vtt';
$language = 'en';
$label = 'English';
$isDefault = true;
$isRtl = false;
$url = "https://upload.dyntube.com/v1/videos/captions/{$videoId}";

$options = array(
    'http' => array(
        'header'  => "Authorization: Bearer {$bearerToken}\r\n",
        'method'  => 'POST',
        'content' => http_build_query(array(
            'language' => $language,
            'label' => $label,
            'default' => $isDefault ? 1 : 0,
            'rtl' => $isRtl ? 1 : 0,
        )),
        'ignore_errors' => true,
    ),
);

$options['http']['content'] .= "\r\n--" . uniqid() . "\r\n";
$options['http']['content'] .= "Content-Disposition: form-data; name=\"file\"; filename=\"captions.vtt\"\r\n";
$options['http']['content'] .= "Content-Type: text/vtt\r\n\r\n";
$options['http']['content'] .= file_get_contents

Last updated