cobalt-api v1.0.0
Cobalt API Node.js
A Node.js library for downloading videos and audio from YouTube, TikTok, Twitter, and more. Powered by Cobalt.
Powered by Cobalt
This library relies on Cobalt’s free API.
- Cobalt Code: GitHub Repository
- Cobalt Site: Cobalt Tools
- Cobalt API Docs: API Documentation
Table of Contents
- Installation
- Usage
- Methods
- Response Body Variables
- Picker Item Variables
- Supported Services
- License
- Contact
Installation
To install the cobalt-api library, you need to use npm. Run the following command:
npm install cobalt-apiUsage
After installing the library, you can start using it in your Node.js project. Here's a basic example:
const CobaltAPI = require("cobalt-api");
const cobalt = new CobaltAPI("https://www.youtube.com/watch?v=OAr6AIvH9VY");
cobalt
.sendRequest()
.then((response) => {
if (response.status) {
console.log("Download successful", response.data);
} else {
console.log("Download failed", response.text);
}
})
.catch((error) => console.error("Error:", error));Methods
constructor(url: string)
Initializes the CobaltAPI class with a URL.
- Parameters:
url(string): The URL to be used in requests.
setQuality(quality: string): void
Sets the video quality for downloads.
- Parameters:
quality(string): The desired video quality (e.g.,144,720,max).
- Throws:
Errorif the provided quality is not valid.
setFilenamePattern(pattern: string): void
Sets the filename pattern for downloaded files.
- Parameters:
pattern(string): The desired filename pattern. Available patterns: classic, basic, pretty, nerdy.
- Throws:
Errorif the provided pattern is not valid.
setVCodec(codec: string): void
Sets the video codec for downloads.
- Parameters:
codec(string): The desired video codec (e.g.,h264,av1,vp9).
- Throws:
Errorif the provided codec is not valid.
setAFormat(format: string): void
Sets the audio format for downloads.
- Parameters:
format(string): The desired audio format (e.g.,mp3,ogg,wav).
- Throws:
Errorif the provided format is not valid.
setAcceptLanguage(language: string): void
Sets the custom Accept-Language header value for requests.
- Parameters:
language(string): The custom Accept-Language header value.
enableAudioOnly(): void
Enables downloading only audio.
enableTTFullAudio(): void
Enables downloading the original sound from a TikTok video.
enableAudioMuted(): void
Enables muting the audio track in video downloads.
enableDubLang(): void
Enables using the Accept-Language header for YouTube video audio tracks.
enableDisableMetadata(): void
Enables disabling file metadata.
enableTwitterGif(): void
Enables converting Twitter gifs to .gif format.
enableTiktokH265(): void
Enables preferring 1080p h265 videos for TikTok.
sendRequest(): Promise<object>
Sends the configured request to the API and returns the response.
- Returns:
- A promise that resolves to an object containing the status and data of the response.
- Throws:
Errorif there is an error in sending the request.
getAvailableQualities(): Promise<Array<string>>
Fetches the available video qualities for a YouTube URL.
- Returns:
- A promise that resolves to an array of available video qualities.
- Throws:
Errorif the URL is invalid or fetching qualities fails.
Response Body Variables
| key | type | variables |
|---|---|---|
status | string | error / redirect / stream / success / rate-limit / picker |
text | string | various text, mostly used for errors |
url | string | direct link to a file or a link to cobalt's live render |
pickerType | string | various / images |
picker | array | array of picker items |
audio | string | direct link to a file or a link to cobalt's live render |
Source: Cobalt API Documentation - Response Body Variables
Picker Item Variables
item type: object
| key | type | variables | description |
|---|---|---|---|
type | string | video / photo / gif | used only if pickerType is various |
url | string | direct link to a file or a link to cobalt's live render | |
thumb | string | item thumbnail that's displayed in the picker | used for video and gif types |
Source: Cobalt API Documentation - Picker Item Variables
Supported Services
This list is not final and keeps expanding over time.
| service | video + audio | only audio | only video | metadata | rich file names |
|---|---|---|---|---|---|
| bilibili.com & bilibili.tv | ✅ | ✅ | ✅ | ➖ | ➖ |
| dailymotion | ✅ | ✅ | ✅ | ✅ | ✅ |
| instagram posts & reels | ✅ | ✅ | ✅ | ➖ | ➖ |
| facebook videos | ✅ | ❌ | ❌ | ➖ | ➖ |
| loom | ✅ | ❌ | ✅ | ✅ | ➖ |
| ok video | ✅ | ❌ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ➖ | ➖ | |
| ✅ | ✅ | ✅ | ❌ | ❌ | |
| rutube | ✅ | ✅ | ✅ | ✅ | ✅ |
| snapchat stories & spotlights | ✅ | ✅ | ✅ | ➖ | ➖ |
| soundcloud | ➖ | ✅ | ➖ | ✅ | ✅ |
| streamable | ✅ | ✅ | ✅ | ➖ | ➖ |
| tiktok | ✅ | ✅ | ✅ | ❌ | ❌ |
| tumblr | ✅ | ✅ | ✅ | ➖ | ➖ |
| twitch clips | ✅ | ✅ | ✅ | ✅ | ✅ |
| twitter/x | ✅ | ✅ | ✅ | ➖ | ➖ |
| vimeo | ✅ | ✅ | ✅ | ✅ | ✅ |
| vine archive | ✅ | ✅ | ✅ | ➖ | ➖ |
| vk videos & clips | ✅ | ❌ | ✅ | ✅ | ✅ |
| youtube videos, shorts & music | ✅ | ✅ | ✅ | ✅ | ✅ |
| emoji | meaning |
|---|---|
| ✅ | supported |
| ➖ | impossible/unreasonable |
| ❌ | not supported |
Source: Cobalt - Supported Services
Additional Notes or Features
| service | notes or features |
|---|---|
| Supports reels, photos, and videos. Lets you pick what to save from multi-media posts. | |
| Supports public accessible videos content only. | |
| Supports photos, gifs, videos and stories. | |
| Supports gifs and videos. | |
| snapchat | Supports spotlights and stories. Lets you pick what to save from stories. |
| rutube | Supports yappy & private links. |
| soundcloud | Supports private links. |
| tiktok | Supports videos with or without watermark, images from slideshow without watermark, and full (original) audios. |
| twitter/x | Lets you pick what to save from multi-media posts. May not be 100% reliable due to current management. |
| vimeo | Audio downloads are only available for dash. |
| youtube | Supports videos, music, and shorts. 8K, 4K, HDR, VR, and high FPS videos. Rich metadata & dubs. h264/av1/vp9 codecs. |
Source: Cobalt - Additional Notes or Features per Service
If support for a service you want is missing, create an issue (or a pull request 👀) on Cobalt's GitHub repository.
License
This library is licensed under the MIT License. See the LICENSE file for more details.
Contact
For any queries or issues, please contact:
- Name: Hossein Pira
- Email: h3dev.pira@gmail.com
- Instagram: @h3dev.pira
- Telegram: @h3dev
References
- Cobalt Code: GitHub Repository
- Cobalt Site: Cobalt Tools
- Cobalt API Docs: API Documentation
2 years ago