Skip to content

AIOZNetwork/w3stream-nodejs-client

Repository files navigation

W3Stream Node.js client

W3Stream is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand & low latency live streaming features in your app.

Project description

W3Stream's Node.js is a lightweight client built in TypeScript that streamlines the coding process. Chunking files is handled for you, as is pagination and refreshing your tokens.

Getting started

Installation

With npm:

npm install @w3stream/nodejs-client

...or with yarn:

yarn add @w3stream/nodejs-client

Code sample

import W3StreamClient from "@w3stream/nodejs-client";
 
(async () => {
  try {
    const client = new W3StreamClient({
      publicKey: "YOUR_PUBLIC_KEY",
      secretKey: "YOUR_SECRET_KEY",
    });
    const videoCreationPayload = {
      title: "First video", // The title of your new video.
      description: "A new video.", // A brief description of your video.
    };
 
    const video = await client.video.create(videoCreationPayload);
    if (!video.data) {
      throw new Error("Failed to create video");
    }
    if (!video.data.id) {
      throw new Error("Failed to create video");
    }
    // Option 1: Use client upload with videoId
    // await client.uploadVideo(video.data.id, "./path/to/video.mp4");
    // console.log("Upload successfully");
    // Option 2: Upload parts yourself
    const uploadResult = await client.video.uploadPart(
      video.data.id,
      "./path/to/video.mp4",
    );
    console.log(uploadResult);
 
    const checkResult = await client.video.uploadVideoComplete(video.data.id);
    // Check if the video upload is complete
    console.log(checkResult);
  } catch (e) {
    console.error(e);
  }
})();

Documentation

API endpoints

ApiKeyApi

Method Description HTTP request
create() Create API key POST /api_keys
update() Rename api key PATCH /api_keys/{id}
delete() Delete API key DELETE /api_keys/{id}
list() Get list API keys GET /api_keys

LiveStreamApi

Method Description HTTP request
createLiveStreamKey() Create live stream key POST /live_streams
createStreaming() Create a new live stream video POST /live_streams/{id}/streamings
deleteLiveStreamKey() Delete live stream key DELETE /live_streams/{id}
deleteStreaming() Delete live stream video DELETE /live_streams/{id}/streamings/{stream_id}
getLiveStreamKey() Get live stream key GET /live_streams/{id}
getLiveStreamKeys() Get live stream key list GET /live_streams
getLiveStreamPlayerInfo() Get live stream video public GET /live_streams/player/{id}/videos
getLiveStreamVideo() Get live stream video GET /live_streams/{id}/videos
getLiveStreamVideos() Get live stream videos POST /live_streams/{id}/videos
getStreaming() Get live stream video streaming GET /live_streams/{id}/streamings/{stream_id}
getStreamings() Get live stream video streamings GET /live_streams/{id}/streamings
updateLiveStreamKey() Update live stream key PUT /live_streams/{id}
updateLiveStreamVideo() Update live stream video PUT /live_streams/{id}/streamings

PlayersApi

Method Description HTTP request
create() Create a player theme POST /players
get() Get a player theme by ID GET /players/{id}
update() Update a player theme by ID PATCH /players/{id}
delete() Delete a player theme by ID DELETE /players/{id}
list() List all player themes GET /players
uploadLogo() Upload a logo for a player theme by ID POST /players/{id}/logo
deleteLogo() Delete a logo for a player theme by ID DELETE /players/{id}/logo
addPlayer() Add a player theme to a video POST /players/add-player
removePlayer() Remove a player theme from a video POST /players/remove-player

PlaylistApi

Method Description HTTP request
addVideoToPlaylist() Add a video to a playlist POST /playlists/{id}/items
createPlaylist() Create a playlist POST /playlists/create
deletePlaylistById() Delete a playlist by ID DELETE /playlists/{id}
deletePlaylistThumbnail() Delete a playlist thumbnail DELETE /playlists/{id}/thumbnail
getPlaylistById() Get playlist by ID GET /playlists/{id}
getPlaylistPublicInfo() Get a playlist public GET /playlists/{id}/player.json
getPlaylists() Get user's playlists POST /playlists
moveVideoInPlaylist() Move a video in a playlist PUT /playlists/{id}/items
removeVideoFromPlaylist() Remove a video from a playlist DELETE /playlists/{id}/items/{item_id}
updatePlaylist() Update a playlist PATCH /playlists/{id}

VideoApi

Method Description HTTP request
create() Create video object POST /videos/create
update() update video info PATCH /videos/{id}
delete() Delete video DELETE /videos/{id}
uploadThumbnail() Upload video thumbnail POST /videos/{id}/thumbnail
createCaption() Create a new video caption POST /videos/{id}/captions/{lan}
deleteCaption() Delete a video caption DELETE /videos/{id}/captions/{lan}
getCaptions() Get video captions GET /videos/{id}/captions
getCost() get video transcoding cost GET /videos/cost
getDetail() get video detail GET /videos/{id}
getVideoList() Get user videos list POST /videos
getVideoPlayerInfo() Get video player info GET /videos/{id}/player.json
setDefaultCaption() Set default caption PATCH /videos/{id}/captions/{lan}
uploadPart() Upload part of video POST /videos/{id}/part
uploadVideoComplete() Get upload video when complete GET /videos/{id}/complete

VideoChapterApi

Method Description HTTP request
create() Create a video chapter POST /videos/{id}/chapters/{lan}
get() Get video chapters GET /videos/{id}/chapters
delete() Delete a video chapter DELETE /videos/{id}/chapters/{lan}

WebhookApi

Method Description HTTP request
create() Create webhook POST /webhooks
get() Get user's webhook by id GET /webhooks/{id}
update() Update event webhook PATCH /webhooks/{id}
delete() Delete webhook DELETE /webhooks/{id}
list() Get list webhooks GET /webhooks
check() Check webhook by id POST /webhooks/check/{id}

Models

Rate Limiting

W3Stream implements rate limiting to ensure fair usage and stability of the service. The API provides the rate limit values in the response headers for any API requests you make. In this Node.js client, you can access these headers by using the *WithResponseHeaders() versions of the methods. These methods return both the response body and the headers, allowing you to check the X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Retry-After headers to understand your current rate limit status.

Here is an example of how to use these methods:

const client = new W3StreamClient({
  secretKey: "YOUR_SECRET_KEY",
  publicKey: "YOUR_PUBLIC_KEY"
});

const { headers, body } = const webhook = await client.webhook.listWithResponseHeaders();

Authorization

API key and public key

All endpoints required to be authenticated using the API key and public key mechanism described in our documentation.

All you have to do is provide an API key and public key when instantiating the W3StreamClient:

const client = new W3StreamClient({
  secretKey: "YOUR_SECRET_KEY",
  publicKey: "YOUR_PUBLIC_KEY"
});

Have you gotten use from this API client?

Please take a moment to leave a star on the client ⭐

This helps other users to find the clients and also helps us understand which clients are most popular. Thank you!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages