Source: https://ailoot.ai/models/nb/happyhorse-1-1-r2v/
Canonical: https://ailoot.ai/models/nb/happyhorse-1-1-r2v/
Language: nb

# happyhorse-1.1-r2v

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

## [happyhorse-1.1-r2v](https://ailoot.ai/models/nb/happyhorse-1-1-r2v/)

En modell som genererer video fra referansebilder og et tekstbasert scenario. Hjelper med å bevare figurenes utseende, gjenstander og visuell stil i en ny scene.

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

Om modellen

Denne beskrivelsen dekker modellens funksjoner. Tilgjengelige inndata, utdata og alternativer i Ailoot er oppført nedenfor for den valgte metoden.

HappyHorse-1.1-R2V lager en ny videoscene fra referansebilder og en tekstbeskrivelse. Alibaba retter modellen mot å bevare gjenkjennelige figurer, objekter og visuell stil når bevegelse genereres. Referansene bestemmer scenens innhold og utseende, mens teksten beskriver hvordan elementene skal samhandle.

#### Rollen til visuelle eksempler

Det kan brukes fra ett til ni bilder. De kan angi en figur, gjenstand, omgivelse eller kunstnerisk utforming. Beskrivelsen kan nevne referansens nummer og et bestemt objekt i den, slik at det visuelle materialet knyttes til riktig del av handlingen. Dette er særlig nyttig når elementer fra flere bilder skal samles i én komposisjon.

I motsetning til modusen med et startbilde fungerer referansene her som grunnlag for innholdet i en ny scene. En tekstbeskrivelse er påkrevd: den knytter objektenes utseende til handlingen, kamerabevegelsen og iscenesettelsen som helhet. Produsenten fremhever visuell sammenheng og filmatiske bevegelser; resultatet er fortsatt generert video, ikke en montasje av kildebildene.

JPEG, JPG, PNG og WEBP godtas, med opptil 20 MB per bilde. Bildets korteste side må være minst 400 piksler; materiale på 720P eller høyere anbefales. Inndata i denne modusen består nettopp av bilder og tekst.

#### Varighet, bildeformat og lyd

Resultatet lagres som MP4 med 24 bilder per sekund. Varigheten angis som et heltall fra 3 til 15 sekunder. Oppløsningen kan velges mellom 480P, 720P og 1080P; lydgenerering støttes.

Horisontale, vertikale og kvadratiske bildeformater er tilgjengelige: 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 og 21:9. Valg av format bidrar til å bestemme komposisjonsrommet for den nye scenen på forhånd.

Teksten kan være på hvilket som helst språk. Grensen er 5000 ikke-kinesiske eller 2500 kinesiske tegn; overskytende tekst fjernes. Referansenes viktigste roller, handlingen og bevegelsen må få plass innenfor denne grensen. En tilfeldig startverdi kan styre likheten mellom varianter, men garanterer ikke at en video gjenskapes nøyaktig.

**Ailoot · Videogenerering** `POST /v1/videos/generations` `happyhorse-1.1-r2v`

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

Alibaba /`happyhorse-1.1-r2v`

Modell-ID

- `happyhorse-1.1-r2v`
- `happyhorse-r2v`
- `happyhorse-r2v-latest`

### Start

En modell som genererer video fra referansebilder og et tekstbasert scenario. Hjelper med å bevare figurenes utseende, gjenstander og visuell stil i en ny scene.

Godkjente inndata

Tekst · Bilder

Resultater

Video

### Tilgjengelig i Ailoot · inndata & metoder

**Ailoot · Videogenerering** `POST /v1/videos/generations`

Inndatatyper

`text`, `image`

Utdatatyper

`video`

Utdataformat

