> ## 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.

# Pixverse v6 Génération vidéo

>  - Modèle unifié de génération vidéo Pixverse v6
- Prend en charge texte vers vidéo, image vers vidéo, transition premier/dernier frame, fusion multi-références et extension vidéo
- Prend en charge les résolutions 360p/540p/720p/1080p, durée 1–15 secondes
- API de tâches asynchrones : interrogez le résultat par ID de tâche après la soumission 

<RequestExample>
  ```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": "pixverse-v6",
      "prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
      "size": "16:9",
      "resolution": "540p",
      "duration": 5
    }'
  ```

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

  url = "https://api.apimart.ai/v1/videos/generations"

  payload = {
      "model": "pixverse-v6",
      "prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
      "size": "16:9",
      "resolution": "540p",
      "duration": 5
  }

  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://api.apimart.ai/v1/videos/generations";

  const payload = {
    model: "pixverse-v6",
    prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
    size: "16:9",
    resolution: "540p",
    duration: 5
  };

  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));
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01JWXXXXXXXXXXXX"
      }
    ]
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "type": "invalid_request_error",
      "message": "invalid duration 20, allowed range: 1-15 seconds"
    }
  }
  ```

  ```json 401 theme={null}
  {
    "error": {
      "code": 401,
      "message": "Échec de l'authentification, veuillez vérifier votre clé API",
      "type": "authentication_error"
    }
  }
  ```

  ```json 403 theme={null}
  {
    "error": {
      "code": 403,
      "message": "insufficient quota: balance=0, required=0.25",
      "type": "quota_not_enough"
    }
  }
  ```

  ```json 429 theme={null}
  {
    "error": {
      "code": 429,
      "message": "Trop de requêtes, veuillez réessayer plus tard",
      "type": "rate_limit_error"
    }
  }
  ```
</ResponseExample>

## Authentification

<ParamField header="Authorization" type="string" required>
  Tous les endpoints nécessitent une authentification par Bearer Token.

  Obtenir une clé API :

  Visitez la [page de gestion des clés API](https://apimart.ai/keys) pour obtenir votre clé API.

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

  ```
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## Paramètres de requête

<ParamField body="model" type="string" required>
  Nom du modèle de génération vidéo. Fixé à `pixverse-v6`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Description du contenu de la vidéo, jusqu'à 5000 caractères. Obligatoire dans tous les modes.
</ParamField>

<ParamField body="resolution" type="string" default="540p">
  Niveau de résolution vidéo. Influence directement la facturation.

  * `360p` : SD
  * `540p` : Standard (par défaut)
  * `720p` : HD
  * `1080p` : Full HD

  <Warning>
    Toute autre valeur de résolution renverra une erreur de paramètre.
  </Warning>
</ParamField>

<ParamField body="duration" type="integer" default="5">
  Durée de la vidéo en secondes, plage `1–15`.

  <Warning>
    Le mode transition premier/dernier frame ne prend en charge que `5` ou `8` secondes.
  </Warning>
</ParamField>

<ParamField body="size" type="string" default="16:9">
  Rapport hauteur/largeur de la vidéo. Effectif uniquement en mode texte vers vidéo et fusion multi-références.

  * `16:9` : Paysage écran large (par défaut)
  * `4:3` : Paysage 4:3
  * `1:1` : Carré
  * `3:4` : Portrait 3:4
  * `9:16` : Portrait vertical
  * `2:3` : Portrait 2:3
  * `3:2` : Paysage 3:2
  * `21:9` : Cinémascope
</ParamField>

<ParamField body="seed" type="integer" default="0">
  Graine aléatoire, plage `0–2147483647`. Le même prompt et la même seed reproduisent des résultats similaires.
</ParamField>

<ParamField body="negative_prompt" type="string">
  Prompt négatif pour exclure les contenus indésirables. Jusqu'à 2048 caractères.
</ParamField>

