LiveImg API
Rasmlarni yuklang — biz ularni optimallashtiramiz, xavfsiz saqlaymiz va dunyoning istalgan nuqtasiga oqim sifatida yetkazamiz.
https://api.vebox.uz
Nima uchun LiveImg?
Har bir rasm uchun placeholder va HD versiya.
Fayllar bevosita xotira orqali uzatiladi.
Hajm baytlarda va kilobaytlarda qaytariladi.
Free, Pro va sozlanadigan Business.
Autentifikatsiya
Ro‘yxatdan o‘tish faqat Google yoki GitHub orqali.
| Qadam | Manzil |
|---|---|
| Google orqali kirish | GET /auth/google/login |
| GitHub orqali kirish | GET /auth/github/login |
| Kalitlarni boshqarish | GET · POST /v1/keys |
Barcha API so‘rovlari quyidagi sarlavha bilan yuboriladi:
X-API-Key: li_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxTez start
Misolni o‘z kalitingiz bilan almashtiring.
curl -X POST https://api.vebox.uz/v1/images \
-H "X-API-Key: $LI_KEY" \
-F "file=@photo.jpg"const form = new FormData();
form.append("file", input.files[0]);
const res = await fetch("https://api.vebox.uz/v1/images", {
method: "POST",
headers: { "X-API-Key": LI_KEY },
body: form
});
const { data } = await res.json();
// Lahzada ko'rinadi
img.src = data.image.urls.placeholder;
// HD fonda yuklanib, almashadi (ochiq rasm — kalit kerak emas)
const hd = new Image();
hd.onload = () => { img.src = hd.src; };
hd.src = data.image.urls.cdn;import requests
r = requests.post(
"https://api.vebox.uz/v1/images",
headers={"X-API-Key": LI_KEY},
files={"file": open("photo.jpg", "rb")},
)
img = r.json()["data"]["image"]
print(img["size_bytes"], "bytes", img["size_kb"], "KB")body := &bytes.Buffer{}
mw := multipart.NewWriter(body)
fw, _ := mw.CreateFormFile("file", "photo.jpg")
f, _ := os.Open("photo.jpg")
io.Copy(fw, f)
mw.Close()
req, _ := http.NewRequest("POST", "https://api.vebox.uz/v1/images", body)
req.Header.Set("Content-Type", mw.FormDataContentType())
req.Header.Set("X-API-Key", os.Getenv("LI_KEY"))
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()Rasm yuklash
multipart/form-data yoki xom bayt oqimi.
| Parametr | Turi | Majburiy | Tavsif |
|---|---|---|---|
file | file | Ha | Yuklanadigan rasm fayli |
filename | string | Yo‘q | Fayl nomi (xom oqim rejimida) |
visibility · mode | public · private | Yo‘q | Rasmning ochiq/yopiq rejimi — query parametri yoki form maydoni (ikala nom ham bir ma'noda). Standart: public |
Javob
{
"ok": true,
"data": {
"image": {
"id": "img_9f1c2ab7c4e80a3d5b6e7f10",
"filename": "photo.jpg",
"mime_type": "image/jpeg",
"size_bytes": 248391,
"size_kb": 242.57,
"width": 1920,
"height": 1280,
"checksum": "3f8a…c19",
"visibility": "public",
"created_at": "2026-09-04T10:22:31Z",
"urls": {
"cdn": "https://api.vebox.uz/cdn/img_9f1c…",
"preview": "https://api.vebox.uz/preview/img_9f1c…",
"original": "https://api.vebox.uz/i/img_9f1c…",
"hd": "https://api.vebox.uz/i/img_9f1c…?v=hd",
"thumbnail": "https://api.vebox.uz/i/img_9f1c…?v=thumb",
"placeholder": "data:image/jpeg;base64,/9j/4AAQ…"
}
},
"stored_hd_bytes": 248391,
"placeholder_bytes": 1874,
"processing_ms": 63
}
}Rasmni yetkazib berish
Rasmlar oqim ko‘rinishida uzatiladi.
| Parametr | Qiymat | Tavsif |
|---|---|---|
v | hd · thumb | Versiya. |
w | 1–4096 | Kenglikni o‘zgartirish. |
api_key | string | Kalitni so‘rov satrida uzatish. |
Javob sarlavhalari
X-Image-Size-Bytes: 248391
X-Image-Size-KB: 242.57
X-Delivery: instant-cache | stream | transform
ETag: "3f8a1c92b7e4d05a-hd"
Accept-Ranges: bytes
Cache-Control: public, max-age=31536000, immutableOchiq yetkazib berish (CDN)
Ochiq rasmlar kalitsiz, faqat ID bo‘yicha olinadi.
| Manzil | Nima qaytadi | Kesh |
|---|---|---|
GET /cdn/{id} | HD versiya, ?w= bilan o‘lcham | 1 yil, immutable |
GET /preview/{id} | Lahzali blur placeholder | 1 yil, immutable |
GET /i/{id} | Universal: ?v=hd|thumb&w= | 1 yil, immutable |
HTML’da ishlatish
<!-- blur-up: avval preview, keyin HD -->
<img
src="https://api.vebox.uz/preview/img_9f1c2ab7c4e80a3d"
data-src="https://api.vebox.uz/cdn/img_9f1c2ab7c4e80a3d"
onload="if(this.dataset.src){this.src=this.dataset.src;delete this.dataset.src}"
width="800" alt="">
<!-- oddiy holat -->
<img src="https://api.vebox.uz/cdn/img_9f1c2ab7c4e80a3d?w=640">Ko‘rinish (public / private)
Yuklashda visibility yoki mode parametri bilan belgilanadi (query yoki form maydoni).
# form maydoni
curl -X POST https://api.vebox.uz/v1/images \
-H "X-API-Key: $LI_KEY" \
-F "file=@photo.jpg" -F "visibility=private"
# yoki mode parametri (query) — xom oqimda faqat shu ishlaydi
curl -X POST "https://api.vebox.uz/v1/images?mode=private" \
-H "X-API-Key: $LI_KEY" \
-H "Content-Type: image/jpeg" \
--data-binary @photo.jpg
# keyinroq o‘zgartirish
curl -X PATCH https://api.vebox.uz/v1/images/img_9f1c2ab7c4e80a3d \
-H "X-API-Key: $LI_KEY" -H "Content-Type: application/json" \
-d '{"visibility":"public"}'Rasmlar ro‘yxati
Barcha rasmlar sahifalab qaytariladi.
{
"ok": true,
"data": [ /* PublicImage[] */ ],
"pagination": { "total": 128, "limit": 30, "offset": 0 }
}Metadata
Rasmning to‘liq ma’lumotlari.
Rasmni o‘chirish
Bu amalni qaytarib bo‘lmaydi.
Hisob holati
Joriy tarif va foydalanish statistikasi.
Tariflar
Tarifni istalgan vaqtda o‘zgartirishingiz mumkin.
Free
Kichik loyihalar uchun
- 120 so‘rov/daqiqa
- 25 MB har bir fayl
- 2 GB saqlash
- 2 000 oyiga fayl
- 1600px HD kenglik
Pro
O‘sayotgan mahsulotlar uchun
- 2 000 so‘rov/daqiqa
- 100 MB har bir fayl
- 200 GB saqlash
- 250 000 oyiga fayl
- 2560px HD kenglik
- Tezkor o‘lcham o‘zgartirish
- Analitika
Business
To‘liq moslashtiriladigan
- Individual limitlar
- Individual saqlash qoidalari
- 8192px HD kenglik
- Ustuvor navbat
- Analitika
Progressive delivery qanday ishlaydi
Har bir yuklamada ikkita mahsulot tayyorlanadi.
| Versiya | Taxminiy hajm | Manba | Kechikish |
|---|---|---|---|
?v=thumb | 1–5 KB | issiq kesh | ~1 ms |
?v=hd | asl o‘lchamda | bulut oqimi | tarmoqqa bog‘liq |
Namoyish
Ikki bosqichli yuklanishni ko‘ring.
Namoyishda har safar tasodifiy HD rasm tanlanadi (picsum.photos).
So‘rov cheklovi
Joriy holat sarlavhalarda qaytariladi.
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 587
Retry-After: 3 # faqat 429 javobidaXatolar
Barcha xatolar bir xil tuzilishda.
{
"ok": false,
"error": {
"code": "rate_limit_exceeded",
"message": "…",
"status": 429,
"timestamp": "2026-09-04T10:22:31Z"
}
}| Kod | HTTP | Ma’nosi |
|---|---|---|
missing_api_key | 401 | Sarlavha yuborilmagan |
invalid_api_key | 401 | Kalit yaroqsiz |
forbidden | 403 | Resurs sizga tegishli emas |
not_found | 404 | Rasm topilmadi |
storage_quota_exceeded | 402 | Kvota tugadi |
file_too_large | 413 | Fayl juda katta |
unsupported_format | 415 | Format qo‘llanmaydi |
rate_limit_exceeded | 429 | Chegara oshdi |
server_busy | 503 | Vaqtinchalik yuklama |
Playground
API’ni shu sahifadan sinab ko‘ring.