ClipKaboom API
Search the clip library and download clean, watermark-free HD/4K files from your own scripts, bots, and editing tools. Base URL: https://api.clipkaboom.com
Quick start
- Create a key on your account page (Creator and Team plans). It’s shown once, so store it somewhere safe.
- Send it as
Authorization: Bearer <key>on every request.
export CLIPKABOOM_KEY=vbk_...
curl -H "Authorization: Bearer $CLIPKABOOM_KEY" "https://api.clipkaboom.com/v1/search?q=bruh&limit=5"
curl -L -H "Authorization: Bearer $CLIPKABOOM_KEY" "https://api.clipkaboom.com/v1/clips/you-tripping-bruh/download" -o bruh.mp4Authentication & plans
- Search & clip lookups work without a key (30 requests/min per IP) or with any key.
- Clean downloads need a key whose account has an active Creator or Team plan. Creator and Team both get 4K where the source has it.
- Prefer the header.
?key=also works but ends up in logs and browser history. - Never ship a key in client-side code. Call the API from your server or script.
Rate limits
Per key, per minute: Creator 240, Team 480 (anonymous: 30 per IP). Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Over the limit you get 429 with a Retry-After header (seconds).
Endpoints
GET /v1/search
Full-text search over clip quotes and tags.
q: search text. Omit it to browse.limit: 1–50, default 24.cursor: pass the previous response’snextto get the next page.category:meme,sfx,reactions,funny,anime,movies,omg.length:short,medium,long.tag: exact tag.
curl -H "Authorization: Bearer $CLIPKABOOM_KEY" "https://api.clipkaboom.com/v1/search?q=bruh&category=reactions&limit=10"
→ { "results": [Clip, ...], "next": "cursor-or-null" }GET /v1/featured
Trending clips. Takes limit, cursor, category and length; same response shape as search.
GET /v1/clips/:id
One clip by id. 404if it doesn’t exist.
curl -H "Authorization: Bearer $CLIPKABOOM_KEY" "https://api.clipkaboom.com/v1/clips/you-tripping-bruh"
→ { "result": Clip }GET /v1/clips/:id/download
The clean, watermark-free file. Requires a Creator or Team key.
quality:hdor4k, default is the best your plan allows. Most clips top out at HD, and a4krequest falls back to HD.- By default it redirects (
302) to the file, so usecurl -L. format=jsonreturns the link instead. The link expires after 60 seconds, so fetch it right away and don’t store it.
curl -H "Authorization: Bearer $CLIPKABOOM_KEY" "https://api.clipkaboom.com/v1/clips/you-tripping-bruh/download?quality=4k&format=json"
→ { "url": "https://…", "quality": "hd", "expiresIn": 60 }The Clip object
{
"id": "you-tripping-bruh",
"title": "you tripping bruh",
"tags": ["bruh", "reaction"],
"duration": 2.4,
"dims": [1920, 1080],
"created": 1759420800,
"download_url": "https://api.clipkaboom.com/v1/clips/you-tripping-bruh/download",
"media_formats": {
"mp4": { "url": "https://api.clipkaboom.com/file/you-tripping-bruh.mp4?v=11", "dims": [1920, 1080], "duration": 2.4 },
"poster": { "url": "https://api.clipkaboom.com/poster/you-tripping-bruh.jpg?v=11", "dims": [1920, 1080] }
}
}media_formats.mp4is the public, watermarked SD preview, good for showing results to people.download_urlis the clean file (Creator/Team key).durationis in seconds;dimsis[width, height];createdis a Unix timestamp ornull.
Errors
Errors are JSON: { "error": "message" }.
400: bad query parameter or quality.401: missing, invalid or revoked key.402: your plan doesn’t include this (no active Creator/Team subscription).404: clip or rendition not found.429: rate limited; waitRetry-Afterseconds.
Full examples
JavaScript (Node 18+)
import { writeFile } from "node:fs/promises";
const KEY = process.env.CLIPKABOOM_KEY;
const headers = { Authorization: `Bearer ${KEY}` };
// 1. Find a clip
const res = await fetch("https://api.clipkaboom.com/v1/search?q=bruh&limit=5", { headers });
const { results } = await res.json();
// 2. Get a short-lived link to the clean file
const dl = await fetch(`${results[0].download_url}?format=json`, { headers });
const { url, quality } = await dl.json(); // url expires in 60s — fetch it right away
// 3. Save it
const file = await fetch(url);
await writeFile(`${results[0].id}-${quality}.mp4`, Buffer.from(await file.arrayBuffer()));Python
import os
import requests # pip install requests
API = "https://api.clipkaboom.com"
headers = {"Authorization": f"Bearer {os.environ['CLIPKABOOM_KEY']}"}
# 1. Find a clip
res = requests.get(f"{API}/v1/search", params={"q": "bruh", "limit": 5}, headers=headers)
res.raise_for_status()
clip = res.json()["results"][0]
# 2. Get a short-lived link to the clean file
dl = requests.get(clip["download_url"], params={"format": "json"}, headers=headers)
dl.raise_for_status()
link = dl.json() # url expires in 60s — fetch it right away
# 3. Save it
with requests.get(link["url"], stream=True) as file:
file.raise_for_status()
with open(f"{clip['id']}-{link['quality']}.mp4", "wb") as out:
for chunk in file.iter_content(chunk_size=1 << 16):
out.write(chunk)Fair use
The API is for finding and using clips in your own work, not for mirroring the library. Don’t bulk-download the catalog or redistribute clean files as a competing collection. See the Terms of Service. Clips can contain third-party material, so you’re responsible for how you use them.