saveapi.org
Hujjat

Hujjatlar

Bitta base URL, bearer avtorizatsiya, har javobda JSON. O'n daqiqada productionga chiqasiz.

base urlhttps://api.saveapi.org/v1

Har havolaga bitta GET. Istalgan ochiq post havolasini /v1/download ga yuboring va medias[] ni o'qing — har yozuv manbaning o'z CDN'idagi to'g'ridan-to'g'ri fayl havolasi, o'sha javobning ichida. Na ikkinchi so'rov, na format parametri: manba bir nechta tayyor variant bergan joyda ularning hammasi formats[] da birga keladi.

STEP 01
Kalit yarating
Ro'yxatdan o'ting va paneldan sk_live_… kalitini nusxalang. Bepul tarif 1,000 kredit bilan boshlanadi.
STEP 02
Bitta havola yuboring
/v1/download ga istalgan qo'llab-quvvatlanadigan URL'ni bering. Platforma o'zi aniqlanadi.
STEP 03
medias[] ni o'qing
Eng yaxshi sifat uchun birinchi elementni oling yoki ext va size_mb bo'yicha saralang.
Birinchi so'rov
curl -s -G "https://api.saveapi.org/v1/download" \
  -H "Authorization: Bearer sk_live_xxxx" \
  --data-urlencode "url=https://www.tiktok.com/@zachking/video/6768504823336815877"

Rasmiy SDK'lar

Python va JavaScript/TypeScript uchun yengil klientlar: o'sha endpointlar va javob shakli, tiplar bilan; xato barqaror kodli SaveAPIError bo'lib keladi. Faqat qayta urinish yordam beradigan xatolar qayta yuboriladi — UPSTREAM_TIMEOUT, UPSTREAM_ERROR va Retry-After dan keyin RATE_LIMITED; shaxsiy, o'chirilgan yoki qo'llanmaydigan havola hech qachon.

Python 3.9+pip install saveapiPyPIGitHub
JavaScript / TypeScriptnpm install saveapinpmGitHub
Python
from saveapi import SaveAPI, SaveAPIError

api = SaveAPI("sk_live_...")  # or set SAVEAPI_KEY

try:
    post = api.download("https://www.tiktok.com/@zachking/video/6768504823336815877")
    print(post["medias"][0]["url"])
except SaveAPIError as error:
    print(error.code)  # PRIVATE_CONTENT, MEDIA_NOT_FOUND, ...
JavaScript
import { SaveAPI, SaveAPIError } from "saveapi";

const api = new SaveAPI({ apiKey: "sk_live_..." }); // or SAVEAPI_KEY

try {
  const post = await api.download("https://www.tiktok.com/@zachking/video/6768504823336815877");
  console.log(post.medias[0].url);
} catch (error) {
  if (error instanceof SaveAPIError) console.log(error.code);
}

MIT litsenziyasi, Telegram bot va faylni yuklab olish namunalari bilan: github.com/akhroruz/saveapi-sdk

Har so'rov qancha kredit

Har endpoint chaqirilishidan oldin narxini aytadi. Yuklab olish har muvaffaqiyatli natija uchun hisoblanadi; qolgan hammasi bepul.

Core API
Instagram post yoki reel1.5 kredit
Instagram story5 kredit
Instagram profil3 kredit
TikTok, Facebook, X (Twitter), Pinterest, Likee1.5 kredit
Snapchat, Threads, VK, 9GAG, Twitch1.5 kredit
RuTube3 kredit
Twitch VOD3 kredit
Manba rad etgan so'rov0.1 kredit
YouTube API
Video ma'lumoti2 kredit
Yuklash havolasi10 kredit
Audio havolasi (mp3, m4a)10 kredit
Manba rad etgan so'rov0.1 kredit
Akkaunt
Havolani aniqlashbepul
Platformalar ro'yxatibepul
Balans / statistikabepul

Ming kredit Pro tarifida $0.09, Mega tarifida $0.066 turadi — bitta oddiy yuklash sentning ulushiga tushadi.

Aniq summa har javobda credits.spent ichida, qolgan balans esa X-Credits-Remaining sarlavhasida keladi. O'z hisobingizni yuritish shart emas.

Xato kodlari

Har xato bir xil konvertda keladi. Qarorni code bo'yicha qiling, message bo'yicha emas — matn o'zgarishi mumkin, kodlar o'zgarmaydi.

