DEVELOPER API

X / Twitter medyasını programatik indir.

Tek satır curl ile tweet metaverisini ve indirilebilir medyayı al. JSON yanıt, Bearer auth, tier tabanlı rate limit. 99.99% uptime SLA.

Key oluşturÖrnekleri gör

Authentication

Tüm /api/v1/* endpointleri Bearer authentication ister. Key'i /profile/api-keys üzerinden oluştur ve Authorization header'ında geçir:

Authorization: Bearer xva_abc123def456...

Key formatı: xva_ + 32 byte base64url (toplam ~50 karakter). Sunucumuzda SHA-256 hash olarak saklanır — düz metin asla loglanmaz veya yedeklenmez. Key'i kaybedersen yenisini oluşturman gerekir.

Endpoints

GET/api/v1/post

Herhangi bir desteklenen platformun (Twitter, Instagram, YouTube, TikTok, Reddit, Facebook, Pinterest, Amazon, Vimeo) post metaverisini + indirilebilir medya URL'lerini platform-bağımsız tek şemada döner.

Query parametreleri

AdTipAçıklama
urlstringDesteklenen herhangi bir platform post/video URL'i.

Yanıt: 200 OK

{
  "platform": "VIMEO",
  "id": "76979871",
  "url": "https://vimeo.com/76979871",
  "text": "The New Vimeo Player...",
  "authorName": "Vimeo Staff",
  "durationSec": 62,
  "posterUrl": "https://i.vimeocdn.com/...",
  "needsServerProcessing": true,
  "videoVariants": [
    { "qualityLabel": "1080p", "formatId": "best[height<=1080]/...", "contentType": "video/mp4" },
    { "qualityLabel": "720p", ... }
  ],
  "imageUrls": []
}
GET/api/v1/tweet

Yalnızca Twitter / X için kısayol. Diğer platformlar için /api/v1/post kullan.

Query parametreleri

AdTipAçıklama
urlstringTweet URL'i (x.com veya twitter.com). Status ID otomatik tespit edilir.

Yanıt: 200 OK

{
  "id": "1789234567890",
  "text": "Tweet metni...",
  "authorName": "Elon Musk",
  "authorScreenName": "elonmusk",
  "authorAvatarUrl": "https://pbs.twimg.com/...",
  "createdAt": "2026-04-27T08:00:00.000Z",
  "durationSec": 84,
  "posterUrl": "https://...",
  "width": 1920,
  "height": 1080,
  "videoVariants": [
    {
      "qualityLabel": "1080p",
      "url": "https://video.twimg.com/...",
      "contentType": "video/mp4",
      "bitrate": 2176000
    },
    { "qualityLabel": "720p", "url": "...", ... }
  ],
  "imageUrls": ["https://pbs.twimg.com/..."],
  "isAnimatedGif": false
}
GET/api/v1/download

İki mod: (1) doğrudan CDN medya URL'ini proxy'ler (hızlı); (2) desteklenen bir platform sayfa linki verilirse (youtube.com, vimeo.com, amazon.com…) sunucuda yt-dlp ile indirir, MP4'e remux eder. Dosya stream halinde gelir, sunucumuzda iz kalmaz.

Query parametreleri

AdTipAçıklama
urlstringDoğrudan CDN medya URL'i VEYA desteklenen bir platform sayfa linki (youtube.com, vimeo.com, amazon.com…).
formatstringOpsiyonel. yt-dlp format selector (ör. best[height<=1080]). Sayfa linki modunda geçerli.
audiostringOpsiyonel. mp3 verilirse yalnızca ses (320 kbps) çıkarılır.
filenamestringÖnerilen dosya adı. Sanitize edilir.

Yanıt: 200 OK

Binary stream — dosya içeriği. Header'lar:

Content-Type: video/mp4
Content-Disposition: attachment; filename="tweet-1080p.mp4"
Content-Length: 14523847
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9847
X-RateLimit-Tier: PRO

Rate Limits

Her isteğin apiKeyId'ye göre 24 saatlik kayar pencere içinde sayılır.

TierGünlük istekBurstTipik kullanım
FREE100kısıtlıKişisel script, deneme
PRO10.000ortaBot, küçük ölçek otomasyon
GOLD100.000genişB2B, yüksek hacim

Limit aşıldığında 429 Too Many Requests dönülür. Her yanıtta X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Tier header'ları bulunur.

Kod örnekleri

curl

# Post metadata — any platform (Twitter, YouTube, Vimeo, Amazon…)
curl -H "Authorization: Bearer xva_..." \
  "https://demo.huntvideos.co/api/v1/post?url=https://vimeo.com/76979871"

# Download from a platform page link (server-side yt-dlp → MP4)
curl -H "Authorization: Bearer xva_..." \
  "https://demo.huntvideos.co/api/v1/download?url=https://vimeo.com/76979871&format=best[height<=1080]&filename=clip.mp4" \
  -o clip.mp4

# Or proxy a direct CDN media URL
curl -H "Authorization: Bearer xva_..." \
  "https://demo.huntvideos.co/api/v1/download?url=https://video.twimg.com/...&filename=tweet.mp4" \
  -o tweet.mp4

JavaScript / Node.js

const res = await fetch(
  "https://demo.huntvideos.co/api/v1/tweet?url=" + encodeURIComponent(tweetUrl),
  { headers: { Authorization: "Bearer xva_..." } }
);
if (!res.ok) throw new Error(`API ${res.status}: ${await res.text()}`);
const tweet = await res.json();
console.log(tweet.videoVariants[0].url);

Python

import requests

r = requests.get(
    "https://demo.huntvideos.co/api/v1/tweet",
    params={"url": "https://x.com/user/status/123"},
    headers={"Authorization": "Bearer xva_..."},
    timeout=30,
)
r.raise_for_status()
tweet = r.json()
print(tweet["videoVariants"][0]["url"])

PHP

$ch = curl_init();
curl_setopt_array($ch, [
  CURLOPT_URL => "https://demo.huntvideos.co/api/v1/tweet?url=" . urlencode($tweetUrl),
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ["Authorization: Bearer xva_..."],
]);
$response = json_decode(curl_exec($ch), true);

Hata kodları

StatusAnlamıÇözüm
400Bad Request — eksik/hatalı parametreurl doğru formatta mı?
401Unauthorized — key yok veya geçersizAuthorization: Bearer xva_... başlığını kontrol et.
403Forbidden — key pasif, süresi dolmuş veya host izinli değil/profile/api-keys'den durumu gör.
404Tweet bulunamadı (silinmiş ya da korumalı)Sadece herkese açık tweet'ler kapsam içi.
429Rate limit aşıldıTier'ını yükselt ya da pencerenin kapanmasını bekle.
502Upstream hatası — X / Twitter geçici sorunBirkaç saniye sonra yeniden dene.

Webhooks

Çok yakında. Toplu thread arşivleme tamamlandığında veya zamanlanmış indirme bittiğinde sana POST callback gönderecek. İlgileniyorsan iletişime geç.

Sürüm notları

  • v1.0.0 — Bearer auth, /api/v1/tweet ve /api/v1/download endpoint'leri, tier-based rate limits.

Hazırsan, key oluştur ve başla.

FREE tier'da günde 100 istek hakkın var. Üye olmadan 0 istek.

API Key oluşturPro'ya geç