Get Video

API endpoint to fetch a single video

Our API to fetch videos is not optimized for real-time usage within a production environment.

To enhance the efficiency of your video retrieval process, we recommend that you fetch the video links using the API and store them in a database. By employing this method, you can seamlessly access your video links from the database and stream them as needed.

It is important to note that our video API is subject to a rate limit. Therefore, we strongly advise against using it for video retrieval immediately before playback within a production environment.

Get a Single Video

This endpoint will return a single video with the provided video Id.

GET https://api.dyntube.com/v1/videos/{id}

Path Parameters

{
    "id": "fFL56RU6PjvJPeE",
    "duration": "00:02:30.1270000",
    "projectId": "unjVhFJ7vAhrYu9",
    "accountKey": "6aG9UBe5rGPzjbh",
    "region": "use-s",
    "captions": [],
    "key": "NULPJ7mWDuyj4w5",
    "channelKey": "f8RMr2q4h6yNpv9",
    "privateLink": "QBr6n8HN878t5sH",
    "hlsLink": "Sx5FTtWsUU8tmux",
    "planType": 1,
    "mp4Url": "",
    "mp4Urls": [],
    "formats": {
        "hls": true,
        "mp4": false
    },
    "hlsUrl": "https://api.dyntube.com/v1/apps/hls/FhyinduNY4Kr9Q.m3u8",
    "hlsUrlWeb": "https://api.dyntube.com/v1/live/videos/EruJdgOPsbUg.m3u8",
    "title": "My Video",
    "description": "",
    "options": {
        "autoplay": false,
        "playerColor": "rgba(255, 65, 113, 0.83)",
        "playerSkin": "solid",
        "controlsColor": "#FFFFFF",
        "seekButtons": false,
        "volumeControl": true,
        "preload": "auto",
        "fullscreenControl": true,
        "controls": true,
        "stickyControls": false,
        "defaultQuality": "",
        "qualityControl": true,
        "speedControl": true,
        "fastForward": true,
        "bigPlayControl": true,
        "playControl": true,
        "volume": 1.0,
        "loop": false,
        "muted": false,
        "modal": false
    },
    "tags": [],
    "version": 1,
    "status": 3,
    "created": "2016-08-27T12:37:24.4970796+00:00"
}

C# Sample

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.Json;
using System.Threading.Tasks;

namespace SingleVideo
{
    class Program
    {
        private static readonly HttpClient client = new HttpClient();

        static async Task Main(string[] args)
        {
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "your_bearer_token");

            var videoId = "your_video_id";
            var response = await client.GetAsync($"https://api.dyntube.com/v1/videos/{videoId}");

            if (response.IsSuccessStatusCode)
            {
                var responseContent = await response.Content.ReadAsStringAsync();
                var video = JsonSerializer.Deserialize<Video>(responseContent);

                Console.WriteLine("Id: " + video.Id);
                Console.WriteLine("Title: " + video.Title);
                Console.WriteLine("Description: " + video.Description);
                Console.WriteLine("hlsUrl: " + video.HlsUrl);
                Console.WriteLine("hlsUrlWeb: " + video.HlsUrlWeb);
                Console.WriteLine("mp4Url: " + video.Mp4Url);
            }
            else
            {
                Console.WriteLine("Error getting video. Status code: " + response.StatusCode);
            }
        }
    }

    class Video
    {
        public string Id { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public string HlsUrl { get; set; }
        public string HlsUrlWeb { get; set; }
        public string Mp4Url { get; set; }
    }
}

Node.js

const axios = require('axios');

const videoId = 'your_video_id';
const bearerToken = 'your_bearer_token';

async function getVideo() {
  try {
    const response = await axios.get(`https://api.dyntube.com/v1/videos/${videoId}`, {
      headers: {
        Authorization: `Bearer ${bearerToken}`
      }
    });
    const video = response.data;
    console.log('Id:', video.id);
    console.log('Title:', video.title);
    console.log('Description:', video.description);
    console.log('hlsUrl:', video.hlsUrl);
    console.log('hlsUrlWeb:', video.hlsUrlWeb);
    console.log('mp4Url:', video.mp4Url);
  } catch (error) {
    console.error(error);
  }
}

getVideo();

Python

import requests

video_id = 'your_video_id'
bearer_token = 'your_bearer_token'
url = f'https://api.dyntube.com/v1/videos/{video_id}'

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

response = requests.get(url, headers=headers)

if response.status_code == 200:
    video = response.json()
    print('Id:', video['id'])
    print('Title:', video['title'])
    print('Description:', video['description'])
    print('hlsUrl:', video['hlsUrl'])
    print('hlsUrlWeb:', video['hlsUrlWeb'])
    print('mp4Url:', video['mp4Url'])
else:
    print('Error getting video. Status code:', response.status_code)

PHP

<?php
$video_id = 'your_video_id';
$bearer_token = 'your_bearer_token';
$url = "https://api.dyntube.com/v1/videos/{$video_id}";

$headers = array(
    'Authorization: Bearer ' . $bearer_token
);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

if (!$response) {
    echo 'Error getting video: ' . curl_error($ch);
} else {
    $video = json_decode($response, true);
    echo "Id: " . $video['id'] . "\n";
    echo "Title: " . $video['title'] . "\n";
    echo "Description: " . $video['description'] . "\n";
    echo "hlsUrl: " . $video['hlsUrl'] . "\n";
    echo "hlsUrlWeb: " . $video['hlsUrlWeb'] . "\n";
    echo "mp4Url: " . $video['mp4Url'] . "\n";
}

curl_close($ch);
?>

A video status3 means that the video is published. See more details here.

Last updated