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

# Kling V4 Flash Génération de vidéos

> Génération depuis du texte, une image initiale ou des références image/vidéo, montage et prolongation. 720p uniquement, 3–20 secondes générées, 24fps.

> [!NOTE]
>
> Ce point de terminaison est asynchrone. Après l’envoi, utilisez le `task_id` renvoyé avec `GET /v1/tasks/{task_id}` pour consulter l’état et le résultat de la tâche.

```bash cURL theme={null}
curl --request POST \
  --url https://api.apimart.ai/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "kling-v4-flash",
    "prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "9:16"
  }'
```

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

response = requests.post(
    "https://api.apimart.ai/v1/videos/generations",
    headers={"Authorization": "Bearer <token>"},
    json={
        "model": "kling-v4-flash",
        "prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": "9:16"
    }
)
response.raise_for_status()
print(response.json())
```

```javascript JavaScript theme={null}
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer <token>",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "kling-v4-flash",
    prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
    duration: 5,
    resolution: "720p",
    aspect_ratio: "9:16"
  })
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
```

## Choix du mode

Les cinq modes utilisent le même nom de modèle, `kling-v4-flash`. Le mode est choisi selon les médias fournis et `omni_reference_task_type`.

| Mode | Entrée |
| - | - |
| Texte-vidéo | Aucun média image, vidéo ou audio |
| Image-vidéo | Une seule image initiale via `first_frame_image`, `first_frame` dans `image_with_roles`, ou l’unique image de `image_urls` |
| Génération à partir de références | Fournir `video_urls` ou `reference_image` dans `image_with_roles`, ou définir explicitement `omni_reference_task_type: "reference"` |
| Montage vidéo | Définir `omni_reference_task_type: "edit"` et fournir une vidéo d’entrée |
| Prolongement vidéo | Définir `omni_reference_task_type: "extend"` et fournir une vidéo d’entrée |

`omni_reference_task_type` vaut `auto` par défaut, ce qui équivaut à l’omettre. Avec la valeur explicite `reference`, les images de `image_urls` sont traitées comme des références.

> [!WARNING]
>
> Fournir uniquement `video_url` sans préciser `edit` ou `extend` renvoie HTTP 400. Pour utiliser une vidéo comme référence, utilisez `video_urls`.

## En-têtes de requête

**Authorization** `string` *required*

Authentification Bearer : `Bearer <token>`, où `<token>` est votre clé API APIMart.

## Paramètres de requête

**model** `string` *required*

Doit être `kling-v4-flash`.

**prompt** `string`

Décrivez le contenu à générer ou modifier. Facultatif seulement pour image vers vidéo. Utilisez `@Image1` / `@Video1` pour les références, numérotées à partir de 1 dans chaque tableau. En montage, la vidéo d’entrée est `@Video1`, les images sont `@Image1`, `@Image2`, etc.

**duration** `integer`

Secondes entières de `3` à `20`, généralement `5` par défaut. En montage, l’omission reprend la durée d’entrée arrondie au supérieur. En prolongation, il s’agit du segment ajouté. `0` explicite renvoie HTTP 400 ; `null` équivaut à l’omission. La facturation utilise cette durée entière ; le fichier peut dépasser d’environ une image.

**seconds** `integer`

Alias de `duration`, avec les mêmes règles. Si les deux sont fournis, chacun doit être entre `3` et `20` et les valeurs doivent être identiques, sinon HTTP 400.

**resolution** `string` (default: 720p)

Uniquement `720p`, valeur par défaut. `1080p` renvoie HTTP 400. La sélection d’un niveau via `mode` n’est pas prise en charge.

**aspect\_ratio** `string`

La génération depuis du texte, la génération avec références et le montage acceptent `16:9`, `9:16`, `1:1` et `21:9` ; seul le mode avec références accepte `auto`. La génération depuis une image n’accepte ni `aspect_ratio` ni `size` : toute valeur non vide renvoie HTTP 400, une chaîne vide équivaut à une omission. Recadrez l’image initiale au préalable pour changer le ratio.

| Mode | Comportement par défaut |
| - | - |
| Texte-vidéo | `16:9` |
| Image-vidéo | Omettre `aspect_ratio` / `size` ; suit l’image initiale. La recadrer au préalable pour changer le ratio |
| Génération à partir de références | `auto` |
| Montage vidéo | Suit la vidéo d’entrée |
| Prolongement vidéo | Ce champ n’est pas accepté ; le rapport d’aspect original est conservé |

**image\_urls** `string[]`

Image vers vidéo accepte une seule image initiale ; deux images renvoient HTTP 400. En génération par références ou montage, jusqu’à 10 images de référence. Pour des références uniquement visuelles, définissez `omni_reference_task_type: "reference"`. Les URL doivent être publiques. Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.

**image\_with\_roles** `object[]`

Chaque élément contient `url` et `role`. Image vers vidéo exige un seul `first_frame` ; références et montage utilisent `reference_image`. Les images finales et intermédiaires ne sont pas prises en charge. Jusqu’à 10 images de référence, pour 15 médias au total avec les vidéos. Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.

**first\_frame\_image** `string`

URL de l’image initiale pour image-vidéo. Peut aussi être fournie via `first_frame` dans `image_with_roles`, ou comme première image de `image_urls`. Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.

**video\_urls** `string[]`

Jusqu’à 5 vidéos de référence, totalisant au plus 20 secondes. Un dépassement renvoie HTTP 400, sans découpage. Pour le montage ou la prolongation, une seule entrée peut remplacer `video_url` avec un type de tâche explicite.

Les vidéos de référence doivent être au format MP4 / MOV, avec une largeur et une hauteur comprises chacune entre 700 et 4553px. La durée est celle du flux vidéo, pas du conteneur : au moins 3 secondes par vidéo et au plus 20 secondes au total. Toute vidéo de référence de moins de 3 secondes renvoie HTTP 400 à la soumission, sans facturation.

**video\_url** `string`

Vidéo d’entrée pour montage ou prolongation. Exige `omni_reference_task_type: "edit"` ou `"extend"`, sinon HTTP 400. L’entrée de montage doit durer 3–20 secondes. En dehors de cette plage, elle est refusée sans facturation.

Le montage accepte les vidéos MP4 / MOV dont la largeur et la hauteur sont chacune comprises entre 700 et 4553px. La limite de 3–20 secondes porte sur le flux vidéo, pas sur le conteneur. Un format, une largeur, une hauteur ou une durée d’entrée non conforme renvoie HTTP 400 à la soumission, sans facturation.

Les entrées de prolongation ne sont pas soumises à la plage de hauteur ni au minimum de 3 secondes du montage. Par exemple, une vidéo 480p de 2 secondes peut être prolongée.

**omni\_reference\_task\_type** `string` (default: auto)

Valeurs prises en charge : `auto`, `reference`, `edit` et `extend`.

* `auto` : choisit texte-vidéo, image-vidéo ou génération à partir de références selon les médias ; équivaut à omettre le champ.
* `reference` : génération à partir de références ; les images de `image_urls` sont traitées comme des références.
* `edit` : montage vidéo ; nécessite une vidéo d’entrée.
* `extend` : prolongement vidéo ; nécessite une vidéo d’entrée.

**audio\_setting** `string`

Pour la génération avec références vidéo : `origin` conserve le son de la première vidéo de référence ; `auto` génère un nouveau son et constitue la valeur par défaut. `origin` exige une vidéo de référence. Si la première vidéo n’a pas de piste audio, la sortie n’en aura pas non plus. Le montage régénère le son sans conserver l’original ; omettez ce paramètre dans les requêtes de montage. La prolongation ne l’accepte pas.

## Dimensions de sortie et fréquence d’images

La sortie utilise le niveau `720p` ; les dimensions réelles en pixels varient selon le ratio. La fréquence est de 24fps. Le fichier peut dépasser `duration` d’environ une image : une demande de 3 secondes produit environ 3.04 secondes.

| Ratio / mode | Dimensions réelles en pixels |
| - | - |
| `16:9` | 1280×720 |
| `9:16` | 720×1280 |
| `1:1` | 960×960 |
| `21:9` | 1464×628 |
| Depuis une image | Suit l’image initiale, environ 0.92MP au total ; une image 1:2.5 produit 604×1516 |

## Exemples de requêtes

Les URL ci-dessous sont des exemples fictifs. Remplacez-les par des URL réelles et accessibles publiquement.

### Image vers vidéo : une seule image initiale

```json theme={null}
{
  "model": "kling-v4-flash",
  "image_urls": [
    "https://example.com/start.png"
  ]
}
```

Fournissez une seule image initiale ; `prompt` est facultatif. Les images finales, intermédiaires ou une seconde image ne sont pas prises en charge.

Omettre `aspect_ratio` / `size` ; suit l’image initiale. La recadrer au préalable pour changer le ratio.

Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.

### Génération à partir de références

```json theme={null}
{
  "model": "kling-v4-flash",
  "prompt": "The girl in @Image1 runs along the beach with the camera movement from @Video1.",
  "image_with_roles": [
    {
      "url": "https://example.com/girl.png",
      "role": "reference_image"
    }
  ],
  "video_urls": [
    "https://example.com/camera.mp4"
  ],
  "aspect_ratio": "auto",
  "duration": 5
}
```

Jusqu’à 10 images et 5 vidéos de référence, soit 15 médias au maximum. Les vidéos totalisent au plus 20 secondes. Aucune référence audio. Ajoutez `audio_setting: "origin"` pour conserver le son de la première vidéo de référence. Avec `origin`, si la première vidéo de référence n’a pas de piste audio, la sortie n’en aura pas non plus.

Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.

Les vidéos de référence doivent être au format MP4 / MOV, avec une largeur et une hauteur comprises chacune entre 700 et 4553px. La durée est celle du flux vidéo, pas du conteneur : au moins 3 secondes par vidéo et au plus 20 secondes au total. Toute vidéo de référence de moins de 3 secondes renvoie HTTP 400 à la soumission, sans facturation.

### Montage vidéo

```json theme={null}
{
  "model": "kling-v4-flash",
  "prompt": "Change the scene to a snowy winter night.",
  "omni_reference_task_type": "edit",
  "video_url": "https://example.com/in.mp4",
  "image_urls": [
    "https://example.com/style.png"
  ]
}
```

Le flux vidéo d’entrée du montage doit durer 3–20 secondes. Sans `duration`, la durée d’entrée est arrondie au supérieur ; sans `aspect_ratio`, le ratio d’entrée est conservé. Le montage régénère le son sans conserver le son original. Omettez `audio_setting` dans la requête.

Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.

Le montage accepte les vidéos MP4 / MOV dont la largeur et la hauteur sont chacune comprises entre 700 et 4553px. La limite de 3–20 secondes porte sur le flux vidéo, pas sur le conteneur. Un format, une largeur, une hauteur ou une durée d’entrée non conforme renvoie HTTP 400 à la soumission, sans facturation.

### Prolongement vidéo

```json theme={null}
{
  "model": "kling-v4-flash",
  "prompt": "The camera continues moving forward as the sky grows darker.",
  "omni_reference_task_type": "extend",
  "video_url": "https://example.com/in.mp4",
  "duration": 5
}
```

Génère un nouveau segment de 3–20 secondes depuis la dernière image de l’entrée et renvoie uniquement ce segment, sans la vidéo originale. Seul le nouveau segment est facturé. Les images, une image finale cible, `aspect_ratio` et `audio_setting` ne sont pas acceptés ; le ratio original est conservé.

Les entrées de prolongation ne sont pas soumises à la plage de hauteur ni au minimum de 3 secondes du montage. Par exemple, une vidéo 480p de 2 secondes peut être prolongée.

## Consulter une tâche

Remplacez l’identifiant de tâche dans la requête suivante par celui renvoyé à l’envoi :

```bash theme={null}
curl --request GET \
  --url 'https://api.apimart.ai/v1/tasks/<task_id>' \
  --header 'Authorization: Bearer <token>'
