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

# happyhorse-1.1-r2v

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

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

Een model voor videogeneratie op basis van referentieafbeeldingen en een tekstueel scenario. Het helpt het uiterlijk van personages, objecten en de visuele stijl in een nieuwe scène consistent te houden.

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

Over het model

Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.

HappyHorse-1.1-R2V maakt een nieuwe videoscène op basis van referentieafbeeldingen en een tekstuele opdracht. Alibaba richt het model op het behoud van herkenbare personages, objecten en visuele stijl bij het genereren van beweging. De referenties bepalen de inhoud en het uiterlijk van de scène, terwijl de tekst beschrijft hoe die elementen met elkaar moeten omgaan.

#### De rol van visuele voorbeelden

Er kunnen één tot negen afbeeldingen worden gebruikt. Ze kunnen een personage, voorwerp, omgeving of artistieke uitwerking bepalen. In de beschrijving kan het nummer van een referentie en een specifiek object erop worden genoemd om het visuele materiaal aan het juiste deel van de actie te koppelen. Dit is vooral nuttig wanneer elementen uit meerdere afbeeldingen in één compositie moeten worden samengebracht.

Anders dan in de modus met een beginframe dienen de referenties hier als houvast voor de inhoud van een nieuwe scène. Een tekstuele opdracht is verplicht: die verbindt het uiterlijk van de objecten met de actie, de camerabeweging en de algehele enscenering. De fabrikant benadrukt visuele samenhang en filmische beweging; het resultaat blijft gegenereerde video en is geen montage van de bronafbeeldingen.

JPEG, JPG, PNG en WEBP worden geaccepteerd, elk tot 20 MB. De korte zijde van de afbeelding moet minimaal 400 pixels zijn; materiaal van 720P of hoger wordt aanbevolen. De invoer van deze modus bestaat specifiek uit afbeeldingen en tekst.

#### Duur, beeldformaat en geluid

Het resultaat wordt opgeslagen als MP4 met 24 frames per seconde. De duur wordt opgegeven als een geheel getal van 3 tot 15 seconden. De resolutie kan worden gekozen uit 480P, 720P en 1080P; het genereren van geluid wordt ondersteund.

Horizontale, verticale en vierkante beeldformaten zijn beschikbaar: 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 en 21:9. De formaatkeuze helpt vooraf de compositieruimte van de nieuwe scène te bepalen.

De tekst mag in elke taal zijn. De grens is 5000 niet-Chinese of 2500 Chinese tekens; het overtollige deel wordt verwijderd. De belangrijkste rollen van de referenties, acties en bewegingen moeten binnen dit volume passen. Een willekeurige seed kan de gelijkenis tussen varianten sturen, maar garandeert geen exacte herhaling van een video.

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

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

Alibaba /`happyhorse-1.1-r2v`

Model-ID

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

### Aan de slag

Een model voor videogeneratie op basis van referentieafbeeldingen en een tekstueel scenario. Het helpt het uiterlijk van personages, objecten en de visuele stijl in een nieuwe scène consistent te houden.

Toegestane invoer

Tekst · Afbeeldingen

Resultaten

Video

### Beschikbaar in Ailoot · invoer en methoden

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

Invoer

`text`, `image`

Uitvoer

`video`

Uitvoerformaat

mp4

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten happyhorse-1.1-r2v | Standaard— |
| Veld`prompt` | Type`string` | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
| Veld`duration` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 3 Maximum: 15 Eenheid: seconden | Standaard5 |
| Veld`resolution` | Type`string` | VereisteOptioneel | Waarden en limieten 480P, 720P, 1080P | Standaard720P |
| Veld`ratio` | Type`string` | VereisteOptioneel | Waarden en limieten 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standaard16:9 |
| Veld`image_urls` | Type`https_url\|data_image_url[]` | VereisteVereist | Waarden en limieten Minimumaantal items: 1 Maximumaantal items: 9 Maximumaantal gedecodeerde bytes: 20.971.520 MIME-typen: image/jpeg, image/png, image/webp | Standaard— |

