Find an API

Search public APIs with auth details & Postman guides

← All APIs

api.video

api · Media

Media No Auth Free & Open media

api.video is an API that encodes on the go to facilitate immediate playback, enhancing viewer streaming experiences across multiple devices and platforms. You can stream live or on-demand online videos within minutes.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET List all live streams

With no parameters added to the url, this will return all livestreams. Query by name or key to limit the list.

https://api.apis.guru/v2/specs/api.video/1/live-streams?name=test&sortBy=example&pageSize=25&sortOrder=asc&streamKey=example&currentPage=1

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/api.video/1/live-streams?name=test&sortBy=example&pageSize=25&sortOrder=asc&streamKey=example&currentPage=1"
import requests
params = {
    "name": "test",
    "sortBy": "example",
    "pageSize": "25",
    "sortOrder": "asc",
    "streamKey": "example",
    "currentPage": "1"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/api.video/1/live-streams",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/api.video/1/live-streams');
url.searchParams.set('name', 'test');
url.searchParams.set('sortBy', 'example');
url.searchParams.set('pageSize', '25');
url.searchParams.set('sortOrder', 'asc');
url.searchParams.set('streamKey', 'example');
url.searchParams.set('currentPage', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/api.video/1/live-streams")
	q := baseURL.Query()
	q.Set("name", "test")
	q.Set("sortBy", "example")
	q.Set("pageSize", "25")
	q.Set("sortOrder", "asc")
	q.Set("streamKey", "example")
	q.Set("currentPage", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/api.video/1/live-streams")
uri.query = URI.encode_www_form({
  "name" => "test",
  "sortBy" => "example",
  "pageSize" => "25",
  "sortOrder" => "asc",
  "streamKey" => "example",
  "currentPage" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/api.video/1/live-streams?" . http_build_query([
    "name" => "test",
    "sortBy" => "example",
    "pageSize" => "25",
    "sortOrder" => "asc",
    "streamKey" => "example",
    "currentPage" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET List all players

Retrieve a list of all the players you created, as well as details about each one. Tutorials that use the [player endpoint](https://api.video/blog/endpoints/player).

https://api.apis.guru/v2/specs/api.video/1/players?sortBy=createdAt&pageSize=25&sortOrder=asc&currentPage=1

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/api.video/1/players?sortBy=createdAt&pageSize=25&sortOrder=asc&currentPage=1"
import requests
params = {
    "sortBy": "createdAt",
    "pageSize": "25",
    "sortOrder": "asc",
    "currentPage": "1"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/api.video/1/players",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/api.video/1/players');
url.searchParams.set('sortBy', 'createdAt');
url.searchParams.set('pageSize', '25');
url.searchParams.set('sortOrder', 'asc');
url.searchParams.set('currentPage', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/api.video/1/players")
	q := baseURL.Query()
	q.Set("sortBy", "createdAt")
	q.Set("pageSize", "25")
	q.Set("sortOrder", "asc")
	q.Set("currentPage", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/api.video/1/players")
uri.query = URI.encode_www_form({
  "sortBy" => "createdAt",
  "pageSize" => "25",
  "sortOrder" => "asc",
  "currentPage" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/api.video/1/players?" . http_build_query([
    "sortBy" => "createdAt",
    "pageSize" => "25",
    "sortOrder" => "asc",
    "currentPage" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET List all active upload tokens.

A delegated token is used to allow secure uploads without exposing your API key. Use this endpoint to retrieve a list of all currently active delegated tokens. Tutorials using [delegated upload](https://api.video/blog/endpoints/delegated-upload).

https://api.apis.guru/v2/specs/api.video/1/upload-tokens?sortBy=createdAt&pageSize=25&sortOrder=asc&currentPage=1

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/api.video/1/upload-tokens?sortBy=createdAt&pageSize=25&sortOrder=asc&currentPage=1"
import requests
params = {
    "sortBy": "createdAt",
    "pageSize": "25",
    "sortOrder": "asc",
    "currentPage": "1"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/api.video/1/upload-tokens",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/api.video/1/upload-tokens');
url.searchParams.set('sortBy', 'createdAt');
url.searchParams.set('pageSize', '25');
url.searchParams.set('sortOrder', 'asc');
url.searchParams.set('currentPage', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/api.video/1/upload-tokens")
	q := baseURL.Query()
	q.Set("sortBy", "createdAt")
	q.Set("pageSize", "25")
	q.Set("sortOrder", "asc")
	q.Set("currentPage", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/api.video/1/upload-tokens")
uri.query = URI.encode_www_form({
  "sortBy" => "createdAt",
  "pageSize" => "25",
  "sortOrder" => "asc",
  "currentPage" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/api.video/1/upload-tokens?" . http_build_query([
    "sortBy" => "createdAt",
    "pageSize" => "25",
    "sortOrder" => "asc",
    "currentPage" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with api.video?

api.video is a Media API. Developers commonly use media APIs for:

  • storing and delivering images, video, and audio
  • building digital asset management and media libraries
  • transcoding and optimising media for the web
  • adding video streaming and playback to your app
  • automating content tagging and metadata extraction

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. api.video is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