GET /audio?url=dQw4w9WgXcQ&api_key=vb-abc123&quality=320
GET/videoStreaming + RangeDownload or stream YouTube video as MP4 with seek support
Parameter
Type
Required
Description
url
string
required
YouTube URL or 11-char video ID
api_key
string
required
Your API key from dashboard
quality
string
optional
480, 720, or 1080 (pixels). Default: 720
Success Response — 200 OK / 206 Partial Content
Content-Type:video/mp4Content-Length:{file_size_bytes}Accept-Ranges:bytesContent-Range:bytes {start}-{end}/{total}← for range requests← Binary MP4 stream. Supports Range: bytes=0-
Range Request Example
GET /video?url=dQw4w9WgXcQ&api_key=vb-abc123&quality=720
Range: bytes=0-1048575
Error Codes & Rate Limits
200 OK
Request successful — stream starts
206 Partial
Range request successful — partial content returned
401 Unauthorized
Missing or invalid api_key parameter
403 Forbidden
Key disabled, account blocked, or key expired
429 Too Many Requests
Monthly request limit reached — upgrade plan or redeem code
500 Server Error
Download failed (video unavailable, geo-blocked, or yt-dlp error)
Rate Limit Details
Free Plan:5,000 req/month — resets on plan renewal
Pro Plan:10,000 req/month — resets on plan renewal
Ultra Pro:30,000 req/month — resets on plan renewal
No per-second limit — burst traffic allowed
Error format:{"detail": "Request limit reached"}
Code Examples
API Usage Examples
Ready-to-use code snippets for every popular language and framework.
# Pyrogram bot — play audio via VibeStream APIfrom pyrogram import Client, filters
import aiohttp
API_KEY = "vb-your-api-key"
BASE_URL = "https://beta.vibebots.fun"
app = Client("my_bot", api_id="API_ID", api_hash="API_HASH", bot_token="TOKEN")
@app.on_message(filters.command("play"))
async def play(client, message):
youtube_url = message.text.split(" ", 1)[1]
stream_url = f"{BASE_URL}/audio?url={youtube_url}&api_key={API_KEY}&quality=320"async with aiohttp.ClientSession() as session:
async with session.get(stream_url) as resp:
if resp.status == 200:
data = await resp.read()
await message.reply_audio(data, title="Now Playing")
else:
await message.reply(f"Error: {resp.status}")
app.run()
# Python — download audio with requestsimport requests
API_KEY = "vb-your-api-key"
BASE_URL = "https://beta.vibebots.fun"def download_audio(youtube_url, quality="320", output="audio.mp3"):
url = f"{BASE_URL}/audio"
params = {"url": youtube_url, "api_key": API_KEY, "quality": quality}
with requests.get(url, params=params, stream=True) as r:
r.raise_for_status()
with open(output, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
return output
# Async version with aiohttpimport asyncio, aiohttp
async def stream_audio_async(youtube_url):
async with aiohttp.ClientSession() as s:
async with s.get(f"{BASE_URL}/audio",
params={"url": youtube_url, "api_key": API_KEY}) as r:
return await r.read() # returns bytes
Real-time platform statistics for the last 30 days.
—
Total API Requests
Last 30 days across all plans
Live
—
Requests Today
UTC day, resets at midnight
Today
—
Active Integrations
Registered developer accounts
Developers
Technology Stack
Modern, battle-tested tech
Powering the Fallen API ecosystem with reliable, high-performance technologies.
FastAPI
Backend Core
MongoDB
Primary DB
Pyrogram
Telegram Cache
yt-dlp
Media Engine
FFmpeg
Media Processing
Docker
Containerization
Meet the Developer
Built by a developer, for developers
SS
Sachin Sanatani
@TheSachinxD · Vibe Projects
Open-source developer specializing in high-performance Telegram automation and media processing APIs. With a focus on clean architecture and reliable backend engineering, Fallen Projects delivers production-ready solutions for developers worldwide.
The Fallen API ecosystem processes millions of requests monthly, serving developers building everything from music streaming bots to enterprise automation workflows.