Videot saab UFOLOADi panna ilma juhtpaneeli kordagi avamata. REST API võtab üleslaadimisi vastu HTTPS-i kaudu, server võib faili sinu eest lingist alla laadida ning sama konto on kättesaadav WebDAVi ja FTP kaudu tööriistadele, mis neid protokolle juba räägivad. See juhend käib kõik viis teed läbi töötavate käskudega, selgitab, mida server vastab, ja näitab, kuidas kodeerimise lõppu oodata. Allpool toodud lõpp-punkte on kontrollitud avaliku OpenAPI spetsifikatsiooni järgi; täielik teatmik on API dokumentatsioonis.
Loo API võti
Loo võti oma juhtpaneeli jaotises Arendajad. Iga päring kannab seda bearer-tõendina päises Authorization. Võtit näidatakse ainult üks kord selle loomisel, seega salvesta see keskkonnamuutujasse või saladuste haldurisse ja tühista see juhtpaneelilt, kui see lekib. Sama võti toimib WebDAVi ja FTP paroolina, kasutajanimeks on sinu konto e-posti aadress. Kui sul veel kontot pole, loo tasuta konto; hinnaleht loetleb sinu paketile kehtiva failisuuruse piirangu ning salvestus- ja liikluskvoodid.
export UFOLOAD_API_KEY="ufo_..."Üleslaadimine curl-iga
Lihtsaim üleslaadimine saadab faili päringu toorkehana ja paneb selle nime päisesse X-File-Name. Kui nimes on tühikuid või mitte-ASCII-märke, saada see protsendikodeeritult (UTF-8). Vaikimisi satub fail juurkausta; teise valimiseks lisa ?folder_id= või päis X-Folder-Id.
curl -X POST "https://ufoload.com/api/v1/files?folder_id=root" \
-H "Authorization: Bearer $UFOLOAD_API_KEY" \
-H "X-File-Name: holiday-2026.mp4" \
-H "Content-Type: video/mp4" \
--data-binary @holiday-2026.mp4Toimib ka multipart-vorm. Fail läheb välja file ja kausta saab anda vormiväljana folder_id:
curl -X POST "https://ufoload.com/api/v1/files" \
-H "Authorization: Bearer $UFOLOAD_API_KEY" \
-F "file=@holiday-2026.mp4"Edukas üleslaadimine vastab koodiga 201 ja JSON-kehaga, mis sisaldab failiobjekti. Kõige sagedamini kasutad välju id, public_id (lühikood, mis läheb mängija aadressidesse), status, duration_ms ja max_quality. Server ei kasuta lisaruumi sisu jaoks, mis tal juba on: kui laadid samad baidid uuesti üles, vastab see koodiga 200, olemasoleva failiga ja väärtusega "duplicate": true, sobitades faile nende SHA-256 räsi järgi.
| Olek | Tähendus |
|---|---|
201 | Fail võeti vastu ja pandi töötlemisjärjekorda |
200 | Sama sisu on juba sinu kogus; duplicate on true |
401 | Võti puudub või on vigane |
404 | Sihtkausta pole olemas |
409 | Salvestusruumi pole piisavalt |
413 | Fail on suurem, kui sinu pakett lubab |
429 | Liiga palju päringuid; oota ja proovi uuesti |
Suurtele üleslaadimistele ei kehti tavaliste API-päringute lühikesed ajalõpud. Server võtab keha vastu nii kaua, kui see saabub, nii et aeglane ühendus ei katkesta mitmegigabaidist üleslaadimist, kuigi liiga pika pausi plokkide vahel võib pöördpuhverserver siiski katkestada.
Oota, kuni video on valmis
Üleslaadimine on alles esimene pool. Pärast seda pannakse fail järjekorda ja kodeeritakse adaptiivseks HLS-redeliks (vaata, kuidas redel ehitatakse). Selle status liigub läbi olekute uploading, queued ja processing ning lõpeb olekuga ready või failed; ebaõnnestunud failil on teade error. Küsi faili olekut iga paari sekundi järel, mitte kunagi tihedas tsüklis: API-l on päringupiirang ja see vastab koodiga 429.
curl "https://ufoload.com/api/v1/files/FILE_ID" \
-H "Authorization: Bearer $UFOLOAD_API_KEY"Vastusel on kaks osa: file metaandmetega ja links allkirjastatud aadressidega põhiesitusloendile (playback), kaanepildile (poster), hõljumiseelvaate spraidile (sprite), igale versioonile ning expires_at. Kui vajad teistsugust kehtivusaega, väljastab POST /files/{id}/links linke kehtivusega 60 sekundist 30 päevani, soovi korral seotuna IP-aadressi või küpsisega.
Python
Teegi requests puhul voogedastatakse avatud failiobjekti edastamisel see kettalt, nii et mälukasutus jääb ühtlaseks ka suurte videote puhul. Allolev funktsioon laadib faili üles ja ootab seejärel tulemust.
import os
import time
import urllib.parse
import requests
BASE = "https://ufoload.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['UFOLOAD_API_KEY']}"}
def upload(path, folder_id="root"):
name = urllib.parse.quote(os.path.basename(path))
with open(path, "rb") as f:
r = requests.post(
f"{BASE}/files",
params={"folder_id": folder_id},
data=f,
headers={**HEADERS, "X-File-Name": name, "Content-Type": "application/octet-stream"},
)
r.raise_for_status()
return r.json()["file"]
def wait_ready(file_id, timeout=3600):
deadline = time.time() + timeout
while time.time() < deadline:
r = requests.get(f"{BASE}/files/{file_id}", headers=HEADERS)
r.raise_for_status()
data = r.json()
status = data["file"]["status"]
if status == "ready":
return data
if status == "failed":
raise RuntimeError(data["file"].get("error") or "encoding failed")
time.sleep(5)
raise TimeoutError("video is still processing")
file = upload("holiday-2026.mp4")
data = wait_ready(file["id"])
print("embed:", f"https://iframe.andromedans.live/e/{file['public_id']}")
print("playlist:", data["links"]["playback"])Node.js
Node.js 18 ja uuemas on fetch sisse ehitatud, nii et sõltuvusi pole vaja. See versioon loeb faili mällu, mis sobib klippide ja lühikeste videote puhul; mitmegigabaidiste failide jaoks eelista curl-i, WebDAVi või FTP-d, mis voogedastavad kettalt.
import { readFile } from 'node:fs/promises'
import { basename } from 'node:path'
import { setTimeout as sleep } from 'node:timers/promises'
const BASE = 'https://ufoload.com/api/v1'
const headers = { Authorization: `Bearer ${process.env.UFOLOAD_API_KEY}` }
async function upload(path) {
const res = await fetch(`${BASE}/files?folder_id=root`, {
method: 'POST',
headers: { ...headers, 'X-File-Name': encodeURIComponent(basename(path)), 'Content-Type': 'application/octet-stream' },
body: await readFile(path),
})
if (!res.ok) throw new Error(`upload failed: ${res.status}`)
return (await res.json()).file
}
async function waitReady(id) {
for (;;) {
const res = await fetch(`${BASE}/files/${id}`, { headers })
if (!res.ok) throw new Error(`status check failed: ${res.status}`)
const data = await res.json()
if (data.file.status === 'ready') return data
if (data.file.status === 'failed') throw new Error(data.file.error || 'encoding failed')
await sleep(5000)
}
}
const file = await upload('holiday-2026.mp4')
const data = await waitReady(file.id)
console.log('embed:', `https://iframe.andromedans.live/e/${file.public_id}`)
console.log('playlist:', data.links.playback)Import URL-i kaudu
Kui video on juba otselingiga võrgus, lase serveril see alla laadida, selle asemel et tõmmata see oma arvutisse ja uuesti üles lükata. Päring tagastab kohe koodi 202 koos impordiülesandega; server hangib faili ja paneb selle seejärel kodeerimisjärjekorda. Lingid sisevõrkudesse, loopback- ja teenusaadresside vahemikesse lükatakse tagasi, korraga võib olla kuni kümme aktiivset importi ning GET /files/import näitab edenemist.
curl -X POST "https://ufoload.com/api/v1/files/import" \
-H "Authorization: Bearer $UFOLOAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/video.mp4", "name": "video.mp4"}'WebDAV ja FTP
Hulgiülekannete ja API-t kutsuda mitte oskavate tööriistade jaoks on sama kogu saadaval WebDAVi ja FTP kaudu. Kasutajanimi on sinu konto e-posti aadress ja parool on API võti. Mõlemad voogedastavad kettalt ning on väga suurte failide jaoks kõige töökindlam valik.
curl -u "you@example.com:$UFOLOAD_API_KEY" https://ufoload.com/dav/
curl -u "you@example.com:$UFOLOAD_API_KEY" -T holiday-2026.mp4 https://ufoload.com/dav/holiday-2026.mp4curl -u "you@example.com:$UFOLOAD_API_KEY" ftp://ftp.ufoload.com/
curl -u "you@example.com:$UFOLOAD_API_KEY" --ftp-ssl -T holiday-2026.mp4 ftp://ftp.ufoload.com/Kasuta krüpteeritud variante alati, kui su klient neid toetab, sest API võti on parool. Neid samu andmeid saab kasutada iga klient, mis räägib WebDAVi või FTPS-i, failihalduritest sünkroonimistööriistadeni. Nii kopeeritud failid ilmuvad sinu kogusse ja kodeeritakse nagu iga teine üleslaadimine.
Millist teed valida
| Tee | Sobib kõige paremini | Millele tähelepanu pöörata |
|---|---|---|
| Üleslaadimine API kaudu | Rakendused ja taustsüsteemid, mis laadivad üles kasutajate nimel | Mälukasutus, kui klient loeb kogu faili esmalt sisse |
| Import URL-i kaudu | Failid, millel on juba avalik otselink | Ainult otsesed http(s) lingid; piirang kümme aktiivset importi |
| WebDAV | Suured failid, kogu ühendamine kettana | Kasuta mandaatidena oma e-posti aadressi ja API võtit |
| FTP / FTPS | Olemasolevad tööriistad ja skriptid, hulgiülekanne | Kasuta selgesõnalise TLS-i valikut |
Kasuta videot
Kui olek on ready, on mängija aadress https://iframe.andromedans.live/e/, millele järgneb public_id – just see läheb iframe'i (toimib ka pikk id, mis suunatakse lühikesele aadressile); manustamise juhend näitab märgistust ja hls.js-i alternatiivi. Saad piirata, kus video mängib, domeeni- ja riigireeglitega ning reklaamide saadavuse korral lubada need, et vaatamistelt teenida. Hoia võti brauseri koodist eemal, vaheta see, kui inimesed su meeskonnast lahkuvad, ja pea meeles, et API on saadaval igas paketis, nii et võid ehitamist alustada juba täna.
Laadi video üles ning saad mõne minutiga HLS-mängija ja API võtme. Pakettide piirangud on toodud hinnalehel.