modele

happyhorse-1.1-i2v

Markdown · JSON

happyhorse-1.1-i2v

Model do ożywiania obrazów: obraz wejściowy wyznacza pierwszą klatkę, a opis ukierunkowuje dalszy ruch. Tworzy krótki film z możliwością wygenerowania towarzyszącego mu dźwięku.

O modelu

Ten opis przedstawia możliwości modelu. Dane wejściowe, wyniki i opcje dostępne w Ailoot podano poniżej dla wybranej metody.

HappyHorse-1.1-I2V to model Alibaba, który rozpoczyna scenę filmową od gotowego obrazu. Obraz staje się pierwszą klatką, a tekst może określić dalszy przebieg akcji: ruch postaci, zmiany w scenie i kierunek ruchu kamery. Takie rozwiązanie nadaje się do ożywiania ilustracji, fotografii produktowej lub wcześniej przygotowanej koncepcji wizualnej.

Opis tekstowy jest opcjonalny. Bez niego model sam wywnioskuje możliwy ruch z treści obrazu początkowego. Gdy opis zostanie podany, obraz wejściowy określa kompozycję i wygląd obiektów, a słowa ukierunkowują rozwój sceny w czasie.

Od pierwszej klatki do ruchu

Alibaba podkreśla zachowanie wyglądu postaci, spójność wizualną, płynność ruchu i połączenie obrazu z dźwiękiem. Do deklarowanych cech należą również stabilność napisów i faktur. Są to założenia modelu i nie oznaczają dosłownego zachowania każdego piksela we wszystkich wygenerowanych klatkach.

W tym trybie używa się jednego obrazu początkowego. Wyznacza on scenę wyjściową, zamiast stanowić zestaw niezależnych wzorców do nowej kompozycji. Dla tej konkretnej wersji nie zadeklarowano możliwości wskazania osobnej klatki końcowej.

Obsługiwane są JPEG, JPG, PNG i WEBP. Każdy bok obrazu wejściowego musi mieć co najmniej 300 pikseli; dopuszczalne proporcje wynoszą od 1:2,5 do 2,5:1, a rozmiar pliku może sięgać 20 MB. Proporcje gotowego filmu odpowiadają pierwszej klatce.

Parametry filmu

Czas trwania wybiera się jako liczbę całkowitą od 3 do 15 sekund. Dostępne są rozdzielczości 480P, 720P i 1080P; format wyjściowy to MP4, a liczba klatek na sekundę wynosi 24. Model obsługuje tworzenie dźwięku wraz z obrazem filmowym.

Opis może być w dowolnym języku i zawierać do 5000 znaków innych niż chińskie albo 2500 znaków chińskich. Po przekroczeniu limitu nadmiarowa część jest odrzucana, dlatego istotne działania i cechy ruchu warto opisać w jego granicach. Ta sama początkowa wartość ziarna losowości może dać podobne filmy, ale nie gwarantuje ich zgodności klatka po klatce.

Ailoot · Wideo POST /v1/videos/generations happyhorse-1.1-i2v

happyhorse-1.1-i2v

Alibaba /happyhorse-1.1-i2v
ID modelu
  • happyhorse-1.1-i2v
  • happyhorse-i2v
  • happyhorse-i2v-latest

Start

Model do ożywiania obrazów: obraz wejściowy wyznacza pierwszą klatkę, a opis ukierunkowuje dalszy ruch. Tworzy krótki film z możliwością wygenerowania towarzyszącego mu dźwięku.

Akceptowane dane wejściowe
Tekst · Obrazy
Wyniki
Wideo

Dostępne w Ailoot · dane wejściowe i metody

