happyhorse-1.1-t2v
Model do tworzenia krótkich filmów z dźwiękiem na podstawie opisu tekstowego. Nadaje się do scen, w których ruch, kompozycję i styl wizualny określa się słowami.
- Ailoot · Wideo
POST /v1/videos/generationshappyhorse-1.1-t2v - Ailoot · Wideo
POST /v1/videos/generationshappyhorse-t2v - Ailoot · Wideo
POST /v1/videos/generationshappyhorse-t2v-latest
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-T2V to model Alibaba do tworzenia krótkich scen filmowych na podstawie tekstu. Opis określa postacie, działania, otoczenie i sposób wizualnego przedstawienia; ten tryb nie wymaga obrazu wejściowego. Model tworzy obraz filmowy i może wygenerować towarzyszący mu dźwięk.
Producent podkreśla rozumienie sensu sceny, filmową inscenizację i wyrazistość ruchu. Tekst może określać atmosferę, działania postaci, zachowanie obiektów i dynamikę fizyczną. Pozwala to zbudować scenę wokół tego, co ma się wydarzyć, a następnie ukierunkować ją za pomocą światła, kąta ujęcia i ruchu kamery.
Inscenizacja za pomocą słów
Polecenie jest obowiązkowe i może być w dowolnym języku. Może zawierać do 5000 znaków innych niż chińskie albo 2500 znaków chińskich; nadmiarowa część jest odrzucana. Akcję, otoczenie i istotne szczegóły wizualne trzeba opisać w granicach tego limitu. Taki sposób inscenizacji pozostawia modelowi przestrzeń do stworzenia nowej sceny, zamiast narzucać gotową pierwszą klatkę.
W tym trybie tekst jest głównym materiałem sterującym. Konkretny wygląd postaci lub przedmiotu można opisać słowami; możliwość przekazania tego wyglądu za pomocą osobnych obrazów należy do innego trybu z tej rodziny. Wynik zależy od całego polecenia, dlatego ta sama początkowa wartość ziarna losowości pomaga uzyskać podobne warianty, ale nie gwarantuje dokładnego powtórzenia.
Wideo i towarzyszący dźwięk
W HappyHorse-1.1 czas trwania filmu wybiera się jako liczbę całkowitą od 3 do 15 sekund. Obsługiwane są rozdzielczości 480P, 720P i 1080P. Gotowy plik ma format MP4 i częstotliwość 24 klatek na sekundę. Model może generować dźwięk wraz z obrazem, wiążąc ścieżkę dźwiękową z tym, co dzieje się w scenie.
Proporcje kadru można określić z góry. Dostępne są 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 i 21:9 — od szerokiego kadru filmowego po wydłużony film pionowy. Rozdzielczość, proporcje i czas trwania określają rozmiary wyniku; treść i ruch ustala tekst.
Ten wariant służy do tworzenia nowej sceny na podstawie pomysłu wyrażonego słowami. Nadaje się do krótkiego epizodu, koncepcji wizualnej lub nastrojowego filmu, którego inscenizację trzeba sformułować tekstowo.
Ailoot · Wideo POST /v1/videos/generations happyhorse-1.1-t2v
happyhorse-1.1-t2vhappyhorse-1.1-t2vhappyhorse-t2vhappyhorse-t2v-latest
Start
Model do tworzenia krótkich filmów z dźwiękiem na podstawie opisu tekstowego. Nadaje się do scen, w których ruch, kompozycję i styl wizualny określa się słowami.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- Wideo
Dostępne w Ailoot · dane wejściowe i metody
Ailoot · Wideo POST /v1/videos/generations
- Wejście
text- Wyjście
video- Format wyjściowy
- mp4
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity happyhorse-1.1-t2v | Domyślnie— |
Poleprompt | Typstring | WymaganieWymagane | Wartości i limity Minimalna długość: 1 | Domyślnie— |
Poleduration | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: 3 Maksimum: 15 Jednostka: sekundy | Domyślnie5 |
Poleresolution | Typstring | WymaganieOpcjonalne | Wartości i limity 480P, 720P, 1080P | Domyślnie720P |
Poleratio | Typstring | WymaganieOpcjonalne | Wartości i limity 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Domyślnie16:9 |
Poleimage_urls | Typhttps_url|data_image_url[] | WymaganieOpcjonalne | Wartości i limity Minimalna liczba elementów: 0 Maksymalna liczba elementów: 0 Maksymalna liczba zdekodowanych bajtów: 20 971 520 Typy MIME: image/jpeg, image/png, image/webp | Domyślnie— |
Kombinacje materiałów wejściowych
Tekst na wideo · Wymagane: prompt
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, prompt |
Parametrmaterial_types | Kontrakttext |
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{"max_count":0} |
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
POST /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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-t2v", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
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}/contentGET /v1/videos/generations/{request_id}/content
Sprawdź status zadania
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
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
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
| Pole | Typ |
|---|---|
Poleid | Typstring |
Poleobject | Typstring |
Polemodel | Typstring |
Polestatus | Typstring |
Polecontent_url | Typsigned URL |
Poledata[] | Typsigned URL |
Poleusage | Typobject |
Poleresult_pending_check | Typboolean |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Odpowiedź409 · video_not_ready | WarunekTreść pierwotnego wyniku nie jest jeszcze dostępna | Następny krokOdpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After. |
Odpowiedźserver_error | WarunekZwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia | Nastę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-t2v, happyhorse-t2v, happyhorse-t2v-latest
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
Ailoot · Wideo POST /v1/videos/generations happyhorse-t2v
happyhorse-t2vhappyhorse-1.1-t2vhappyhorse-t2vhappyhorse-t2v-latest
Start
Model do tworzenia krótkich filmów z dźwiękiem na podstawie opisu tekstowego. Nadaje się do scen, w których ruch, kompozycję i styl wizualny określa się słowami.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- Wideo
Dostępne w Ailoot · dane wejściowe i metody
Ailoot · Wideo POST /v1/videos/generations
- Wejście
text- Wyjście
video- Format wyjściowy
- mp4
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity happyhorse-t2v | Domyślnie— |
Poleprompt | Typstring | WymaganieWymagane | Wartości i limity Minimalna długość: 1 | Domyślnie— |
Poleduration | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: 3 Maksimum: 15 Jednostka: sekundy | Domyślnie5 |
Poleresolution | Typstring | WymaganieOpcjonalne | Wartości i limity 480P, 720P, 1080P | Domyślnie720P |
Poleratio | Typstring | WymaganieOpcjonalne | Wartości i limity 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Domyślnie16:9 |
Poleimage_urls | Typhttps_url|data_image_url[] | WymaganieOpcjonalne | Wartości i limity Minimalna liczba elementów: 0 Maksymalna liczba elementów: 0 Maksymalna liczba zdekodowanych bajtów: 20 971 520 Typy MIME: image/jpeg, image/png, image/webp | Domyślnie— |
Kombinacje materiałów wejściowych
Tekst na wideo · Wymagane: prompt
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrmaterial_types | Kontrakttext |
Parametrrequired | Kontraktnull |
Parametroptional_controls | Kontraktnull |
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
POST /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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-t2v", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
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}/contentGET /v1/videos/generations/{request_id}/content
Sprawdź status zadania
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
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
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
| Pole | Typ |
|---|---|
Poleid | Typstring |
Poleobject | Typstring |
Polemodel | Typstring |
Polestatus | Typstring |
Polecontent_url | Typsigned URL |
Poledata[] | Typsigned URL |
Poleusage | Typobject |
Poleresult_pending_check | Typboolean |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Odpowiedź409 · video_not_ready | WarunekTreść pierwotnego wyniku nie jest jeszcze dostępna | Następny krokOdpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After. |
Odpowiedźserver_error | WarunekZwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia | Nastę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-t2v, happyhorse-t2v, happyhorse-t2v-latest
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
Ailoot · Wideo POST /v1/videos/generations happyhorse-t2v-latest
happyhorse-t2v-latesthappyhorse-1.1-t2vhappyhorse-t2vhappyhorse-t2v-latest
Start
Model do tworzenia krótkich filmów z dźwiękiem na podstawie opisu tekstowego. Nadaje się do scen, w których ruch, kompozycję i styl wizualny określa się słowami.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- Wideo
Dostępne w Ailoot · dane wejściowe i metody
Ailoot · Wideo POST /v1/videos/generations
- Wejście
text- Wyjście
video- Format wyjściowy
- mp4
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity happyhorse-t2v-latest | Domyślnie— |
Poleprompt | Typstring | WymaganieWymagane | Wartości i limity Minimalna długość: 1 | Domyślnie— |
Poleduration | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: 3 Maksimum: 15 Jednostka: sekundy | Domyślnie5 |
Poleresolution | Typstring | WymaganieOpcjonalne | Wartości i limity 480P, 720P, 1080P | Domyślnie720P |
Poleratio | Typstring | WymaganieOpcjonalne | Wartości i limity 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Domyślnie16:9 |
Poleimage_urls | Typhttps_url|data_image_url[] | WymaganieOpcjonalne | Wartości i limity Minimalna liczba elementów: 0 Maksymalna liczba elementów: 0 Maksymalna liczba zdekodowanych bajtów: 20 971 520 Typy MIME: image/jpeg, image/png, image/webp | Domyślnie— |
Kombinacje materiałów wejściowych
Tekst na wideo · Wymagane: prompt
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrmaterial_types | Kontrakttext |
Parametrrequired | Kontraktnull |
Parametroptional_controls | Kontraktnull |
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
POST /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
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-t2v-latest", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
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}/contentGET /v1/videos/generations/{request_id}/content
Sprawdź status zadania
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
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
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
| Pole | Typ |
|---|---|
Poleid | Typstring |
Poleobject | Typstring |
Polemodel | Typstring |
Polestatus | Typstring |
Polecontent_url | Typsigned URL |
Poledata[] | Typsigned URL |
Poleusage | Typobject |
Poleresult_pending_check | Typboolean |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Odpowiedź409 · video_not_ready | WarunekTreść pierwotnego wyniku nie jest jeszcze dostępna | Następny krokOdpytuj pierwotny zwrócony identyfikator i przestrzegaj Retry-After. |
Odpowiedźserver_error | WarunekZwrócona odpowiedź wskazuje, że operacja lub wynik wymaga sprawdzenia | Nastę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-t2v, happyhorse-t2v, happyhorse-t2v-latest
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
FAQ · happyhorse-1.1-t2v
- Jakie dane wejściowe i wyniki są dostępne?
POST /v1/videos/generations·happyhorse-1.1-t2v:text→videoPOST /v1/videos/generations·happyhorse-t2v:text→videoPOST /v1/videos/generations·happyhorse-t2v-latest:text→video- Jakich pól używa żądanie?
POST /v1/videos/generations·happyhorse-1.1-t2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-t2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-t2v-latest:model,prompt,duration,resolution,ratio,image_urls- Jakie limity obowiązują?
POST /v1/videos/generations·happyhorse-1.1-t2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-t2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-t2v-latest:duration.minimum:3;duration.maximum:15