happyhorse-1.1-i2v
Model pro oživení obrázku: výchozí obrázek určuje první snímek a popis usměrňuje další pohyb. Vytváří krátké video s možností zvukového doprovodu.
- Ailoot · Tvorba videa
POST /v1/videos/generationshappyhorse-1.1-i2v - Ailoot · Tvorba videa
POST /v1/videos/generationshappyhorse-i2v - Ailoot · Tvorba videa
POST /v1/videos/generationshappyhorse-i2v-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-I2V je model Alibaba, který začíná videoscénu hotovým obrázkem. Obrázek se stane prvním snímkem a text může určit následný děj: pohyb postavy, změny ve scéně a směr pohybu kamery. Hodí se k oživení ilustrace, produktové fotografie nebo předem připraveného vizuálního konceptu.
Textový popis je nepovinný. Pokud chybí, model sám odvodí možný pohyb z obsahu počátečního obrázku. Při výslovném zadání určuje vstupní obrázek kompozici a vzhled objektů, zatímco slova řídí vývoj scény v čase.
Od prvního snímku k pohybu
Alibaba zdůrazňuje zachování vzhledu postavy, vizuální konzistenci, plynulost pohybu a spojení obrazu se zvukem. Mezi deklarované vlastnosti patří také stálost nápisů a textur. Tyto vlastnosti vyjadřují záměr modelu a neznamenají doslovné zachování každého pixelu ve všech vygenerovaných snímcích.
V tomto režimu se používá jeden počáteční obrázek. Určuje výchozí scénu, nikoli soubor nezávislých vzorů pro novou kompozici. Možnost zadat samostatný závěrečný snímek pro tuto konkrétní verzi nebyla deklarována.
Přijímány jsou JPEG, JPG, PNG a WEBP. Každá strana vstupního obrázku musí mít alespoň 300 pixelů; povolený poměr stran je od 1:2,5 do 2,5:1 a velikost souboru do 20 MB. Poměr stran hotového videa odpovídá prvnímu snímku.
Parametry videa
Délka se volí jako celé číslo od 3 do 15 sekund. Dostupná jsou rozlišení 480P, 720P a 1080P; výstupním formátem je MP4 a snímková frekvence činí 24 snímků za sekundu. Podporováno je vytváření zvukového doprovodu spolu s obrazem videa.
Popis může být v libovolném jazyce a obsahovat až 5000 nečínských nebo 2500 čínských znaků. Při překročení limitu se přebytečná část zahodí, proto je vhodné popsat důležité děje a vlastnosti pohybu v mezích zadání. Stejná počáteční hodnota náhodného semínka může vést k podobným videím, ale nezaručuje jejich shodu snímek po snímku.
Ailoot · Tvorba videa POST /v1/videos/generations happyhorse-1.1-i2v
happyhorse-1.1-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Úvod
Model pro oživení obrázku: výchozí obrázek určuje první snímek a popis usměrňuje další pohyb. Vytváří krátké video s možností zvukového doprovodu.
- 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-i2v | Výchozí— |
Poleprompt | Typstring | PožadavekVolitelné | 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žadavekNepodporováno | Hodnoty a limity | Výchozí— |
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: 1 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ů
first_frame_to_video · Povinné: image_urls
Parametry a životní cyklus metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, image_urls |
Parametrmaterial_types | Kontrakttext, image |
Parametroptional | Kontraktduration, resolution, ratio, prompt |
Parametrduration_integer_range | Kontrakt3, 15 |
Parametrdefault_duration | Kontrakt5 |
Parametrresolution | Kontrakt480P, 720P, 1080P |
Parametrdefault_resolution | Kontrakt720P |
Parametrratio | Kontrakt |
Parametrratio_must_omit | Kontrakttrue |
Parametrimage_urls | Kontrakt{"min_count":1,"max_count":1,"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_URL:?Set the HTTPS URL of your actual first-frame image}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-i2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
u=os.environ["AILOOT_IMAGE_URL"]
z=urlsplit(u)
if z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Set the actual HTTPS image URL")
p["image_urls"]=[u]
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-i2v, happyhorse-i2v, happyhorse-i2v-latest
Aliasy cest metod
Použijte cesty metod uvedené výše.
Související ID modelů
Ailoot · Tvorba videa POST /v1/videos/generations happyhorse-i2v
happyhorse-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Úvod
Model pro oživení obrázku: výchozí obrázek určuje první snímek a popis usměrňuje další pohyb. Vytváří krátké video s možností zvukového doprovodu.
- 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-i2v | Výchozí— |
Poleprompt | Typstring | PožadavekVolitelné | 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žadavekNepodporováno | Hodnoty a limity | Výchozí— |
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: 1 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ů
first_frame_to_video · Povinné: 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_URL:?Set the HTTPS URL of your actual first-frame image}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-i2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
u=os.environ["AILOOT_IMAGE_URL"]
z=urlsplit(u)
if z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Set the actual HTTPS image URL")
p["image_urls"]=[u]
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-i2v, happyhorse-i2v, happyhorse-i2v-latest
Aliasy cest metod
Použijte cesty metod uvedené výše.
Související ID modelů
Ailoot · Tvorba videa POST /v1/videos/generations happyhorse-i2v-latest
happyhorse-i2v-latesthappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Úvod
Model pro oživení obrázku: výchozí obrázek určuje první snímek a popis usměrňuje další pohyb. Vytváří krátké video s možností zvukového doprovodu.
- 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-i2v-latest | Výchozí— |
Poleprompt | Typstring | PožadavekVolitelné | 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žadavekNepodporováno | Hodnoty a limity | Výchozí— |
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: 1 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ů
first_frame_to_video · Povinné: 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_URL:?Set the HTTPS URL of your actual first-frame image}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-i2v-latest", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
u=os.environ["AILOOT_IMAGE_URL"]
z=urlsplit(u)
if z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Set the actual HTTPS image URL")
p["image_urls"]=[u]
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-i2v, happyhorse-i2v, happyhorse-i2v-latest
Aliasy cest metod
Použijte cesty metod uvedené výše.
Související ID modelů
FAQ · happyhorse-1.1-i2v
- Jaké vstupy a výsledky jsou dostupné?
POST /v1/videos/generations·happyhorse-1.1-i2v:text,image→videoPOST /v1/videos/generations·happyhorse-i2v:text,image→videoPOST /v1/videos/generations·happyhorse-i2v-latest:text,image→video- Jaká pole požadavek používá?
POST /v1/videos/generations·happyhorse-1.1-i2v:model,prompt,duration,resolution,image_urlsPOST /v1/videos/generations·happyhorse-i2v:model,prompt,duration,resolution,image_urlsPOST /v1/videos/generations·happyhorse-i2v-latest:model,prompt,duration,resolution,image_urls- Jaké limity platí?
POST /v1/videos/generations·happyhorse-1.1-i2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-i2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-i2v-latest:duration.minimum:3;duration.maximum:15