Source: https://ailoot.ai/models/it/happyhorse-1-1-t2v/
Canonical: https://ailoot.ai/models/it/happyhorse-1-1-t2v/
Language: it

# happyhorse-1.1-t2v

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

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

Modello per creare brevi video con audio da una descrizione testuale. È adatto a scene in cui movimento, composizione e stile visivo vengono definiti con le parole.

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

Informazioni sul modello

Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.

HappyHorse-1.1-T2V è un modello di Alibaba per creare brevi scene video da testo. La descrizione definisce personaggi, azioni, ambientazione e stile visivo; questa modalità non richiede un'immagine iniziale. Il modello genera il video e può creare anche l'audio che lo accompagna.

Il produttore mette in evidenza la comprensione del significato della scena, la regia cinematografica e l'espressività del movimento. Il testo può definire l'atmosfera, le azioni del personaggio, il comportamento degli oggetti e la dinamica fisica. Si può così costruire una scena attorno a ciò che deve accadere, per poi guidarla attraverso la luce, l'angolazione e il movimento della videocamera.

#### La regia attraverso le parole

L'istruzione è obbligatoria e può essere in qualsiasi lingua. Può contenere fino a 5000 caratteri non cinesi oppure 2500 caratteri cinesi; la parte in eccesso viene scartata. L'azione, l'ambiente e i dettagli visivi importanti devono essere descritti entro questo spazio. Questa impostazione lascia al modello la possibilità di creare una nuova scena, anziché fornirgli un primo fotogramma già pronto.

In questa modalità il testo è il principale strumento di controllo. L'aspetto specifico di un personaggio o di un oggetto può essere descritto a parole; la possibilità di trasmetterlo tramite immagini separate appartiene a un'altra modalità della famiglia. Il risultato dipende dall'intera istruzione: lo stesso seme casuale iniziale aiuta quindi a ottenere varianti simili, ma non garantisce una riproduzione esatta.

#### Video e audio

Per HappyHorse-1.1, la durata del video si imposta con un numero intero da 3 a 15 secondi. Sono supportate le risoluzioni 480P, 720P e 1080P. Il file finale è in formato MP4 a 24 fotogrammi al secondo. Il modello può generare l'audio insieme alle immagini, collegandolo a ciò che avviene nella scena.

La forma dell'inquadratura può essere definita in anticipo. Sono disponibili 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 e 21:9: dall'inquadratura cinematografica ampia al video verticale allungato. Risoluzione, formato e durata determinano le dimensioni del risultato; contenuto e movimento sono definiti dal testo.

Questa variante è pensata per creare una nuova scena da un'idea espressa a parole. È adatta a un breve episodio, a un'idea visiva o a un video d'atmosfera la cui regia deve essere descritta nel testo.

**Ailoot · Generazione video** `POST /v1/videos/generations` `happyhorse-1.1-t2v`

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

Alibaba /`happyhorse-1.1-t2v`

ID del modello

- `happyhorse-1.1-t2v`
- `happyhorse-t2v`
- `happyhorse-t2v-latest`

### Introduzione

Modello per creare brevi video con audio da una descrizione testuale. È adatto a scene in cui movimento, composizione e stile visivo vengono definiti con le parole.

Input accettati

Testo

Risultati

Video

### Disponibile in Ailoot · input e metodi

**Ailoot · Generazione video** `POST /v1/videos/generations`

Tipi di input

`text`

Tipi di output

`video`

Formato di output

mp4

| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObbligatorio | Valori e limiti happyhorse-1.1-t2v | Predefinito— |
| Campo`prompt` | Tipo`string` | RequisitoObbligatorio | Valori e limiti Lunghezza minima: 1 | Predefinito— |
| Campo`duration` | Tipo`integer` | RequisitoFacoltativo | Valori e limiti Minimo: 3 Massimo: 15 Unità: secondi | Predefinito5 |
| Campo`resolution` | Tipo`string` | RequisitoFacoltativo | Valori e limiti 480P, 720P, 1080P | Predefinito720P |
| Campo`ratio` | Tipo`string` | RequisitoFacoltativo | Valori e limiti 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Predefinito16:9 |
| Campo`image_urls` | Tipo`https_url\|data_image_url[]` | RequisitoFacoltativo | Valori e limiti Numero minimo di elementi: 0 Numero massimo di elementi: 0 Numero massimo di byte decodificati: 20.971.520 Tipi MIME: image/jpeg, image/png, image/webp | Predefinito— |

Combinazioni di materiali in input

**Da testo a video** · Obbligatorio: prompt

Parametri e ciclo di vita del metodo

| Parametro | Contratto |
| --- | --- |
| Parametro`content_type` | Contrattoapplication/json |
| Parametro`required` | Contrattomodel, prompt |
| Parametro`material_types` | Contrattotext |
| Parametro`optional` | Contrattoduration, resolution, ratio |
| Parametro`duration_integer_range` | Contratto3, 15 |
| Parametro`default_duration` | Contratto5 |
| Parametro`resolution` | Contratto480P, 720P, 1080P |
| Parametro`default_resolution` | Contratto720P |
| Parametro`ratio` | Contratto16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
| Parametro`ratio_must_omit` | Contrattofalse |
| Parametro`image_urls` | Contratto{"max\_count":0} |

Ciclo di vita: `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`

Le strutture dei metodi e gli ID sono esatti; la capacità del fornitore è distinta dall’ammissione delle richieste.

### Tariffe

#### Tariffe dei metodi Ailoot

Output

0,18 USD *per secondo a 1080p*

Output

0,07 USD *per secondo a 480p*

Output

