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.
api.video NodeJS SDK
DEPRECATION WARNING: this SDK will soon be deprecated and will no longer be maintained. It has been replaced by the NodeJS API client. Please use it instead.
The api.video web-service helps you put video on the web without the hassle.
This documentation helps you use the corresponding NodeJS client.
Installation
npm install @api.video/nodejs-sdk
Usage
const apiVideo = require('@api.video/nodejs-sdk');
(async () => {
try {
// Create client for Production and authenticate
const client = new apiVideo.Client({ apiKey: 'xxx' });
// Create and upload a video ressource
const video = await client.videos.upload('test/data/small.webm', { title: 'Course #4 - Part B' });
console.log(video);
} catch (e) {
console.error(e);
}
})();
See sandbox.spec.js for more usage examples.
Full API
/**
* VIDEO
*/
const client = new apiVideo.Client({ apiKey: 'xxx' });
// Show a video
client.videos.get(videoId);
// Show a video status
client.videos.getStatus(videoId);
// List or search videos
client.videos.search(parameters = {});
// Create video properties
client.videos.create(title, properties = {});
// Upload a video media file
// Create a video, if videoId is null
client.videos.upload(source, properties = {}, videoId = null);
// Create a video by downloading it from a third party
client.videos.download(source, title, properties = {});
// Update video properties
client.videos.update(videoId, properties);
// Set video public
client.videos.makePublic(videoId);
// Set video private
client.videos.makePrivate(videoId);
// Delete video (file and data)
client.videos.delete(videoId);
// Delegated upload (generate a token for someone to upload a video into your account)
result = client.tokens.generate(); // string(3): "xyz"
result.then(function(token) {
// ...then upload from anywhere without authentication:
// curl https://ws.api.video/upload?token=xyz -F file=@video.mp4
});
/**
* VIDEO THUMBNAIL
*/
// Upload a thumbnail for video
client.videos.uploadThumbnail(source, videoId);
// Update video's thumbnail by picking timecode
client.videos.updateThumbnailWithTimecode(videoId, timecode);
/**
* VIDEO CAPTIONS
*/
// Get caption for a video
client.videos.captions.get(videoId, language);
// Get all captions for a video
client.videos.captions.getAll(videoId);
// Upload a caption file for a video (.vtt)
client.videos.captions.upload(source, properties);
// Set default caption for a video
client.videos.captions.updateDefault(videoId, language, isDefault);
// Delete video's caption
client.videos.captions.delete(videoId, language);
/**
* VIDEO CHAPTERS
*/
// Get caption for a video
client.videos.chapters.get(videoId, language);
// Get all chapters for a video
client.videos.chapters.getAll(videoId);
// Upload a chapter file for a video (.vtt)
client.videos.chapters.upload(source, properties);
// Delete video's chapter
client.videos.chapters.delete(videoId, language);
/**
* PLAYERS
*/
// Get a player
client.players.get(playerId);
// List players
client.players.search(parameters = {});
// Create a player
client.players.create(properties = {});
// Update player's properties
client.players.uploadLogo(source, playerId, link);
// Update player's properties
client.players.update(playerId, properties);
// Delete a player logo
client.players.deleteLogo(playerId);
// Delete a player
client.players.delete(playerId);
/**
* LIVE
*/
// Show a live
client.lives.get(liveStreamId);
// List or search lives
client.lives.search(parameters = {});
// Create live properties
client.lives.create(name, properties = {});
// Update live properties
client.lives.update(liveStreamId, properties);
// Delete live (file and data)
client.lives.delete(liveStreamId);
/**
* LIVE THUMBNAIL
*/
// Upload a thumbnail for live
client.lives.uploadThumbnail(source, liveStreamId);
/**
* ANALYTICS
*/
// Get video analytics between period
client.analyticsVideo.get(videoId, period);
// Get live analytics between period
client.analyticsLive.get(liveStreamId, period);
// Get analytics session events
client.analyticsLive.get(sessionId, parameters);
Full API Details Implementation
Videos
Function |
Parameters |
Description |
Required |
Allowed Values |
get |
videoId(string) |
Video identifier |
✔️ |
- |
getStatus |
videoId(string) |
Video identifier |
✔️ |
- |
search |
- |
- |
- |
- |
- |
parameters(object) |
Search parameters |
❌ |
- currentPage(int)
- pageSize(int)
- sortBy(string)
- sortOrder(string)
- keyword(string)
- tags(string|array(string))
- metadata(array(string))
|
create |
- |
- |
- |
- |
- |
title(string) |
Video title |
✔️ |
- |
- |
properties(object) |
Video properties |
❌ |
- description(string)
- tags(array(string))
- playerId(string)
- metadata(array(
array( 'key' => 'Key1', 'value' => 'value1' ), array( 'key' => 'Key2', 'value' => 'value2' ) )
- panoramic(bool)
- public(bool)
- mp4Support(bool)
|
upload |
- |
- |
- |
- |
- |
source(string) |
Video media file |
✔️ |
- |
- |
properties(object) |
Video properties |
❌ |
- title(string)
- description(string)
- tags(array(string))
- playerId(string)
- metadata(array(
array( 'key' => 'Key1', 'value' => 'value1' ), array( 'key' => 'Key2', 'value' => 'value2' ) )
|
- |
videoId(string) |
Video identifier |
❌ |
- |
uploadThumbnail |
- |
- |
- |
- |
- |
source(string) |
Image media file |
✔️ |
- |
- |
videoId(string) |
Video identifier |
✔️ |
- |
updateThumbnailWithTimeCode |
- |
- |
- |
- |
- |
videoId(string) |
Video identifier |
✔️ |
- |
- |
timecode(string) |
Video timecode |
✔️ |
00:00:00.00 (hours:minutes:seconds.frames) |
update |
- |
- |
- |
- |
- |
videoId()string |
Video identifier |
✔️ |
- |
- |
properties(object) |
Video properties |
✔️ |
- title(string)
- description(string)
- tags(array(string))
- playerId(string)
- metadata(array(
array( 'key' => 'Key1', 'value' => 'value1' ), array( 'key' => 'Key2', 'value' => 'value2' ) )
- panoramic(bool)
- public(bool)
- mp4Support(bool)
|
makePublic |
videoId(string) |
Video identifier |
✔️ |
- |
makePrivate |
videoId(string) |
Video identifier |
✔️ |
- |
delete |
videoId(string) |
Video identifier |
✔️ |
- |
Players
Function |
Parameters |
Description |
Required |
Allowed Values |
get |
playerId(string) |
Player identifier |
✔️ |
- |
create |
properties(object) |
Player properties |
❌ |
- shapeMargin(int)
- shapeRadius(int)
- shapeAspect(string)
- shapeBackgroundTop(string)
- shapeBackgroundBottom(string)
- text(string)
- link(string)
- linkHover(string)
- linkActive(string)
- trackPlayed(string)
- trackUnplayed(string)
- trackBackground(string)
- backgroundTop(string)
- backgroundBottom(string)
- backgroundText(string)
- enableApi(bool)
- enableControls(bool)
- forceAutoplay(bool)
- hideTitle(bool)
|
uploadLogo |
- |
- |
- |
- |
- |
source(string) |
Logo file |
✔️ |
- |
- |
playerId(string) |
Player identifier |
✔️ |
- |
- |
link(string) |
Logo link |
✔️ |
- |
search |
- |
- |
- |
- |
- |
parameters(object) |
Search parameters |
❌ |
- currentPage(int)
- pageSize(int)
- sortBy(string)
- sortOrder(string)
|
update |
- |
- |
- |
- |
- |
playerId(string) |
Player identifier |
✔️ |
- |
- |
properties(object) |
Player properties |
✔️ |
- shapeMargin(int)
- shapeRadius(int)
- shapeAspect(string)
- shapeBackgroundTop(string)
- shapeBackgroundBottom(string)
- text(string)
- link(string)
- linkHover(string)
- linkActive(string)
- trackPlayed(string)
- trackUnplayed(string)
- trackBackground(string)
- backgroundTop(string)
- backgroundBottom(string)
- backgroundText(string)
- enableApi(bool)
- enableControls(bool)
- forceAutoplay(bool)
- hideTitle(bool)
|
deleteLogo |
playerId(string) |
Player identifier |
✔️ |
- |
delete |
playerId(string) |
Player identifier |
✔️ |
- |
Captions
Function |
Parameters |
Description |
Required |
Allowed Values |
get |
- |
- |
- |
- |
- |
videoId(string) |
Video identifier |
✔️ |
- |
- |
language(string) |
Language identifier |
✔️ |
2 letters (ex: en, fr) |
getAll |
videoId(string) |
Video identifier |
✔️ |
- |
upload |
- |
- |
- |
- |
- |
source(string) |
Caption file |
✔️ |
- |
- |
properties(string) |
Caption properties |
✔️ |
- videoId(string)
- language(string - 2 letters)
|
updateDefault |
- (object) |
- |
- |
- |
- |
videoId |
Video identifier |
✔️ |
- |
- |
language (string) |
Language identifier |
✔️ |
2 letters (ex: en, fr) |
- |
isDefault (string) |
Set default language |
✔️ |
true/false |
delete |
- |
- |
- |
- |
- |
videoId |
Video identifier |
✔️ |
- |
- |
language (string) |
Language identifier |
✔️ |
2 letters (ex: en, fr) |
Chapters
Function |
Parameters |
Description |
Required |
Allowed Values |
get |
- |
- |
- |
- |
- |
videoId(string) |
Video identifier |
✔️ |
- |
- |
language(string) |
Language identifier |
✔️ |
2 letters (ex: en, fr) |
getAll |
videoId(string) |
Video identifier |
✔️ |
- |
upload |
- |
- |
- |
- |
- |
source(string) |
Chapter file |
✔️ |
- |
- |
properties(string) |
Chapter properties |
✔️ |
- videoId(string)
- language(string - 2 letters)
|
delete |
- |
- |
- |
- |
- |
videoId |
Video identifier |
✔️ |
- |
- |
language (string) |
Language identifier |
✔️ |
2 letters (ex: en, fr) |
Lives
Function |
Parameters |
Description |
Required |
Allowed Values |
get |
liveStreamId(string) |
Live identifier |
✔️ |
- |
search |
- |
- |
- |
- |
- |
parameters(object) |
Search parameters |
❌ |
- currentPage(int)
- pageSize(int)
- sortBy(string)
- sortOrder(string)
|
create |
- |
- |
- |
- |
- |
name(string) |
Live name |
✔️ |
- |
- |
properties(object) |
Live properties |
❌ |
- record(boolean)
- playerId(string)
|
uploadThumbnail |
- |
- |
- |
- |
- |
source(string) |
Image media file |
✔️ |
- |
- |
liveStreamId(string) |
Live identifier |
✔️ |
- |
update |
- |
- |
- |
- |
- |
liveStreamId()string |
Live identifier |
✔️ |
- |
- |
properties(object) |
Live properties |
✔️ |
- name(string)
- record(boolean)
- playerId(string)
|
delete |
liveStreamId(string) |
Live identifier |
✔️ |
- |
AnalyticsVideo
Function |
Parameters |
Description |
Required |
Allowed Values/Format |
get |
- |
- |
- |
- |
- |
videoId(string) |
Video identifier |
✔️ |
- |
- |
period (string) |
Period research |
❌ |
- For a day : 2018-01-01
- For a week: 2018-W01
- For a month: 2018-01
- For a year: 2018
- Date range: 2018-01-01/2018-01-15
|
AnalyticsLive
Function |
Parameters |
Description |
Required |
Allowed Values/Format |
get |
- |
- |
- |
- |
- |
liveStreamId(string) |
Live identifier |
✔️ |
- |
- |
period (string) |
Period research |
❌ |
- For a day : 2018-01-01
- For a week: 2018-W01
- For a month: 2018-01
- For a year: 2018
- Date range: 2018-01-01/2018-01-15
|
AnalyticsSessionEvent
Function |
Parameters |
Description |
Required |
Allowed Values/Format |
get |
- |
- |
- |
- |
- |
sessionId(string) |
Session identifier |
✔️ |
- |
- |
parameters(array) |
Search parameters |
❌ |
- currentPage(int)
- pageSize(int)
|
Tokens
Function |
Parameters |
Description |
Required |
Allowed Values |
generate |
- |
Token for delegated upload |
- |
- |
Account
Function |
Parameters |
Description |
Required |
Allowed Values |
get |
- |
Get account informations (quota, features) |
- |
- |
More on api.video
A full technical documentation is available on https://docs.api.video/
Test
npm run test
You can also run a bunch of commands against your actual sandbox:
API_KEY=xxx npm run test:sandbox
Use the Sandbox API Key and not your production key.