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

# Mise à l'échelle vidéo

> Améliorez la résolution et la qualité vidéo sur l'API Venice avec Topaz Video Upscale : soumettez un clip, choisissez l'échelle, récupérez le résultat.

La mise à l'échelle vidéo vous permet d'améliorer des vidéos existantes vers des résolutions plus élevées tout en améliorant la qualité visuelle. Le modèle **Topaz Video Upscale** utilise une mise à l'échelle pilotée par l'IA pour augmenter la résolution de 2x ou 4x, ou pour appliquer une amélioration de qualité à la résolution d'origine (1x).

## Fonctionnement

La mise à l'échelle vidéo utilise le même système de file d'attente asynchrone que la génération vidéo :

1. **File d'attente** — Soumettez votre vidéo à `/video/queue` avec le modèle `topaz-video-upscale`
2. **Sondage** — Interrogez `/video/retrieve` avec le `queue_id` retourné jusqu'à ce que le statut soit `completed`
3. **Finalisation** — Appelez `/video/complete` pour finaliser et obtenir l'URL de sortie

Le serveur détecte automatiquement la durée, la fréquence d'images et les dimensions de la vidéo d'entrée depuis le fichier téléversé. Vous n'avez pas besoin de fournir ces valeurs — la facturation est calculée à partir des métadonnées réelles de la vidéo.

## Facteurs de mise à l'échelle

| `upscale_factor` | Résolution de sortie       | Cas d'usage                                                          |
| ---------------- | -------------------------- | -------------------------------------------------------------------- |
| `1`              | Identique à l'entrée       | Amélioration de qualité uniquement (débruitage, accentuation)        |
| `2` (par défaut) | 2x les dimensions d'entrée | Mise à l'échelle standard — une entrée 720p devient une sortie 1440p |
| `4`              | 4x les dimensions d'entrée | Mise à l'échelle maximale — une entrée 480p devient une sortie 1920p |

<Note>
  Le paramètre `upscale_factor` remplace `resolution` pour les modèles de mise à l'échelle. Passer `resolution` renverra une erreur. En effet, la résolution de sortie dépend des dimensions de la vidéo d'entrée — une mise à l'échelle `2x` d'une vidéo 720p produit un résultat différent d'une mise à l'échelle `2x` d'une vidéo 480p.
</Note>

## Formats d'entrée pris en charge

* **Formats** : MP4, MOV, WebM
* **Méthodes d'entrée** : URL HTTPS ou URL data `data:video/...;base64,...`
* **Durée maximale** : 300 secondes (5 minutes)

## Utilisation de l'API

### Mettre en file d'attente une tâche de mise à l'échelle

<CodeGroup>
  ```bash cURL theme={"system"}
  curl https://api.venice.ai/api/v1/video/queue \
    -H "Authorization: Bearer $VENICE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "topaz-video-upscale",
      "video_url": "https://example.com/input-video.mp4",
      "upscale_factor": 2
    }'
  ```

  ```python Python theme={"system"}
  import requests

  response = requests.post(
      "https://api.venice.ai/api/v1/video/queue",
      headers={"Authorization": "Bearer YOUR_API_KEY"},
      json={
          "model": "topaz-video-upscale",
          "video_url": "https://example.com/input-video.mp4",
          "upscale_factor": 2,
      },
  )

  data = response.json()
  queue_id = data["queue_id"]
  print(f"Queued: {queue_id}")
  ```

  ```javascript Node.js theme={"system"}
  const response = await fetch("https://api.venice.ai/api/v1/video/queue", {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "topaz-video-upscale",
      video_url: "https://example.com/input-video.mp4",
      upscale_factor: 2,
    }),
  });

  const { queue_id } = await response.json();
  console.log(`Queued: ${queue_id}`);
  ```
</CodeGroup>

La réponse contient un `queue_id` pour suivre la tâche :

```json theme={"system"}
{
  "model": "topaz-video-upscale",
  "queue_id": "abc123-def456-..."
}
```

### Sonder jusqu'à la fin

<CodeGroup>
  ```bash cURL theme={"system"}
  curl https://api.venice.ai/api/v1/video/retrieve \
    -H "Authorization: Bearer $VENICE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"queue_id": "abc123-def456-..."}'
  ```

  ```python Python theme={"system"}
  import time

  while True:
      result = requests.post(
          "https://api.venice.ai/api/v1/video/retrieve",
          headers={"Authorization": "Bearer YOUR_API_KEY"},
          json={"queue_id": queue_id},
      )
      data = result.json()

      if data.get("status") == "completed":
          print(f"Video URL: {data['url']}")
          break

      time.sleep(5)
  ```

  ```javascript Node.js theme={"system"}
  const poll = async (queueId) => {
    while (true) {
      const res = await fetch("https://api.venice.ai/api/v1/video/retrieve", {
        method: "POST",
        headers: {
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({ queue_id: queueId }),
      });
      const data = await res.json();

      if (data.status === "completed") {
        console.log(`Video URL: ${data.url}`);
        return data;
      }

      await new Promise((r) => setTimeout(r, 5000));
    }
  };

  await poll(queue_id);
  ```