```

Consultez le [statut de la tâche](https://docs.apimart.ai/fr/api-reference/tasks/status.md). Enregistrez `task_id` et continuez jusqu’à `completed` ou `failed`. Une vidéo 720p de 3 secondes a pris environ 1–4 minutes lors des tests : il s’agit d’une indication, pas d’un délai fixe permettant de conclure à un échec.

## Facturation

Facturation à la seconde ; consultez les [tarifs des modèles](https://apimart.ai/pricing). La génération standard et l’entrée vidéo ont des tarifs distincts.

| Mode | Secondes facturées |
| - | - |
| Texte vers vidéo, image vers vidéo, références uniquement images | Secondes de sortie ; `kling-v4-flash@720P` |
| Prolongation vidéo | Secondes ajoutées ; `kling-v4-flash@720P` |
| Montage vidéo, génération avec vidéos de référence | Secondes de sortie + max(secondes de sortie, secondes vidéo en entrée) ; `kling-v4-flash@720P-input` |

Les secondes d’entrée sont la somme des durées des flux vidéo, arrondie au supérieur, et non les durées des conteneurs. Le montage d’une vidéo de 3.04 secondes avec `duration: 3` est facturé 3 + 4 = 7 secondes. Le montage et la génération avec références vidéo vérifient le format, la largeur, la hauteur et la durée du flux vidéo à la soumission. Échec de vérification, format autre que MP4 / MOV, largeur ou hauteur hors de 700–4553px, total supérieur à 20 secondes ou entrée de montage inférieure à 3 secondes : HTTP 400 sans facturation. Chaque vidéo de référence est évaluée selon la durée de son flux vidéo ; si elle dure moins de 3 secondes, la soumission renvoie HTTP 400 sans facturation.

Les tâches échouées sont intégralement remboursées, y compris celles déclarées expirées par la plateforme. Arrêter les consultations côté client n’annule pas la tâche : si elle réussit ensuite, elle est facturée normalement.

## Paramètres non pris en charge

Les paramètres ou valeurs suivants renvoient HTTP 400 :

* `resolution: "1080p"`
* `last_frame_image`, `role: "last_frame"`, `role: "keyframe"`
* `audio_urls`, `audio_url`
* `mode`, `negative_prompt`, `watermark: true`, `audio: false`
* `multi_shot`, `multi_prompt`, `element_list`, `video_list`
* `camera_control`, `voice_list`

## Erreurs courantes

| Erreur | Solution |
| - | - |
| `kling-v4-flash only supports resolution 720p (got: 1080p)` | Utilisez `720p`, pas `1080p`. |
| `kling-v4-flash duration must be between 3 and 20 seconds` | `duration` / `seconds` doit être un entier de 3 à 20, jamais 0. |
| `kling-v4-flash image-to-video follows the first frame's aspect ratio; remove aspect_ratio / size` | Supprimez `aspect_ratio` / `size` pour la génération depuis une image. Le ratio suit l’image initiale ; recadrez-la avant l’envoi pour le changer. |
| `kling-v4-flash first frame: image width and height must be at least 300px` | Les images initiales et de référence doivent mesurer au moins 300px sur chaque axe. |
| `kling-v4-flash first frame: image aspect ratio (width:height) must be between 2:5 and 5:2` | Utilisez un rapport largeur:hauteur compris entre 2:5 et 5:2. |
| `kling-v4-flash input video #1: unsupported video format webm/mkv (supported: mp4/mov)` | Utilisez MP4 / MOV pour le montage et les références vidéo ; WebM / MKV ne sont pas pris en charge. |
| `kling-v4-flash input video #1: video height must be between 700 and 4553px` | Les vidéos de montage et de référence doivent avoir une largeur et une hauteur comprises chacune entre 700 et 4553px. Cette plage ne concerne pas les entrées de prolongation. |
| `kling-v4-flash input video #1: video width must be between 700 and 4553px` | La largeur et la hauteur des vidéos de montage et de référence doivent chacune être comprises entre 700 et 4553px. Les vidéos verticales doivent aussi mesurer au moins 700px de large. |
| `kling-v4-flash reference video #1 must be at least 3 seconds` | Le flux vidéo de chaque référence doit durer au moins 3 secondes. Les vidéos plus courtes renvoient HTTP 400 à la soumission, sans facturation. |
| `kling-v4-flash only supports aspect_ratio 16:9, 9:16, 1:1 or 21:9 (got: auto)` | Seule la génération avec références accepte `auto` ; omettez les champs de ratio pour la génération depuis une image. |
| `kling-v4-flash image-to-video only takes a first frame; last frame and keyframes are not supported` | Gardez une seule image initiale ; retirez les images finales/intermédiaires ou la seconde image. |
| `kling-v4-flash reference-to-video does not take reference audios` | Retirez `audio_urls` / `audio_url`. |
| `kling-v4-flash video extend takes no images` | Retirez les images et l’image finale cible de la prolongation. |
| `kling-v4-flash input videos must be at most 20 seconds in total` | Le total des références vidéo ou l’entrée de montage ne doit pas dépasser 20 secondes. Aucun découpage automatique. |
| `video edit requires an input video of at least 3 seconds` | Utilisez une entrée de montage dont le flux vidéo dure au moins 3 secondes, sans vous baser sur la durée du conteneur. |
| `video_url needs omni_reference_task_type edit ... or extend` | Précisez `edit` / `extend` ; placez les références vidéo dans `video_urls`. |
| `Failed to probe the input video duration` | Vérifiez l’accessibilité de l’URL et la validité du fichier vidéo. |
| `duration (3) and seconds (5) are aliases and must match` | Envoyez un seul alias, ou deux valeurs identiques comprises entre 3 et 20. |


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