happyhorse-1.1-i2v
Modelis, suteikiantis judesio vaizdui: pradinis vaizdas nustato pirmąjį kadrą, o aprašymas nukreipia tolesnį judėjimą. Kuria trumpą vaizdo įrašą su galimu garso takeliu.
- Ailoot · Vaizdo įrašai
POST /v1/videos/generationshappyhorse-1.1-i2v - Ailoot · Vaizdo įrašai
POST /v1/videos/generationshappyhorse-i2v - Ailoot · Vaizdo įrašai
POST /v1/videos/generationshappyhorse-i2v-latest
Apie modelį
Šis aprašas apima modelio galimybes. Pasirinktam metodui Ailoot prieinamos įvestys, išvestys ir parinktys nurodytos toliau.
HappyHorse-1.1-I2V — Alibaba modelis, pradedantis vaizdo sceną nuo paruošto vaizdo. Vaizdas tampa pirmuoju kadru, o tekstas gali nurodyti tolesnį veiksmą: veikėjo judėjimą, scenos pokyčius ir kameros kryptį. Tai tinka iliustracijai, daikto nuotraukai ar iš anksto parengtai vizualinei koncepcijai pagyvinti.
Tekstinis aprašymas neprivalomas. Jei jo nėra, modelis pats numato galimą judesį pagal pradinio vaizdo turinį. Kai užduotis pateikiama aiškiai, pradinis vaizdas nustato kompoziciją ir objektų išvaizdą, o žodžiai nukreipia scenos raidą laike.
Nuo pirmojo kadro iki judesio
Alibaba pabrėžia veikėjo išvaizdos išlaikymą, vizualinį nuoseklumą, judesio sklandumą ir vaizdo bei garso derinimą. Tarp deklaruojamų krypčių taip pat yra užrašų ir tekstūrų stabilumas. Šios savybės apibūdina modelio paskirtį ir nereiškia, kad kiekvienas pikselis bus tiksliai išlaikytas visuose sugeneruotuose kadruose.
Šiuo režimu naudojamas vienas pradinis vaizdas. Jis nustato pradinę sceną, o ne pateikia nepriklausomų pavyzdžių rinkinį naujai kompozicijai. Galimybė šiai konkrečiai versijai nustatyti atskirą baigiamąjį kadrą nėra deklaruota.
Priimami JPEG, JPG, PNG ir WEBP. Kiekviena įvesties vaizdo kraštinė turi būti ne trumpesnė kaip 300 pikselių; leidžiamas kraštinių santykis — nuo 1:2,5 iki 2,5:1, failo dydis — iki 20 MB. Galutinio vaizdo įrašo kraštinių santykis atitinka pirmąjį kadrą.
Vaizdo įrašo parametrai
Trukmė pasirenkama sveikuoju skaičiumi nuo 3 iki 15 sekundžių. Galima rinktis 480P, 720P ir 1080P raišką; išvesties formatas — MP4, dažnis — 24 kadrai per sekundę. Palaikomas garso takelio kūrimas kartu su vaizdu.
Aprašymas gali būti bet kuria kalba ir turėti iki 5000 ne kinų arba 2500 kinų rašmenų. Viršijus ribą, perteklinė dalis atmetama, todėl svarbius veiksmus ir judėjimo ypatybes verta suformuluoti neviršijant užduoties apimties. Ta pati pradinė atsitiktinumo reikšmė gali duoti panašių vaizdo įrašų, tačiau negarantuoja, kad jų kadrai tiksliai sutaps.
Ailoot · Vaizdo įrašai POST /v1/videos/generations happyhorse-1.1-i2v
happyhorse-1.1-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Pradžia
Modelis, suteikiantis judesio vaizdui: pradinis vaizdas nustato pirmąjį kadrą, o aprašymas nukreipia tolesnį judėjimą. Kuria trumpą vaizdo įrašą su galimu garso takeliu.
- Leidžiamos įvestys
- Tekstas · Vaizdai
- Rezultatai
- Vaizdo įrašai
Prieinama Ailoot · įvestys ir metodai
Ailoot · Vaizdo įrašai POST /v1/videos/generations
- Įvestis
text,image- Išvestis
video- Išvesties formatas
- mp4
| Laukas | Tipas | Reikalavimas | Reikšmės ir ribos | Numatyta |
|---|---|---|---|---|
Laukasmodel | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos happyhorse-1.1-i2v | Numatyta— |
Laukasprompt | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos Mažiausias ilgis: 1 | Numatyta— |
Laukasduration | Tipasinteger | ReikalavimasNeprivaloma | Reikšmės ir ribos Mažiausia reikšmė: 3 Didžiausia reikšmė: 15 Vienetas: sekundės | Numatyta5 |
Laukasresolution | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos 480P, 720P, 1080P | Numatyta720P |
Laukasratio | Tipasstring | ReikalavimasNepalaikoma | Reikšmės ir ribos | Numatyta— |
Laukasimage_urls | Tipashttps_url|data_image_url[] | ReikalavimasPrivaloma | Reikšmės ir ribos Mažiausias elementų skaičius: 1 Didžiausias elementų skaičius: 1 Didžiausias dekoduotų baitų skaičius: 20 971 520 MIME tipai: image/jpeg, image/png, image/webp | Numatyta— |
Įvesties medžiagos deriniai
first_frame_to_video · Privaloma: image_urls
Metodo parametrai ir gyvavimo ciklas
| Parametras | Specifikacija |
|---|---|
Parametrascontent_type | Specifikacijaapplication/json |
Parametrasrequired | Specifikacijamodel, image_urls |
Parametrasmaterial_types | Specifikacijatext, image |
Parametrasoptional | Specifikacijaduration, resolution, ratio, prompt |
Parametrasduration_integer_range | Specifikacija3, 15 |
Parametrasdefault_duration | Specifikacija5 |
Parametrasresolution | Specifikacija480P, 720P, 1080P |
Parametrasdefault_resolution | Specifikacija720P |
Parametrasratio | Specifikacija |
Parametrasratio_must_omit | Specifikacijatrue |
Parametrasimage_urls | Specifikacija{"min_count":1,"max_count":1,"schemes":["https","rastriniai data duomenys base64 formatu"],"max_data_image_bytes":20971520} |
Gyvavimo ciklas: 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
Metodų struktūros ir ID yra tikslūs; tiekėjo galimybės yra atskirtos nuo užklausos priėmimo.
Planai
Ailoot metodų įkainiai
POST /v1/videos/generations- Išvestis
- 0,18 USD už sekundę 1080p raiška
- Išvestis
- 0,07 USD už sekundę 480p raiška
- Išvestis
- 0,14 USD už sekundę 720p raiška
Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →
Užklausų pavyzdžiai
Ailoot · Vaizdo įrašai
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
Gauti ir išsaugoti rezultatus
Ailoot · Vaizdo įrašai
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Tikrinti užduoties būseną
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
Išsaugoti visą baigtą medžiagą
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
Kito turinio skaitymas
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
Išsaugoti visus baigtus rezultatus
Išsaugokite kiekvieną baigtą vaizdo įrašą arba grąžintą failą; gaukite turinį iš kiekvieno faktiškai grąžinto medžiagos URL.
Išsaugokite kiekvieną grąžintą data elementą ir išvesties indeksą. content_url nurodo tik pirmąjį; gaukite kiekvieną tikrą turinio kelią ar išteklių. GET content be index negrąžina visų rezultatų.
Jei reikia patikrinti pradinį atsakymą
Skaitykite esamos pradinės užduoties duomenis; niekada nekartokite siuntimo, kurio baigtis nežinoma.
Atsakymo laukai
| Laukas | Tipas |
|---|---|
Laukasid | Tipasstring |
Laukasobject | Tipasstring |
Laukasmodel | Tipasstring |
Laukasstatus | Tipasstring |
Laukascontent_url | Tipassigned URL |
Laukasdata[] | Tipassigned URL |
Laukasusage | Tipasobject |
Laukasresult_pending_check | Tipasboolean |
Klaidos ir tolesni veiksmai
| Atsakymas | Sąlyga | Kitas žingsnis |
|---|---|---|
Atsakymas400 · invalid_request_error | SąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmė | Kitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus. |
Atsakymas409 · video_not_ready | SąlygaPradinio rezultato turinys dar nepasiekiamas | Kitas žingsnisPeriodiškai tikrinkite pradinį grąžintą ID ir laikykitės Retry-After. |
Atsakymasserver_error | SąlygaGrąžintame atsakyme nurodoma, kad operaciją arba rezultatą reikia patikrinti | Kitas žingsnisIšsaugokite pradinį grąžintą operacijos ar užduoties ID, užklausos antraštes ir atsakymą; toliau tikrinkite tos pačios pradinės operacijos duomenis palaikomais būdais. Kūrimo užklausos pakartotinai neteikite. |
Pseudonimai
Modelių pseudonimai
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Metodų kelių pseudonimai
Naudokite aukščiau nurodytus metodų kelius.
Susiję ID iškvietimui
Ailoot · Vaizdo įrašai POST /v1/videos/generations happyhorse-i2v
happyhorse-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Pradžia
Modelis, suteikiantis judesio vaizdui: pradinis vaizdas nustato pirmąjį kadrą, o aprašymas nukreipia tolesnį judėjimą. Kuria trumpą vaizdo įrašą su galimu garso takeliu.
- Leidžiamos įvestys
- Tekstas · Vaizdai
- Rezultatai
- Vaizdo įrašai
Prieinama Ailoot · įvestys ir metodai
Ailoot · Vaizdo įrašai POST /v1/videos/generations
- Įvestis
text,image- Išvestis
video- Išvesties formatas
- mp4
| Laukas | Tipas | Reikalavimas | Reikšmės ir ribos | Numatyta |
|---|---|---|---|---|
Laukasmodel | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos happyhorse-i2v | Numatyta— |
Laukasprompt | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos Mažiausias ilgis: 1 | Numatyta— |
Laukasduration | Tipasinteger | ReikalavimasNeprivaloma | Reikšmės ir ribos Mažiausia reikšmė: 3 Didžiausia reikšmė: 15 Vienetas: sekundės | Numatyta5 |
Laukasresolution | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos 480P, 720P, 1080P | Numatyta720P |
Laukasratio | Tipasstring | ReikalavimasNepalaikoma | Reikšmės ir ribos | Numatyta— |
Laukasimage_urls | Tipashttps_url|data_image_url[] | ReikalavimasPrivaloma | Reikšmės ir ribos Mažiausias elementų skaičius: 1 Didžiausias elementų skaičius: 1 Didžiausias dekoduotų baitų skaičius: 20 971 520 MIME tipai: image/jpeg, image/png, image/webp | Numatyta— |
Įvesties medžiagos deriniai
first_frame_to_video · Privaloma: image_urls
Metodo parametrai ir gyvavimo ciklas
| Parametras | Specifikacija |
|---|---|
Parametrasmaterial_types | Specifikacijatext, image |
Parametrasrequired | Specifikacijanull |
Parametrasoptional_controls | Specifikacijanull |
Gyvavimo ciklas: 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
Metodų struktūros ir ID yra tikslūs; tiekėjo galimybės yra atskirtos nuo užklausos priėmimo.
Planai
Ailoot metodų įkainiai
POST /v1/videos/generations- Išvestis
- 0,18 USD už sekundę 1080p raiška
- Išvestis
- 0,07 USD už sekundę 480p raiška
- Išvestis
- 0,14 USD už sekundę 720p raiška
Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →
Užklausų pavyzdžiai
Ailoot · Vaizdo įrašai
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
Gauti ir išsaugoti rezultatus
Ailoot · Vaizdo įrašai
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Tikrinti užduoties būseną
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
Išsaugoti visą baigtą medžiagą
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
Kito turinio skaitymas
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
Išsaugoti visus baigtus rezultatus
Išsaugokite kiekvieną baigtą vaizdo įrašą arba grąžintą failą; gaukite turinį iš kiekvieno faktiškai grąžinto medžiagos URL.
Išsaugokite kiekvieną grąžintą data elementą ir išvesties indeksą. content_url nurodo tik pirmąjį; gaukite kiekvieną tikrą turinio kelią ar išteklių. GET content be index negrąžina visų rezultatų.
Jei reikia patikrinti pradinį atsakymą
Skaitykite esamos pradinės užduoties duomenis; niekada nekartokite siuntimo, kurio baigtis nežinoma.
Atsakymo laukai
| Laukas | Tipas |
|---|---|
Laukasid | Tipasstring |
Laukasobject | Tipasstring |
Laukasmodel | Tipasstring |
Laukasstatus | Tipasstring |
Laukascontent_url | Tipassigned URL |
Laukasdata[] | Tipassigned URL |
Laukasusage | Tipasobject |
Laukasresult_pending_check | Tipasboolean |
Klaidos ir tolesni veiksmai
| Atsakymas | Sąlyga | Kitas žingsnis |
|---|---|---|
Atsakymas400 · invalid_request_error | SąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmė | Kitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus. |
Atsakymas409 · video_not_ready | SąlygaPradinio rezultato turinys dar nepasiekiamas | Kitas žingsnisPeriodiškai tikrinkite pradinį grąžintą ID ir laikykitės Retry-After. |
Atsakymasserver_error | SąlygaGrąžintame atsakyme nurodoma, kad operaciją arba rezultatą reikia patikrinti | Kitas žingsnisIšsaugokite pradinį grąžintą operacijos ar užduoties ID, užklausos antraštes ir atsakymą; toliau tikrinkite tos pačios pradinės operacijos duomenis palaikomais būdais. Kūrimo užklausos pakartotinai neteikite. |
Pseudonimai
Modelių pseudonimai
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Metodų kelių pseudonimai
Naudokite aukščiau nurodytus metodų kelius.
Susiję ID iškvietimui
Ailoot · Vaizdo įrašai POST /v1/videos/generations happyhorse-i2v-latest
happyhorse-i2v-latesthappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Pradžia
Modelis, suteikiantis judesio vaizdui: pradinis vaizdas nustato pirmąjį kadrą, o aprašymas nukreipia tolesnį judėjimą. Kuria trumpą vaizdo įrašą su galimu garso takeliu.
- Leidžiamos įvestys
- Tekstas · Vaizdai
- Rezultatai
- Vaizdo įrašai
Prieinama Ailoot · įvestys ir metodai
Ailoot · Vaizdo įrašai POST /v1/videos/generations
- Įvestis
text,image- Išvestis
video- Išvesties formatas
- mp4
| Laukas | Tipas | Reikalavimas | Reikšmės ir ribos | Numatyta |
|---|---|---|---|---|
Laukasmodel | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos happyhorse-i2v-latest | Numatyta— |
Laukasprompt | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos Mažiausias ilgis: 1 | Numatyta— |
Laukasduration | Tipasinteger | ReikalavimasNeprivaloma | Reikšmės ir ribos Mažiausia reikšmė: 3 Didžiausia reikšmė: 15 Vienetas: sekundės | Numatyta5 |
Laukasresolution | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos 480P, 720P, 1080P | Numatyta720P |
Laukasratio | Tipasstring | ReikalavimasNepalaikoma | Reikšmės ir ribos | Numatyta— |
Laukasimage_urls | Tipashttps_url|data_image_url[] | ReikalavimasPrivaloma | Reikšmės ir ribos Mažiausias elementų skaičius: 1 Didžiausias elementų skaičius: 1 Didžiausias dekoduotų baitų skaičius: 20 971 520 MIME tipai: image/jpeg, image/png, image/webp | Numatyta— |
Įvesties medžiagos deriniai
first_frame_to_video · Privaloma: image_urls
Metodo parametrai ir gyvavimo ciklas
| Parametras | Specifikacija |
|---|---|
Parametrasmaterial_types | Specifikacijatext, image |
Parametrasrequired | Specifikacijanull |
Parametrasoptional_controls | Specifikacijanull |
Gyvavimo ciklas: 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
Metodų struktūros ir ID yra tikslūs; tiekėjo galimybės yra atskirtos nuo užklausos priėmimo.
Planai
Ailoot metodų įkainiai
POST /v1/videos/generations- Išvestis
- 0,18 USD už sekundę 1080p raiška
- Išvestis
- 0,07 USD už sekundę 480p raiška
- Išvestis
- 0,14 USD už sekundę 720p raiška
Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →
Užklausų pavyzdžiai
Ailoot · Vaizdo įrašai
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
Gauti ir išsaugoti rezultatus
Ailoot · Vaizdo įrašai
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Tikrinti užduoties būseną
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
Išsaugoti visą baigtą medžiagą
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
Kito turinio skaitymas
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
Išsaugoti visus baigtus rezultatus
Išsaugokite kiekvieną baigtą vaizdo įrašą arba grąžintą failą; gaukite turinį iš kiekvieno faktiškai grąžinto medžiagos URL.
Išsaugokite kiekvieną grąžintą data elementą ir išvesties indeksą. content_url nurodo tik pirmąjį; gaukite kiekvieną tikrą turinio kelią ar išteklių. GET content be index negrąžina visų rezultatų.
Jei reikia patikrinti pradinį atsakymą
Skaitykite esamos pradinės užduoties duomenis; niekada nekartokite siuntimo, kurio baigtis nežinoma.
Atsakymo laukai
| Laukas | Tipas |
|---|---|
Laukasid | Tipasstring |
Laukasobject | Tipasstring |
Laukasmodel | Tipasstring |
Laukasstatus | Tipasstring |
Laukascontent_url | Tipassigned URL |
Laukasdata[] | Tipassigned URL |
Laukasusage | Tipasobject |
Laukasresult_pending_check | Tipasboolean |
Klaidos ir tolesni veiksmai
| Atsakymas | Sąlyga | Kitas žingsnis |
|---|---|---|
Atsakymas400 · invalid_request_error | SąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmė | Kitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus. |
Atsakymas409 · video_not_ready | SąlygaPradinio rezultato turinys dar nepasiekiamas | Kitas žingsnisPeriodiškai tikrinkite pradinį grąžintą ID ir laikykitės Retry-After. |
Atsakymasserver_error | SąlygaGrąžintame atsakyme nurodoma, kad operaciją arba rezultatą reikia patikrinti | Kitas žingsnisIšsaugokite pradinį grąžintą operacijos ar užduoties ID, užklausos antraštes ir atsakymą; toliau tikrinkite tos pačios pradinės operacijos duomenis palaikomais būdais. Kūrimo užklausos pakartotinai neteikite. |
Pseudonimai
Modelių pseudonimai
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Metodų kelių pseudonimai
Naudokite aukščiau nurodytus metodų kelius.
Susiję ID iškvietimui
FAQ · happyhorse-1.1-i2v
- Kokios įvestys ir rezultatai prieinami?
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- Kokius laukus naudoja užklausa?
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- Kokie apribojimai taikomi?
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