Source: https://ailoot.ai/models/pl/happyhorse-1-1-i2v/
Canonical: https://ailoot.ai/models/pl/happyhorse-1-1-i2v/
Language: pl

# happyhorse-1.1-i2v

[Markdown](https://ailoot.ai/models/pl/happyhorse-1-1-i2v/index.md) · [JSON](https://ailoot.ai/models/pl/happyhorse-1-1-i2v/facts.json)

## [happyhorse-1.1-i2v](https://ailoot.ai/models/pl/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.

- [**Ailoot · Wideo** `POST /v1/videos/generations` `happyhorse-1.1-i2v`](https://ailoot.ai/models/pl/happyhorse-1-1-i2v/#method-0)
- [**Ailoot · Wideo** `POST /v1/videos/generations` `happyhorse-i2v`](https://ailoot.ai/models/pl/happyhorse-1-1-i2v/#method-1)
- [**Ailoot · Wideo** `POST /v1/videos/generations` `happyhorse-i2v-latest`](https://ailoot.ai/models/pl/happyhorse-1-1-i2v/#method-2)

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`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-1.1-i2v&fmt=videos)

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

| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
| --- | --- | --- | --- | --- |
| Pole`model` | Typ`string` | WymaganieWymagane | Wartości i limity happyhorse-1.1-i2v | Domyślnie— |
| Pole`prompt` | Typ`string` | WymaganieOpcjonalne | Wartości i limity Minimalna długość: 1 | Domyślnie— |
| Pole`duration` | Typ`integer` | WymaganieOpcjonalne | Wartości i limity Minimum: 3 Maksimum: 15 Jednostka: sekundy | Domyślnie5 |
| Pole`resolution` | Typ`string` | WymaganieOpcjonalne | Wartości i limity 480P, 720P, 1080P | Domyślnie720P |
| Pole`ratio` | Typ`string` | WymaganieNieobsługiwane | Wartości i limity | Domyślnie— |
| Pole`image_urls` | Typ`https_url\|data_image_url[]` | WymaganieWymagane | Wartoś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

| Parametr | Kontrakt |
| --- | --- |
| Parametr`content_type` | Kontraktapplication/json |
| Parametr`required` | Kontraktmodel, image\_urls |
| Parametr`material_types` | Kontrakttext, image |
| Parametr`optional` | Kontraktduration, resolution, ratio, prompt |
| Parametr`duration_integer_range` | Kontrakt3, 15 |
| Parametr`default_duration` | Kontrakt5 |
| Parametr`resolution` | Kontrakt480P, 720P, 1080P |
| Parametr`default_resolution` | Kontrakt720P |
| Parametr`ratio` | Kontrakt |
| Parametr`ratio_must_omit` | Kontrakttrue |
| Parametr`image_urls` | Kontrakt{"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

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 →](https://ailoot.ai/docs/pl/billing/reserve/)

### Przykładowe żądania

#### Ailoot · Wideo

Obraz referencyjny

```bash
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

```bash
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

```bash
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

```bash
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 |
| --- | --- |
| Pole`id` | Typstring |
| Pole`object` | Typstring |
| Pole`model` | Typstring |
| Pole`status` | Typstring |
| Pole`content_url` | Typsigned URL |
| Pole`data[]` | Typsigned URL |
| Pole`usage` | Typobject |
| Pole`result_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-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-1.1-i2v&fmt=videos), [`happyhorse-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v&fmt=videos), [`happyhorse-i2v-latest`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v-latest&fmt=videos)

#### Aliasy ścieżek metod

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

#### Powiązane ID modeli

[`happyhorse-1.1-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-1.1-i2v&fmt=videos), [`happyhorse-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v&fmt=videos), [`happyhorse-i2v-latest`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v-latest&fmt=videos)

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

[`happyhorse-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v&fmt=videos)

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

| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
| --- | --- | --- | --- | --- |
| Pole`model` | Typ`string` | WymaganieWymagane | Wartości i limity happyhorse-i2v | Domyślnie— |
| Pole`prompt` | Typ`string` | WymaganieOpcjonalne | Wartości i limity Minimalna długość: 1 | Domyślnie— |
| Pole`duration` | Typ`integer` | WymaganieOpcjonalne | Wartości i limity Minimum: 3 Maksimum: 15 Jednostka: sekundy | Domyślnie5 |
| Pole`resolution` | Typ`string` | WymaganieOpcjonalne | Wartości i limity 480P, 720P, 1080P | Domyślnie720P |
| Pole`ratio` | Typ`string` | WymaganieNieobsługiwane | Wartości i limity | Domyślnie— |
| Pole`image_urls` | Typ`https_url\|data_image_url[]` | WymaganieWymagane | Wartoś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

| Parametr | Kontrakt |
| --- | --- |
| Parametr`material_types` | Kontrakttext, image |
| Parametr`required` | Kontraktnull |
| Parametr`optional_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

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 →](https://ailoot.ai/docs/pl/billing/reserve/)

### Przykładowe żądania

#### Ailoot · Wideo

Obraz referencyjny

```bash
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

```bash
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

```bash
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

```bash
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 |
| --- | --- |
| Pole`id` | Typstring |
| Pole`object` | Typstring |
| Pole`model` | Typstring |
| Pole`status` | Typstring |
| Pole`content_url` | Typsigned URL |
| Pole`data[]` | Typsigned URL |
| Pole`usage` | Typobject |
| Pole`result_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-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-1.1-i2v&fmt=videos), [`happyhorse-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v&fmt=videos), [`happyhorse-i2v-latest`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v-latest&fmt=videos)

#### Aliasy ścieżek metod

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

#### Powiązane ID modeli

[`happyhorse-1.1-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-1.1-i2v&fmt=videos), [`happyhorse-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v&fmt=videos), [`happyhorse-i2v-latest`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v-latest&fmt=videos)

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

[`happyhorse-i2v-latest`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v-latest&fmt=videos)

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

| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
| --- | --- | --- | --- | --- |
| Pole`model` | Typ`string` | WymaganieWymagane | Wartości i limity happyhorse-i2v-latest | Domyślnie— |
| Pole`prompt` | Typ`string` | WymaganieOpcjonalne | Wartości i limity Minimalna długość: 1 | Domyślnie— |
| Pole`duration` | Typ`integer` | WymaganieOpcjonalne | Wartości i limity Minimum: 3 Maksimum: 15 Jednostka: sekundy | Domyślnie5 |
| Pole`resolution` | Typ`string` | WymaganieOpcjonalne | Wartości i limity 480P, 720P, 1080P | Domyślnie720P |
| Pole`ratio` | Typ`string` | WymaganieNieobsługiwane | Wartości i limity | Domyślnie— |
| Pole`image_urls` | Typ`https_url\|data_image_url[]` | WymaganieWymagane | Wartoś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

| Parametr | Kontrakt |
| --- | --- |
| Parametr`material_types` | Kontrakttext, image |
| Parametr`required` | Kontraktnull |
| Parametr`optional_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

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 →](https://ailoot.ai/docs/pl/billing/reserve/)

### Przykładowe żądania

#### Ailoot · Wideo

Obraz referencyjny

```bash
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

```bash
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

```bash
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

```bash
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 |
| --- | --- |
| Pole`id` | Typstring |
| Pole`object` | Typstring |
| Pole`model` | Typstring |
| Pole`status` | Typstring |
| Pole`content_url` | Typsigned URL |
| Pole`data[]` | Typsigned URL |
| Pole`usage` | Typobject |
| Pole`result_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-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-1.1-i2v&fmt=videos), [`happyhorse-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v&fmt=videos), [`happyhorse-i2v-latest`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v-latest&fmt=videos)

#### Aliasy ścieżek metod

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

#### Powiązane ID modeli

[`happyhorse-1.1-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-1.1-i2v&fmt=videos), [`happyhorse-i2v`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v&fmt=videos), [`happyhorse-i2v-latest`](https://ailoot.ai/models/pl/#m=happyhorse-1.1-i2v&route=Core&caller=happyhorse-i2v-latest&fmt=videos)

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`

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ę](https://ailoot.ai/docs/pl/billing/subscriptions/) · [Sprawdź ceny modeli](https://ailoot.ai/models/pl/)

## 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ą](mailto:support@ailoot.ai) · [Oferta i umowa licencyjna](https://ailoot.ai/legal/offer?lang=pl)

## Ailoot · Firma i jej portfel projektów





Ailoot opiera się na zgromadzonym doświadczeniu operacyjnym, szerokiej bazie klientów, stabilnej usłudze i stałej kontroli KPI.





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





Ailoot wykorzystuje to doświadczenie operacyjne, zapewniając dostęp przez API do funkcji AI w produktach klientów, agentach, aplikacjach i automatyzacjach.
