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

# Documentation d'intégration de l'API de génération de vidéos Kling

> Kling video generation API guide - Ace Data Cloud

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

## Processus de demande

Pour utiliser l'API de génération de vidéos Kling, commencez par obtenir votre jeton API sur le [tableau de bord Ace Data Cloud](https://platform.acedata.cloud/console/applications) et conservez-le pour référence.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

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 quoi vous serez automatiquement renvoyé à la page actuelle.

**Un jeton API suffit pour appeler tous les services de la plateforme, sans avoir besoin de demander séparément pour chaque service.** La première demande vous donnera un quota gratuit pour une expérience sans frais ; lorsque le quota est insuffisant, vous pouvez recharger le solde général sur le [tableau de bord](https://platform.acedata.cloud/console/coin).

> 📘 Documentation complète : [API de génération de vidéos Kling →](https://platform.acedata.cloud/documents/kling-videos)

## Utilisation de base

Tout d'abord, comprenez la méthode d'utilisation de base, qui consiste à entrer le mot-clé `prompt`, l'action `action`, l'URL de l'image de référence de la première image `start_image_url` 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`, qui comprend principalement trois actions : vidéo générée par texte (`text2video`), vidéo générée par image (`image2video`), vidéo étendue (`extend`). Ensuite, nous devons également entrer le modèle `model`, qui comprend principalement les modèles suivants : `kling-v1`, `kling-v1-6`, `kling-v2-master`, `kling-v2-1-master`, `kling-v2-5-turbo`, `kling-v2-6`, `kling-v3`, `kling-v3-omni`, `kling-o1`, les détails sont les suivants :

<p>
  <img src="https://cdn.acedata.cloud/ke1bok.png" width="500" className="m-auto" />
</p>

Ici, nous avons configuré 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é pour appeler l'API, que vous pouvez sélectionner directement après la demande.

Nous avons également configuré le corps de la requête, y compris :

* `model` : le modèle de génération de vidéos, principalement `kling-v1`, `kling-v1-6`, `kling-v2-master`, `kling-v2-1-master`, `kling-v2-5-turbo`, `kling-v2-6`, `kling-v3`, `kling-v3-omni`, `kling-o1`.
* `mode` : le mode de génération de vidéos, les valeurs possibles sont le mode standard `std`, le mode rapide `pro` et le mode natif 4K `4k`. Le mode `4k` ne prend en charge que `kling-v3` et `kling-v3-omni`, et n'est pas compatible avec `camera_control` (contrôle de la caméra).
* `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`), vidéo étendue (`extend`).
* `start_image_url` : lorsque l'action vidéo générée par image `image2video` est choisie, il est nécessaire de télécharger le lien de l'image de référence de la première image.
* `end_image_url` : optionnel lors de la génération de vidéo par image, spécifie la dernière image.
* `duration` : durée de la vidéo, en secondes. `kling-v3` et `kling-v3-omni` prennent en charge des durées entières de 3 à 15 secondes ; `kling-o1` ne prend en charge que 5 secondes ; d'autres modèles prennent en charge 5 ou 10 secondes.
* `generate_audio` : si l'audio doit être généré en synchronisation, optionnel, valeur booléenne. Prend en charge `kling-v3`, `kling-v3-omni` et `kling-v2-6` (uniquement en mode pro). Par défaut, c'est `false`.
* `aspect_ratio` : rapport hauteur/largeur de la vidéo, optionnel, prend en charge `16:9`, `9:16`, `1:1`, par défaut `16:9`.
* `cfg_scale` : intensité de corrélation, plage \[0,1], plus c'est grand, plus cela correspond au mot-clé.
* `camera_control` : optionnel, paramètres d'objet pour contrôler le mouvement de la caméra, prend en charge les préréglages type/simple ainsi que les configurations horizontal, vertical, pan, tilt, roll, zoom, etc.
* `negative_prompt` : optionnel, mots-clés inverses que vous ne souhaitez pas voir, maximum 200 caractères.
* `image_list` : liste d'images de référence Omni, applicable aux modèles `kling-o1` et `kling-v3-omni`, voir ci-dessous « Référence Omni ».
* `video_list` : liste de vidéos de référence Omni (prend en charge l'édition vidéo), applicable aux modèles `kling-o1` et `kling-v3-omni`, voir ci-dessous « Référence Omni ».
* `prompt` : mot-clé.
* `callback_url` : URL pour recevoir les résultats.
* `async` : optionnel, si défini sur `true`, l'interface renvoie immédiatement `task_id`, sans avoir besoin de fournir `callback_url`, puis vous pouvez interroger le résultat via l'interface de requête de tâche correspondante.

Après avoir fait votre sélection, vous pouvez voir que le code correspondant a également été généré à droite, comme illustré :

<p>
  <img src="https://cdn.acedata.cloud/3yjql0.png" width="500" className="m-auto" />
</p>

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

```json theme={null}
{
  "success": true,
  "video_id": "900798310464749610",
  "video_url": "https://platform2.cdn.acedata.cloud/kling/6c68c267-065b-4423-b66b-a0e4c59ee0d5.mp4",
  "duration": "5.041",
  "state": "succeed",
  "task_id": "6c68c267-065b-4423-b66b-a0e4c59ee0d5"
}
```

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.
* `video_id`, l'ID de la vidéo de la tâche de génération de vidéo à ce moment.
* `video_url`, le lien de la vidéo de la tâche de génération de vidéo à ce moment.
* `duration`, la durée de la vidéo 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.

Nous pouvons voir que nous avons obtenu des informations vidéo satisfaisantes, il nous suffit d'accéder à l'adresse du lien vidéo dans le `data` pour obtenir la vidéo Kling générée.

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 le suivant :

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/kling/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "kling-v3",
  "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."
}'
```

## Matrice des capacités des modèles

Le support des paramètres varie considérablement selon les modèles. La matrice suivante est tirée de la [documentation officielle des modèles vidéo de Kling](https://app.klingai.com/global/dev/document-api/apiReference/model/videoModels), veuillez vérifier avant d'appeler si la combinaison actuelle `model` / `mode` / `duration` prend en charge les fonctionnalités dont vous avez besoin, sinon des erreurs telles que `model/mode/duration(...) is not supported with image_tail` seront renvoyées.

| Modèle              | Mode           | `end_image_url` (image de fin) | `generate_audio` (audio) | `camera_control` (contrôle de la caméra) | Remarques                                                                              |
| ------------------- | -------------- | ------------------------------ | ------------------------ | ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `kling-v1`          | std / pro      | ✅ uniquement `duration=5`      | ❌                        | ✅ uniquement `duration=5`                | `extend` ne prend pas en charge `negative_prompt` et `cfg_scale`                       |
| `kling-v1-6`        | std            | ❌                              | ❌                        | ❌                                        | Génération de vidéos à partir de plusieurs images, `extend` disponible en mode complet |
| `kling-v1-6`        | pro            | ✅                              | ❌                        | ❌                                        |                                                                                        |
| `kling-v2-master`   | —              | ❌                              | ❌                        | ❌                                        | Mode unique, uniquement `duration=5/10`                                                |
| `kling-v2-1-master` | —              | ❌                              | ❌                        | ❌                                        | Mode unique, uniquement `duration=5/10`                                                |
| `kling-v2-5-turbo`  | std            | ❌                              | ❌                        | ❌                                        |                                                                                        |
| `kling-v2-5-turbo`  | pro            | ✅                              | ❌                        | ❌                                        |                                                                                        |
| `kling-v2-6`        | std            | ❌                              | ❌                        | ❌                                        |                                                                                        |
| `kling-v2-6`        | pro            | ✅                              | ✅                        | ❌                                        | Unique modèle non v3 à prendre en charge l'audio                                       |
| `kling-v3`          | std / pro      | ✅                              | ✅                        | ✅                                        | Plage de `duration` de 3 à 15 secondes                                                 |
| `kling-v3`          | 4k             | ✅                              | ✅                        | ❌                                        | Mode 4K incompatible avec le contrôle de la caméra                                     |
| `kling-v3-omni`     | std / pro / 4k | ✅                              | ✅                        | ❌                                        |                                                                                        |
| `kling-o1`          | std / pro      | ✅                              | ❌                        | ❌                                        | Prend uniquement en charge `duration=5`                                                |

Remarques :

* `mode=4k` uniquement pris en charge par `kling-v3` et `kling-v3-omni` ; et est exclusif au `camera_control`.
* `end_image_url` ne peut être utilisé avec `start_image_url` que lors de l'action `image2video`. Transmettre uniquement `end_image_url` (sans `start_image_url`) sera refusé.
* `kling-v3` / `kling-v3-omni` accepte n'importe quelle durée entière de 3 à 15 secondes ; `kling-o1` n'accepte que 5 ; les autres modèles n'acceptent que 5 ou 10.
* `generate_audio` est par défaut `false`. Seuls `kling-v3`, `kling-v3-omni` et `kling-v2-6` (mode pro) le prennent en charge.

## Fonctionnalité d'extension vidéo

Si vous souhaitez continuer à générer une vidéo Kling déjà créée, vous pouvez définir le paramètre `action` sur `extend`, et entrer l'ID de la vidéo à continuer. L'ID de la vidéo est obtenu en fonction de l'utilisation de base, comme illustré ci-dessous :

<p>
  <img src="https://cdn.acedata.cloud/om6p6g.png" width="500" className="m-auto" />
</p>

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

```
"video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c"
```

> 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 nécessaires pour personnaliser la génération de la vidéo, vous pouvez spécifier le contenu suivant :

* `model` : le modèle de génération de vidéo, principalement `kling-v1`, `kling-v1-5` et `kling-v1-6`.
* `mode` : le mode de génération de vidéo, les valeurs possibles sont le mode standard `std`, le mode rapide `pro` et le mode natif 4K `4k` (uniquement pris en charge par `kling-v3` et `kling-v3-omni`, incompatible avec le contrôle de la caméra).
* `duration` : la durée de la tâche de génération vidéo, principalement 5s et 10s.
* `start_image_url` : lorsque vous choisissez l'action de génération d'image en vidéo `image2video`, vous devez télécharger le lien de l'image de référence de la première image.
* `prompt` : les mots-clés.

Exemple de remplissage :

<p>
  <img src="https://cdn.acedata.cloud/ejimqy.png" width="500" className="m-auto" />
</p>

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

<p>
  <img src="https://cdn.acedata.cloud/52x4u5.png" width="500" className="m-auto" />
</p>

Code Python correspondant :

```python theme={null}
import requests

url = "https://api.acedata.cloud/kling/videos"

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

payload = {
    "action": "extend",
    "model": "kling-v1",
    "video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c",
    "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.",
    "duration": 10
}

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

En cliquant sur exécuter, vous pouvez voir qu'un résultat est obtenu, comme suit :

```json theme={null}
{
  "success": true,
  "video_id": "bbc3b105-ac72-4de2-8390-0cb37dc7d41e",
  "video_url": "https://cdn.klingai.com/bs2/upload-kling-api/7822108635/extendVideo/Cjil4mfBfs0AAAAAAKhr6A-0_raw_video_1.mp4",
  "duration": "9.6",
  "state": "succeed",
  "task_id": "3ece87e6-3ee3-4f5e-bd70-5ae5eca89a23"
}
```

On peut voir que le contenu du résultat est cohérent avec ce qui précède, ce qui permet de réaliser la fonctionnalité d'extension de vidéo.

## Référence Omni (édition vidéo / vidéo de référence / référence multi-images)

`kling-o1` et `kling-v3-omni` sont deux modèles indépendants, tous deux prenant en charge la capacité de « référence omnidirectionnelle ». Sur la base de la génération de vidéo à partir de texte (`action=text2video`), il est possible de transmettre des images de référence ou des vidéos de référence supplémentaires, permettant **la référence multi-images, la vidéo de référence et l'édition directe de vidéos existantes**.

**Convention clé** : les matériaux de référence doivent être cités dans le `prompt` sous la forme `&lt;&lt;<image_1>>>`, `&lt;&lt;<video_1>>>` (numérotation à partir de 1) pour les matériaux correspondants dans `image_list` / `video_list`, sinon le modèle n'appliquera pas ces références. Si vous ne transmettez que des matériaux sans les citer dans les mots-clés, ils seront ignorés.

> Remarque de sécurité : l'API actuelle ne prend pas en charge `element_list`. Les ID en amont de la Kling Element Library appartiennent à l'espace de noms du compte fournisseur. Avant de fournir une API de gestion des éléments avec isolation des locataires, les clients doivent utiliser `image_list` pour transmettre les images de référence principales.

Les demandes Omni ne prennent pas en charge `negative_prompt`, `cfg_scale` ou `camera_control`, et ne peuvent pas utiliser `mode=4k`. Lorsqu'une vidéo de référence est incluse, `generate_audio` doit être `false`.

### Vidéo de référence et édition vidéo (`video_list`)

`video_list` est utilisé pour transmettre des vidéos de référence, c'est le scénario le plus couramment utilisé pour cette capacité, les champs des éléments du tableau sont les suivants :

* `video_url` : lien de la vidéo de référence, ne peut pas être vide. Exigences : format MP4/MOV ; résolution 720px–2160px ; durée 3–10 secondes ; fréquence d'images 24–60fps ; taille de fichier ≤200MB ; maximum 1 vidéo.
* `refer_type` : type de référence, optionnel `base` (par défaut, **vidéo de base à éditer**, c'est-à-dire "éditer directement la vidéo", peut ajouter/supprimer/modifier des éléments, changer la composition, changer de style, changer de couleur, changer de temps, etc.) ou `feature` (**référence de caractéristiques**, référence de son style / mouvement de caméra / suite de la prochaine prise).
* `keep_original_sound` : conserver l'audio original de la vidéo, optionnel `yes` (conserver) ou `no` (supprimer).

> Remarque : lorsqu'il existe une vidéo de référence, `generate_audio` doit être `false`. Les vidéos avec `refer_type=base` ne peuvent pas spécifier de première image / dernière image.

Exemple de CURL pour éditer une vidéo existante (transformer la vidéo en style anime) :

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/kling/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "kling-o1",
  "mode": "std",
  "duration": 5,
  "prompt": "Transformez <<<video_1>>> en style anime de niveau cinématographique, en conservant le mouvement et la composition d'origine",
  "video_list": [
    {
      "video_url": "https://cdn.acedata.cloud/your-reference-video.mp4",
      "refer_type": "base",
      "keep_original_sound": "no"
    }
  ]
}'
```

### Référence multiple d'images (`image_list`)

`image_list` est utilisé pour transmettre des images de référence (éléments / scènes / styles, etc.), les champs des éléments du tableau sont les suivants :

* `image_url` : lien de l'image de référence, ne peut pas être vide. Exigences : format .jpg/.jpeg/.png ; taille de fichier ≤10MB ; côté le plus court ≥300px ; rapport largeur/hauteur 1:2.5 \~ 2.5:1.
* `type` : optionnel. S'il n'est pas transmis, il est considéré comme une image de référence pure ; transmettre `first_frame` / `end_frame` le considère respectivement comme première image / dernière image (équivalent à `start_image_url` / `end_image_url`).

Lors de l'utilisation, il faut référencer dans `prompt` avec `&lt;&lt;<image_1>>>`, `&lt;&lt;<image_2>>>`. Limite de quantité : s'il n'y a pas de vidéo de référence, les images de référence ≤ 7 ; s'il y a une vidéo de référence, les images de référence ≤ 4. Lors de la transmission uniquement de la première / dernière image, il est également possible d'utiliser directement `start_image_url` / `end_image_url`, mais la dernière image doit être utilisée avec la première image.

> Remarque : si `start_image_url` / `end_image_url` et `image_list` sont transmis en même temps, la première / dernière image sera placée avant `image_list`, ce qui peut affecter la correspondance des numéros de `&lt;&lt;<image_N>>>`. Il est conseillé de choisir l'un ou l'autre : si vous avez besoin de la première / dernière image, spécifiez directement dans `image_list` avec `type`, ne pas mélanger avec `start_image_url` / `end_image_url`.

Exemple de CURL pour générer une vidéo avec référence multiple d'images :

```shell theme={null}
curl -X POST 'https://api.acedata.cloud/kling/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "text2video",
  "model": "kling-o1",
  "mode": "std",
  "duration": 5,
  "prompt": "Faites en sorte que les personnages de <<<image_1>>> se trouvent dans la scène de <<<image_2>>>, lumière cinématographique",
  "image_list": [
    { "image_url": "https://cdn.acedata.cloud/subject.png" },
    { "image_url": "https://cdn.acedata.cloud/scene.png" }
  ]
}'
```

## Rappel asynchrone

Étant donné que le temps de génération de l'API Kling 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 rappel asynchrone.

Le processus global est le suivant : lorsque le client initie une demande, il spécifie un champ `callback_url` supplémentaire, après que le client ait lancé la demande 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, qui inclut également le champ `task_id`, permettant ainsi de relier le résultat de la tâche par ID.

Voyons comment procéder avec un exemple.

Tout d'abord, le rappel Webhook est un service capable de recevoir des requêtes HTTP, le développeur doit le remplacer par l'URL de son 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é :

![](https://cdn.acedata.cloud/tbcnai.png)

Copiez cette URL, vous pouvez l'utiliser comme Webhook, l'exemple ici est `https://webhook.site/624b2c78-6dbd-4618-9d2b-b32eade6d8c3`.

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é comme suit :

