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

# Génération vidéo MiniMax-H3-Max

>  - Version rapide de MiniMax Video Generation V2 avec soumission asynchrone
- Prend en charge texte-vers-vidéo et image-vers-vidéo avec première image, dernière image ou les deux
- Prend en charge 768P / 480P, des durées de 5 à 15 secondes et une piste audio
- Ne prend pas en charge la 2K, les images intermédiaires ni les références multimodales 

<Info>
  **Choix du modèle :** utilisez `MiniMax-H3-Max` lorsque la vitesse est prioritaire et que le texte-vers-vidéo ou le contrôle de la première/dernière image suffit. Pour la 2K, les images intermédiaires ou les références image, vidéo et audio, utilisez [MiniMax-H3](/fr/api-reference/videos/minimax-h3/generation).
</Info>

<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": "MiniMax-H3-Max",
      "prompt": "Un détective en imperméable se retourne dans une rue néon sous la pluie. La caméra avance lentement.",
      "duration": 5,
      "resolution": "768P",
      "aspect_ratio": "16:9"
    }'
  ```

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

  response = requests.post(
      "https://api.apimart.ai/v1/videos/generations",
      headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
      json={
          "model": "MiniMax-H3-Max",
          "prompt": "Un détective se retourne dans une rue néon sous la pluie.",
          "duration": 5,
          "resolution": "768P",
          "aspect_ratio": "16:9",
      },
  )
  print(response.json())
  ```
</RequestExample>

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

  ```json 400 theme={null}
  {
    "error": {
      "code": 400,
      "message": "Paramètres de requête non valides",
      "type": "invalid_request_error"
    }
  }
  ```

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

  ```json 402 theme={null}
  {
    "error": {
      "code": 402,
      "message": "Solde du compte insuffisant",
      "type": "payment_required"
    }
  }
  ```
</ResponseExample>

## Authentification

