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

# Générer des vidéos MiniMax H3 avec Flatkey

> Créez des tâches vidéo MiniMax H3 à partir de texte ou de médias de référence, interrogez leur statut et téléchargez le fichier MP4 final via Flatkey.

URL de base : `https://router.flatkey.ai`

Utilisez `MiniMax-H3` lorsque vous avez besoin de texte vers vidéo, du contrôle sur la première et la dernière image, ou de références d'images, de vidéos et d'audio. Chaque requête suit le même flux de travail asynchrone : créer une tâche, interroger son statut, puis télécharger le fichier MP4 final.

<CardGroup cols={2}>
  <Card title="Entrées flexibles" icon="images">
    Générez à partir de texte, d'images d'encadrement, ou d'images, vidéos et audio de référence.
  </Card>

  <Card title="Un seul flux asynchrone" icon="video">
    Créez avec `POST /v1/videos`, interrogez avec `GET /v1/videos/{task_id}`, et téléchargez depuis `metadata.url`.
  </Card>
</CardGroup>

Utilisez cet en-tête pour les requêtes de création de tâches et de statut :

```http theme={"dark"}
Authorization: Bearer YOUR_FLATKEY_API_KEY
```

Gardez votre clé API privée. Ne la collez pas dans des journaux publics, des pages ou des tickets de support.

## Créer votre première vidéo H3

### 1. Soumettre une tâche texte vers vidéo

Envoyez `POST /v1/videos` avec le modèle `MiniMax-H3` et une invite textuelle. Les requêtes sans média nécessitent un ratio d'aspect explicite autre que `adaptive`.

<CodeGroup>
  ```bash Bash theme={"dark"}
  curl --fail-with-body -sS https://router.flatkey.ai/v1/videos \
    -H "Authorization: Bearer YOUR_FLATKEY_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "MiniMax-H3",
      "content": [
        {
          "type": "text",
          "text": "A paper boat crosses a rain puddle in a cinematic macro shot"
        }
      ],
      "resolution": "768P",
      "duration": 6,
      "ratio": "16:9",
      "aigc_watermark": false
    }'
  ```

  ```powershell Windows PowerShell theme={"dark"}
  curl.exe --fail-with-body -sS https://router.flatkey.ai/v1/videos `
    -H "Authorization: Bearer YOUR_FLATKEY_API_KEY" `
    -H "Content-Type: application/json" `
    -d '{
      "model": "MiniMax-H3",
      "content": [
        {
          "type": "text",
          "text": "A paper boat crosses a rain puddle in a cinematic macro shot"
        }
      ],
      "resolution": "768P",
      "duration": 6,
      "ratio": "16:9",
      "aigc_watermark": false
    }'
  ```
</CodeGroup>

La réponse contient l'identifiant public de la tâche dans `id` et `task_id` :

```json theme={"dark"}
{
  "id": "task_3f9a00000000000000000000000000e2",
  "task_id": "task_3f9a00000000000000000000000000e2",
  "object": "video",
  "model": "MiniMax-H3",
  "status": "queued",
  "progress": 0
}
```

Sauvegardez la valeur `task_...` retournée. Vous en aurez besoin pour vérifier la tâche ultérieurement.

### 2. Interroger et télécharger le résultat

Interrogez `GET /v1/videos/{task_id}` jusqu'à ce que `status` devienne `completed` ou `failed`. Lorsqu'il est `completed`, lisez l'URL de téléchargement temporaire dans `metadata.url`.

<CodeGroup>
  ```bash Bash theme={"dark"}
  TASK_ID="task_3f9a00000000000000000000000000e2"

  curl --fail-with-body -sS \
    "https://router.flatkey.ai/v1/videos/$TASK_ID" \
    -H "Authorization: Bearer YOUR_FLATKEY_API_KEY"

  # Run the status request again until status is completed.
  # Then copy metadata.url from the response and paste it below.
  VIDEO_URL="PASTE_METADATA_URL_HERE"
  curl --fail --location "$VIDEO_URL" --output minimax-h3.mp4
  ```

  ```powershell Windows PowerShell theme={"dark"}
  $taskId = "task_3f9a00000000000000000000000000e2"

  while ($true) {
    $result = curl.exe --fail-with-body -sS `
      "https://router.flatkey.ai/v1/videos/$taskId" `
      -H "Authorization: Bearer YOUR_FLATKEY_API_KEY" | ConvertFrom-Json
    Write-Host "status: $($result.status)"

    if ($result.status -eq "completed") { break }
    if ($result.status -eq "failed") {
      $result | ConvertTo-Json -Depth 10
      exit 1
    }
    Start-Sleep -Seconds 5
  }

  curl.exe --fail --location $result.metadata.url --output minimax-h3.mp4
  ```
</CodeGroup>

`metadata.url` est une URL de téléchargement temporaire. Elle fonctionne sans en-tête d'autorisation Flatkey, donc toute personne qui la possède peut accéder à la vidéo générée jusqu'à son expiration. Traitez-la comme privée, et ne la journalisez pas, ne la publiez pas et ne la partagez pas. Téléchargez la vidéo rapidement et stockez-la dans votre propre espace de stockage. Répéter la requête de tâche n'actualise pas une URL expirée.

## Choisir vos entrées

Chaque requête doit contenir un élément texte non vide. Vous pouvez ajouter des images d'encadrement ou des médias de référence pour contrôler le résultat.

| Entrée             | `type`      | `role` requis                     | Limite                                                                   |
| ------------------ | ----------- | --------------------------------- | ------------------------------------------------------------------------ |
| Invite             | `text`      | Ne pas définir de rôle            | 7 000 caractères Unicode répartis sur tous les éléments texte            |
| Première image     | `image_url` | `first_frame`, ou omettez le rôle | 1 image                                                                  |
| Dernière image     | `image_url` | `last_frame`                      | 1 image                                                                  |
| Image de référence | `image_url` | `reference_image`                 | 9 images                                                                 |
| Vidéo de référence | `video_url` | `reference_video`                 | 3 vidéos                                                                 |
| Audio de référence | `audio_url` | `reference_audio`                 | 3 fichiers audio ; incluez également une image ou une vidéo de référence |

<Warning>
  Ne mélangez pas les entrées de première ou dernière image avec des entrées de référence dans la même requête. Chaque élément `content` doit contenir exactement une charge utile correspondant à son `type`.
</Warning>

### Contrôler la première et la dernière image

Utilisez `first_frame` et `last_frame` lorsque vous souhaitez que la vidéo interpole entre deux images.

```bash theme={"dark"}
curl --fail-with-body -sS https://router.flatkey.ai/v1/videos \
  -H "Authorization: Bearer YOUR_FLATKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMax-H3",
    "content": [
      {
        "type": "text",
        "text": "The camera slowly pulls back as morning fog crosses the valley"
      },
      {
        "type": "image_url",
        "image_url": { "url": "https://example.com/first.jpg" },
        "role": "first_frame"
      },
      {
        "type": "image_url",
        "image_url": { "url": "https://example.com/last.jpg" },
        "role": "last_frame"
      }
    ],
    "resolution": "2K",
    "duration": 8,
    "ratio": "adaptive"
  }'
