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

# happyhorse-1.1-r2v

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

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

Modell för videogenerering utifrån referensbilder och ett textbaserat manus. Hjälper till att bevara karaktärers och föremåls utseende samt den visuella stilen i en ny scen.

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

Om modellen

Den här beskrivningen omfattar modellens förmågor. Tillgängliga indata, utdata och alternativ i Ailoot anges nedan för den valda metoden.

HappyHorse-1.1-R2V skapar en ny videoscen utifrån referensbilder och en textinstruktion. Alibaba har inriktat modellen på att bevara igenkännbara karaktärer, objekt och visuell stil när rörelser genereras. Referenserna anger scenens innehåll och utseende, medan texten beskriver hur delarna ska samverka.

#### Referensbildernas roller

Från en till nio bilder kan användas. De kan ange en karaktär, ett föremål, en omgivning eller ett konstnärligt uttryck. I beskrivningen går det att ange referensens nummer och ett visst objekt i den för att knyta bildmaterialet till rätt del av handlingen. Det är särskilt användbart när delar från flera bilder ska förenas i en komposition.

Till skillnad från läget med en startbildruta fungerar referenserna här som stöd för den nya scenens innehåll. Textinstruktionen är obligatorisk: den kopplar objektens utseende till handlingen, kamerarörelserna och den övergripande iscensättningen. Tillverkaren framhåller visuell sammanhållning och filmiska rörelser. Resultatet är fortfarande genererat material, inte ett montage av ursprungsbilderna.

JPEG, JPG, PNG och WEBP accepteras med en storlek på högst 20 MB per fil. Bildens kortsida måste vara minst 400 pixlar. Material på nivån 720P eller högre rekommenderas. Indata i det här läget består just av bilder och text.

#### Längd, bild och ljud

Resultatet sparas i MP4 med 24 bildrutor per sekund. Längden anges som ett heltal från 3 till 15 sekunder. Upplösningen kan väljas mellan 480P, 720P och 1080P. Generering av ljud stöds.

Liggande, stående och kvadratiska bilder finns tillgängliga: 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 och 21:9. Valet av format hjälper till att i förväg bestämma den nya scenens utrymme för komposition.

Texten kan vara på vilket språk som helst. Gränsen är 5000 icke-kinesiska eller 2500 kinesiska tecken, och den överskjutande delen tas bort. Referensernas viktigaste roller, handlingen och rörelserna måste rymmas inom detta. Ett inledande slumpfrö kan styra hur lika varianterna blir, men garanterar inte en exakt upprepning av en video.

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

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

Modell för videogenerering utifrån referensbilder och ett textbaserat manus. Hjälper till att bevara karaktärers och föremåls utseende samt den visuella stilen i en ny scen.

Godkända indata

Text · Bilder

Resultat

Video

### Tillgängligt i Ailoot · indata & metoder

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

Indatatyper

`text`, `image`

Utdatatyper

`video`

Utdataformat

mp4

| Fält | Typ | Krav | Värden & gränser | Standard |
| --- | --- | --- | --- | --- |
| Fält`model` | Typ`string` | KravObligatoriskt | Värden & gränser happyhorse-1.1-r2v | Standard— |
| Fält`prompt` | Typ`string` | KravObligatoriskt | Värden & gränser Minsta längd: 1 | Standard— |
| Fält`duration` | Typ`integer` | KravValfritt | Värden & gränser Minimum: 3 Maximum: 15 Enhet: sekunder | Standard5 |
| Fält`resolution` | Typ`string` | KravValfritt | Värden & gränser 480P, 720P, 1080P | Standard720P |
| Fält`ratio` | Typ`string` | KravValfritt | Värden & gränser 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standard16:9 |
| Fält`image_urls` | Typ`https_url\|data_image_url[]` | KravObligatoriskt | Värden & gränser Minsta antal objekt: 1 Maximalt antal objekt: 9 Maximalt antal avkodade byte: 20 971 520 MIME-typer: image/jpeg, image/png, image/webp | Standard— |

Kombinationer av indatamaterial

**reference\_images\_to\_video** · Krävs: prompt, image\_urls

Metodparametrar och livscykel