<ParamField body="audio" type="boolean" default="false">
  Indique si une piste audio est générée.

  * `true` : Générer une piste audio (augmente le tarif)
  * `false` : Sans audio (par défaut)
</ParamField>

<ParamField body="watermark" type="boolean" default="false">
  Indique si un filigrane est ajouté en bas à droite de la vidéo.

  * `true` : Ajouter un filigrane
  * `false` : Sans filigrane (par défaut)
</ParamField>

<ParamField body="motion_mode" type="string">
  Mode de mouvement.

  * `normal` : Mode standard (`pixverse-v6` ne prend en charge que cette valeur)

  <Warning>
    `fast` est réservé aux anciens modèles et sera rejeté par l'amont pour `pixverse-v6`.
  </Warning>
</ParamField>

<ParamField body="generate_multi_clip_switch" type="boolean" default="false">
  Indique s'il faut générer une vidéo multi-clips continue. Pris en charge uniquement en mode texte vers vidéo et image vers vidéo.

  * `true` : Générer une vidéo multi-clips continue
  * `false` : Clip unique (par défaut)
</ParamField>

<ParamField body="image_urls" type="array<url>">
  Tableau d'URL d'images d'entrée pour image vers vidéo. Seule la première image est utilisée.

  Les images doivent être des URL HTTP/HTTPS publiques.
</ParamField>

<ParamField body="first_frame_image" type="url">
  URL du premier frame en mode transition. Doit être fourni avec `last_frame_image`.
</ParamField>

<ParamField body="last_frame_image" type="url">
  URL du dernier frame en mode transition. Doit être fourni avec `first_frame_image`.
</ParamField>

<ParamField body="img_references" type="array<url>">
  Tableau d'URL d'images de référence pour le mode fusion multi-références. Prend en charge 1–7 images.

  Fournir ce champ déclenche le mode fusion multi-références.
</ParamField>

<ParamField body="extend_from_task_id" type="string">
  ID de la tâche source pour l'extension vidéo. Fournir ce champ déclenche le mode extension.

  La tâche source doit appartenir à l'utilisateur courant, utiliser le modèle `pixverse-v6` et avoir le statut `completed`.
</ParamField>

## Modes de génération

L'adaptateur dispatch automatiquement vers le mode de génération correspondant selon les champs de la requête. La correspondance se fait par ordre de priorité, le premier qui correspond gagne.

| Mode                             | Condition de déclenchement                         | Description                                     |
| -------------------------------- | -------------------------------------------------- | ----------------------------------------------- |
| Texte vers vidéo                 | Aucun champ d'image ou d'extension                 | Génère la vidéo à partir du `prompt`            |
| Image vers vidéo                 | `image_urls` avec une image                        | Utilise la première image en entrée             |
| Transition premier/dernier frame | `first_frame_image` et `last_frame_image` ensemble | Génère une transition fluide entre deux frames  |
| Fusion multi-références          | Tableau `img_references` fourni                    | Fusionne 1–7 images de référence en une vidéo   |
| Extension vidéo                  | `extend_from_task_id` fourni                       | Continue à partir d'une tâche Pixverse terminée |

<Warning>
  Toutes les entrées d'image acceptent uniquement des URL HTTP/HTTPS publiques. base64 et Data URI ne sont pas pris en charge. Si vous n'avez que des images locales, téléversez-les d'abord vers un stockage objet et passez l'URL.
</Warning>

## Règles des paramètres

| Limite                  | Description                                                                                          |
| ----------------------- | ---------------------------------------------------------------------------------------------------- |
| Durée vidéo             | `1 ≤ duration ≤ 15` secondes ; mode transition uniquement `5` ou `8` secondes                        |
| Résolution              | Seules `360p`, `540p`, `720p`, `1080p` sont prises en charge                                         |
| Rapport hauteur/largeur | `size` n'est effectif qu'en mode texte vers vidéo et fusion multi-références                         |
| Longueur de prompt      | `prompt` jusqu'à 5000 caractères, `negative_prompt` jusqu'à 2048 caractères                          |
| Image vers vidéo        | `image_urls` n'utilise que la première image                                                         |
| Transition              | `first_frame_image` et `last_frame_image` doivent être fournis ensemble                              |
| Mode de mouvement       | `pixverse-v6` ne prend en charge que `normal`                                                        |
| Fusion multi-références | `img_references` prend en charge 1–7 images                                                          |
| Extension vidéo         | `extend_from_task_id` doit pointer vers une tâche `pixverse-v6` `completed` de l'utilisateur courant |