<p>
  <img src="https://cdn.acedata.cloud/vdx12s.png" width="500" className="m-auto" />
</p>

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

```
{
  "task_id": "20068983-0cc9-4c6a-aeb6-9c6a3c668be0"
}
```

Après un moment, vous pouvez observer le résultat de la vidéo générée sur `https://webhook.site/624b2c78-6dbd-4618-9d2b-b32eade6d8c3`, comme illustré :

![](https://cdn.acedata.cloud/zv5u2q.png)

Le contenu est le suivant :

```json theme={null}
{
    "success": true,
    "video_id": "030bb06d-98d4-4044-9042-0aa0822e8c8c",
    "video_url": "https://cdn.klingai.com/bs2/upload-kling-api/7822108635/text2video/CjJzzGfBfqcAAAAAAKdVMQ-0_raw_video_1.mp4",
    "duration": "5.1",
    "state": "succeed",
    "task_id": "20068983-0cc9-4c6a-aeb6-9c6a3c668be0"
}
```

On peut voir que le résultat contient un champ `task_id`, les autres champs sont similaires à ceux mentionnés ci-dessus, ce champ permet de relier la tâche.

## 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 de génération de vidéos Kling en entrant des mots-clés ainsi qu'une image de référence pour la première image afin de générer des vidéos. 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.