StatusKodMa'nosi
400INVALID_URLurl parametri yo'q, buzuq yoki post havolasi emas.
400UNSUPPORTED_PLATFORMHavola biz qo'llab-quvvatlaydigan platformalarga tegishli emas. Avval /v1/detect ni chaqiring.
401MISSING_API_KEYKalit yuborilmadi. Authorization: Bearer yoki X-API-Key sarlavhasidan foydalaning.
401INVALID_API_KEYKalit buzuq yoki noma'lum.
403KEY_REVOKEDBu kalit kabinetda bekor qilingan. Yangisini yarating.
403KEY_EXPIREDKalitning muddati bor edi va u o'tib ketdi.
403ACCOUNT_SUSPENDEDKalit egasining hisobi to'xtatilgan. Qo'llab-quvvatlashga yozing.
403IP_NOT_ALLOWEDKalitda IP oq ro'yxati bor, so'rov esa boshqa manzildan keldi.
403PLATFORM_NOT_ALLOWEDTarifingizga bu platforma kirmaydi.
403PRIVATE_CONTENTPost yopiq. 0.1 kredit yechiladi.
400INVALID_FORMATSo'ralgan sifat noma'lum yoki bu videoda yo'q. /v1/youtube/info dagi formats[] ga qarang.
404MEDIA_NOT_FOUNDPost o'chirilgan, cheklangan yoki media yo'q. 0.1 kredit yechiladi.
410LINK_EXPIRED/v1/youtube/create bergan havola muddati o'tdi. O'sha chaqiruv bilan yangisini oling.
429RATE_LIMITEDBu daqiqada so'rov juda ko'p. Retry-After sarlavhasiga qarang.
429QUOTA_EXCEEDEDKredit balansingiz bo'sh. Kredit paket bilan sotib olinadi, oylik yangilanmaydi — balans har javobning X-Credits-Remaining sarlavhasida.
502UPSTREAM_ERRORManba platforma javob bermadi. Hisobdan yechilmaydi. Qayta urinsa bo'ladi.
504UPSTREAM_TIMEOUTManba juda uzoq javob berdi. Hisobdan yechilmaydi. Qayta urinsa bo'ladi.
500INTERNAL_ERRORBizning tomonda nimadir buzildi. Hisobdan yechilmaydi.
JSON
{
  "success": false,
  "error": {
    "code": "INVALID_URL",
    "message": "The url must be a public http(s) link to a post"
  }
}

Endpointlar

Chapdan endpoint tanlang. Har biri oddiy GET, kalit sarlavhada — status so'rash ham, job id ham yo'q.

GET

/v1/download

1.5 kreditdan
tavsif

Havolani to'g'ridan-to'g'ri media URL'lar, muallif va sarlavha metadatasiga aylantiradi.

