Tải video từ Facebook, TikTok & Instagram
| # | Caption | Tiến trình | Trạng thái | Hành động |
|---|
Dán link Facebook, TikTok hoặc Instagram rồi bấm Tải Xuống
Video tải qua API /api/download sẽ được upload lên Cloudinary rồi xoá khỏi server ngay —
cần nhập thông tin tài khoản Cloudinary bên dưới trước khi dùng endpoint đó.
Nếu không đặt biến môi trường, giá trị nhập ở đây được lưu vào file trên server và sẽ mất khi Render redeploy — cần nhập lại sau mỗi lần deploy code mới.
Web hoặc server khác có thể gọi thẳng API này để tải video — không cần dùng giao diện. Dùng API key ở góc trên bên phải trang này (bấm biểu tượng mắt để xem, biểu tượng copy để sao chép).
Với Next.js, hãy gọi từ Route Handler hoặc Server Action — không gọi trực tiếp từ Client Component/trình duyệt người dùng cuối, vì API key sẽ bị lộ.
Lưu hai biến này trong .env.local của website Next.js. Không dùng tiền tố NEXT_PUBLIC_.
AUTODOWN_BASE_URL=https://autodown.vibevic.com AUTODOWN_API_KEY=<API_KEY_CUA_BAN>
Tạo hàm dùng chung tại lib/autodown.ts:
export async function callAutoDown(path: string, body: unknown) {
const response = await fetch(`${process.env.AUTODOWN_BASE_URL}${path}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": process.env.AUTODOWN_API_KEY!,
},
body: JSON.stringify(body),
cache: "no-store",
});
const data = await response.json();
if (!response.ok) throw new Error(data.error || "AutoDown request failed");
return data;
}
Ví dụ Route Handler tại app/api/video/extract/route.ts:
import { NextRequest, NextResponse } from "next/server";
import { callAutoDown } from "@/lib/autodown";
export async function POST(request: NextRequest) {
const { url } = await request.json();
try {
return NextResponse.json(await callAutoDown("/api/extract", { url }));
} catch (error) {
return NextResponse.json(
{ error: error instanceof Error ? error.message : "Không thể lấy video" },
{ status: 502 },
);
}
}
https://autodown.vibevic.com
X-API-Key: <API_KEY_CUA_BAN>
POST /api/extractKhông tải file, không upload Cloudinary — chỉ lấy caption/thumbnail để hiển thị trước.
curl -X POST https://autodown.vibevic.com/api/extract \
-H "X-API-Key: <API_KEY_CUA_BAN>" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.facebook.com/reel/XXXXXXXXXX"}'
# → {"success": true, "platform": "facebook", "type": "video", "caption": "...", "thumbnail": "...", "mediaCount": 1}
POST /api/downloadTải video, upload lên Cloudinary, xoá file tạm trên server ngay sau khi upload xong, trả về link Cloudinary. Cần cấu hình Cloudinary ở mục phía trên trước. Request có thể mất vài giây tới vài chục giây tuỳ độ dài video.
curl -X POST https://autodown.vibevic.com/api/download \
-H "X-API-Key: <API_KEY_CUA_BAN>" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.facebook.com/reel/XXXXXXXXXX"}'
# → {"success": true, "caption": "...", "type": "video",
# "media": [{"type": "video", "url": "https://res.cloudinary.com/.../temp/abc123/xxxx.mp4", "public_id": "temp/abc123/xxxx"}]}
POST /api/cleanupGọi khi web app của bạn không cần asset đó nữa — dùng đúng public_id nhận được từ /api/download.
curl -X POST https://autodown.vibevic.com/api/cleanup \
-H "X-API-Key: <API_KEY_CUA_BAN>" \
-H "Content-Type: application/json" \
-d '{"public_ids": ["temp/abc123/xxxx"]}'
# → {"success": true, "deleted": {"temp/abc123/xxxx": "deleted"}}
Service này không lưu job/state gì cả — mỗi request tự chứa toàn bộ thông tin cần thiết.
Web app gọi API chịu trách nhiệm giữ lại public_id và tự gọi /api/cleanup khi xong việc.
POST /api/start_dlBody JSON: url (bắt buộc), height (tuỳ chọn, null = chất lượng cao nhất).
curl -X POST https://autodown.vibevic.com/api/start_dl \
-H "X-API-Key: <API_KEY_CUA_BAN>" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.facebook.com/reel/XXXXXXXXXX", "height": null}'
# → {"dl_id": "a1b2c3d4e5f6"}
GET /api/dl_status/<dl_id>Gọi lặp lại (poll) mỗi 1–2 giây cho tới khi status là "done" hoặc "error".
curl https://autodown.vibevic.com/api/dl_status/a1b2c3d4e5f6 \
-H "X-API-Key: <API_KEY_CUA_BAN>"
# → {"status": "done", "percent": 100, "filename": "caption_video.mp4", "caption": "...", "error": null}
GET /api/dl_file/<dl_id>Chỉ gọi được sau khi status = "done". File chỉ tồn tại trên server trong ít phút rồi bị xoá — tải về ngay khi xong.
curl https://autodown.vibevic.com/api/dl_file/a1b2c3d4e5f6 \ -H "X-API-Key: <API_KEY_CUA_BAN>" \ -o video.mp4
Nền tảng hỗ trợ: Facebook, TikTok và Instagram (chỉ video/reel công khai). Instagram đang ở mức thử nghiệm và có thể bị chặn bởi yêu cầu đăng nhập hoặc IP Render. Không hỗ trợ ảnh/album. App không bao giờ dùng cookie đăng nhập cho bất kỳ nền tảng nào.