mp4

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser happyhorse-1.1-r2v | Standard— |
| Felt`prompt` | Type`string` | KravPåkrevd | Verdier & grenser Minste lengde: 1 | Standard— |
| Felt`duration` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 3 Maksimum: 15 Enhet: sekunder | Standard5 |
| Felt`resolution` | Type`string` | KravValgfritt | Verdier & grenser 480P, 720P, 1080P | Standard720P |
| Felt`ratio` | Type`string` | KravValgfritt | Verdier & grenser 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standard16:9 |
| Felt`image_urls` | Type`https_url\|data_image_url[]` | KravPåkrevd | Verdier & grenser Minste antall elementer: 1 Maksimalt antall elementer: 9 Maksimalt antall dekodede byte: 20 971 520 MIME-typer: image/jpeg, image/png, image/webp | Standard— |

Kombinasjoner av inngående materialer

**reference\_images\_to\_video** · Påkrevd: prompt, image\_urls

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`content_type` | Avtaleapplication/json |
| Parameter`required` | Avtalemodel, prompt, image\_urls |
| Parameter`material_types` | Avtaletext, image |
| Parameter`optional` | Avtaleduration, resolution, ratio |
| Parameter`duration_integer_range` | Avtale3, 15 |
| Parameter`default_duration` | Avtale5 |
| Parameter`resolution` | Avtale480P, 720P, 1080P |
| Parameter`default_resolution` | Avtale720P |
| Parameter`ratio` | Avtale16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
| Parameter`ratio_must_omit` | Avtalefalse |
| Parameter`image_urls` | Avtale{"min\_count":1,"max\_count":9,"schemes":\["https","Rasterdata i base64"\],"max\_data\_image\_bytes":20971520} |

Livssyklus: `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`

Metodestrukturer og ID-er er eksakte; leverandørens evne er adskilt fra godkjenning av forespørselen.

### Priser

#### Satser for Ailoot-metoder

Utdata

0,18 USD *per sekund ved 1080p*

Utdata

0,07 USD *per sekund ved 480p*

Utdata

0,14 USD *per sekund ved 720p*

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

### Eksempelforespørsler

#### Ailoot · Videogenerering

Bildereferanse

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-r2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
    z=urlsplit(u) if isinstance(u,str) else None
    if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["ratio"]="16:9"
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
```

### Motta og lagre resultater

#### Ailoot · Videogenerering

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`

##### Kontroller jobbstatus

GET status

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

##### Lagre alle ferdige ressurser

GET alle ferdige ressurser

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

Andre innholdslesinger

GET innhold

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

##### Behold alle ferdige resultater

Lagre hver ferdige video eller returnerte fil; hent hver faktisk returnerte ressurs-URL.

Bevar hvert returnert dataelement og hver utdataindeks. content\_url viser bare til det første; hent hver faktiske innholdssti og ressurs. GET for innhold uten index omfatter ikke alle utdata.

##### Hvis det opprinnelige svaret må kontrolleres

Les den eksisterende opprinnelige jobben; send aldri en forespørsel med ukjent utfall på nytt.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`id` | Typestring |
| Felt`object` | Typestring |
| Felt`model` | Typestring |
| Felt`status` | Typestring |
| Felt`content_url` | Typesigned URL |
| Felt`data[]` | Typesigned URL |
| Felt`usage` | Typeobject |
| Felt`result_pending_check` | Typeboolean |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |
| Svar409 · `video_not_ready` | VilkårDet opprinnelige resultatinnholdet er ennå ikke tilgjengelig | Neste trinnSpør jevnlig etter den opprinnelige returnerte ID-en og følg Retry-After. |
| Svar`server_error` | VilkårDet returnerte svaret angir at operasjonen eller resultatet må kontrolleres | Neste trinnBevar den opprinnelige returnerte operasjons-/oppgave-ID-en, forespørselshodene og svaret; fortsett å lese den opprinnelige operasjonen på de støttede måtene. Ikke send opprettelsesforespørselen på nytt. |

### Aliaser

#### Modellaliaser

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

#### Aliaser for metodestier