Ailoot · Wideo POST /v1/videos/generations
Wejście
text, image
Wyjście
video
Format wyjściowy
mp4
PoleTypWymaganieWartości i limityDomyślnie
PolemodelTypstringWymaganieWymaganeWartości i limity
happyhorse-1.1-i2v
Domyślnie—
PolepromptTypstringWymaganieOpcjonalneWartości i limity
Minimalna długość: 1
Domyślnie—
PoledurationTypintegerWymaganieOpcjonalneWartości i limity
Minimum: 3
Maksimum: 15
Jednostka: sekundy
Domyślnie5
PoleresolutionTypstringWymaganieOpcjonalneWartości i limity
480P, 720P, 1080P
Domyślnie720P
PoleratioTypstringWymaganieNieobsługiwaneWartości i limityDomyślnie—
Poleimage_urlsTyphttps_url|data_image_url[]WymaganieWymaganeWartości i limity
Minimalna liczba elementów: 1
Maksymalna liczba elementów: 1
Maksymalna liczba zdekodowanych bajtów: 20 971 520
Typy MIME: image/jpeg, image/png, image/webp
Domyślnie—
Kombinacje materiałów wejściowych

first_frame_to_video · Wymagane: image_urls

Parametry i cykl życia metody
ParametrKontrakt
Parametrcontent_typeKontraktapplication/json
ParametrrequiredKontraktmodel, image_urls
Parametrmaterial_typesKontrakttext, image
ParametroptionalKontraktduration, resolution, ratio, prompt
Parametrduration_integer_rangeKontrakt3, 15
Parametrdefault_durationKontrakt5
ParametrresolutionKontrakt480P, 720P, 1080P
Parametrdefault_resolutionKontrakt720P
ParametrratioKontrakt
Parametrratio_must_omitKontrakttrue
Parametrimage_urlsKontrakt{"min_count":1,"max_count":1,"schemes":["https","dane rastrowe w base64"],"max_data_image_bytes":20971520}

Cykl życia: 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 i ID są dokładne; możliwości dostawcy są odrębne od dopuszczenia żądania.

Cennik

Stawki metod Ailoot

Ailoot WideoPOST /v1/videos/generations
Wyjście
0,18 USD za sekundę w 1080p
Wyjście
0,07 USD za sekundę w 480p
Wyjście
0,14 USD za sekundę w 720p

Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →

Przykładowe żądania

Ailoot · Wideo

Obraz referencyjny
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

Odbieranie i zapisywanie wyników

Ailoot · Wideo

mp4

  • GET /v1/videos/{request_id}
  • GET /v1/videos/generations/{request_id}
  • GET /v1/videos/{request_id}/content
  • GET /v1/videos/generations/{request_id}/content
Sprawdź status zadania
Pobierz status przez GET
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
Zapisz wszystkie ukończone zasoby
Pobierz wszystkie ukończone zasoby przez GET
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
Inne odczyty treści
Pobierz treść przez GET
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
Zachowaj wszystkie ukończone wyniki

Zapisz każde ukończone wideo lub zwrócony plik; pobierz każdy faktycznie zwrócony URL zasobu.

Zachowaj każdy zwrócony element data i indeks wyniku. content_url wskazuje tylko pierwszy; pobierz każdą rzeczywistą ścieżkę treści i zasób. GET treści bez index nie obejmuje wszystkich wyników.

Jeśli trzeba sprawdzić pierwotną odpowiedź

Odczytuj istniejące pierwotne zadanie; nigdy nie ponawiaj wysłania o nieznanym wyniku.

Pola odpowiedzi
PoleTyp
PoleidTypstring
PoleobjectTypstring
PolemodelTypstring
PolestatusTypstring
Polecontent_urlTypsigned URL
Poledata[]Typsigned URL
PoleusageTypobject
Poleresult_pending_checkTypboolean
Błędy i dalsze kroki
OdpowiedźWarunekNastępny krok
Odpowiedź400 · invalid_request_errorWarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametruNastępny krokPopraw wskazane pola przed nowym żądaniem utworzenia.
Odpowiedź409 · video_not_readyWarunekTreść pierwotnego wyniku nie jest jeszcze dostępnaNastępny krokOdpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After.
Odpowiedźserver_errorWarunekZwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzeniaNastępny krokZachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.

Aliasy

Aliasy modelu

Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

