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

# Génération vidéo Kling v2.6 avec contrôle de mouvement

>  - Modèle Kling avec contrôle de mouvement (image de référence + vidéo de référence)
- Appel via le point de terminaison unifié `/v1/videos/generations`
- Prend en charge l'orientation du personnage par image / vidéo, durée maximale de 10 s / 30 s respectivement
- Tâche asynchrone — renvoie un task_id lors de la soumission 

```bash cURL theme={null}
curl --request POST \
  --url https://gccai.heqingsong.uk/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "kling-v2-6-motion-control",
    "prompt": "Keep the character consistent, perform a turn and wave following the reference video, cinematic lighting",
    "image_url": "https://example.com/ref-image.png",
    "video_url": "https://example.com/ref-video-8s.mp4",
    "keep_original_sound": "yes",
    "character_orientation": "image",
    "mode": "std",
    "watermark_info": {"enabled": false}
  }'
```

```python Python theme={null}
import requests

url = "https://gccai.heqingsong.uk/v1/videos/generations"

payload = {
    "model": "kling-v2-6-motion-control",
    "prompt": "Keep the character consistent, perform a turn and wave following the reference video, cinematic lighting",
    "image_url": "https://example.com/ref-image.png",
    "video_url": "https://example.com/ref-video-8s.mp4",
    "keep_original_sound": "yes",
    "character_orientation": "image",
    "mode": "std",
    "watermark_info": {"enabled": False}
}

headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript JavaScript theme={null}
const url = "https://gccai.heqingsong.uk/v1/videos/generations";

const payload = {
  model: "kling-v2-6-motion-control",
  prompt: "Keep the character consistent, perform a turn and wave following the reference video, cinematic lighting",
  image_url: "https://example.com/ref-image.png",
  video_url: "https://example.com/ref-video-8s.mp4",
  keep_original_sound: "yes",
  character_orientation: "image",
  mode: "std",
  watermark_info: { enabled: false }
};

const headers = {
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(payload)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
```

```json 200 theme={null}
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
    }
  ]
}
```

```json 400 theme={null}
{
  "error": {
    "code": 400,
    "message": "Invalid request parameters",
    "type": "invalid_request_error"
  }
}
```

```json 401 theme={null}
{
  "error": {
    "code": 401,
    "message": "Authentication failed. Please check your API key.",
    "type": "authentication_error"
  }
}
```

```json 402 theme={null}
{
  "error": {
    "code": 402,
    "message": "Insufficient account balance. Please top up and try again.",
    "type": "payment_required"
  }
}
```

```json 429 theme={null}
{
  "error": {
    "code": 429,
    "message": "Too many requests. Please try again later.",
    "type": "rate_limit_error"
  }
}
```

```json 500 theme={null}
{
  "error": {
    "code": 500,
    "message": "Internal server error. Please try again later.",
    "type": "server_error"
  }
}
```

## Authentification

**Authorization** `string` *required*

Toutes les requêtes nécessitent une authentification par Bearer Token

Obtenir votre clé API :

Rendez-vous sur la [page de gestion des clés API](https://gccai.heqingsong.uk/keys) pour obtenir votre clé API

Ajoutez l'en-tête suivant à chaque requête :

```
Authorization: Bearer YOUR_API_KEY
```

## Paramètres de la requête

**model** `string` *required*

Nom du modèle : `kling-v3-motion-control` ou `kling-v2-6-motion-control`

**nsfw\_check** `boolean` (default: false)

Indique s'il faut modérer le contenu avant d'envoyer la tâche vidéo.

* `true` : vérifier les prompts et les images d'entrée avec `omni-moderation-latest`
* `false` ou omis : ne pas envoyer de requête de modération, sans coût ni latence de modération supplémentaires (par défaut)

**prompt** `string`

Prompt textuel décrivant le mouvement, les mouvements de caméra et le style souhaités

Facultatif mais recommandé — des descriptions plus précises produisent des résultats plus stables

Exemple : `"The character dances following the reference video, smooth motion, realistic style"`

**image\_url** `string` *required*

URL de l'image de référence

Doit être un lien publiquement accessible

**video\_url** `string` *required*

URL de la vidéo de référence

Doit être un lien direct publiquement accessible ; mp4/mov recommandé, taille inférieure à 100 Mo

> [!WARNING]
>
> Le serveur détecte la durée réelle de `video_url`. La durée minimale est de 3 secondes ; la durée maximale dépend de `character_orientation`.

**keep\_original\_sound** `string` (default: yes)

Conserver ou non la piste audio originale de la vidéo de référence

Options :

* `yes` : conserver l'audio d'origine (par défaut)
* `no` : ne pas conserver l'audio d'origine

**character\_orientation** `string` *required*

Contrôle de l'orientation du personnage

Options :

* `image` : utiliser l'orientation du personnage de l'image de référence (durée de la vidéo de référence : `3~10s`)
* `video` : utiliser l'orientation du personnage de la vidéo de référence (durée de la vidéo de référence : `3~30s`)

**mode** `string` *required*

Mode de génération

Options :

* `std` : mode standard (équilibre vitesse / qualité)
* `pro` : mode haute qualité (latence plus élevée)

**watermark\_info** `object`

Objet de contrôle du filigrane (optionnel)

**Champs de watermark\_info**

**enabled** `boolean` (default: false)

Ajouter ou non un filigrane

* `true` : ajouter un filigrane
* `false` : pas de filigrane (par défaut)

## Règles de durée

| Condition | Durée autorisée de la vidéo de référence |
| - | - |
| `character_orientation = image` | `3s ~ 10s` |
| `character_orientation = video` | `3s ~ 30s` |

> [!NOTE]
>
> La durée facturée correspond à la durée réelle détectée par le serveur depuis `video_url`, et non à une estimation côté client.

## Réponse

**code** `integer`

Code de statut de la réponse, 200 en cas de succès

**data** `array`

Tableau de données de la réponse

**Éléments du tableau**

**status** `string`

Statut de la tâche, `submitted` lors de la soumission initiale

**task\_id** `string`

Identifiant unique de la tâche, utilisé pour interroger son statut et ses résultats

## Exemples

### Exemple 1 : orientation par image (dans la limite de 10 s)

```json theme={null}
{
  "model": "kling-v2-6-motion-control",
  "prompt": "Keep character orientation consistent with the reference image, perform a turn and wave",
  "image_url": "https://example.com/ref-image.png",
  "video_url": "https://example.com/ref-video-8s.mp4",
  "character_orientation": "image",
  "mode": "std",
  "keep_original_sound": "yes",
  "watermark_info": {"enabled": false}
}
```

### Exemple 2 : orientation par vidéo (dans la limite de 30 s)

```json theme={null}
{
  "model": "kling-v2-6-motion-control",
  "prompt": "Follow the character orientation and rhythm of the reference video, maintain fluid motion",
  "image_url": "https://example.com/ref-image.png",
  "video_url": "https://example.com/ref-video-12s.mp4",
  "character_orientation": "video",
  "mode": "pro",
  "keep_original_sound": "no",
  "watermark_info": {"enabled": false}
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.