> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Documentation de l'API Veo Videos Generation

> Veo Video Generation 集成指南 - XHuoAPI

Cet article présente une documentation sur l'intégration de l'API Veo Videos Generation, qui permet de générer des vidéos officielles de Veo en entrant des paramètres personnalisés.

## Processus de demande

Pour utiliser l'API, vous devez d'abord vous rendre sur la page correspondante de [Veo Videos Generation API](https://api.xhuoapi.ai/documents/63e01dc3-eb21-499e-8049-3025c460058f) pour demander le service correspondant. Une fois sur la page, cliquez sur le bouton « Acquire », comme indiqué sur l'image :

![](https://cdn.xhuoapi.ai/q6ytrc.png)

Si vous n'êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion pour vous inviter à vous inscrire et à vous connecter. Après vous être connecté ou inscrit, vous serez automatiquement renvoyé à la page actuelle.

Lors de la première demande, un quota gratuit sera offert, vous permettant d'utiliser l'API gratuitement.

## Utilisation de base

Tout d'abord, comprenez la méthode d'utilisation de base, qui consiste à entrer le mot-clé `prompt`, l'action `action`, le tableau d'images de référence pour les images de début et de fin `image_urls`, ainsi que le modèle `model`, pour obtenir le résultat traité. Vous devez d'abord transmettre un champ `action`, dont la valeur est `text2video`. Cela comprend principalement trois actions : vidéo générée par texte (`text2video`), vidéo générée par image (`image2video`), obtenir une vidéo en 1080p (`get1080p`). Ensuite, nous devons également entrer le modèle `model`, qui comprend principalement les modèles `veo2`, `veo2-fast`, `veo3`, `veo31`, `veo31-fast`, `veo31-fast-ingredients` et `veo3-fast`, dont le contenu est le suivant :

<p>
  <img src="https://cdn.xhuoapi.ai/vv5pe8.png" width="500" className="m-auto" />
</p>

Nous pouvons voir ici que nous avons défini les en-têtes de requête, y compris :

* `accept` : le format de réponse souhaité, ici rempli comme `application/json`, c'est-à-dire au format JSON.
* `authorization` : la clé d'API pour appeler l'API, que vous pouvez sélectionner directement après la demande.

De plus, nous avons défini le corps de la requête, y compris :

* `model` : le modèle de génération de vidéo, principalement `veo2`, `veo2-fast`, `veo3`, `veo31`, `veo31-fast`, `veo31-fast-ingredients` et `veo3-fast`.
* `action` : l'action de la tâche de génération de vidéo, qui comprend principalement trois actions : vidéo générée par texte (`text2video`), vidéo générée par image (`image2video`), obtenir une vidéo en 1080p (`get1080p`).
* `image_urls` : lorsque vous choisissez l'action vidéo générée par image `image2video`, vous devez télécharger les liens des images de référence pour le début et la fin, avec un maximum de trois images de référence.
* `resolution` : choisissez la résolution de la vidéo générée, où le modèle veo31 prend en charge la résolution 4k, les autres modèles ne le prennent pas en charge. Tous les modèles prennent en charge la résolution 1080p et gif, si cette valeur n'est pas transmise, la résolution par défaut est 720p, divisée principalement en : `1080p`, `gif`, `4k`.
* `prompt` : le mot-clé.
* `callback_url` : l'URL pour le retour des résultats.

### 📌 Résumé des modèles

| **Nom du modèle**          | **Modes pris en charge**                                                                                                       | **Règles d'entrée d'image**                                                         |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- |
| **veo2-fast**              | Vidéo générée par texte (sans image)<br />Vidéo générée par image (avec image)                                                 | Prend uniquement en charge **1 image** → Mode image de début                        |
| **veo3-fast**              | Vidéo générée par texte (sans image)<br />Vidéo générée par image (avec image)                                                 | **1 image** → Mode image de début<br />**3 images** → Mode image de début et de fin |
| **veo31-fast**             | Vidéo générée par texte (sans image)<br />Vidéo générée par image (avec image)                                                 | **1 image** → Mode image de début<br />**3 images** → Mode image de début et de fin |
| **veo31-fast-ingredients** | ❌ Vidéo générée par texte (non pris en charge)<br />✅ **Fusion de plusieurs images obligatoire** (doit transmettre des images) | **1-3 images** → Mode fusion de plusieurs images (maximum 3 images)                 |
| **veo2**                   | Vidéo générée par texte (sans image)<br />Vidéo générée par image (avec image)                                                 | **1 image** → Mode image de début<br />**3 images** → Mode image de début et de fin |
| **veo3**                   | Vidéo générée par texte (sans image)<br />Vidéo générée par image (avec image)                                                 | **1 image** → Mode image de début<br />**3 images** → Mode image de début et de fin |
| **veo31**                  | Vidéo générée par texte (sans image)<br />Vidéo générée par image (avec image)                                                 | **1 image** → Mode image de début<br />**3 images** → Mode image de début et de fin |

***

### 🔑 Règles clés

1. **Logique générale** :
   * **Pas d'entrée d'image** → Déclenche automatiquement le mode vidéo générée par texte.
   * **Entrée d'image** → Déclenche le mode vidéo générée par image (le comportement spécifique dépend du nombre d'images).
2. **Types de mode vidéo générée par image** :
   * **Mode image de début** (1 image) : L'image de début est fixe à l'image d'entrée.
   * **Mode image de début et de fin** (2 images) : L'image de début et l'image de fin sont fixes à l'image d'entrée.
   * **Mode fusion de plusieurs images** (1-3 images) : Seul `veo31-fast-ingredients` est pris en charge, fusionnant le contenu de plusieurs images pour générer une vidéo.
3. **Classification des modes** :
   * **Mode rapide** : `veo2-fast`, `veo3-fast`, `veo31-fast`, `veo31-fast-ingredients`.
   * **Mode qualité** : `veo2`, `veo3`, `veo31` (génération de qualité supérieure).

***

### ⚠️ Remarques

* **Modèle nécessitant obligatoirement des images** : `veo31-fast-ingredients` doit recevoir des images (1-3 images), sinon il ne peut pas fonctionner.
* **Limite de nombre d'images** :
  * À l'exception de `veo31-fast-ingredients`, les autres modèles prennent en charge un maximum de **3 images** en entrée.

Après avoir fait votre choix, vous pouvez également voir le code correspondant généré à droite, comme indiqué sur l'image :

<p>
  <img src="https://cdn.xhuoapi.ai/pmwh4y.png" width="500" className="m-auto" />
</p>

Cliquez sur le bouton « Try » pour effectuer un test, comme indiqué sur l'image ci-dessus, et nous avons obtenu le résultat suivant :

```json theme={null}
{
  "success": true,
  "task_id": "dd01fc69-e1f7-4b68-aa8c-463f6b748d11",
  "trace_id": "9906dac0-1516-41dc-9fe3-067ca1ba8269",
  "data": [
    {
      "id": "253eedc47f1c4eb2a370ed2312168f4b",
      "video_url": "https://platform.cdn.xhuoapi.ai/veo/dd01fc69-e1f7-4b68-aa8c-463f6b748d11.mp4",
      "created_at": "2025-07-25 16:07:43",
      "complete_at": "2025-07-25 16:10:28",
      "state": "succeeded"
    }
  ]
}
```

Le résultat de retour contient plusieurs champs, décrits comme suit :

* `success`，l'état de la tâche de génération de vidéo à ce moment.
* `task_id`，l'ID de la tâche de génération de vidéo à ce moment.
* `data`，le résultat de la tâche de génération de vidéo à ce moment.
  * `id`，l'ID de la vidéo de la tâche de génération à ce moment.
  * `video_url`，le lien de la vidéo de la tâche de génération à ce moment.
  * `created_at`，le temps de création de la tâche de génération de vidéo à ce moment.
  * `complete_at`，le temps de complétion de la tâche de génération de vidéo à ce moment.
  * `state`，l'état de la tâche de génération de vidéo à ce moment.

On peut voir que nous avons obtenu des informations vidéo satisfaisantes, nous n'avons qu'à récupérer la vidéo générée à partir de l'URL de la vidéo dans le résultat `data`.

De plus, si vous souhaitez générer le code d'intégration correspondant, vous pouvez le copier directement, par exemple, le code CURL est comme suit :

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/veo/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "veo2",
  "prompt": "Tasse à café en céramique blanche sur un comptoir en marbre brillant avec la lumière du matin venant de la fenêtre. La caméra tourne lentement à 360 degrés autour de la tasse, s'arrêtant brièvement au niveau de la poignée."
}'
```

## Fonctionnalité de génération de vidéo à partir d'images

Si vous souhaitez générer une vidéo à partir d'images de début et de fin, vous pouvez définir le paramètre `action` sur `image2video` et entrer un tableau de liens d'images de début et de fin `image_urls`.

Ensuite, nous devons remplir les mots-clés d'invite nécessaires pour personnaliser la génération de la vidéo, ce qui nous permet de spécifier les éléments suivants :

* `model`：le modèle de génération de vidéo, principalement `veo2`, `veo2-fast`, `veo3` et `veo3-fast`.
* `image_urls`：lorsque l'on choisit l'action de génération de vidéo `image2video`, il est nécessaire de télécharger les liens d'images de référence de début et de fin.
* `prompt`：les mots-clés d'invite.

Exemple de remplissage :

<p>
  <img src="https://cdn.xhuoapi.ai/8wvlqd.png" width="500" className="m-auto" />
</p>

Une fois rempli, le code généré automatiquement est comme suit :

<p>
  <img src="https://cdn.xhuoapi.ai/tgzfxi.png" width="500" className="m-auto" />
</p>

Le code Python correspondant :

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/veo/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "image2video",
    "model": "veo2",
    "prompt": "Laissez-le danser",
    "image_urls": ["https://cdn.xhuoapi.ai/7p1jhy.png"]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

En cliquant sur exécuter, vous pouvez constater que vous obtiendrez un résultat, comme suit :

```json theme={null}
{
  "success": true,
  "task_id": "98e309f3-35bc-438d-8cb3-4015fc864b87",
  "trace_id": "8bc68066-36de-41ef-ae5e-b7d61ff6aee8",
  "data": [
    {
      "id": "59f12222b1fa4fbe9331ff2400ad1583",
      "video_url": "https://platform.cdn.xhuoapi.ai/veo/98e309f3-35bc-438d-8cb3-4015fc864b87.mp4",
      "created_at": "2025-07-25 16:13:07",
      "complete_at": "2025-07-25 16:16:12",
      "state": "succeeded"
    }
  ]
}
```

On peut voir que le contenu du résultat est cohérent avec ce qui précède, ce qui réalise la fonctionnalité de génération de vidéo à partir d'images.

## Fonctionnalité d'obtention de vidéo en 1080p

Si vous souhaitez obtenir une vidéo Veo déjà générée en 1080p, vous pouvez définir le paramètre `action` sur `get1080p` et entrer l'ID de la vidéo pour laquelle vous souhaitez obtenir le 1080p. L'ID de la vidéo peut être obtenu selon l'utilisation de base, comme illustré ci-dessous :

<p>
  <img src="https://cdn.xhuoapi.ai/hacabc.png" width="500" className="m-auto" />
</p>

À ce moment, vous pouvez voir que l'ID de la vidéo est :

```json theme={null}
"id": "59f12222b1fa4fbe9331ff2400ad1583"
```

> Remarque : ici, l'ID de la vidéo est l'ID de la vidéo générée. Si vous ne savez pas comment générer une vidéo, vous pouvez vous référer à l'utilisation de base ci-dessus pour générer une vidéo.

Ensuite, nous devons remplir les mots-clés d'invite nécessaires pour personnaliser la génération de la vidéo, ce qui nous permet de spécifier les éléments suivants :

* `model`：le modèle de génération de vidéo, principalement `veo2`, `veo2-fast`, `veo3` et `veo3-fast`.
* `video_id`：l'ID de la vidéo de référence, utilisé pour obtenir la vidéo en 1080p.

Exemple de remplissage :

<p>
  <img src="https://cdn.xhuoapi.ai/k56fhn.png" width="500" className="m-auto" />
</p>

Une fois rempli, le code généré automatiquement est comme suit :

<p>
  <img src="https://cdn.xhuoapi.ai/8gn4cr.png" width="500" className="m-auto" />
</p>

En cliquant sur exécuter, vous pouvez constater que vous obtiendrez un résultat, comme suit :

```json theme={null}
{
  "success": true,
  "task_id": "47a51cfe-2e24-4aba-93b3-546c2dc52984",
  "trace_id": "a8922eec-6f50-4f77-8104-00ded071d59d",
  "data": [
    {
      "id": "59f12222b1fa4fbe9331ff2400ad1583",
      "video_url": "https://platform.cdn.xhuoapi.ai/veo/47a51cfe-2e24-4aba-93b3-546c2dc52984.mp4",
      "created_at": "2025-07-25 16:13:07",
      "complete_at": "2025-07-25 16:16:12",
      "state": "succeeded"
    }
  ]
}
```

On peut voir que le contenu du résultat est cohérent avec ce qui précède, ce qui réalise la fonctionnalité d'obtention de vidéo en 1080p.

## Génération de vidéo avec dimensions spécifiées

Si vous souhaitez spécifier la génération d'une vidéo Veo de dimensions personnalisées, vous pouvez définir le paramètre `aspect_ratio` sur la taille souhaitée. Ensuite, nous devons remplir les mots-clés d'invite nécessaires pour personnaliser la génération de la vidéo, ce qui nous permet de spécifier les éléments suivants :

* `model`：le modèle de génération de vidéo, principalement `veo2`, `veo2-fast`, `veo3` et `veo3-fast`.
* `aspect_ratio`：la taille de la vidéo, actuellement supportée : `16:9`, `16:9`, `3:4`, `4:3`, `1:1`, par défaut `16:9`.
* `translation`：si l'auto-traduction des mots-clés d'invite est activée, par défaut `false`.
  Exemple de remplissage :

<p>
  <img src="https://cdn.xhuoapi.ai/xau4cm.png" width="500" className="m-auto" />
</p>

Une fois rempli, le code généré automatiquement est comme suit :

<p>
  <img src="https://cdn.xhuoapi.ai/55r589.png" width="500" className="m-auto" />
</p>

En cliquant sur exécuter, vous pouvez constater que vous obtiendrez un résultat, comme suit :

```json theme={null}
{
  "success": true,
  "task_id": "d2b93290-ab0e-4d20-ae45-60c062a32687",
  "trace_id": "9834e64d-c8fe-43ae-8114-ee2b5f93d886",
  "data": [
    {
      "id": "fc667e7d3b8f44beaa61a3c339af0e50",
      "video_url": "https://platform.cdn.xhuoapi.ai/veo/d2b93290-ab0e-4d20-ae45-60c062a32687.mp4",
      "created_at": "2025-08-24 20:09:06",
      "complete_at": "2025-08-24 20:10:45",
      "state": "succeeded"
    }
  ]
}
```

On peut voir que le contenu des résultats est cohérent avec le texte précédent, ce qui permet de réaliser la fonction de génération de vidéo à une taille spécifiée.

## Callback asynchrone

Étant donné que le temps de génération de l'API Veo Videos Generation est relativement long, environ 1 à 2 minutes, si l'API ne répond pas pendant longtemps, la requête HTTP maintiendra la connexion, entraînant une consommation supplémentaire de ressources système. C'est pourquoi cette API propose également un support de callback asynchrone.

Le processus global est le suivant : lorsque le client initie une requête, il spécifie un champ `callback_url` supplémentaire. Après que le client ait lancé la requête API, l'API renverra immédiatement un résultat contenant un champ d'information `task_id`, représentant l'ID de la tâche actuelle. Lorsque la tâche est terminée, le résultat de la vidéo générée sera envoyé au `callback_url` spécifié par le client sous forme de POST JSON, incluant également le champ `task_id`, permettant ainsi de relier le résultat de la tâche par ID.

Voyons maintenant un exemple pour comprendre comment procéder concrètement.

Tout d'abord, le callback Webhook est un service capable de recevoir des requêtes HTTP, les développeurs doivent le remplacer par l'URL de leur propre serveur HTTP. Ici, pour des raisons de démonstration, nous utilisons un site Web de Webhook public [https://webhook.site/](https://webhook.site/), en ouvrant ce site, vous obtiendrez une URL Webhook, comme illustré ci-dessous :

![](https://cdn.xhuoapi.ai/tbcnai.png)

Copiez cette URL, elle peut être utilisée comme Webhook, l'exemple ici est `https://webhook.site/aed5cd28-f8aa-4dca-9480-8ec9b42137dc`.