Combinaties van invoermaterialen

**reference\_images\_to\_video** · Vereist: prompt, image\_urls

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, prompt, image\_urls |
| Parameter`material_types` | Contracttext, image |
| Parameter`optional` | Contractduration, resolution, ratio |
| Parameter`duration_integer_range` | Contract3, 15 |
| Parameter`default_duration` | Contract5 |
| Parameter`resolution` | Contract480P, 720P, 1080P |
| Parameter`default_resolution` | Contract720P |
| Parameter`ratio` | Contract16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
| Parameter`ratio_must_omit` | Contractfalse |
| Parameter`image_urls` | Contract{"min\_count":1,"max\_count":9,"schemes":\["https","base64-gecodeerde rastergegevens"\],"max\_data\_image\_bytes":20971520} |

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

De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.

### Tarieven

#### Ailoot-methodetarieven

Uitvoer

US$ 0,18 *per seconde bij 1080p*

Uitvoer

US$ 0,07 *per seconde bij 480p*

Uitvoer

US$ 0,14 *per seconde bij 720p*

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl-be/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot · Videogeneratie

Afbeeldingsreferentie

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

### Resultaten ophalen en opslaan

#### Ailoot · Videogeneratie

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`

##### Taakstatus controleren

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

##### Alle voltooide bestanden opslaan

GET · Alle voltooide bestanden

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

Lezen van andere inhoud

GET · Inhoud

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

##### Alle voltooide resultaten bewaren

Sla elke voltooide video of elk teruggegeven bestand op; haal elke daadwerkelijk teruggegeven bestands-URL op.

Bewaar elk teruggestuurd gegevensitem en elke uitvoerindex. content\_url bevat alleen het eerste resultaat; haal elk werkelijk inhoudspad en elke asset op. GET van inhoud zonder index levert niet alle uitvoer op.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Raadpleeg de bestaande oorspronkelijke opdracht; dien een aanvraag met onbekende verzenduitkomst nooit opnieuw in.

Antwoordvelden

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

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
| Antwoord409 · `video_not_ready` | VoorwaardeDe oorspronkelijke resultaatinhoud is nog niet beschikbaar | Volgende stapVraag de oorspronkelijk teruggestuurde ID herhaaldelijk op en respecteer Retry-After. |
| Antwoord`server_error` | VoorwaardeDe teruggegeven respons geeft aan dat de bewerking of het resultaat gecontroleerd moet worden | Volgende stapBewaar de oorspronkelijk teruggegeven bewerkings-/taak-ID, aanvraagheaders en respons; blijf de oorspronkelijke bewerking uitlezen via de ondersteunde leesaanvragen. Dien de aanmaakaanvraag niet opnieuw in. |

### Aliasnamen

#### Modelaliasnamen

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

#### Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

#### Gerelateerde aanroeper-ID’s

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

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

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

Alibaba /`happyhorse-r2v`

Model-ID

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

### Aan de slag

Een model voor videogeneratie op basis van referentieafbeeldingen en een tekstueel scenario. Het helpt het uiterlijk van personages, objecten en de visuele stijl in een nieuwe scène consistent te houden.

Toegestane invoer

Tekst · Afbeeldingen

Resultaten

Video

### Beschikbaar in Ailoot · invoer en methoden

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

Invoer

`text`, `image`

Uitvoer

`video`

Uitvoerformaat

mp4

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten happyhorse-r2v | Standaard— |
| Veld`prompt` | Type`string` | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
| Veld`duration` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 3 Maximum: 15 Eenheid: seconden | Standaard5 |
| Veld`resolution` | Type`string` | VereisteOptioneel | Waarden en limieten 480P, 720P, 1080P | Standaard720P |
| Veld`ratio` | Type`string` | VereisteOptioneel | Waarden en limieten 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standaard16:9 |
| Veld`image_urls` | Type`https_url\|data_image_url[]` | VereisteVereist | Waarden en limieten Minimumaantal items: 1 Maximumaantal items: 9 Maximumaantal gedecodeerde bytes: 20.971.520 MIME-typen: image/jpeg, image/png, image/webp | Standaard— |

Combinaties van invoermaterialen

**reference\_images\_to\_video** · Vereist: prompt, image\_urls

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`material_types` | Contracttext, image |
| Parameter`required` | Contractnull |
| Parameter`optional_controls` | Contractnull |

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

De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.

### Tarieven

#### Ailoot-methodetarieven

Uitvoer

US$ 0,18 *per seconde bij 1080p*

Uitvoer

US$ 0,07 *per seconde bij 480p*

Uitvoer

US$ 0,14 *per seconde bij 720p*

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl-be/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot · Videogeneratie

Afbeeldingsreferentie

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

### Resultaten ophalen en opslaan

#### Ailoot · Videogeneratie

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`