So'rov parametrlari
urlmajburiystring
Ochiq havola. URL-kodlangan bo'lishi shart.
limit_mbixtiyoriynumber
Qaytariladigan media hajmi chegarasi. Faqat variantlari bor platformalarda ishlaydi.
full_metaixtiyoriyboolean
Instagram: layklar, izohlar, joylashuv, original audio va tasdiq belgisini ham qaytaradi (~0.3 s qo'shiladi). Boshqa platformalar to'liq metani baribir beradi — u yerda e'tiborsiz.
kod namunalari
cURL
curl -s -G "https://api.saveapi.org/v1/download" \
  -H "Authorization: Bearer sk_live_xxxx" \
  --data-urlencode "url=https://www.tiktok.com/@zachking/video/6768504823336815877"
javob namunasi
200 · application/json
{
  "success": true,
  "platform": "tiktok",
  "type": "video",
  "source_url": "https://www.tiktok.com/@zachking/video/6768504823336815877",
  "video_id": "6768504823336815877",

  "medias": [
    {
      "type": "video",
      "url": "https://v16m.tiktokcdn-us.com/...",
      "ext": "mp4",
      "quality": null,
      "width": 0,
      "height": 0,
      "size_mb": 4.19,
      "watermark": false
    }
  ],

  "music": {
    "type": "audio",
    "url": "https://v16-ies-music.tiktokcdn-us.com/...",
    "ext": "mp3",
    "quality": null,
    "width": 0,
    "height": 0,
    "size_mb": null,
    "watermark": null
  },
  "meta": {
    "title": "They rejected my application to Hogwarts but I still found a way to be a wizard. 🧹#illusion #magic #harrypotter",
    "text": "They rejected my application to Hogwarts but I still found a way to be a wizard. 🧹#illusion #magic #harrypotter",
    "author": "Zach King",
    "author_url": "https://www.tiktok.com/@zachking",
    "thumbnail": "https://p19-common-sign.tiktokcdn-us.com/...",
    "duration": 18,
    "views": 2382320428,
    "published_at": 1575915337,
    "username": "zachking",
    "author_avatar": "https://p16-common-sign.tiktokcdn-us.com/...",
    "author_verified": null,
    "likes": 63400000,
    "comments": 296700,
    "shares": 2400000,
    "saves": 1900000,
    "location": null,
    "region": "US",
    "music": {
      "title": "original sound",
      "author": "Zach King",
      "duration": 18,
      "cover": "https://p16-common-sign.tiktokcdn-us.com/...",
      "original": true
    }
  },
  "formats": [
    { "format": "nowm", "label": "No watermark",     "type": "video", "size_mb": 4.19, "exact": true, "watermark": false, "url": "https://v16m.tiktokcdn-us.com/..." },
    { "format": "hd",   "label": "HD, no watermark", "type": "video", "size_mb": 3.0,  "exact": true, "watermark": false, "url": "https://v16-notes.tiktokcdn-us.com/..." },
    { "format": "wm",   "label": "With watermark",   "type": "video", "size_mb": 4.25, "exact": true, "watermark": true,  "url": "https://v16m.tiktokcdn-us.com/..." },
    { "format": "mp3",  "label": "Audio (mp3)",      "type": "audio", "size_mb": null, "exact": false, "url": "https://v16-ies-music.tiktokcdn-us.com/..." }
  ],
  "recommended_format": "nowm",
  "credits": { "spent": 1.5, "remaining": 99988.5 }
}
API playground
API'ni brauzerdan to'g'ridan-to'g'ri sinab ko'ring — haqiqiy so'rov, haqiqiy kredit.
GET https://api.saveapi.org/v1/download?url=https%3A%2F%2Fwww.tiktok.com%2F%40zachking%2Fvideo%2F6768504823336815877
Yuborish uchun tepadagi panelga API kalitingizni qo'yingnarxi 1.5 kreditdan
yasalgan kod
cURL
curl -s -G "https://api.saveapi.org/v1/download" \
  -H "Authorization: Bearer sk_live_xxxx" \
  --data-urlencode "url=https://www.tiktok.com/@zachking/video/6768504823336815877"
MA'LUMOTNOMA

Avtorizatsiya

Har bir so'rov Authorization sarlavhasida maxfiy kalitni olib boradi. Kalitlar muddatsiz, lekin xohlagan vaqtda bekor qilib, yangilash mumkin.

HTTP
Authorization: Bearer sk_live_xxxxxxxxxxxx

Authorization sarlavhasini qo'ya olmaydigan mijozlar uchun X-API-Key: sk_live_… ham qabul qilinadi.

Kalit serverda tursin. Uni bilgan har kim kreditingizni sarflay oladi. Sirqib chiqsa kabinetdan bekor qiling va yangisini yarating — bekor qilish darhol kuchga kiradi.
MA'LUMOTNOMA

Javob

Har bir muvaffaqiyatli so'rov bir xil shaklda qaytadi. medias[] ichida to'g'ridan-to'g'ri fayllar turadi — doim kamida bitta, karuselda bir nechta. meta da manba bergan bo'lsa sarlavha, muallif, muqova va davomiylik keladi, credits esa so'rov qancha turgani va qancha qolganini ko'rsatadi.

JSON
{
  "success": true,
  "platform": "tiktok",
  "type": "video",
  "source_url": "https://www.tiktok.com/@zachking/video/6768504823336815877",
  "video_id": "6768504823336815877",

  "medias": [
    {
      "type": "video",
      "url": "https://v16m.tiktokcdn-us.com/...",
      "ext": "mp4",
      "quality": null,
      "width": 0,
      "height": 0,
      "size_mb": 4.19,
      "watermark": false
    }
  ],

  "music": {
    "type": "audio",
    "url": "https://v16-ies-music.tiktokcdn-us.com/...",
    "ext": "mp3",
    "quality": null,
    "width": 0,
    "height": 0,
    "size_mb": null,
    "watermark": null
  },
  "meta": {
    "title": "They rejected my application to Hogwarts but I still found a way to be a wizard. 🧹#illusion #magic #harrypotter",
    "text": "They rejected my application to Hogwarts but I still found a way to be a wizard. 🧹#illusion #magic #harrypotter",
    "author": "Zach King",
    "author_url": "https://www.tiktok.com/@zachking",
    "thumbnail": "https://p19-common-sign.tiktokcdn-us.com/...",
    "duration": 18,
    "views": 2382320428,
    "published_at": 1575915337,
    "username": "zachking",
    "author_avatar": "https://p16-common-sign.tiktokcdn-us.com/...",
    "author_verified": null,
    "likes": 63400000,
    "comments": 296700,
    "shares": 2400000,
    "saves": 1900000,
    "location": null,
    "region": "US",
    "music": {
      "title": "original sound",
      "author": "Zach King",
      "duration": 18,
      "cover": "https://p16-common-sign.tiktokcdn-us.com/...",
      "original": true
    }
  },
  "formats": [
    { "format": "nowm", "label": "No watermark",     "type": "video", "size_mb": 4.19, "exact": true, "watermark": false, "url": "https://v16m.tiktokcdn-us.com/..." },
    { "format": "hd",   "label": "HD, no watermark", "type": "video", "size_mb": 3.0,  "exact": true, "watermark": false, "url": "https://v16-notes.tiktokcdn-us.com/..." },
    { "format": "wm",   "label": "With watermark",   "type": "video", "size_mb": 4.25, "exact": true, "watermark": true,  "url": "https://v16m.tiktokcdn-us.com/..." },
    { "format": "mp3",  "label": "Audio (mp3)",      "type": "audio", "size_mb": null, "exact": false, "url": "https://v16-ies-music.tiktokcdn-us.com/..." }
  ],
  "recommended_format": "nowm",
  "credits": { "spent": 1.5, "remaining": 99988.5 }
}

Bitta kalit har doim ham bo'lavermaydi. formats[] faqat manbaning o'zi bir nechta tayyor variant beradigan joyda paydo bo'ladi — bugun bu VK, TikTok va Likee — va har bir yozuvda to'g'ridan-to'g'ri havola va aniq hajmi turadi, ya'ni kerakligini o'z tomoningizda filtrlaysiz. Na ikkinchi so'rov, na format parametri bor. Qolgan platformalarda bu kalit umuman bo'lmaydi va javob medias[] dir:

JSON
"formats": [
  { "format": "mp4_144",  "label": "144p",  "type": "video", "size_mb": 0.76,  "url": "https://..." },
  { "format": "mp4_480",  "label": "480p",  "type": "video", "size_mb": 7.9,   "url": "https://..." },
  { "format": "mp4_1080", "label": "1080p", "type": "video", "size_mb": 36.37, "url": "https://..." }
],
"recommended_format": "mp4_1080"

Javob sarlavhalari

Har javobda tarifingiz, qolgan balans va rate limit oynasi keladi. Kredit tugashidan oldin ogohlantirish uchun X-Credits-Remaining ni o'qing.

HTTP
X-Plan: pro
X-Credits-Remaining: 99988
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
MA'LUMOTNOMA

Rate limit

Chegara har kalit uchun, daqiqasiga. Har kalitning o'z chegarasi bor — bir servis boshqasidan issiqroq bo'lsa trafikni kalitlar orasida bo'ling.

TarifChegara
Free10 / daq
Pro60 / daq
Ultra250 / daq
Mega900 / daq

Chegaradan oshsangiz Retry-After sarlavhali 429 RATE_LIMITED keladi — shuncha soniya kutib qayta yuboring. Rad etilgan chaqiruvlar hisobdan yechilmaydi.

HTTP
HTTP/1.1 429 Too Many Requests
Retry-After: 23
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
MA'LUMOTNOMA

Kredit va to'lov

Muvaffaqiyatli yuklab olish 1.5 kredit turadi — Instagram story 5, Rutube 3, chunki ikkalasi bizga qimmatga tushadi. Qolgan endpointlar bepul. Kredit paket bo'lib sotib olinadi va sotib olingan kundan 30 kun amal qiladi. Ro'yxatdan o'tganda beriladigan bepul 1 000 kredit hech qachon kuymaydi.

EndpointNarxi
GET /v1/download1.5 kreditdan
GET /v1/{platform}1.5 kreditdan
GET /v1/youtube/info2 kredit
GET /v1/youtube/create10 kredit
GET /v1/instagram/profile3 kredit
GET /v1/detectbepul
GET /v1/platformsbepul
GET /v1/mebepul
GET /v1/usagebepul

Manba rad etgan havola — yopiq, o'chirilgan yoki ichida media yo'q — 0.1 kredit turadi: qidiruv bajarilgan, javob bo'sh chiqqan. Qolgan hammasi bepul: buzuq havola, notanish sayt, chegara, manbaning kechikishi va bizning xatomiz.

Narxlar

Har so'rov o'z narxida: yuklab olish 1.5 kredit, Instagram story 5, Rutube 3. Manba rad etgan havola — yopiq yoki o'chirilgan — 0.1 kredit. Pullik kreditlar sotib olingandan 30 kun amal qiladi.

TarifNarxKreditTezlikMuddat
Pro$9100,00060 / daq30 kun
Ultra$39500,000250 / daq30 kun
Mega$991,500,000900 / daq30 kun

To'liq narxlar va sotib olish →

Qotib qoldingizmi yoki nimadir yetishmayaptimi?