REST API · GET
Facebook Video API
Download public Facebook videos and Reels in HD and SD via facebook.com or fb.watch links.
https://api.interapi.dev/api/v1/facebook
Price: 5 credits per successful response. 5xx is free, 4xx costs at most 1 credit. Pricing
What it does
Works with public Facebook videos in every link format: facebook.com/watch?v=…, /reel/…, /<page>/videos/…, short fb.watch/… links, and /share/v/… share links. Returns HD and SD variants in the media array, video_hd_url for the best quality and video_url as a fallback, plus title, author, duration, and cover image. Videos from closed groups and private profiles are not available.
- Videos and Reels
- HD and SD quality
- fb.watch and /share/v/ links
- Cover image and duration
How to use it
- Copy a link to a public video or Reel (Share → Copy link).
- GET /api/v1/facebook?url=…
- Response: media[] with HD and SD variants, video_hd_url, and thumbnail.
Parameters
urlstringrequired- Public video link: facebook.com/watch?v=…, /reel/…, /videos/…, fb.watch/…, or /share/v/…
Request example
curl -G "https://api.interapi.dev/api/v1/facebook" \
-H "X-API-Key: YOUR_API_KEY" \
--data-urlencode "url=https://www.facebook.com/reel/1234567890123456"import requests
resp = requests.get(
"https://api.interapi.dev/api/v1/facebook",
params={"url": "https://www.facebook.com/reel/1234567890123456"},
headers={"X-API-Key": "YOUR_API_KEY"},
timeout=60,
)
resp.raise_for_status()
print(resp.json())const params = new URLSearchParams({ url: "https://www.facebook.com/reel/1234567890123456" });
const resp = await fetch(`https://api.interapi.dev/api/v1/facebook?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
console.log(await resp.json());<?php
$query = http_build_query(["url" => "https://www.facebook.com/reel/1234567890123456"]);
$ch = curl_init("https://api.interapi.dev/api/v1/facebook?" . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: YOUR_API_KEY"],
CURLOPT_TIMEOUT => 60,
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);
Response example
{
"status": "success",
"platform": "InterAPI",
"title": "Morning run by the sea",
"description": "Morning run by the sea",
"author": "Coastal Trails",
"media": [
{
"type": "video",
"url": "https://video.xx.fbcdn.net/…/hd.mp4",
"quality": "HD",
"download_url": "https://video.xx.fbcdn.net/…/hd.mp4",
"height": 1280,
"ext": "mp4"
},
{
"type": "video",
"url": "https://video.xx.fbcdn.net/…/sd.mp4",
"quality": "SD",
"download_url": "https://video.xx.fbcdn.net/…/sd.mp4",
"height": 640,
"ext": "mp4"
}
],
"video_url": "https://video.xx.fbcdn.net/…/sd.mp4",
"video_hd_url": "https://video.xx.fbcdn.net/…/hd.mp4",
"music_url": null,
"thumbnail": "https://scontent.xx.fbcdn.net/…/cover.jpg",
"duration_sec": 27,
"channel_url": null,
"duration_ms": 1630
}duration_ms is server processing time. URLs in the example are shortened.
Test a request
Without a key — up to 30 requests per hour per IP. With your key, each request costs the API price in credits.
Paste a link and press Send. The response shows up here.