</CodeGroup>

### Finaliser avec complete

Après avoir récupéré le résultat, appelez `/video/complete` pour finaliser :

```bash theme={"system"}
curl https://api.venice.ai/api/v1/video/complete \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"queue_id": "abc123-def456-..."}'
```

***

## Paramètres de l'API

| Champ            | Type   | Requis  | Description                                                                    |
| ---------------- | ------ | ------- | ------------------------------------------------------------------------------ |
| `model`          | string | **Oui** | Doit être `topaz-video-upscale`                                                |
| `video_url`      | string | **Oui** | URL de la vidéo d'entrée ou URL data. Formats pris en charge : MP4, MOV, WebM. |
| `upscale_factor` | number | Non     | `1`, `2` (par défaut) ou `4`. Contrôle le multiplicateur de mise à l'échelle.  |

### Paramètres non utilisés pour les modèles de mise à l'échelle

Les paramètres suivants ne sont **pas acceptés** pour `topaz-video-upscale` et renverront une erreur s'ils sont fournis :

| Champ        | Raison                                                                                              |
| ------------ | --------------------------------------------------------------------------------------------------- |
| `resolution` | Utilisez `upscale_factor` à la place. La résolution de sortie dépend des dimensions d'entrée.       |
| `prompt`     | La mise à l'échelle n'utilise pas de prompts textuels. Une chaîne vide est définie automatiquement. |

Le paramètre `duration` est également ignoré — le serveur détecte la durée directement depuis le fichier vidéo pour une facturation précise.

***

## Tarification

La tarification est basée sur la **durée**, le **palier de résolution de sortie** et la **fréquence d'images**. Le palier de résolution de sortie est déterminé par la hauteur de la vidéo d'entrée multipliée par le facteur de mise à l'échelle.

### Paliers de résolution de sortie

| Palier | Hauteur de sortie | Tarif par seconde |
| ------ | ----------------- | ----------------- |
| 720p   | ≤ 720px           | \~0,013 \$        |
| 1080p  | 721–1080px        | \~0,025 \$        |
| 4K     | > 1080px          | \~0,10 \$         |

<Note>
  Les vidéos avec une fréquence d'images supérieure à 48 ips coûtent 2x le tarif par seconde.
</Note>

### Exemples de tarification

| Entrée        | Facteur de mise à l'échelle | Sortie              | Durée | Coût estimé |
| ------------- | --------------------------- | ------------------- | ----- | ----------- |
| 480p, 30 ips  | 2x                          | 960p (palier 1080p) | 10 s  | \~0,25 \$   |
| 720p, 30 ips  | 2x                          | 1440p (palier 4K)   | 10 s  | \~1,00 \$   |
| 1080p, 30 ips | 2x                          | 2160p (palier 4K)   | 30 s  | \~3,00 \$   |
| 360p, 24 ips  | 4x                          | 1440p (palier 4K)   | 10 s  | \~1,00 \$   |
| 480p, 60 ips  | 2x                          | 960p (palier 1080p) | 10 s  | \~0,50 \$   |

Utilisez l'[API Video Quote](/api-reference/endpoint/video/quote) pour obtenir le tarif exact avant de soumettre une tâche.

### Obtenir un devis

```bash theme={"system"}
curl https://api.venice.ai/api/v1/video/quote \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "topaz-video-upscale",
    "duration": "10",
    "input_height": 720
  }'
```

Le endpoint de devis accepte `input_height` afin de pouvoir estimer le palier de résolution de sortie. Ce champ est optionnel — s'il est omis, le devis suppose une estimation conservatrice.

***

## Dépannage

| Problème                                     | Cause probable                                                            | Solution                                                                                                                                                         |
| -------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `"Use upscale_factor instead of resolution"` | `resolution` a été passé dans la requête                                  | Supprimez `resolution` et utilisez `upscale_factor` à la place                                                                                                   |
| Coût plus élevé que prévu                    | La vidéo d'entrée a une haute résolution ou une fréquence d'images élevée | Vérifiez les dimensions d'entrée avec le endpoint de devis. Une entrée 720p+ avec une mise à l'échelle 2x atterrit dans le palier de tarification 4K.            |
| La tâche prend beaucoup de temps             | Vidéo volumineuse ou longue                                               | La mise à l'échelle est intensive en calcul. Les vidéos plus longues et les facteurs de mise à l'échelle plus élevés prennent proportionnellement plus de temps. |
| `"Insufficient balance"`                     | Crédits du compte trop bas                                                | Ajoutez des crédits sur [venice.ai/settings/api](https://venice.ai/settings/api)                                                                                 |
