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

# happyhorse-1.1-t2v

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

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

Modèle de création de courtes vidéos avec son à partir d’une description textuelle. Il convient aux scènes dont les mouvements, la composition et le style visuel sont définis avec des mots.

- [**Ailoot · Vidéo** `POST /v1/videos/generations` `happyhorse-1.1-t2v`](https://ailoot.ai/models/fr-ch/happyhorse-1-1-t2v/#method-0)
- [**Ailoot · Vidéo** `POST /v1/videos/generations` `happyhorse-t2v`](https://ailoot.ai/models/fr-ch/happyhorse-1-1-t2v/#method-1)
- [**Ailoot · Vidéo** `POST /v1/videos/generations` `happyhorse-t2v-latest`](https://ailoot.ai/models/fr-ch/happyhorse-1-1-t2v/#method-2)

À propos du modèle

Cette description présente les capacités du modèle. Les entrées, sorties et options disponibles dans Ailoot pour la méthode sélectionnée figurent ci-dessous.

HappyHorse-1.1-T2V est un modèle d’Alibaba pour créer de courtes scènes vidéo à partir de texte. La description définit les personnages, les actions, le décor et le traitement visuel ; ce mode ne nécessite pas d’image source. Le modèle produit la vidéo et peut générer le son qui l’accompagne.

Le fabricant met en avant la compréhension du sens de la scène, la mise en scène cinématographique et l’expressivité des mouvements. Le texte peut définir l’atmosphère, les actions du personnage, le comportement des objets et la dynamique physique. Il permet de construire la scène autour de ce qui doit se produire, puis d’en orienter l’éclairage, l’angle de vue et les mouvements de caméra.

#### Une mise en scène définie par les mots

Les instructions sont obligatoires et peuvent être rédigées dans n’importe quelle langue. Elles peuvent contenir jusqu’à 5000 caractères non chinois ou 2500 caractères chinois ; la partie excédentaire est ignorée. L’action, l’environnement et les détails visuels importants doivent être décrits dans cette limite. Cette mise en scène laisse au modèle la possibilité de créer une nouvelle scène au lieu de lui imposer une première image existante.

Dans ce mode, le texte est le principal moyen de contrôle. L’apparence précise d’un personnage ou d’un objet peut être décrite avec des mots ; la possibilité de la transmettre au moyen d’images distinctes relève d’un autre mode de la famille. Le résultat dépend de l’ensemble des instructions : une même graine aléatoire initiale aide donc à obtenir des variantes similaires, sans garantir une reproduction exacte.

#### Vidéo et accompagnement sonore

Pour HappyHorse-1.1, la durée se choisit sous forme d’un nombre entier de 3 à 15 secondes. Les résolutions 480P, 720P et 1080P sont prises en charge. Le fichier final est un MP4 à 24 images par seconde. Le modèle peut générer le son avec les images, en reliant l’accompagnement sonore à ce qui se passe dans la scène.

Le format peut être défini à l’avance. Les rapports 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 et 21:9 sont disponibles, du cadrage cinématographique large à la vidéo verticale allongée. La résolution, le format et la durée déterminent les dimensions du résultat ; le contenu et les mouvements sont définis par le texte.

Cette variante sert à créer une nouvelle scène à partir d’une idée formulée avec des mots. Elle convient à un court épisode, à une idée visuelle ou à une vidéo d’ambiance dont la mise en scène doit être décrite textuellement.

**Ailoot · Vidéo** `POST /v1/videos/generations` `happyhorse-1.1-t2v`

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

Alibaba /`happyhorse-1.1-t2v`

ID du modèle

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

### Premiers pas

Modèle de création de courtes vidéos avec son à partir d’une description textuelle. Il convient aux scènes dont les mouvements, la composition et le style visuel sont définis avec des mots.

Entrées acceptées

Texte

Résultats

Vidéo

### Disponible dans Ailoot · entrées et méthodes

**Ailoot · Vidéo** `POST /v1/videos/generations`

Entrée

`text`

Sortie

`video`

Format de sortie

mp4

| Champ | Type | Exigence | Valeurs et limites | Par défaut |
| --- | --- | --- | --- | --- |
| Champ`model` | Type`string` | ExigenceObligatoire | Valeurs et limites happyhorse-1.1-t2v | Par défaut— |
| Champ`prompt` | Type`string` | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
| Champ`duration` | Type`integer` | ExigenceFacultatif | Valeurs et limites Minimum: 3 Maximum: 15 Unité: secondes | Par défaut5 |
| Champ`resolution` | Type`string` | ExigenceFacultatif | Valeurs et limites 480P, 720P, 1080P | Par défaut720P |
| Champ`ratio` | Type`string` | ExigenceFacultatif | Valeurs et limites 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Par défaut16:9 |
| Champ`image_urls` | Type`https_url\|data_image_url[]` | ExigenceFacultatif | Valeurs et limites Nombre minimal d’éléments: 0 Nombre maximal d’éléments: 0 Nombre maximal d’octets décodés: 20'971'520 Types MIME: image/jpeg, image/png, image/webp | Par défaut— |

Combinaisons d’éléments d’entrée

**Texte vers vidéo** · Obligatoire : prompt

Paramètres et cycle de vie de la méthode

| Paramètre | Contrat |
| --- | --- |
| Paramètre`content_type` | Contratapplication/json |
| Paramètre`required` | Contratmodel, prompt |
| Paramètre`material_types` | Contrattext |
| Paramètre`optional` | Contratduration, resolution, ratio |
| Paramètre`duration_integer_range` | Contrat3, 15 |
| Paramètre`default_duration` | Contrat5 |
| Paramètre`resolution` | Contrat480P, 720P, 1080P |
| Paramètre`default_resolution` | Contrat720P |
| Paramètre`ratio` | Contrat16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
| Paramètre`ratio_must_omit` | Contratfalse |
| Paramètre`image_urls` | Contrat{"max\_count":0} |

Cycle de vie : `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`

Les structures des méthodes et les identifiants sont exacts ; la capacité du fournisseur est distincte de l’admission.

### Tarifs

#### Tarifs des méthodes Ailoot

Sortie

0.18 USD *par seconde en 1080p*

Sortie

0.07 USD *par seconde en 480p*

Sortie

0.14 USD *par seconde en 720p*

Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. [Fonctionnement de la réservation et du débit →](https://ailoot.ai/docs/fr-ch/billing/reserve/)

### Exemples de requêtes

#### Ailoot · Vidéo

Exemple de scène

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

### Recevoir et enregistrer les résultats

#### Ailoot · Vidéo

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`

##### Vérifier l’état de la tâche

GET état

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

##### Enregistrer toutes les ressources terminées

GET toutes les ressources terminées

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

Autres lectures de contenu

GET contenu

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

##### Conserver tous les résultats terminés

Enregistrez chaque vidéo terminée ou fichier renvoyé ; récupérez chaque URL de ressource effectivement renvoyée.

Conservez chaque élément de données et chaque indice de sortie renvoyés. content\_url désigne uniquement le premier résultat ; récupérez chaque chemin de contenu ou ressource réel. GET du contenu sans index ne renvoie pas tous les résultats.

##### Si la réponse d’origine doit être vérifiée

Consultez la tâche d’origine existante ; ne répétez jamais un envoi dont l’issue est inconnue.

Champs de la réponse

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

Erreurs et étapes suivantes

| Réponse | Condition | Étape suivante |
| --- | --- | --- |
| Réponse400 · `invalid_request_error` | ConditionChamps obligatoires, représentation des contenus ou valeur de paramètre non valides | Étape suivanteCorrigez les champs indiqués avant une nouvelle requête de création. |
| Réponse409 · `video_not_ready` | ConditionLe contenu du résultat d’origine n’est pas encore disponible | Étape suivanteConsultez périodiquement l’identifiant d’origine renvoyé et respectez Retry-After. |
| Réponse`server_error` | ConditionLa réponse renvoyée indique que l’opération ou le résultat nécessite une vérification | Étape suivanteConservez l’identifiant d’opération/de tâche initialement renvoyé, les en-têtes de la requête et la réponse ; poursuivez les lectures prises en charge de cette opération d’origine. Ne soumettez pas à nouveau la requête de création. |

### Alias

#### Alias du modèle

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

#### Alias des chemins de méthode

Utilisez les chemins de méthode indiqués ci-dessus.

#### ID d’appel associés

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

**Ailoot · Vidéo** `POST /v1/videos/generations` `happyhorse-t2v`

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

Alibaba /`happyhorse-t2v`

ID du modèle

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

### Premiers pas

Modèle de création de courtes vidéos avec son à partir d’une description textuelle. Il convient aux scènes dont les mouvements, la composition et le style visuel sont définis avec des mots.

Entrées acceptées

Texte

Résultats

Vidéo

### Disponible dans Ailoot · entrées et méthodes

**Ailoot · Vidéo** `POST /v1/videos/generations`

Entrée

`text`

Sortie

`video`

Format de sortie

mp4

| Champ | Type | Exigence | Valeurs et limites | Par défaut |
| --- | --- | --- | --- | --- |
| Champ`model` | Type`string` | ExigenceObligatoire | Valeurs et limites happyhorse-t2v | Par défaut— |
| Champ`prompt` | Type`string` | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
| Champ`duration` | Type`integer` | ExigenceFacultatif | Valeurs et limites Minimum: 3 Maximum: 15 Unité: secondes | Par défaut5 |
| Champ`resolution` | Type`string` | ExigenceFacultatif | Valeurs et limites 480P, 720P, 1080P | Par défaut720P |
| Champ`ratio` | Type`string` | ExigenceFacultatif | Valeurs et limites 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Par défaut16:9 |
| Champ`image_urls` | Type`https_url\|data_image_url[]` | ExigenceFacultatif | Valeurs et limites Nombre minimal d’éléments: 0 Nombre maximal d’éléments: 0 Nombre maximal d’octets décodés: 20'971'520 Types MIME: image/jpeg, image/png, image/webp | Par défaut— |

Combinaisons d’éléments d’entrée

**Texte vers vidéo** · Obligatoire : prompt

Paramètres et cycle de vie de la méthode

| Paramètre | Contrat |
| --- | --- |
| Paramètre`material_types` | Contrattext |
| Paramètre`required` | Contratnull |
| Paramètre`optional_controls` | Contratnull |

Cycle de vie : `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`

Les structures des méthodes et les identifiants sont exacts ; la capacité du fournisseur est distincte de l’admission.

### Tarifs

#### Tarifs des méthodes Ailoot

Sortie

0.18 USD *par seconde en 1080p*

Sortie

0.07 USD *par seconde en 480p*

Sortie

0.14 USD *par seconde en 720p*

Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. [Fonctionnement de la réservation et du débit →](https://ailoot.ai/docs/fr-ch/billing/reserve/)

### Exemples de requêtes

#### Ailoot · Vidéo

Exemple de scène

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

### Recevoir et enregistrer les résultats

#### Ailoot · Vidéo

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`

##### Vérifier l’état de la tâche

GET état

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

##### Enregistrer toutes les ressources terminées

GET toutes les ressources terminées

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

Autres lectures de contenu

GET contenu

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

##### Conserver tous les résultats terminés

Enregistrez chaque vidéo terminée ou fichier renvoyé ; récupérez chaque URL de ressource effectivement renvoyée.

Conservez chaque élément de données et chaque indice de sortie renvoyés. content\_url désigne uniquement le premier résultat ; récupérez chaque chemin de contenu ou ressource réel. GET du contenu sans index ne renvoie pas tous les résultats.

##### Si la réponse d’origine doit être vérifiée

Consultez la tâche d’origine existante ; ne répétez jamais un envoi dont l’issue est inconnue.

Champs de la réponse

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

Erreurs et étapes suivantes

| Réponse | Condition | Étape suivante |
| --- | --- | --- |
| Réponse400 · `invalid_request_error` | ConditionChamps obligatoires, représentation des contenus ou valeur de paramètre non valides | Étape suivanteCorrigez les champs indiqués avant une nouvelle requête de création. |
| Réponse409 · `video_not_ready` | ConditionLe contenu du résultat d’origine n’est pas encore disponible | Étape suivanteConsultez périodiquement l’identifiant d’origine renvoyé et respectez Retry-After. |
| Réponse`server_error` | ConditionLa réponse renvoyée indique que l’opération ou le résultat nécessite une vérification | Étape suivanteConservez l’identifiant d’opération/de tâche initialement renvoyé, les en-têtes de la requête et la réponse ; poursuivez les lectures prises en charge de cette opération d’origine. Ne soumettez pas à nouveau la requête de création. |

### Alias

#### Alias du modèle

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

#### Alias des chemins de méthode

Utilisez les chemins de méthode indiqués ci-dessus.

#### ID d’appel associés

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

**Ailoot · Vidéo** `POST /v1/videos/generations` `happyhorse-t2v-latest`

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

Alibaba /`happyhorse-t2v-latest`

ID du modèle

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

### Premiers pas

Modèle de création de courtes vidéos avec son à partir d’une description textuelle. Il convient aux scènes dont les mouvements, la composition et le style visuel sont définis avec des mots.

Entrées acceptées

Texte

Résultats

Vidéo

### Disponible dans Ailoot · entrées et méthodes

**Ailoot · Vidéo** `POST /v1/videos/generations`

Entrée

`text`

Sortie

`video`

Format de sortie

mp4

| Champ | Type | Exigence | Valeurs et limites | Par défaut |
| --- | --- | --- | --- | --- |
| Champ`model` | Type`string` | ExigenceObligatoire | Valeurs et limites happyhorse-t2v-latest | Par défaut— |
| Champ`prompt` | Type`string` | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
| Champ`duration` | Type`integer` | ExigenceFacultatif | Valeurs et limites Minimum: 3 Maximum: 15 Unité: secondes | Par défaut5 |
| Champ`resolution` | Type`string` | ExigenceFacultatif | Valeurs et limites 480P, 720P, 1080P | Par défaut720P |
| Champ`ratio` | Type`string` | ExigenceFacultatif | Valeurs et limites 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Par défaut16:9 |
| Champ`image_urls` | Type`https_url\|data_image_url[]` | ExigenceFacultatif | Valeurs et limites Nombre minimal d’éléments: 0 Nombre maximal d’éléments: 0 Nombre maximal d’octets décodés: 20'971'520 Types MIME: image/jpeg, image/png, image/webp | Par défaut— |

Combinaisons d’éléments d’entrée

**Texte vers vidéo** · Obligatoire : prompt

Paramètres et cycle de vie de la méthode

| Paramètre | Contrat |
| --- | --- |
| Paramètre`material_types` | Contrattext |
| Paramètre`required` | Contratnull |
| Paramètre`optional_controls` | Contratnull |

Cycle de vie : `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`

Les structures des méthodes et les identifiants sont exacts ; la capacité du fournisseur est distincte de l’admission.

### Tarifs

#### Tarifs des méthodes Ailoot

Sortie

0.18 USD *par seconde en 1080p*

Sortie

0.07 USD *par seconde en 480p*

Sortie

0.14 USD *par seconde en 720p*

Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. [Fonctionnement de la réservation et du débit →](https://ailoot.ai/docs/fr-ch/billing/reserve/)

### Exemples de requêtes

#### Ailoot · Vidéo

Exemple de scène

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

### Recevoir et enregistrer les résultats

#### Ailoot · Vidéo

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`

##### Vérifier l’état de la tâche

GET état

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

##### Enregistrer toutes les ressources terminées

GET toutes les ressources terminées

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

Autres lectures de contenu

GET contenu

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

##### Conserver tous les résultats terminés

Enregistrez chaque vidéo terminée ou fichier renvoyé ; récupérez chaque URL de ressource effectivement renvoyée.

Conservez chaque élément de données et chaque indice de sortie renvoyés. content\_url désigne uniquement le premier résultat ; récupérez chaque chemin de contenu ou ressource réel. GET du contenu sans index ne renvoie pas tous les résultats.

##### Si la réponse d’origine doit être vérifiée

Consultez la tâche d’origine existante ; ne répétez jamais un envoi dont l’issue est inconnue.

Champs de la réponse

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

Erreurs et étapes suivantes

| Réponse | Condition | Étape suivante |
| --- | --- | --- |
| Réponse400 · `invalid_request_error` | ConditionChamps obligatoires, représentation des contenus ou valeur de paramètre non valides | Étape suivanteCorrigez les champs indiqués avant une nouvelle requête de création. |
| Réponse409 · `video_not_ready` | ConditionLe contenu du résultat d’origine n’est pas encore disponible | Étape suivanteConsultez périodiquement l’identifiant d’origine renvoyé et respectez Retry-After. |
| Réponse`server_error` | ConditionLa réponse renvoyée indique que l’opération ou le résultat nécessite une vérification | Étape suivanteConservez l’identifiant d’opération/de tâche initialement renvoyé, les en-têtes de la requête et la réponse ; poursuivez les lectures prises en charge de cette opération d’origine. Ne soumettez pas à nouveau la requête de création. |

### Alias

#### Alias du modèle

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

#### Alias des chemins de méthode

Utilisez les chemins de méthode indiqués ci-dessus.

#### ID d’appel associés

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

FAQ · happyhorse-1.1-t2v

Quelles entrées et quels résultats sont disponibles ?

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

Quels champs la requête utilise-t-elle ?

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

Quelles limites s’appliquent ?

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

Connectez Ailoot à Claude Code, OpenCode, Hermes ou à votre application.

## L’entreprise et son portefeuille de projets

L’entreprise et son portefeuille de projets : des millions de clients ; des ventes qui se chiffrent en milliards chaque mois.

## Achetez des tokens à prix réduit.

Une remise d’abonnement pour le travail régulier. Des codes promo jusqu’à 50% sur l’achat de tokens.

Abonnement

Choisissez une offre à tarif réduit pour vos requêtes régulières.

Code promo jusqu’à 50%

Saisissez le code à l’achat. Le prix est recalculé selon la promotion en cours.

Dépenses dans l’historique

Modèle, tokens et montant sont enregistrés pour chaque requête.

[Choisir un abonnement](https://ailoot.ai/docs/fr-ch/billing/subscriptions/) · [Voir les prix des modèles](https://ailoot.ai/models/fr-ch/)

## Connectez l’API au produit que vous vendez.

SaaS, applications et bots selon l’offre officielle et le contrat de licence Ailoot. Pour la revente, demandez une licence revendeur.

Application commerciale

Intégrez la génération de texte, d’images, de vidéo et de son aux fonctions payantes de votre service.

Licence revendeur

Envoyez la description du projet et le mode d’accès. Demandez des conditions écrites d’utilisation et de revente.

Documents sur le site

L’offre officielle, le contrat de licence et la politique de traitement des données sont accessibles avant connexion.

[Demander une licence revendeur](mailto:support@ailoot.ai) · [Offre officielle et contrat de licence](https://ailoot.ai/legal/offer?lang=fr-ch)

## Ailoot · L’entreprise et son portefeuille de projets





Ailoot s’appuie sur une expérience opérationnelle éprouvée, une large clientèle, un service stable et un suivi continu des KPI.





L’entreprise et son portefeuille de projets : des millions de clients ; des ventes qui se chiffrent en milliards chaque mois.





Ailoot met cette expérience opérationnelle au service de l’accès API aux fonctions d’IA dans les produits des clients, leurs agents, applications et automatisations.