##### Taakstatus controleren

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

##### Alle voltooide bestanden opslaan

GET · Alle voltooide bestanden

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

Lezen van andere inhoud

GET · Inhoud

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

##### Alle voltooide resultaten bewaren

Sla elke voltooide video of elk teruggegeven bestand op; haal elke daadwerkelijk teruggegeven bestands-URL op.

Bewaar elk teruggestuurd gegevensitem en elke uitvoerindex. content\_url bevat alleen het eerste resultaat; haal elk werkelijk inhoudspad en elke asset op. GET van inhoud zonder index levert niet alle uitvoer op.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Raadpleeg de bestaande oorspronkelijke opdracht; dien een aanvraag met onbekende verzenduitkomst nooit opnieuw in.

Antwoordvelden

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

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
| Antwoord409 · `video_not_ready` | VoorwaardeDe oorspronkelijke resultaatinhoud is nog niet beschikbaar | Volgende stapVraag de oorspronkelijk teruggestuurde ID herhaaldelijk op en respecteer Retry-After. |
| Antwoord`server_error` | VoorwaardeDe teruggegeven respons geeft aan dat de bewerking of het resultaat gecontroleerd moet worden | Volgende stapBewaar de oorspronkelijk teruggegeven bewerkings-/taak-ID, aanvraagheaders en respons; blijf de oorspronkelijke bewerking uitlezen via de ondersteunde leesaanvragen. Dien de aanmaakaanvraag niet opnieuw in. |

### Aliasnamen

#### Modelaliasnamen

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

#### Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

#### Gerelateerde aanroeper-ID’s

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

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

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

Alibaba /`happyhorse-r2v-latest`

Model-ID

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

### Aan de slag

Een model voor videogeneratie op basis van referentieafbeeldingen en een tekstueel scenario. Het helpt het uiterlijk van personages, objecten en de visuele stijl in een nieuwe scène consistent te houden.

Toegestane invoer

Tekst · Afbeeldingen

Resultaten

Video

### Beschikbaar in Ailoot · invoer en methoden

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

Invoer

`text`, `image`

Uitvoer

`video`

Uitvoerformaat

mp4

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten happyhorse-r2v-latest | Standaard— |
| Veld`prompt` | Type`string` | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
| Veld`duration` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 3 Maximum: 15 Eenheid: seconden | Standaard5 |
| Veld`resolution` | Type`string` | VereisteOptioneel | Waarden en limieten 480P, 720P, 1080P | Standaard720P |
| Veld`ratio` | Type`string` | VereisteOptioneel | Waarden en limieten 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standaard16:9 |
| Veld`image_urls` | Type`https_url\|data_image_url[]` | VereisteVereist | Waarden en limieten Minimumaantal items: 1 Maximumaantal items: 9 Maximumaantal gedecodeerde bytes: 20.971.520 MIME-typen: image/jpeg, image/png, image/webp | Standaard— |

Combinaties van invoermaterialen

**reference\_images\_to\_video** · Vereist: prompt, image\_urls

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`material_types` | Contracttext, image |
| Parameter`required` | Contractnull |
| Parameter`optional_controls` | Contractnull |

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

De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.

### Tarieven

#### Ailoot-methodetarieven

Uitvoer

US$ 0,18 *per seconde bij 1080p*

Uitvoer