```

### Générer avec des médias de référence

Les entrées de référence aident à préserver un sujet, un style de mouvement ou un son. L'audio de référence ne peut pas être la seule entrée média.

```bash theme={"dark"}
curl --fail-with-body -sS https://router.flatkey.ai/v1/videos \
  -H "Authorization: Bearer YOUR_FLATKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMax-H3",
    "content": [
      {
        "type": "text",
        "text": "Keep the character and movement style consistent while crossing a snowy street"
      },
      {
        "type": "image_url",
        "image_url": { "url": "https://example.com/character.jpg" },
        "role": "reference_image"
      },
      {
        "type": "video_url",
        "video_url": { "url": "https://example.com/motion.mp4" },
        "role": "reference_video"
      },
      {
        "type": "audio_url",
        "audio_url": { "url": "https://example.com/ambience.mp3" },
        "role": "reference_audio"
      }
    ],
    "resolution": "768P",
    "duration": 10,
    "ratio": "adaptive"
  }'
```

## Paramètres de la requête

| Champ            | Requis                             | Valeurs prises en charge                                                   |
| ---------------- | ---------------------------------- | -------------------------------------------------------------------------- |
| `model`          | Oui                                | `MiniMax-H3`                                                               |
| `content`        | Oui                                | Texte avec médias d'encadrement ou de référence optionnels                 |
| `resolution`     | Oui                                | `768P` ou `2K` ; les valeurs sont sensibles à la casse                     |
| `duration`       | Oui                                | Un entier de `4` à `15` secondes                                           |
| `ratio`          | Pour les requêtes texte uniquement | `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, ou `adaptive` avec des médias |
| `aigc_watermark` | Non                                | `true` ou `false`                                                          |

Lorsqu'une requête contient des médias et omet `ratio`, Flatkey utilise `adaptive`. Une requête texte uniquement doit explicitement utiliser un ratio non `adaptive`.

## Comprendre les résultats des tâches

| `status`      | Signification                                                                     |
| ------------- | --------------------------------------------------------------------------------- |
| `queued`      | La tâche attend d'être exécutée.                                                  |
| `in_progress` | La vidéo est en cours de génération. Lisez `progress` pour une valeur de 0 à 100. |
| `completed`   | La vidéo est disponible à `metadata.url`.                                         |
| `failed`      | La génération a échoué. Lisez `error.code` et `error.message`.                    |

Pour les réponses vidéo H3, les noms de champs d'utilisation partagés représentent des secondes :

* `usage.completion_tokens` correspond à la durée de sortie générée.
* `usage.total_tokens` correspond à la durée facturable totale, y compris la durée d'entrée des vidéos de référence.

Ces valeurs sont des secondes, et non des tokens de modèle de langage. Consultez les **Journaux d'utilisation** dans la [Console Flatkey](https://console.flatkey.ai/usage-logs/common) pour le montant final facturé.

## Limitations actuelles

* `callback_url` n'est pas pris en charge. Interrogez plutôt le statut de la tâche.
* La liste, l'annulation, la suppression, la régénération et le remix des tâches ne sont pas pris en charge.
* `MiniMax-H3-Context-IR` n'est pas pris en charge.
* Les URL de médias distants doivent rester accessibles pendant le traitement de la tâche.

| Code d'erreur              | Que vérifier                                                                                                     |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `invalid_duration`         | Définissez `duration` de `4` à `15`.                                                                             |
| `invalid_resolution`       | Utilisez exactement `768P` ou `2K`.                                                                              |
| `invalid_ratio`            | Utilisez un ratio pris en charge. Les requêtes texte uniquement ne peuvent pas l'omettre ni utiliser `adaptive`. |
| `invalid_content`          | Vérifiez l'invite, les rôles, les limites de médias et les combinaisons d'entrées incompatibles.                 |
| `unsupported_callback_url` | Supprimez `callback_url` et interrogez la tâche.                                                                 |
