Videó generálás
Aszinkron videó API: modellek, indítás, állapot, letöltés, árazás.
Videót generálhatsz szövegből, egy kezdőképből, referenciaképekből vagy két kép közötti átmenetként. A generálás aszinkron: elindítod, kapsz egy azonosítót, és lekérdezed, amíg el nem készül (általában 1–5 perc). Ugyanez kattintással: Videó stúdió a vezérlőpulton.
Modellek
GET /v1/video/models: az elérhető modellek, módjuk (text, image, reference, transition), a választható hosszak, felbontások, képarányok, a hangtámogatás és a Zseton-ár. A modellek és az árak élő piaci adatból jönnek, ezért változhatnak: a beállításokat mindig innen olvasd ki.
Indítás
POST /v1/video/generations → 202 és a feladat.
curl https://api.zsetonai.hu/v1/video/generations \
-H "Authorization: Bearer $ZSETON_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo3-1-fast-text-to-video",
"prompt": "Lassú drónfelvétel a budapesti Duna-partról naplementében",
"duration_seconds": 8,
"resolution": "720p",
"aspect_ratio": "16:9",
"audio": true
}'| Mező | Kötelező | Leírás |
|---|---|---|
model | igen | A /v1/video/models egyik azonosítója. |
prompt | igen | A jelenet leírása, legfeljebb 2000 karakter. Angolul általában pontosabb az eredmény. |
duration_seconds | nem | Hossz másodpercben, a modell durations_seconds listájából. Ha kihagyod, a modell alapértelmezése. |
resolution | nem | Pl. 480p, 720p, 1080p, 4k, a modell listájából. |
aspect_ratio | nem | Pl. 16:9, 9:16, 1:1. |
audio | nem | Hangsáv (zene, effektek), ha a modell támogatja. |
image_url | képes módnál | Kezdőkép: https:// URL vagy data:image/…;base64, URI. |
end_image_url | átmenetnél | Zárókép. |
input_images | referenciánál | Legfeljebb 8 kép: [{"url": "…", "role": "reference"}]; szerep: start, end vagy reference. |
Állapot
GET /v1/video/generations/{id}. A status értékei: queued → submitted → running → succeeded | failed | canceled | expired. Amíg fut, 202-t ad, a végén 200-at. 5–10 másodpercenként érdemes lekérdezni.
Kész videónál a results[].url a letöltési link, mellette a cost a ténylegesen levont összeg (USD).
Letöltés
GET /v1/video/generations/{id}/content/0 ugyanazzal a kulccsal; a ?download paraméterrel csatolmányként jön. A kész videót kb. 3 óráig tároljuk (download_expires_at), utána nem tölthető le, ezért mentsd le időben.
Megszakítás
DELETE /v1/video/generations/{id}. A megszakítás nem garantált: ha a videó közben elkészült, sikeresként zárul (és fizetős).
Példa: indítás, várakozás, letöltés
import os, time, requests
BASE = "https://api.zsetonai.hu/v1"
H = {"Authorization": f"Bearer {os.environ['ZSETON_API_KEY']}"}
job = requests.post(f"{BASE}/video/generations", headers=H, json={
"model": "kling-v3-pro-image-to-video",
"prompt": "a kamera lassan ráközelít, a hajó elindul",
"image_url": "https://example.com/kezdokep.jpg",
"duration_seconds": 5,
}).json()
while True:
job = requests.get(f"{BASE}/video/generations/{job['id']}", headers=H).json()
if job["status"] in ("succeeded", "failed", "canceled", "expired"):
break
time.sleep(5)
if job["status"] == "succeeded":
video = requests.get(job["results"][0]["url"], headers=H)
open("video.mp4", "wb").write(video.content)
print("kész, ár:", job["cost"], "USD")
else:
print("nem sikerült:", job["error"])Árazás
- Az ár modellenként másodpercre vagy videóra szól. A becslés a
/v1/video/modelslistában van, a pontos összeg a kész videócostmezőjében. - Indításkor a lehetséges legnagyobb költséget zároljuk az egyenlegedből (
reserved). A végén csak a tényleges árat vonjuk le, a különbözet azonnal visszajár. - Sikertelen, megszakított vagy lejárt videóért nem fizetsz.
- Ha a zároláshoz nincs elég egyenleg, a kérés
402 insufficient_balance, és a hibaüzenet megmondja, mennyi kell.
Hibakódok
| HTTP | code | Jelentés |
|---|---|---|
| 400 | invalid_request | Hiányzó model/prompt, nem támogatott hossz vagy felbontás, vagy képes módban hiányzik a kép. |
| 402 | insufficient_balance | Nincs elég egyenleg a zároláshoz. |
| 404 | model_not_available | A modell most nem érhető el ellenőrzött szolgáltatónál. |
| 404 | not_found / not_ready | Nincs ilyen videó, még nem kész, vagy lejárt a letöltési idő. |