## Réponse

<ResponseField name="code" type="integer">
  Code de statut de la réponse. `200` en cas de succès.
</ResponseField>

<ResponseField name="data" type="array">
  Tableau de tâches retourné.

  <Expandable title="Élément du tableau">
    <ResponseField name="status" type="string">
      Statut initial de la tâche. `submitted` après une soumission réussie.
    </ResponseField>

    <ResponseField name="task_id" type="string">
      Identifiant unique de la tâche pour interroger le statut et le résultat.
    </ResponseField>
  </Expandable>
</ResponseField>

## Récupération du résultat de la tâche

La génération vidéo est une tâche asynchrone. Après soumission, un `task_id` est retourné. Utilisez l'endpoint [Obtenir le statut de la tâche](/fr/api-reference/tasks/status) pour interroger la progression et le résultat.

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

Il est recommandé d'interroger toutes les 5 secondes jusqu'à ce que le statut devienne `completed` ou `failed`.

### Exemple : succès

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
    "status": "completed",
    "progress": 100,
    "cost": 0.2,
    "credits_cost": 2,
    "created": 1779958948,
    "completed": 1779958999,
    "estimated_time": 100,
    "actual_time": 51,
    "result": {
      "videos": [
        {
          "url": ["https://upload.apimart.ai/f/video/xxxx.mp4"],
          "expires_at": 1780045399
        }
      ]
    }
  }
}
```

L'URL de la vidéo se trouve à `data.result.videos[0].url[0]`. Le champ `url` est lui-même un tableau. Les liens vidéo expirent généralement après 24 heures — téléchargez ou transférez-les rapidement.

### Exemple : échec

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
    "status": "failed",
    "progress": 100,
    "cost": 0,
    "credits_cost": 0,
    "created": 1779958948,
    "completed": 1779958960,
    "error": {
      "code": "task_failed",
      "message": "pixverse error 400063: moderation failed",
      "type": "task_failed"
    }
  }
}
```

En cas d'échec, `cost` vaut généralement `0`. La cause de l'erreur se trouve dans `data.error.message`.

## Cas d'utilisation

### Cas 1 : Texte vers vidéo

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "A neon-lit alley in Tokyo at night, light rain, anamorphic lens flare",
  "size": "21:9",
  "resolution": "720p",
  "duration": 8,
  "seed": 42,
  "audio": true
}
```

### Cas 2 : Image vers vidéo

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "Camera slowly zooms in, gentle wind moves the leaves",
  "image_urls": ["https://example.com/first-frame.jpg"],
  "resolution": "540p",
  "duration": 5
}
```

### Cas 3 : Transition premier/dernier frame

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "transform smoothly from a puppy to a cat",
  "first_frame_image": "https://example.com/puppy.jpg",
  "last_frame_image": "https://example.com/cat.jpg",
  "resolution": "540p",
  "duration": 5,
  "motion_mode": "normal"
}
```

### Cas 4 : Fusion multi-références

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "A girl wearing the outfit from image 2, holding the cat from image 3",
  "img_references": [
    "https://example.com/character.jpg",
    "https://example.com/outfit.jpg",
    "https://example.com/cat.jpg"
  ],
  "size": "9:16",
  "resolution": "720p",
  "duration": 5
}
```

### Cas 5 : Extension vidéo

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "the character now walks into a forest",
  "extend_from_task_id": "task_01JWXXXXXXXXXXXX",
  "resolution": "540p",
  "duration": 5
}
```