US$ 0,07 *per seconde bij 480p*

Uitvoer

US$ 0,14 *per seconde bij 720p*

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl-be/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot · Videogeneratie

Afbeeldingsreferentie

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

### Resultaten ophalen en opslaan

#### Ailoot · Videogeneratie

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`

##### Taakstatus controleren

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

##### Alle voltooide bestanden opslaan

GET · Alle voltooide bestanden

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

Lezen van andere inhoud

GET · Inhoud

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

##### Alle voltooide resultaten bewaren

Sla elke voltooide video of elk teruggegeven bestand op; haal elke daadwerkelijk teruggegeven bestands-URL op.

Bewaar elk teruggestuurd gegevensitem en elke uitvoerindex. content\_url bevat alleen het eerste resultaat; haal elk werkelijk inhoudspad en elke asset op. GET van inhoud zonder index levert niet alle uitvoer op.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Raadpleeg de bestaande oorspronkelijke opdracht; dien een aanvraag met onbekende verzenduitkomst nooit opnieuw in.

Antwoordvelden

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

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
| Antwoord409 · `video_not_ready` | VoorwaardeDe oorspronkelijke resultaatinhoud is nog niet beschikbaar | Volgende stapVraag de oorspronkelijk teruggestuurde ID herhaaldelijk op en respecteer Retry-After. |
| Antwoord`server_error` | VoorwaardeDe teruggegeven respons geeft aan dat de bewerking of het resultaat gecontroleerd moet worden | Volgende stapBewaar de oorspronkelijk teruggegeven bewerkings-/taak-ID, aanvraagheaders en respons; blijf de oorspronkelijke bewerking uitlezen via de ondersteunde leesaanvragen. Dien de aanmaakaanvraag niet opnieuw in. |

### Aliasnamen

#### Modelaliasnamen

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

#### Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

#### Gerelateerde aanroeper-ID’s

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

FAQ · happyhorse-1.1-r2v

Welke invoer en resultaten zijn beschikbaar?

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

Welke velden gebruikt het verzoek?

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

Welke limieten gelden?

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

Verbind Ailoot met Claude Code, OpenCode, Hermes of je eigen applicatie.

## Het bedrijf en zijn projectenportefeuille

Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.

## Koop tokens met korting.

Abonnementsvoordeel voor regelmatig gebruik. Promotiecodes geven tot 50% korting op tokens.

Abonnement

Kies een abonnement met korting voor je terugkerende verzoeken.

Promotiecode tot 50%

Vul de code bij aankoop in. De prijs wordt volgens de lopende actie herberekend.

Kosten in de geschiedenis

Model, tokens en bedrag worden per verzoek bewaard.

[Kies een abonnement](https://ailoot.ai/docs/nl-be/billing/subscriptions/) · [Bekijk modelprijzen](https://ailoot.ai/models/nl-be/)

## Verbind de API met het product dat je verkoopt.

SaaS, apps en bots volgens de openbare aanbodvoorwaarden en licentieovereenkomst van Ailoot. Vraag voor doorverkoop een resellerlicentie aan.

Commerciële applicatie

Voeg tekst-, beeld-, video- en geluidsgeneratie aan betaalde functies van je service toe.

Resellerlicentie

Stuur een projectbeschrijving en toegangsschema. Vraag schriftelijke voorwaarden voor gebruik en doorverkoop.

Documenten op de site

Aanbodvoorwaarden, licentieovereenkomst en gegevensbeleid zijn vóór het verbinden beschikbaar.

[Vraag een resellerlicentie aan](mailto:support@ailoot.ai) · [Aanbodvoorwaarden en licentieovereenkomst](https://ailoot.ai/legal/offer?lang=nl-be)

## Ailoot · Het bedrijf en zijn projectenportefeuille





Ailoot bouwt op opgebouwde operationele ervaring, een groot klantenbestand, een stabiele dienst en doorlopende KPI-controle.





Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.





Ailoot gebruikt die operationele ervaring voor API-toegang tot AI-functies in klantproducten, agents, applicaties en automatiseringen.