Aliasy ścieżek metod

Użyj ścieżek metod podanych powyżej.

Powiązane ID modeli

happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

Ailoot · Wideo POST /v1/videos/generations happyhorse-i2v

happyhorse-i2v

Alibaba /happyhorse-i2v
ID modelu
  • happyhorse-1.1-i2v
  • happyhorse-i2v
  • happyhorse-i2v-latest

Start

Model do ożywiania obrazów: obraz wejściowy wyznacza pierwszą klatkę, a opis ukierunkowuje dalszy ruch. Tworzy krótki film z możliwością wygenerowania towarzyszącego mu dźwięku.

Akceptowane dane wejściowe
Tekst · Obrazy
Wyniki
Wideo

Dostępne w Ailoot · dane wejściowe i metody

Ailoot · Wideo POST /v1/videos/generations
Wejście
text, image
Wyjście
video
Format wyjściowy
mp4
PoleTypWymaganieWartości i limityDomyślnie
PolemodelTypstringWymaganieWymaganeWartości i limity
happyhorse-i2v
Domyślnie—
PolepromptTypstringWymaganieOpcjonalneWartości i limity
Minimalna długość: 1
Domyślnie—
PoledurationTypintegerWymaganieOpcjonalneWartości i limity
Minimum: 3
Maksimum: 15
Jednostka: sekundy
Domyślnie5
PoleresolutionTypstringWymaganieOpcjonalneWartości i limity
480P, 720P, 1080P
Domyślnie720P
PoleratioTypstringWymaganieNieobsługiwaneWartości i limityDomyślnie—
Poleimage_urlsTyphttps_url|data_image_url[]WymaganieWymaganeWartości i limity
Minimalna liczba elementów: 1
Maksymalna liczba elementów: 1
Maksymalna liczba zdekodowanych bajtów: 20 971 520
Typy MIME: image/jpeg, image/png, image/webp
Domyślnie—
Kombinacje materiałów wejściowych

first_frame_to_video · Wymagane: image_urls

Parametry i cykl życia metody
ParametrKontrakt
Parametrmaterial_typesKontrakttext, image
ParametrrequiredKontraktnull
Parametroptional_controlsKontraktnull

Cykl życia: 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 i ID są dokładne; możliwości dostawcy są odrębne od dopuszczenia żądania.

Cennik

Stawki metod Ailoot

Ailoot WideoPOST /v1/videos/generations
Wyjście
0,18 USD za sekundę w 1080p
Wyjście
0,07 USD za sekundę w 480p
Wyjście
0,14 USD za sekundę w 720p

Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →

Przykładowe żądania

Ailoot · Wideo

Obraz referencyjny
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

Odbieranie i zapisywanie wyników

Ailoot · Wideo

mp4

  • GET /v1/videos/{request_id}
  • GET /v1/videos/generations/{request_id}
  • GET /v1/videos/{request_id}/content
  • GET /v1/videos/generations/{request_id}/content
Sprawdź status zadania
Pobierz status przez GET
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
Zapisz wszystkie ukończone zasoby
Pobierz wszystkie ukończone zasoby przez GET
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
Inne odczyty treści
Pobierz treść przez GET
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
Zachowaj wszystkie ukończone wyniki

Zapisz każde ukończone wideo lub zwrócony plik; pobierz każdy faktycznie zwrócony URL zasobu.

Zachowaj każdy zwrócony element data i indeks wyniku. content_url wskazuje tylko pierwszy; pobierz każdą rzeczywistą ścieżkę treści i zasób. GET treści bez index nie obejmuje wszystkich wyników.

Jeśli trzeba sprawdzić pierwotną odpowiedź

Odczytuj istniejące pierwotne zadanie; nigdy nie ponawiaj wysłania o nieznanym wyniku.