Ensuite, nous pouvons définir le champ `callback_url` sur l'URL Webhook ci-dessus, tout en remplissant les paramètres correspondants, le contenu spécifique est illustré ci-dessous :

<p>
  <img src="https://cdn.xhuoapi.ai/rgivs2.png" width="500" className="m-auto" />
</p>

En cliquant sur exécuter, vous constaterez que vous obtiendrez immédiatement un résultat, comme suit :

```json theme={null}
{
  "task_id": "1ebe4f2b-59ba-4385-a4ea-0ce8a3fe12ed"
}
```

Après un court instant, nous pouvons observer le résultat de la vidéo générée sur `https://webhook.site/aed5cd28-f8aa-4dca-9480-8ec9b42137dc`, comme illustré ci-dessous :

![](https://cdn.xhuoapi.ai/238i32.png)

Le contenu est le suivant :

```json theme={null}
{
  "success": true,
  "task_id": "1ebe4f2b-59ba-4385-a4ea-0ce8a3fe12ed",
  "trace_id": "d1d53c04-58c5-4c40-bb63-f00188540e56",
  "data": [
    {
      "id": "2f43ceed37944b4d836e1a1899dad0a1",
      "video_url": "https://platform.cdn.xhuoapi.ai/veo/1ebe4f2b-59ba-4385-a4ea-0ce8a3fe12ed.mp4",
      "created_at": "2025-07-25 17:19:20",
      "complete_at": "2025-07-25 17:21:45",
      "state": "succeeded"
    }
  ]
}
```

On peut voir qu'il y a un champ `task_id` dans le résultat, les autres champs sont similaires à ceux du texte précédent, permettant de relier les tâches via ce champ.

## Gestion des erreurs

Lors de l'appel de l'API, si une erreur se produit, l'API renverra le code d'erreur et les informations correspondantes. Par exemple :

* `400 token_mismatched` : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
* `400 api_not_implemented` : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
* `401 invalid_token` : Non autorisé, jeton d'autorisation invalide ou manquant.
* `429 too_many_requests` : Trop de requêtes, vous avez dépassé la limite de taux.
* `500 api_error` : Erreur interne du serveur, quelque chose s'est mal passé sur le serveur.

### Exemple de réponse d'erreur

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "échec de la récupération"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Conclusion

Grâce à ce document, vous avez compris comment utiliser l'API Veo Videos Generation pour générer des vidéos à partir de mots-clés d'entrée et d'images de référence de la première image. Nous espérons que ce document vous aidera à mieux intégrer et utiliser cette API. Si vous avez des questions, n'hésitez pas à contacter notre équipe de support technique.