| Parameter | Avtal |
| --- | --- |
| Parameter`content_type` | Avtalapplication/json |
| Parameter`required` | Avtalmodel, prompt, image\_urls |
| Parameter`material_types` | Avtaltext, image |
| Parameter`optional` | Avtalduration, resolution, ratio |
| Parameter`duration_integer_range` | Avtal3, 15 |
| Parameter`default_duration` | Avtal5 |
| Parameter`resolution` | Avtal480P, 720P, 1080P |
| Parameter`default_resolution` | Avtal720P |
| Parameter`ratio` | Avtal16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
| Parameter`ratio_must_omit` | Avtalfalse |
| Parameter`image_urls` | Avtal{"min\_count":1,"max\_count":9,"schemes":\["https","data för rasterbild i base64"\],"max\_data\_image\_bytes":20971520} |

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

Metodernas strukturer och ID:n är exakta; leverantörens funktioner är åtskilda från att begäran tillåts.

### Priser

#### Priser för Ailoot-metoder

Utdata

0,18 US$ *per sekund vid 1080p*

Utdata

0,07 US$ *per sekund vid 480p*

Utdata

0,14 US$ *per sekund vid 720p*

Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. [Så fungerar reservation och slutreglering →](https://ailoot.ai/docs/sv/billing/reserve/)

### Exempelbegäranden

#### Ailoot · Videor

Bildreferens

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

### Ta emot och spara resultat

#### Ailoot · Videor

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`

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

##### Spara alla färdiga resurser

GET alla färdiga resurser

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

Andra innehållsläsningar

GET innehåll

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

##### Behåll alla färdiga resultat

Spara varje färdig video eller returnerad fil; hämta varje faktiskt returnerad resurs-URL.

Bevara varje returnerad datapost och utdataindex. content\_url avser endast det första; hämta varje faktisk innehållssökväg och tillgång. GET av innehåll utan index omfattar inte alla resultat.

##### Om det ursprungliga svaret behöver kontrolleras

Läs det befintliga ursprungliga jobbet; skicka aldrig en oklar sändning igen.

Svarsfält

| Fält | Typ |
| --- | --- |
| Fält`id` | Typstring |
| Fält`object` | Typstring |
| Fält`model` | Typstring |
| Fält`status` | Typstring |
| Fält`content_url` | Typsigned URL |
| Fält`data[]` | Typsigned URL |
| Fält`usage` | Typobject |
| Fält`result_pending_check` | Typboolean |

Fel och nästa steg

| Svar | Villkor | Nästa steg |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
| Svar409 · `video_not_ready` | VillkorDet ursprungliga resultatinnehållet är ännu inte tillgängligt | Nästa stegKontrollera det ursprungliga returnerade ID:t och följ Retry-After. |
| Svar`server_error` | VillkorDet returnerade svaret anger att operationen eller resultatet behöver kontrolleras | Nästa stegSpara det ursprungliga operations- eller uppgifts-ID som returnerades, förfrågans headers och svaret. Fortsätt att läsa den ursprungliga operationen med de läsmetoder som stöds. Skicka inte skapandeförfrågan igen. |

### Alias

#### Modellalias

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

#### Alias för metodsökvägar

Använd metodsökvägarna som visas ovan.

#### Relaterade anropar-ID:n

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

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

[`happyhorse-r2v`](https://ailoot.ai/models/sv/#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

Modell för videogenerering utifrån referensbilder och ett textbaserat manus. Hjälper till att bevara karaktärers och föremåls utseende samt den visuella stilen i en ny scen.

Godkända indata

Text · Bilder

Resultat

Video

### Tillgängligt i Ailoot · indata & metoder

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

Indatatyper

`text`, `image`

Utdatatyper

`video`

Utdataformat

mp4

| Fält | Typ | Krav | Värden & gränser | Standard |
| --- | --- | --- | --- | --- |
| Fält`model` | Typ`string` | KravObligatoriskt | Värden & gränser happyhorse-r2v | Standard— |
| Fält`prompt` | Typ`string` | KravObligatoriskt | Värden & gränser Minsta längd: 1 | Standard— |
| Fält`duration` | Typ`integer` | KravValfritt | Värden & gränser Minimum: 3 Maximum: 15 Enhet: sekunder | Standard5 |
| Fält`resolution` | Typ`string` | KravValfritt | Värden & gränser 480P, 720P, 1080P | Standard720P |
| Fält`ratio` | Typ`string` | KravValfritt | Värden & gränser 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standard16:9 |
| Fält`image_urls` | Typ`https_url\|data_image_url[]` | KravObligatoriskt | Värden & gränser Minsta antal objekt: 1 Maximalt antal objekt: 9 Maximalt antal avkodade byte: 20 971 520 MIME-typer: image/jpeg, image/png, image/webp | Standard— |

Kombinationer av indatamaterial

**reference\_images\_to\_video** · Krävs: prompt, image\_urls

Metodparametrar och livscykel

| Parameter | Avtal |
| --- | --- |
| Parameter`material_types` | Avtaltext, image |
| Parameter`required` | Avtalnull |
| Parameter`optional_controls` | Avtalnull |

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

Metodernas strukturer och ID:n är exakta; leverantörens funktioner är åtskilda från att begäran tillåts.

### Priser

#### Priser för Ailoot-metoder

Utdata

0,18 US$ *per sekund vid 1080p*

Utdata

0,07 US$ *per sekund vid 480p*

Utdata

0,14 US$ *per sekund vid 720p*

Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. [Så fungerar reservation och slutreglering →](https://ailoot.ai/docs/sv/billing/reserve/)

### Exempelbegäranden

#### Ailoot · Videor

Bildreferens

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

### Ta emot och spara resultat

#### Ailoot · Videor

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`

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

##### Spara alla färdiga resurser

GET alla färdiga resurser

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

Andra innehållsläsningar

GET innehåll

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

##### Behåll alla färdiga resultat

Spara varje färdig video eller returnerad fil; hämta varje faktiskt returnerad resurs-URL.

Bevara varje returnerad datapost och utdataindex. content\_url avser endast det första; hämta varje faktisk innehållssökväg och tillgång. GET av innehåll utan index omfattar inte alla resultat.

##### Om det ursprungliga svaret behöver kontrolleras

Läs det befintliga ursprungliga jobbet; skicka aldrig en oklar sändning igen.

Svarsfält

| Fält | Typ |
| --- | --- |
| Fält`id` | Typstring |
| Fält`object` | Typstring |
| Fält`model` | Typstring |
| Fält`status` | Typstring |
| Fält`content_url` | Typsigned URL |
| Fält`data[]` | Typsigned URL |
| Fält`usage` | Typobject |
| Fält`result_pending_check` | Typboolean |

Fel och nästa steg

| Svar | Villkor | Nästa steg |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
| Svar409 · `video_not_ready` | VillkorDet ursprungliga resultatinnehållet är ännu inte tillgängligt | Nästa stegKontrollera det ursprungliga returnerade ID:t och följ Retry-After. |
| Svar`server_error` | VillkorDet returnerade svaret anger att operationen eller resultatet behöver kontrolleras | Nästa stegSpara det ursprungliga operations- eller uppgifts-ID som returnerades, förfrågans headers och svaret. Fortsätt att läsa den ursprungliga operationen med de läsmetoder som stöds. Skicka inte skapandeförfrågan igen. |

### Alias

#### Modellalias

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

#### Alias för metodsökvägar

Använd metodsökvägarna som visas ovan.

#### Relaterade anropar-ID:n

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

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

[`happyhorse-r2v-latest`](https://ailoot.ai/models/sv/#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

Modell för videogenerering utifrån referensbilder och ett textbaserat manus. Hjälper till att bevara karaktärers och föremåls utseende samt den visuella stilen i en ny scen.

Godkända indata

Text · Bilder

Resultat

Video

### Tillgängligt i Ailoot · indata & metoder

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

Indatatyper

`text`, `image`

Utdatatyper

`video`

Utdataformat

mp4

| Fält | Typ | Krav | Värden & gränser | Standard |
| --- | --- | --- | --- | --- |
| Fält`model` | Typ`string` | KravObligatoriskt | Värden & gränser happyhorse-r2v-latest | Standard— |
| Fält`prompt` | Typ`string` | KravObligatoriskt | Värden & gränser Minsta längd: 1 | Standard— |
| Fält`duration` | Typ`integer` | KravValfritt | Värden & gränser Minimum: 3 Maximum: 15 Enhet: sekunder | Standard5 |
| Fält`resolution` | Typ`string` | KravValfritt | Värden & gränser 480P, 720P, 1080P | Standard720P |
| Fält`ratio` | Typ`string` | KravValfritt | Värden & gränser 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standard16:9 |
| Fält`image_urls` | Typ`https_url\|data_image_url[]` | KravObligatoriskt | Värden & gränser Minsta antal objekt: 1 Maximalt antal objekt: 9 Maximalt antal avkodade byte: 20 971 520 MIME-typer: image/jpeg, image/png, image/webp | Standard— |

Kombinationer av indatamaterial

**reference\_images\_to\_video** · Krävs: prompt, image\_urls

Metodparametrar och livscykel

| Parameter | Avtal |
| --- | --- |
| Parameter`material_types` | Avtaltext, image |
| Parameter`required` | Avtalnull |
| Parameter`optional_controls` | Avtalnull |

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

Metodernas strukturer och ID:n är exakta; leverantörens funktioner är åtskilda från att begäran tillåts.

### Priser

#### Priser för Ailoot-metoder

Utdata

0,18 US$ *per sekund vid 1080p*

Utdata

0,07 US$ *per sekund vid 480p*

Utdata

0,14 US$ *per sekund vid 720p*

Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. [Så fungerar reservation och slutreglering →](https://ailoot.ai/docs/sv/billing/reserve/)

### Exempelbegäranden

#### Ailoot · Videor

Bildreferens

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

### Ta emot och spara resultat

#### Ailoot · Videor

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`

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

##### Spara alla färdiga resurser

GET alla färdiga resurser

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

Andra innehållsläsningar

GET innehåll

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

##### Behåll alla färdiga resultat

Spara varje färdig video eller returnerad fil; hämta varje faktiskt returnerad resurs-URL.

Bevara varje returnerad datapost och utdataindex. content\_url avser endast det första; hämta varje faktisk innehållssökväg och tillgång. GET av innehåll utan index omfattar inte alla resultat.

##### Om det ursprungliga svaret behöver kontrolleras

Läs det befintliga ursprungliga jobbet; skicka aldrig en oklar sändning igen.

Svarsfält

| Fält | Typ |
| --- | --- |
| Fält`id` | Typstring |
| Fält`object` | Typstring |
| Fält`model` | Typstring |
| Fält`status` | Typstring |
| Fält`content_url` | Typsigned URL |
| Fält`data[]` | Typsigned URL |
| Fält`usage` | Typobject |
| Fält`result_pending_check` | Typboolean |

Fel och nästa steg

| Svar | Villkor | Nästa steg |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
| Svar409 · `video_not_ready` | VillkorDet ursprungliga resultatinnehållet är ännu inte tillgängligt | Nästa stegKontrollera det ursprungliga returnerade ID:t och följ Retry-After. |
| Svar`server_error` | VillkorDet returnerade svaret anger att operationen eller resultatet behöver kontrolleras | Nästa stegSpara det ursprungliga operations- eller uppgifts-ID som returnerades, förfrågans headers och svaret. Fortsätt att läsa den ursprungliga operationen med de läsmetoder som stöds. Skicka inte skapandeförfrågan igen. |

### Alias

#### Modellalias

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

#### Alias för metodsökvägar

Använd metodsökvägarna som visas ovan.

#### Relaterade anropar-ID:n

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

FAQ · happyhorse-1.1-r2v

Vilka indata och resultat finns?

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

Vilka fält använder begäran?

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

Vilka gränser gäller?

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

Anslut Ailoot till Claude Code, OpenCode, Hermes eller din app.

## Företaget och dess projektportfölj

Företaget och dess projektportfölj: miljontals kunder; månatlig försäljning för miljarder.

## Köp token med rabatt.

Prenumerationsrabatt för återkommande arbete. Kampanjkoder ger upp till 50% vid tokenköp.

Prenumeration

Välj en rabatterad plan för återkommande anrop.

Kampanjkod upp till 50%

Ange koden vid köpet. Priset räknas om enligt kampanjen.

Kostnader i historiken

Modell, token och belopp sparas för varje anrop.

[Välj prenumeration](https://ailoot.ai/docs/sv/billing/subscriptions/) · [Se modellpriser](https://ailoot.ai/models/sv/)

## Anslut API till produkten som du säljer.

SaaS, appar och botar enligt Ailoots officiella villkor och licensavtal. Begär återförsäljarlicens för vidareförsäljning.

Kommersiell applikation

Bygg text-, bild-, video- och ljudgenerering i tjänstens betalda funktioner.

Återförsäljarlicens

Skicka projektbeskrivning och åtkomstupplägg. Begär skriftliga villkor för användning och vidareförsäljning.

Dokument på webbplatsen

Officiella villkor, licensavtal och databehandlingspolicy finns tillgängliga före anslutning.

[Begär återförsäljarlicens](mailto:support@ailoot.ai) · [Officiella villkor och licensavtal](https://ailoot.ai/legal/offer?lang=sv)

## Ailoot · Företaget och dess projektportfölj





Ailoot bygger på etablerad driftserfarenhet, en stor kundbas, stabil service och löpande KPI-kontroll.





Företaget och dess projektportfölj: miljontals kunder; månatlig försäljning för miljarder.





Ailoot använder denna driftserfarenhet för API-åtkomst till AI-funktioner i kundernas produkter, agenter, applikationer och automatiseringar.