Pola odpowiedzi
PoleTyp
PoleidTypstring
PoleobjectTypstring
PolemodelTypstring
PolestatusTypstring
Polecontent_urlTypsigned URL
Poledata[]Typsigned URL
PoleusageTypobject
Poleresult_pending_checkTypboolean
Błędy i dalsze kroki
OdpowiedźWarunekNastępny krok
Odpowiedź400 · invalid_request_errorWarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametruNastępny krokPopraw wskazane pola przed nowym żądaniem utworzenia.
Odpowiedź409 · video_not_readyWarunekTreść pierwotnego wyniku nie jest jeszcze dostępnaNastępny krokOdpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After.
Odpowiedźserver_errorWarunekZwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzeniaNastępny krokZachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.

Aliasy

Aliasy modelu

Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

Aliasy ścieżek metod

Użyj ścieżek metod podanych powyżej.

Powiązane ID modeli

happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

Ailoot · Wideo POST /v1/videos/generations happyhorse-i2v-latest

happyhorse-i2v-latest

Alibaba /happyhorse-i2v-latest
ID modelu
  • happyhorse-1.1-i2v
  • happyhorse-i2v
  • happyhorse-i2v-latest

Start

Model do ożywiania obrazów: obraz wejściowy wyznacza pierwszą klatkę, a opis ukierunkowuje dalszy ruch. Tworzy krótki film z możliwością wygenerowania towarzyszącego mu dźwięku.

Akceptowane dane wejściowe
Tekst · Obrazy
Wyniki
Wideo

Dostępne w Ailoot · dane wejściowe i metody

Ailoot · Wideo POST /v1/videos/generations
Wejście
text, image
Wyjście
video
Format wyjściowy
mp4
PoleTypWymaganieWartości i limityDomyślnie
PolemodelTypstringWymaganieWymaganeWartości i limity
happyhorse-i2v-latest
Domyślnie—
PolepromptTypstringWymaganieOpcjonalneWartości i limity
Minimalna długość: 1
Domyślnie—
PoledurationTypintegerWymaganieOpcjonalneWartości i limity
Minimum: 3
Maksimum: 15
Jednostka: sekundy
Domyślnie5
PoleresolutionTypstringWymaganieOpcjonalneWartości i limity
480P, 720P, 1080P
Domyślnie720P
PoleratioTypstringWymaganieNieobsługiwaneWartości i limityDomyślnie—
Poleimage_urlsTyphttps_url|data_image_url[]WymaganieWymaganeWartości i limity
Minimalna liczba elementów: 1
Maksymalna liczba elementów: 1
Maksymalna liczba zdekodowanych bajtów: 20 971 520
Typy MIME: image/jpeg, image/png, image/webp
Domyślnie—
Kombinacje materiałów wejściowych

first_frame_to_video · Wymagane: image_urls

Parametry i cykl życia metody
ParametrKontrakt
Parametrmaterial_typesKontrakttext, image
ParametrrequiredKontraktnull
Parametroptional_controlsKontraktnull

Cykl życia: 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 i ID są dokładne; możliwości dostawcy są odrębne od dopuszczenia żądania.

Cennik

Stawki metod Ailoot

Ailoot WideoPOST /v1/videos/generations
Wyjście
0,18 USD za sekundę w 1080p
Wyjście
0,07 USD za sekundę w 480p
Wyjście
0,14 USD za sekundę w 720p

Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →

Przykładowe żądania

Ailoot · Wideo

Obraz referencyjny
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

Odbieranie i zapisywanie wyników

Ailoot · Wideo

mp4

  • GET /v1/videos/{request_id}
  • GET /v1/videos/generations/{request_id}
  • GET /v1/videos/{request_id}/content
  • GET /v1/videos/generations/{request_id}/content
Sprawdź status zadania
Pobierz status przez GET
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
Zapisz wszystkie ukończone zasoby
Pobierz wszystkie ukończone zasoby przez GET
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
Inne odczyty treści
Pobierz treść przez GET
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
Zachowaj wszystkie ukończone wyniki

Zapisz każde ukończone wideo lub zwrócony plik; pobierz każdy faktycznie zwrócony URL zasobu.