0,14 USD *per secondo a 720p*

Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. [Come funzionano la prenotazione e l’addebito finale →](https://ailoot.ai/docs/it/billing/reserve/)

### Esempi di richieste

#### Ailoot · Generazione video

Esempio di scena

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-t2v", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

### Ricevi e salva i risultati

#### Ailoot · Generazione video

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`

##### Verifica lo stato dell’attività

GET stato

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

##### Salva tutte le risorse completate

GET tutte le risorse completate

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

Altre letture di contenuto

GET contenuto

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

##### Conserva tutti i risultati completati

Salva ogni video completato o file restituito; recupera ogni URL di risorsa effettivamente restituito.

Conserva ogni elemento di dati e indice di uscita restituito. content\_url indica solo il primo; recupera ogni percorso del contenuto o risorsa effettiva. GET del contenuto senza index non restituisce tutti i risultati.

##### Se occorre verificare la risposta originale

Consulta l'attività originale esistente; non ripetere mai un invio dall'esito sconosciuto.

Campi della risposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`object` | Tipostring |
| Campo`model` | Tipostring |
| Campo`status` | Tipostring |
| Campo`content_url` | Tiposigned URL |
| Campo`data[]` | Tiposigned URL |
| Campo`usage` | Tipoobject |
| Campo`result_pending_check` | Tipoboolean |

Errori e passaggi successivi

| Risposta | Condizione | Passaggio successivo |
| --- | --- | --- |
| Risposta400 · `invalid_request_error` | CondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validi | Passaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione. |
| Risposta409 · `video_not_ready` | CondizioneContenuto del risultato originale non ancora disponibile | Passaggio successivoInterroga periodicamente l'ID originale restituito e rispetta Retry-After. |
| Risposta`server_error` | CondizioneLa risposta restituita indica che l'operazione o il risultato richiede una verifica | Passaggio successivoConserva l'ID originale di operazione/task restituito, gli header della richiesta e la risposta; continua a leggere l'operazione originale tramite le modalità supportate. Non reinviare la richiesta di creazione. |

### Alias

#### Alias del modello

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

#### Alias dei percorsi dei metodi

Usa i percorsi dei metodi indicati sopra.

#### ID di chiamata correlati

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

**Ailoot · Generazione video** `POST /v1/videos/generations` `happyhorse-t2v`

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

Alibaba /`happyhorse-t2v`

ID del modello

- `happyhorse-1.1-t2v`
- `happyhorse-t2v`
- `happyhorse-t2v-latest`

### Introduzione

Modello per creare brevi video con audio da una descrizione testuale. È adatto a scene in cui movimento, composizione e stile visivo vengono definiti con le parole.

Input accettati

Testo

Risultati

Video

### Disponibile in Ailoot · input e metodi

**Ailoot · Generazione video** `POST /v1/videos/generations`

Tipi di input

`text`

Tipi di output

`video`

Formato di output

mp4

| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObbligatorio | Valori e limiti happyhorse-t2v | Predefinito— |
| Campo`prompt` | Tipo`string` | RequisitoObbligatorio | Valori e limiti Lunghezza minima: 1 | Predefinito— |
| Campo`duration` | Tipo`integer` | RequisitoFacoltativo | Valori e limiti Minimo: 3 Massimo: 15 Unità: secondi | Predefinito5 |
| Campo`resolution` | Tipo`string` | RequisitoFacoltativo | Valori e limiti 480P, 720P, 1080P | Predefinito720P |
| Campo`ratio` | Tipo`string` | RequisitoFacoltativo | Valori e limiti 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Predefinito16:9 |
| Campo`image_urls` | Tipo`https_url\|data_image_url[]` | RequisitoFacoltativo | Valori e limiti Numero minimo di elementi: 0 Numero massimo di elementi: 0 Numero massimo di byte decodificati: 20.971.520 Tipi MIME: image/jpeg, image/png, image/webp | Predefinito— |

Combinazioni di materiali in input

**Da testo a video** · Obbligatorio: prompt

Parametri e ciclo di vita del metodo

| Parametro | Contratto |
| --- | --- |
| Parametro`material_types` | Contrattotext |
| Parametro`required` | Contrattonull |
| Parametro`optional_controls` | Contrattonull |

Ciclo di vita: `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`

Le strutture dei metodi e gli ID sono esatti; la capacità del fornitore è distinta dall’ammissione delle richieste.

### Tariffe

#### Tariffe dei metodi Ailoot

Output

0,18 USD *per secondo a 1080p*

Output

0,07 USD *per secondo a 480p*

Output

0,14 USD *per secondo a 720p*

Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. [Come funzionano la prenotazione e l’addebito finale →](https://ailoot.ai/docs/it/billing/reserve/)

### Esempi di richieste

#### Ailoot · Generazione video

Esempio di scena

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-t2v", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

### Ricevi e salva i risultati

#### Ailoot · Generazione video

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`

##### Verifica lo stato dell’attività

GET stato

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

##### Salva tutte le risorse completate

GET tutte le risorse completate

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

Altre letture di contenuto

GET contenuto

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

##### Conserva tutti i risultati completati

Salva ogni video completato o file restituito; recupera ogni URL di risorsa effettivamente restituito.

Conserva ogni elemento di dati e indice di uscita restituito. content\_url indica solo il primo; recupera ogni percorso del contenuto o risorsa effettiva. GET del contenuto senza index non restituisce tutti i risultati.

##### Se occorre verificare la risposta originale

Consulta l'attività originale esistente; non ripetere mai un invio dall'esito sconosciuto.

Campi della risposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`object` | Tipostring |
| Campo`model` | Tipostring |
| Campo`status` | Tipostring |
| Campo`content_url` | Tiposigned URL |
| Campo`data[]` | Tiposigned URL |
| Campo`usage` | Tipoobject |
| Campo`result_pending_check` | Tipoboolean |

Errori e passaggi successivi

| Risposta | Condizione | Passaggio successivo |
| --- | --- | --- |
| Risposta400 · `invalid_request_error` | CondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validi | Passaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione. |
| Risposta409 · `video_not_ready` | CondizioneContenuto del risultato originale non ancora disponibile | Passaggio successivoInterroga periodicamente l'ID originale restituito e rispetta Retry-After. |
| Risposta`server_error` | CondizioneLa risposta restituita indica che l'operazione o il risultato richiede una verifica | Passaggio successivoConserva l'ID originale di operazione/task restituito, gli header della richiesta e la risposta; continua a leggere l'operazione originale tramite le modalità supportate. Non reinviare la richiesta di creazione. |

### Alias

#### Alias del modello

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

#### Alias dei percorsi dei metodi

Usa i percorsi dei metodi indicati sopra.

#### ID di chiamata correlati

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

**Ailoot · Generazione video** `POST /v1/videos/generations` `happyhorse-t2v-latest`

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

Alibaba /`happyhorse-t2v-latest`

ID del modello

- `happyhorse-1.1-t2v`
- `happyhorse-t2v`
- `happyhorse-t2v-latest`

### Introduzione

Modello per creare brevi video con audio da una descrizione testuale. È adatto a scene in cui movimento, composizione e stile visivo vengono definiti con le parole.

Input accettati

Testo

Risultati

Video

### Disponibile in Ailoot · input e metodi

**Ailoot · Generazione video** `POST /v1/videos/generations`

Tipi di input

`text`

Tipi di output

`video`

Formato di output

mp4

| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObbligatorio | Valori e limiti happyhorse-t2v-latest | Predefinito— |
| Campo`prompt` | Tipo`string` | RequisitoObbligatorio | Valori e limiti Lunghezza minima: 1 | Predefinito— |
| Campo`duration` | Tipo`integer` | RequisitoFacoltativo | Valori e limiti Minimo: 3 Massimo: 15 Unità: secondi | Predefinito5 |
| Campo`resolution` | Tipo`string` | RequisitoFacoltativo | Valori e limiti 480P, 720P, 1080P | Predefinito720P |
| Campo`ratio` | Tipo`string` | RequisitoFacoltativo | Valori e limiti 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Predefinito16:9 |
| Campo`image_urls` | Tipo`https_url\|data_image_url[]` | RequisitoFacoltativo | Valori e limiti Numero minimo di elementi: 0 Numero massimo di elementi: 0 Numero massimo di byte decodificati: 20.971.520 Tipi MIME: image/jpeg, image/png, image/webp | Predefinito— |

Combinazioni di materiali in input

**Da testo a video** · Obbligatorio: prompt

Parametri e ciclo di vita del metodo

| Parametro | Contratto |
| --- | --- |
| Parametro`material_types` | Contrattotext |
| Parametro`required` | Contrattonull |
| Parametro`optional_controls` | Contrattonull |

Ciclo di vita: `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`

Le strutture dei metodi e gli ID sono esatti; la capacità del fornitore è distinta dall’ammissione delle richieste.

### Tariffe

#### Tariffe dei metodi Ailoot

Output

0,18 USD *per secondo a 1080p*

Output

0,07 USD *per secondo a 480p*

Output

0,14 USD *per secondo a 720p*

Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. [Come funzionano la prenotazione e l’addebito finale →](https://ailoot.ai/docs/it/billing/reserve/)

### Esempi di richieste

#### Ailoot · Generazione video

Esempio di scena

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-t2v-latest", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

### Ricevi e salva i risultati

#### Ailoot · Generazione video

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`

##### Verifica lo stato dell’attività

GET stato

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

##### Salva tutte le risorse completate

GET tutte le risorse completate

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

Altre letture di contenuto

GET contenuto

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

##### Conserva tutti i risultati completati

Salva ogni video completato o file restituito; recupera ogni URL di risorsa effettivamente restituito.

Conserva ogni elemento di dati e indice di uscita restituito. content\_url indica solo il primo; recupera ogni percorso del contenuto o risorsa effettiva. GET del contenuto senza index non restituisce tutti i risultati.

##### Se occorre verificare la risposta originale

Consulta l'attività originale esistente; non ripetere mai un invio dall'esito sconosciuto.

Campi della risposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`object` | Tipostring |
| Campo`model` | Tipostring |
| Campo`status` | Tipostring |
| Campo`content_url` | Tiposigned URL |
| Campo`data[]` | Tiposigned URL |
| Campo`usage` | Tipoobject |
| Campo`result_pending_check` | Tipoboolean |

Errori e passaggi successivi

| Risposta | Condizione | Passaggio successivo |
| --- | --- | --- |
| Risposta400 · `invalid_request_error` | CondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validi | Passaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione. |
| Risposta409 · `video_not_ready` | CondizioneContenuto del risultato originale non ancora disponibile | Passaggio successivoInterroga periodicamente l'ID originale restituito e rispetta Retry-After. |
| Risposta`server_error` | CondizioneLa risposta restituita indica che l'operazione o il risultato richiede una verifica | Passaggio successivoConserva l'ID originale di operazione/task restituito, gli header della richiesta e la risposta; continua a leggere l'operazione originale tramite le modalità supportate. Non reinviare la richiesta di creazione. |

### Alias

#### Alias del modello

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

#### Alias dei percorsi dei metodi

Usa i percorsi dei metodi indicati sopra.

#### ID di chiamata correlati

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

FAQ · happyhorse-1.1-t2v

Quali input e risultati sono disponibili?

`POST /v1/videos/generations` · `happyhorse-1.1-t2v`: `text` → `video` `POST /v1/videos/generations` · `happyhorse-t2v`: `text` → `video` `POST /v1/videos/generations` · `happyhorse-t2v-latest`: `text` → `video`

Quali campi usa la richiesta?

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

Quali limiti si applicano?

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

Collega Ailoot a Claude Code, OpenCode, Hermes o alla tua applicazione.

## L’azienda e il suo portafoglio di progetti

L’azienda e il suo portafoglio di progetti: milioni di clienti; vendite nell’ordine dei miliardi ogni mese.

## Acquista token con uno sconto.

Sconto con abbonamento per lavoro regolare. Codici fino al 50% sull’acquisto di token.

Abbonamento

Scegli un piano scontato per richieste regolari.

Codice fino al 50%

Inserisci il codice all’acquisto. Il prezzo si aggiorna secondo la promozione.

Spese nella cronologia

Modello, token e importo sono salvati per ogni richiesta.

[Scegli abbonamento](https://ailoot.ai/docs/it/billing/subscriptions/) · [Consulta prezzi dei modelli](https://ailoot.ai/models/it/)

## Collega l’API al prodotto che vendi.

SaaS, app e bot secondo offerta e accordo di licenza Ailoot. Per rivendere, richiedi una licenza reseller.

Applicazione commerciale

Integra generazione di testo, immagini, video e suono nelle funzioni a pagamento.

Licenza reseller

Invia descrizione del progetto e schema di accesso. Richiedi condizioni scritte per uso e rivendita.

Documenti sul sito

Offerta, accordo di licenza e politica sui dati sono disponibili prima della connessione.

[Richiedi licenza reseller](mailto:support@ailoot.ai) · [Offerta e accordo di licenza](https://ailoot.ai/legal/offer?lang=it)

## Ailoot · L’azienda e il suo portafoglio di progetti





Ailoot si basa su un’esperienza operativa consolidata, un’ampia base di clienti, un servizio stabile e un controllo costante dei KPI.





L’azienda e il suo portafoglio di progetti: milioni di clienti; vendite nell’ordine dei miliardi ogni mese.





Ailoot mette questa esperienza operativa al servizio dell’accesso API alle funzioni AI nei prodotti dei clienti, negli agenti, nelle applicazioni e nelle automazioni.