Bruk metodestiene som vises ovenfor.

#### Tilknyttede anroper-ID-er

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

**Ailoot · Videogenerering** `POST /v1/videos/generations` `happyhorse-r2v`

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

Alibaba /`happyhorse-r2v`

Modell-ID

- `happyhorse-1.1-r2v`
- `happyhorse-r2v`
- `happyhorse-r2v-latest`

### Start

En modell som genererer video fra referansebilder og et tekstbasert scenario. Hjelper med å bevare figurenes utseende, gjenstander og visuell stil i en ny scene.

Godkjente inndata

Tekst · Bilder

Resultater

Video

### Tilgjengelig i Ailoot · inndata & metoder

**Ailoot · Videogenerering** `POST /v1/videos/generations`

Inndatatyper

`text`, `image`

Utdatatyper

`video`

Utdataformat

mp4

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser happyhorse-r2v | Standard— |
| Felt`prompt` | Type`string` | KravPåkrevd | Verdier & grenser Minste lengde: 1 | Standard— |
| Felt`duration` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 3 Maksimum: 15 Enhet: sekunder | Standard5 |
| Felt`resolution` | Type`string` | KravValgfritt | Verdier & grenser 480P, 720P, 1080P | Standard720P |
| Felt`ratio` | Type`string` | KravValgfritt | Verdier & grenser 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standard16:9 |
| Felt`image_urls` | Type`https_url\|data_image_url[]` | KravPåkrevd | Verdier & grenser Minste antall elementer: 1 Maksimalt antall elementer: 9 Maksimalt antall dekodede byte: 20 971 520 MIME-typer: image/jpeg, image/png, image/webp | Standard— |

Kombinasjoner av inngående materialer

**reference\_images\_to\_video** · Påkrevd: prompt, image\_urls

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`material_types` | Avtaletext, image |
| Parameter`required` | Avtalenull |
| Parameter`optional_controls` | Avtalenull |

Livssyklus: `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`

Metodestrukturer og ID-er er eksakte; leverandørens evne er adskilt fra godkjenning av forespørselen.

### Priser

#### Satser for Ailoot-metoder

Utdata

0,18 USD *per sekund ved 1080p*

Utdata

0,07 USD *per sekund ved 480p*

Utdata

0,14 USD *per sekund ved 720p*

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

### Eksempelforespørsler

#### Ailoot · Videogenerering

Bildereferanse

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-r2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
    z=urlsplit(u) if isinstance(u,str) else None
    if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["ratio"]="16:9"
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
```

### Motta og lagre resultater

#### Ailoot · Videogenerering

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`

##### Kontroller jobbstatus

GET status

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

##### Lagre alle ferdige ressurser

GET alle ferdige ressurser

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

Andre innholdslesinger

GET innhold

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

##### Behold alle ferdige resultater

Lagre hver ferdige video eller returnerte fil; hent hver faktisk returnerte ressurs-URL.

Bevar hvert returnert dataelement og hver utdataindeks. content\_url viser bare til det første; hent hver faktiske innholdssti og ressurs. GET for innhold uten index omfatter ikke alle utdata.

##### Hvis det opprinnelige svaret må kontrolleres

Les den eksisterende opprinnelige jobben; send aldri en forespørsel med ukjent utfall på nytt.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`id` | Typestring |
| Felt`object` | Typestring |
| Felt`model` | Typestring |
| Felt`status` | Typestring |
| Felt`content_url` | Typesigned URL |
| Felt`data[]` | Typesigned URL |
| Felt`usage` | Typeobject |
| Felt`result_pending_check` | Typeboolean |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |
| Svar409 · `video_not_ready` | VilkårDet opprinnelige resultatinnholdet er ennå ikke tilgjengelig | Neste trinnSpør jevnlig etter den opprinnelige returnerte ID-en og følg Retry-After. |
| Svar`server_error` | VilkårDet returnerte svaret angir at operasjonen eller resultatet må kontrolleres | Neste trinnBevar den opprinnelige returnerte operasjons-/oppgave-ID-en, forespørselshodene og svaret; fortsett å lese den opprinnelige operasjonen på de støttede måtene. Ikke send opprettelsesforespørselen på nytt. |