<ParamField header="Authorization" type="string" required>
  Tous les endpoints nécessitent un Bearer Token. Obtenez votre clé sur la [page des clés API](https://apimart.ai/keys).

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

## Choisir le bon modèle

| Capacité                  | `MiniMax-H3`                   | `MiniMax-H3-Max`                   |
| ------------------------- | ------------------------------ | ---------------------------------- |
| Résolution                | `2K` / `768P`, par défaut `2K` | `768P` / `480P`, par défaut `768P` |
| Durée                     | 4 à 15 secondes                | 5 à 15 secondes                    |
| Texte-vers-vidéo          | Pris en charge                 | Pris en charge                     |
| Première / dernière image | Pris en charge                 | Pris en charge                     |
| Image intermédiaire       | Pris en charge                 | Non pris en charge                 |
| Références multimodales   | Image, vidéo et audio          | Non pris en charge                 |
| Coût des images d'entrée  | 5 premières gratuites          | Gratuit                            |

<Warning>
  `MiniMax-H3-Max` ne prend pas en charge la 2K et sa sortie ne peut pas servir de source à [Regeneration](/fr/api-reference/videos/minimax-h3/regeneration).
</Warning>

## Modes de génération

Les champs de la requête déterminent automatiquement le mode ; n'envoyez pas de champ `mode`.

| Mode                   | Déclencheur                                                                           | Comportement                                              |
| ---------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| Texte-vers-vidéo (T2V) | Uniquement `prompt` et les champs communs                                             | Génération depuis le texte                                |
| Image-vers-vidéo (I2V) | `first_frame_image` / `last_frame_image` ou rôles équivalents dans `image_with_roles` | Contrôle de la première image, de la dernière ou des deux |

<Warning>
  Ce modèle ne prend pas en charge `image_urls`, `video_urls`, `audio_urls` ni `image_with_roles[].role = "reference_image"`. Tout média de référence renvoie HTTP 400 avant création ou facturation de la tâche.
</Warning>

## Paramètres de requête

<ParamField body="model" type="string" required>
  Valeur fixe : `MiniMax-H3-Max`. La casse n'est pas prise en compte ; `minimax-h3-max` est également accepté.
</ParamField>

<ParamField body="prompt" type="string" required>
  Description vidéo non vide, obligatoire dans tous les modes. Maximum : `7000` caractères.
</ParamField>

<ParamField body="duration" type="integer" default="5">
  Durée en secondes : entier de `5` à `15`, valeur par défaut `5`. Une durée de 4 secondes n'est pas prise en charge.
</ParamField>

<ParamField body="resolution" type="string" default="768P">
  Résolution de sortie : `768P` (par défaut) ou `480P`.

  <Warning>
    `2K`, `1440P` et `2048P` ne sont pas pris en charge. Une valeur non valide renvoie HTTP 400 sans réduction silencieuse.
  </Warning>
</ParamField>

<ParamField body="aspect_ratio" type="string">
  Format de sortie. Les alias `size` et `ratio` sont également acceptés.

  Valeurs T2V : `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`.

  * T2V sans valeur ou avec `adaptive` : retour à `16:9`
  * I2V : déterminé par l'image d'entrée ; ce champ est ignoré
</ParamField>

<ParamField body="first_frame_image" type="string">
  URL publique de l'image utilisée comme première image de la vidéo.
</ParamField>

<ParamField body="last_frame_image" type="string">
  URL publique de la dernière image. Peut être utilisée seule ou avec `first_frame_image`.
</ParamField>

<ParamField body="image_with_roles" type="object[]">
  Tableau d'images avec rôles, en remplacement de `first_frame_image` et `last_frame_image`.

  <Expandable title="Élément image_with_roles">
    <ResponseField name="url" type="string" required>
      URL publique de l'image
    </ResponseField>

    <ResponseField name="role" type="string" required>
      Rôles pris en charge :

      * `first_frame` ; alias `first` et `start`
      * `last_frame` ; alias `last`, `end_frame` et `tail`
    </ResponseField>
  </Expandable>

  Un seul fichier est autorisé par rôle ; `role` ne peut pas être vide.
</ParamField>

<ParamField body="watermark" type="boolean" default="false">
  Ajoute un filigrane AIGC. Alias : `aigc_watermark`.
</ParamField>

<ParamField body="webhook" type="string">
  Reçoit une notification lorsque la tâche se termine par un succès ou un échec.

  <Note>
    Utilisez `webhook` et non `callback_url` de MiniMax. La passerelle réserve `callback_url` à son usage interne.
  </Note>
</ParamField>

## Paramètres non pris en charge

Ces valeurs renvoient HTTP 400 avant la création et la facturation :

| Paramètre / valeur                            | Raison                                                  |
| --------------------------------------------- | ------------------------------------------------------- |
| `image_urls`                                  | Traité comme images de référence, non prises en charge  |
| `image_with_roles[].role = "reference_image"` | Seules la première et la dernière image sont autorisées |
| `video_urls` / `video_url`                    | Vidéo de référence non prise en charge                  |
| `audio_urls` / `audio_url`                    | Audio de référence non pris en charge                   |
| `resolution: "2K"`                            | Uniquement `768P` et `480P`                             |
| `duration: 4` ou supérieure à `15`            | Uniquement 5 à 15 secondes                              |

<Tip>
  Pour les références, la 2K, les images intermédiaires ou une vidéo de 4 secondes, utilisez [MiniMax-H3](/fr/api-reference/videos/minimax-h3/generation).
</Tip>

## Limites des images

Le corps total de la requête ne doit pas dépasser 64 Mo. Utilisez des URL publiques ; Base64 n'est pas pris en charge.

| Élément                  | Limite                                                       |
| ------------------------ | ------------------------------------------------------------ |
| Formats                  | JPG / JPEG / PNG / WEBP / HEIC / HEIF                        |
| Par fichier              | ≤ 30 Mo                                                      |
| Largeur et hauteur       | 256–5760 px                                                  |
| Format largeur / hauteur | 0,4–2,5                                                      |
| Nombre                   | 1 première image et 1 dernière image au maximum ; 2 au total |

## Exemples

### Image-vers-vidéo avec première image

```json theme={null}
{
  "model": "MiniMax-H3-Max",
  "prompt": "La caméra avance lentement tandis que la vapeur monte.",
  "first_frame_image": "https://cdn.example.com/ramen.png",
  "duration": 5,
  "resolution": "480P"
}
```

### Image-vers-vidéo avec première et dernière images

```json theme={null}
{
  "model": "MiniMax-H3-Max",
  "prompt": "La scène passe progressivement du matin au coucher du soleil.",
  "first_frame_image": "https://cdn.example.com/morning.png",
  "last_frame_image": "https://cdn.example.com/sunset.png",
  "duration": 8,
  "resolution": "768P"
}
```

## Consulter une tâche

La soumission renvoie un `task_id`. Interrogez [l'état de la tâche](/fr/api-reference/tasks/status) toutes les 5 à 10 secondes et utilisez un délai client de 15 minutes.

| `status`     | Signification                                         |
| ------------ | ----------------------------------------------------- |
| `pending`    | Soumise ou en file d'attente                          |
| `processing` | Génération en cours                                   |
| `completed`  | URL vidéo dans `result.videos[0].url`                 |
| `failed`     | Consultez `error.message` ; remboursement automatique |

<Note>
  Les URL générées expirent généralement après environ 24 heures. Téléchargez rapidement le résultat.
</Note>

## Tarification

Coût total = tarif par seconde × durée. Les première et dernière images sont gratuites.

| Élément         | Tarif                  |
| --------------- | ---------------------- |
| Vidéo 768P      | **\$0.075 / seconde**  |
| Vidéo 480P      | **\$0.0495 / seconde** |
| Images d'entrée | **Gratuit**            |

Le montant estimé est réservé à la soumission. Les tâches échouées sont intégralement remboursées ; le champ `cost` de la tâche fait foi.

## Erreurs

| Scénario                                     | Résultat                     |
| -------------------------------------------- | ---------------------------- |
| `prompt` vide ou supérieur à 7000 caractères | 400 ; aucune tâche           |
| `duration` hors de 5–15                      | 400 ; aucune tâche           |
| `resolution` non prise en charge             | 400 ; aucune tâche           |
| Média de référence                           | 400 ; aucune tâche           |
| Rôle d'image invalide ou dupliqué            | 400 ; aucune tâche           |
| Solde insuffisant                            | 402                          |
| Rejet de sécurité du contenu                 | 422                          |
| Limite de débit                              | 429 ; réessayer avec backoff |

Un échec de génération renvoie `status = failed` et `error.message`, avec remboursement automatique.

## Response

<ResponseField name="code" type="integer">
  Code d'état ; 200 en cas de succès
</ResponseField>

<ResponseField name="data" type="array">
  Résultat de soumission contenant l'état initial et l'ID de tâche

  <Expandable title="Élément du tableau">
    <ResponseField name="status" type="string">
      Initialement `submitted`
    </ResponseField>

    <ResponseField name="task_id" type="string">
      Identifiant unique pour consulter la progression et le résultat
    </ResponseField>
  </Expandable>
</ResponseField>
