happyhorse-1.1-r2v
Model pro generování videa z referenčních obrázků a textového scénáře. Pomáhá zachovat vzhled postav, předměty a vizuální styl v nové scéně.
- Ailoot · Tvorba videa
POST /v1/videos/generationshappyhorse-1.1-r2v - Ailoot · Tvorba videa
POST /v1/videos/generationshappyhorse-r2v - Ailoot · Tvorba videa
POST /v1/videos/generationshappyhorse-r2v-latest
O modelu
Tento popis zahrnuje schopnosti modelu. Vstupy, výstupy a možnosti dostupné v Ailoot jsou uvedeny níže pro vybranou metodu.
HappyHorse-1.1-R2V vytváří novou videoscénu z referenčních obrázků a textového zadání. Alibaba model zaměřuje na zachování rozpoznatelných postav, objektů a vizuálního stylu při generování pohybu. Referenční obrázky určují obsah a vzhled scény, zatímco text popisuje, jak mají tyto prvky vzájemně působit.
Role vizuálních předloh
Lze použít jeden až devět obrázků. Mohou určovat postavu, předmět, prostředí nebo výtvarné pojetí. V popisu lze uvést číslo referenčního obrázku a konkrétní objekt na něm, aby se vizuální materiál propojil s potřebnou částí děje. To je zvlášť užitečné, když je třeba spojit prvky několika obrázků do jedné kompozice.
Na rozdíl od režimu s počátečním snímkem zde referenční obrázky slouží jako podklad pro obsah nové scény. Textové zadání je povinné: propojuje vzhled objektů s dějem, pohybem kamery a celkovou inscenací. Výrobce zdůrazňuje vizuální konzistenci a filmový pohyb; výsledkem zůstává generování, nikoli sestřih původních obrázků.
Přijímány jsou JPEG, JPG, PNG a WEBP o velikosti do 20 MB každý. Kratší strana obrázku musí mít alespoň 400 pixelů; doporučeny jsou materiály v rozlišení 720P nebo vyšším. Vstup tohoto režimu tvoří právě obrázky a text.
Délka, formát obrazu a zvuk
Výsledek se ukládá jako MP4 se snímkovou frekvencí 24 snímků za sekundu. Délka se zadává celým číslem od 3 do 15 sekund. Lze zvolit rozlišení 480P, 720P nebo 1080P; podporováno je generování zvukového doprovodu.
Dostupné jsou vodorovné, svislé a čtvercové formáty obrazu: 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 a 21:9. Volba formátu pomáhá předem určit kompoziční prostor nové scény.
Text může být v libovolném jazyce. Limit činí 5000 nečínských nebo 2500 čínských znaků a přebytečná část se zahodí. Nejdůležitější role referenčních obrázků, děj a pohyb se musí vejít do tohoto rozsahu. Počáteční hodnota náhodného semínka může ovlivňovat podobnost variant, ale nezaručuje přesné zopakování jednoho videa.
Ailoot · Tvorba videa POST /v1/videos/generations happyhorse-1.1-r2v
happyhorse-1.1-r2vhappyhorse-1.1-r2vhappyhorse-r2vhappyhorse-r2v-latest
Úvod
Model pro generování videa z referenčních obrázků a textového scénáře. Pomáhá zachovat vzhled postav, předměty a vizuální styl v nové scéně.
- Přijímané vstupy
- Text · Obrázky
- Výsledky
- Video
Dostupné v Ailoot · vstupy a metody
Ailoot · Tvorba videa POST /v1/videos/generations
- Vstup
text,image- Výstup
video- Výstupní formát
- mp4
| Pole | Typ | Požadavek | Hodnoty a limity | Výchozí |
|---|---|---|---|---|
Polemodel | Typstring | PožadavekPovinné | Hodnoty a limity happyhorse-1.1-r2v | Výchozí— |
Poleprompt | Typstring | PožadavekPovinné | Hodnoty a limity Minimální délka: 1 | Výchozí— |
Poleduration | Typinteger | PožadavekVolitelné | Hodnoty a limity Minimum: 3 Maximum: 15 Jednotka: sekundy | Výchozí5 |
Poleresolution | Typstring | PožadavekVolitelné | Hodnoty a limity 480P, 720P, 1080P | Výchozí720P |
Poleratio | Typstring | PožadavekVolitelné | Hodnoty a limity 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Výchozí16:9 |
Poleimage_urls | Typhttps_url|data_image_url[] | PožadavekPovinné | Hodnoty a limity Minimální počet položek: 1 Maximální počet položek: 9 Maximální počet dekódovaných bajtů: 20 971 520 Typy MIME: image/jpeg, image/png, image/webp | Výchozí— |
Kombinace vstupních materiálů
reference_images_to_video · Povinné: prompt, image_urls
Parametry a životní cyklus metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, prompt, image_urls |
Parametrmaterial_types | Kontrakttext, image |
Parametroptional | Kontraktduration, resolution, ratio |
Parametrduration_integer_range | Kontrakt3, 15 |
Parametrdefault_duration | Kontrakt5 |
Parametrresolution | Kontrakt480P, 720P, 1080P |
Parametrdefault_resolution | Kontrakt720P |
Parametrratio | Kontrakt16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
Parametrratio_must_omit | Kontraktfalse |
Parametrimage_urls | Kontrakt{"min_count":1,"max_count":9,"schemes":["https","rastrová data v base64"],"max_data_image_bytes":20971520} |
Životní cyklus: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Struktury metod a ID jsou přesné; schopnosti dodavatele jsou oddělené od připuštění požadavku.
Tarify
Sazby metod Ailoot
POST /v1/videos/generations- Výstup
- 0,18 US$ za sekundu v 1080p
- Výstup
- 0,07 US$ za sekundu v 480p
- Výstup
- 0,14 US$ za sekundu v 720p
Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →
Příklady požadavků
Ailoot · Tvorba videa
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-r2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
z=urlsplit(u) if isinstance(u,str) else None
if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["ratio"]="16:9"
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT
Přijímání a ukládání výsledků
Ailoot · Tvorba videa
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Ověřit stav úlohy
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
for x in r.get("data",[]):print(x)
PY_STATUS
Uložte všechny dokončené soubory
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
u=urljoin("https://api.ailoot.ai",x)
z=urlsplit(u)
if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
index=$((index + 1))
done < asset-urls.txt
Další načtení obsahu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Uchovejte všechny dokončené výsledky
Uložte každé dokončené video či vrácený soubor; stáhněte obsah každé skutečně vrácené URL souboru.
Zachovejte každou vrácenou datovou položku a index výstupu. content_url označuje pouze první; načtěte každou skutečnou cestu obsahu či soubor. GET obsahu bez indexu nepředstavuje všechny výstupy.
Pokud je nutné ověřit původní odpověď
Načítejte existující původní úlohu; odeslání s neznámým výsledkem nikdy neopakujte.
Pole odpovědi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Poleobject | Typstring |
Polemodel | Typstring |
Polestatus | Typstring |
Polecontent_url | Typsigned URL |
Poledata[] | Typsigned URL |
Poleusage | Typobject |
Poleresult_pending_check | Typboolean |
Chyby a další kroky
| Odpověď | Podmínka | Další krok |
|---|---|---|
Odpověď400 · invalid_request_error | PodmínkaNeplatná povinná pole, reprezentace podkladů nebo hodnota parametru | Další krokPřed novým požadavkem na vytvoření opravte uvedená pole. |
Odpověď409 · video_not_ready | PodmínkaObsah původního výsledku zatím není dostupný | Další krokDotazujte se na původní vrácené ID a dodržujte Retry-After. |
Odpověďserver_error | PodmínkaVrácená odpověď uvádí, že operaci nebo výsledek je třeba zkontrolovat | Další krokUchovejte původní vrácené ID operace nebo úlohy, hlavičky požadavku a odpověď; pokračujte v podporovaném načítání údajů o této původní operaci. Požadavek na vytvoření znovu neodesílejte. |
Aliasy
Aliasy modelu
Ailoot happyhorse-1.1-r2v, happyhorse-r2v, happyhorse-r2v-latest
Aliasy cest metod
Použijte cesty metod uvedené výše.
Související ID modelů
Ailoot · Tvorba videa POST /v1/videos/generations happyhorse-r2v
happyhorse-r2vhappyhorse-1.1-r2vhappyhorse-r2vhappyhorse-r2v-latest
Úvod
Model pro generování videa z referenčních obrázků a textového scénáře. Pomáhá zachovat vzhled postav, předměty a vizuální styl v nové scéně.
- Přijímané vstupy
- Text · Obrázky
- Výsledky
- Video
Dostupné v Ailoot · vstupy a metody
Ailoot · Tvorba videa POST /v1/videos/generations
- Vstup
text,image- Výstup
video- Výstupní formát
- mp4
| Pole | Typ | Požadavek | Hodnoty a limity | Výchozí |
|---|---|---|---|---|
Polemodel | Typstring | PožadavekPovinné | Hodnoty a limity happyhorse-r2v | Výchozí— |
Poleprompt | Typstring | PožadavekPovinné | Hodnoty a limity Minimální délka: 1 | Výchozí— |
Poleduration | Typinteger | PožadavekVolitelné | Hodnoty a limity Minimum: 3 Maximum: 15 Jednotka: sekundy | Výchozí5 |
Poleresolution | Typstring | PožadavekVolitelné | Hodnoty a limity 480P, 720P, 1080P | Výchozí720P |
Poleratio | Typstring | PožadavekVolitelné | Hodnoty a limity 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Výchozí16:9 |
Poleimage_urls | Typhttps_url|data_image_url[] | PožadavekPovinné | Hodnoty a limity Minimální počet položek: 1 Maximální počet položek: 9 Maximální počet dekódovaných bajtů: 20 971 520 Typy MIME: image/jpeg, image/png, image/webp | Výchozí— |
Kombinace vstupních materiálů
reference_images_to_video · Povinné: prompt, image_urls
Parametry a životní cyklus metody
| Parametr | Kontrakt |
|---|---|
Parametrmaterial_types | Kontrakttext, image |
Parametrrequired | Kontraktnull |
Parametroptional_controls | Kontraktnull |
Životní cyklus: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Struktury metod a ID jsou přesné; schopnosti dodavatele jsou oddělené od připuštění požadavku.
Tarify
Sazby metod Ailoot
POST /v1/videos/generations- Výstup
- 0,18 US$ za sekundu v 1080p
- Výstup
- 0,07 US$ za sekundu v 480p
- Výstup
- 0,14 US$ za sekundu v 720p
Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →
Příklady požadavků
Ailoot · Tvorba videa
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-r2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
z=urlsplit(u) if isinstance(u,str) else None
if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["ratio"]="16:9"
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT
Přijímání a ukládání výsledků
Ailoot · Tvorba videa
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Ověřit stav úlohy
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
for x in r.get("data",[]):print(x)
PY_STATUS
Uložte všechny dokončené soubory
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
u=urljoin("https://api.ailoot.ai",x)
z=urlsplit(u)
if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
index=$((index + 1))
done < asset-urls.txt
Další načtení obsahu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Uchovejte všechny dokončené výsledky
Uložte každé dokončené video či vrácený soubor; stáhněte obsah každé skutečně vrácené URL souboru.
Zachovejte každou vrácenou datovou položku a index výstupu. content_url označuje pouze první; načtěte každou skutečnou cestu obsahu či soubor. GET obsahu bez indexu nepředstavuje všechny výstupy.
Pokud je nutné ověřit původní odpověď
Načítejte existující původní úlohu; odeslání s neznámým výsledkem nikdy neopakujte.
Pole odpovědi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Poleobject | Typstring |
Polemodel | Typstring |
Polestatus | Typstring |
Polecontent_url | Typsigned URL |
Poledata[] | Typsigned URL |
Poleusage | Typobject |
Poleresult_pending_check | Typboolean |
Chyby a další kroky
| Odpověď | Podmínka | Další krok |
|---|---|---|
Odpověď400 · invalid_request_error | PodmínkaNeplatná povinná pole, reprezentace podkladů nebo hodnota parametru | Další krokPřed novým požadavkem na vytvoření opravte uvedená pole. |
Odpověď409 · video_not_ready | PodmínkaObsah původního výsledku zatím není dostupný | Další krokDotazujte se na původní vrácené ID a dodržujte Retry-After. |
Odpověďserver_error | PodmínkaVrácená odpověď uvádí, že operaci nebo výsledek je třeba zkontrolovat | Další krokUchovejte původní vrácené ID operace nebo úlohy, hlavičky požadavku a odpověď; pokračujte v podporovaném načítání údajů o této původní operaci. Požadavek na vytvoření znovu neodesílejte. |
Aliasy
Aliasy modelu
Ailoot happyhorse-1.1-r2v, happyhorse-r2v, happyhorse-r2v-latest
Aliasy cest metod
Použijte cesty metod uvedené výše.
Související ID modelů
Ailoot · Tvorba videa POST /v1/videos/generations happyhorse-r2v-latest
happyhorse-r2v-latesthappyhorse-1.1-r2vhappyhorse-r2vhappyhorse-r2v-latest
Úvod
Model pro generování videa z referenčních obrázků a textového scénáře. Pomáhá zachovat vzhled postav, předměty a vizuální styl v nové scéně.
- Přijímané vstupy
- Text · Obrázky
- Výsledky
- Video
Dostupné v Ailoot · vstupy a metody
Ailoot · Tvorba videa POST /v1/videos/generations
- Vstup
text,image- Výstup
video- Výstupní formát
- mp4
| Pole | Typ | Požadavek | Hodnoty a limity | Výchozí |
|---|---|---|---|---|
Polemodel | Typstring | PožadavekPovinné | Hodnoty a limity happyhorse-r2v-latest | Výchozí— |
Poleprompt | Typstring | PožadavekPovinné | Hodnoty a limity Minimální délka: 1 | Výchozí— |
Poleduration | Typinteger | PožadavekVolitelné | Hodnoty a limity Minimum: 3 Maximum: 15 Jednotka: sekundy | Výchozí5 |
Poleresolution | Typstring | PožadavekVolitelné | Hodnoty a limity 480P, 720P, 1080P | Výchozí720P |
Poleratio | Typstring | PožadavekVolitelné | Hodnoty a limity 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Výchozí16:9 |
Poleimage_urls | Typhttps_url|data_image_url[] | PožadavekPovinné | Hodnoty a limity Minimální počet položek: 1 Maximální počet položek: 9 Maximální počet dekódovaných bajtů: 20 971 520 Typy MIME: image/jpeg, image/png, image/webp | Výchozí— |
Kombinace vstupních materiálů
reference_images_to_video · Povinné: prompt, image_urls
Parametry a životní cyklus metody
| Parametr | Kontrakt |
|---|---|
Parametrmaterial_types | Kontrakttext, image |
Parametrrequired | Kontraktnull |
Parametroptional_controls | Kontraktnull |
Životní cyklus: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Struktury metod a ID jsou přesné; schopnosti dodavatele jsou oddělené od připuštění požadavku.
Tarify
Sazby metod Ailoot
POST /v1/videos/generations- Výstup
- 0,18 US$ za sekundu v 1080p
- Výstup
- 0,07 US$ za sekundu v 480p
- Výstup
- 0,14 US$ za sekundu v 720p
Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →
Příklady požadavků
Ailoot · Tvorba videa
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-r2v-latest", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
z=urlsplit(u) if isinstance(u,str) else None
if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["ratio"]="16:9"
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT
Přijímání a ukládání výsledků
Ailoot · Tvorba videa
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Ověřit stav úlohy
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
for x in r.get("data",[]):print(x)
PY_STATUS
Uložte všechny dokončené soubory
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
u=urljoin("https://api.ailoot.ai",x)
z=urlsplit(u)
if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
index=$((index + 1))
done < asset-urls.txt
Další načtení obsahu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Uchovejte všechny dokončené výsledky
Uložte každé dokončené video či vrácený soubor; stáhněte obsah každé skutečně vrácené URL souboru.
Zachovejte každou vrácenou datovou položku a index výstupu. content_url označuje pouze první; načtěte každou skutečnou cestu obsahu či soubor. GET obsahu bez indexu nepředstavuje všechny výstupy.
Pokud je nutné ověřit původní odpověď
Načítejte existující původní úlohu; odeslání s neznámým výsledkem nikdy neopakujte.
Pole odpovědi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Poleobject | Typstring |
Polemodel | Typstring |
Polestatus | Typstring |
Polecontent_url | Typsigned URL |
Poledata[] | Typsigned URL |
Poleusage | Typobject |
Poleresult_pending_check | Typboolean |
Chyby a další kroky
| Odpověď | Podmínka | Další krok |
|---|---|---|
Odpověď400 · invalid_request_error | PodmínkaNeplatná povinná pole, reprezentace podkladů nebo hodnota parametru | Další krokPřed novým požadavkem na vytvoření opravte uvedená pole. |
Odpověď409 · video_not_ready | PodmínkaObsah původního výsledku zatím není dostupný | Další krokDotazujte se na původní vrácené ID a dodržujte Retry-After. |
Odpověďserver_error | PodmínkaVrácená odpověď uvádí, že operaci nebo výsledek je třeba zkontrolovat | Další krokUchovejte původní vrácené ID operace nebo úlohy, hlavičky požadavku a odpověď; pokračujte v podporovaném načítání údajů o této původní operaci. Požadavek na vytvoření znovu neodesílejte. |
Aliasy
Aliasy modelu
Ailoot happyhorse-1.1-r2v, happyhorse-r2v, happyhorse-r2v-latest
Aliasy cest metod
Použijte cesty metod uvedené výše.
Související ID modelů
FAQ · happyhorse-1.1-r2v
- Jaké vstupy a výsledky jsou dostupné?
POST /v1/videos/generations·happyhorse-1.1-r2v:text,image→videoPOST /v1/videos/generations·happyhorse-r2v:text,image→videoPOST /v1/videos/generations·happyhorse-r2v-latest:text,image→video- Jaká pole požadavek používá?
POST /v1/videos/generations·happyhorse-1.1-r2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-r2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-r2v-latest:model,prompt,duration,resolution,ratio,image_urls- Jaké limity platí?
POST /v1/videos/generations·happyhorse-1.1-r2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-r2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-r2v-latest:duration.minimum:3;duration.maximum:15