### Aliaser

#### Modellaliaser

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

#### Aliaser for metodestier

Bruk metodestiene som vises ovenfor.

#### Tilknyttede anroper-ID-er

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

**Ailoot · Videogenerering** `POST /v1/videos/generations` `happyhorse-r2v-latest`

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

Alibaba /`happyhorse-r2v-latest`

Modell-ID

- `happyhorse-1.1-r2v`
- `happyhorse-r2v`
- `happyhorse-r2v-latest`

### Start

En modell som genererer video fra referansebilder og et tekstbasert scenario. Hjelper med å bevare figurenes utseende, gjenstander og visuell stil i en ny scene.

Godkjente inndata

Tekst · Bilder

Resultater

Video

### Tilgjengelig i Ailoot · inndata & metoder

**Ailoot · Videogenerering** `POST /v1/videos/generations`

Inndatatyper

`text`, `image`

Utdatatyper

`video`

Utdataformat

mp4

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser happyhorse-r2v-latest | Standard— |
| Felt`prompt` | Type`string` | KravPåkrevd | Verdier & grenser Minste lengde: 1 | Standard— |
| Felt`duration` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 3 Maksimum: 15 Enhet: sekunder | Standard5 |
| Felt`resolution` | Type`string` | KravValgfritt | Verdier & grenser 480P, 720P, 1080P | Standard720P |
| Felt`ratio` | Type`string` | KravValgfritt | Verdier & grenser 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standard16:9 |
| Felt`image_urls` | Type`https_url\|data_image_url[]` | KravPåkrevd | Verdier & grenser Minste antall elementer: 1 Maksimalt antall elementer: 9 Maksimalt antall dekodede byte: 20 971 520 MIME-typer: image/jpeg, image/png, image/webp | Standard— |

Kombinasjoner av inngående materialer

**reference\_images\_to\_video** · Påkrevd: prompt, image\_urls

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`material_types` | Avtaletext, image |
| Parameter`required` | Avtalenull |
| Parameter`optional_controls` | Avtalenull |

Livssyklus: `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`

Metodestrukturer og ID-er er eksakte; leverandørens evne er adskilt fra godkjenning av forespørselen.

### Priser

#### Satser for Ailoot-metoder

Utdata

0,18 USD *per sekund ved 1080p*

Utdata

0,07 USD *per sekund ved 480p*

Utdata

0,14 USD *per sekund ved 720p*

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

### Eksempelforespørsler

#### Ailoot · Videogenerering

Bildereferanse

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-r2v-latest", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
    z=urlsplit(u) if isinstance(u,str) else None
    if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["ratio"]="16:9"
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
```

### Motta og lagre resultater

#### Ailoot · Videogenerering

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`

##### Kontroller jobbstatus

GET status

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

##### Lagre alle ferdige ressurser

GET alle ferdige ressurser

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

Andre innholdslesinger

GET innhold

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

##### Behold alle ferdige resultater

Lagre hver ferdige video eller returnerte fil; hent hver faktisk returnerte ressurs-URL.

Bevar hvert returnert dataelement og hver utdataindeks. content\_url viser bare til det første; hent hver faktiske innholdssti og ressurs. GET for innhold uten index omfatter ikke alle utdata.

##### Hvis det opprinnelige svaret må kontrolleres

