APIUploadWebDAV

Videote üleslaadimine API kaudu: curl, Python, Node.js, WebDAV ja FTP

Laadi videoid üles ja impordi neid UFOLOADi REST API kaudu curl-i, Pythoni ja Node.js-iga, oota kodeerimist ning kasuta suurte failide jaoks WebDAVi või FTP-d.

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.

bash
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.

Toorkeha · bash
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.mp4

Toimib ka multipart-vorm. Fail läheb välja file ja kausta saab anda vormiväljana folder_id:

Multipart-vorm · bash
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.

OlekTähendus
201Fail võeti vastu ja pandi töötlemisjärjekorda
200Sama sisu on juba sinu kogus; duplicate on true
401Võti puudub või on vigane
404Sihtkausta pole olemas
409Salvestusruumi pole piisavalt
413Fail on suurem, kui sinu pakett lubab
429Liiga palju päringuid; oota ja proovi uuesti
Nõuanne

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.

bash
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.

python
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.

js
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.

bash
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.

WebDAV üle HTTPS-i, port 443 · bash
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.mp4
FTP selgesõnalise TLS-iga, port 21 · bash
curl -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

TeeSobib kõige pareminiMillele tähelepanu pöörata
Üleslaadimine API kauduRakendused ja taustsüsteemid, mis laadivad üles kasutajate nimelMälukasutus, kui klient loeb kogu faili esmalt sisse
Import URL-i kauduFailid, millel on juba avalik otselinkAinult otsesed http(s) lingid; piirang kümme aktiivset importi
WebDAVSuured failid, kogu ühendamine kettanaKasuta mandaatidena oma e-posti aadressi ja API võtit
FTP / FTPSOlemasolevad tööriistad ja skriptid, hulgiülekanneKasuta 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.

Proovi tasuta kontoga

Laadi video üles ning saad mõne minutiga HLS-mängija ja API võtme. Pakettide piirangud on toodud hinnalehel.