Zachowaj każdy zwrócony element data i indeks wyniku. content_url wskazuje tylko pierwszy; pobierz każdą rzeczywistą ścieżkę treści i zasób. GET treści bez index nie obejmuje wszystkich wyników.

Jeśli trzeba sprawdzić pierwotną odpowiedź

Odczytuj istniejące pierwotne zadanie; nigdy nie ponawiaj wysłania o nieznanym wyniku.

Pola odpowiedzi
PoleTyp
PoleidTypstring
PoleobjectTypstring
PolemodelTypstring
PolestatusTypstring
Polecontent_urlTypsigned URL
Poledata[]Typsigned URL
PoleusageTypobject
Poleresult_pending_checkTypboolean
Błędy i dalsze kroki
OdpowiedźWarunekNastępny krok
Odpowiedź400 · invalid_request_errorWarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametruNastępny krokPopraw wskazane pola przed nowym żądaniem utworzenia.
Odpowiedź409 · video_not_readyWarunekTreść pierwotnego wyniku nie jest jeszcze dostępnaNastępny krokOdpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After.
Odpowiedźserver_errorWarunekZwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzeniaNastępny krokZachowaj pierwotnie zwrócony identyfikator operacji lub zadania, nagłówki żądania i odpowiedź; kontynuuj obsługiwane odczyty tej pierwotnej operacji. Nie wysyłaj ponownie żądania utworzenia.

Aliasy

Aliasy modelu

Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

Aliasy ścieżek metod

Użyj ścieżek metod podanych powyżej.

Powiązane ID modeli

happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest

FAQ · happyhorse-1.1-i2v
Jakie dane wejściowe i wyniki są dostępne?

POST /v1/videos/generations · happyhorse-1.1-i2v: text, image → video

POST /v1/videos/generations · happyhorse-i2v: text, image → video

POST /v1/videos/generations · happyhorse-i2v-latest: text, image → video

Jakich pól używa żądanie?

POST /v1/videos/generations · happyhorse-1.1-i2v: model, prompt, duration, resolution, image_urls

POST /v1/videos/generations · happyhorse-i2v: model, prompt, duration, resolution, image_urls

POST /v1/videos/generations · happyhorse-i2v-latest: model, prompt, duration, resolution, image_urls

Jakie limity obowiązują?

POST /v1/videos/generations · happyhorse-1.1-i2v: duration.minimum: 3; duration.maximum: 15

POST /v1/videos/generations · happyhorse-i2v: duration.minimum: 3; duration.maximum: 15

POST /v1/videos/generations · happyhorse-i2v-latest: duration.minimum: 3; duration.maximum: 15

Więcej szczegółów

Połącz Ailoot z Claude Code, OpenCode, Hermes albo własną aplikacją.

Firma i jej portfel projektów

Firma i jej portfel projektów: miliony klientów; miesięczna sprzedaż liczona w miliardach.

Kupuj tokeny z rabatem.

Rabat subskrypcji do regularnej pracy. Kody promocyjne — do 50% na tokeny.

Subskrypcja
Wybierz plan z rabatem do regularnych żądań.
Kod promocyjny do 50%
Wpisz kod przy zakupie. Cena zostanie przeliczona według aktualnej promocji.
Koszty w historii
Model, tokeny i kwota są zapisywane dla każdego żądania.

Wybierz subskrypcję · Sprawdź ceny modeli

Połącz API z produktem, który sprzedajesz.

SaaS, aplikacje i boty na warunkach oferty i umowy licencyjnej Ailoot. Do odsprzedaży poproś o licencję resellerską.

Aplikacja komercyjna
Wbuduj generowanie tekstu, obrazów, wideo i dźwięku w płatne funkcje usługi.
Licencja resellerska
Prześlij opis projektu i schemat dostępu. Poproś o pisemne warunki używania i odsprzedaży.
Dokumenty na stronie
Oferta, umowa licencyjna i polityka przetwarzania danych są dostępne przed połączeniem.

Poproś o licencję resellerską · Oferta i umowa licencyjna