Les den eksisterende opprinnelige jobben; send aldri en forespørsel med ukjent utfall på nytt.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`id` | Typestring |
| Felt`object` | Typestring |
| Felt`model` | Typestring |
| Felt`status` | Typestring |
| Felt`content_url` | Typesigned URL |
| Felt`data[]` | Typesigned URL |
| Felt`usage` | Typeobject |
| Felt`result_pending_check` | Typeboolean |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |
| Svar409 · `video_not_ready` | VilkårDet opprinnelige resultatinnholdet er ennå ikke tilgjengelig | Neste trinnSpør jevnlig etter den opprinnelige returnerte ID-en og følg Retry-After. |
| Svar`server_error` | VilkårDet returnerte svaret angir at operasjonen eller resultatet må kontrolleres | Neste trinnBevar den opprinnelige returnerte operasjons-/oppgave-ID-en, forespørselshodene og svaret; fortsett å lese den opprinnelige operasjonen på de støttede måtene. Ikke send opprettelsesforespørselen på nytt. |

### Aliaser

#### Modellaliaser

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

#### Aliaser for metodestier

Bruk metodestiene som vises ovenfor.

#### Tilknyttede anroper-ID-er

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

FAQ · happyhorse-1.1-r2v

Hvilke inndata og resultater er tilgjengelige?

`POST /v1/videos/generations` · `happyhorse-1.1-r2v`: `text`, `image` → `video` `POST /v1/videos/generations` · `happyhorse-r2v`: `text`, `image` → `video` `POST /v1/videos/generations` · `happyhorse-r2v-latest`: `text`, `image` → `video`

Hvilke felt bruker forespørselen?

`POST /v1/videos/generations` · `happyhorse-1.1-r2v`: `model`, `prompt`, `duration`, `resolution`, `ratio`, `image_urls` `POST /v1/videos/generations` · `happyhorse-r2v`: `model`, `prompt`, `duration`, `resolution`, `ratio`, `image_urls` `POST /v1/videos/generations` · `happyhorse-r2v-latest`: `model`, `prompt`, `duration`, `resolution`, `ratio`, `image_urls`

Hvilke grenser gjelder?

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

Koble Ailoot til Claude Code, OpenCode, Hermes eller egen applikasjon.

## Selskapet og dets prosjektportefølje

Selskapet og dets prosjektportefølje: millioner av kunder; månedlig salg for milliarder.

## Kjøp tokener med rabatt.

Abonnementsrabatt for jevnlig bruk. Kampanjekoder gir opptil 50% på tokenkjøp.

Abonnement

Velg et rabattabonnement for faste forespørsler.

Kampanjekode opptil 50%

Oppgi kode ved kjøp. Prisen beregnes på nytt etter gjeldende kampanje.

Kostnader i historikken

Modell, tokener og beløp lagres for hver forespørsel.

[Velg abonnement](https://ailoot.ai/docs/nb/billing/subscriptions/) · [Se modellpriser](https://ailoot.ai/models/nb/)

## Koble API-et til produktet du selger.

SaaS, apper og boter etter Ailoots offentlige tilbud og lisensavtale. Be om forhandlerlisens for videresalg.

Kommersiell applikasjon

Bygg tekst-, bilde-, video- og lydgenerering inn i betalte funksjoner i tjenesten.

Forhandlerlisens

Send prosjektbeskrivelse og tilgangsopplegg. Be om skriftlige vilkår for bruk og videresalg.

Dokumenter på nettstedet

Offentlig tilbud, lisensavtale og retningslinjer for databehandling er tilgjengelige før tilkobling.

[Be om forhandlerlisens](mailto:support@ailoot.ai) · [Offentlig tilbud og lisensavtale](https://ailoot.ai/legal/offer?lang=nb)

## Ailoot · Selskapet og dets prosjektportefølje





Ailoot bygger på etablert driftserfaring, en stor kundebase, stabil tjeneste og løpende KPI-kontroll.





Selskapet og dets prosjektportefølje: millioner av kunder; månedlig salg for milliarder.





Ailoot bruker denne driftserfaringen til API-tilgang til AI-funksjoner i kundenes produkter, agenter, applikasjoner og automatiseringer.
