# API Video Enhancer

> Améliorez un fichier vidéo de la plateforme ou un fichier téléversé en 1080p, 2K ou 4K, avec une netteté du texte optionnelle et un extrait de 10 minutes maximum.

## API Video Enhancer

Envoyez une vidéo déjà stockée sur la plateforme, ou un fichier téléversé, et recevez une version améliorée en 1080p, 2K ou 4K. La netteté du texte à l'écran peut être activée ou désactivée. Vous pouvez traiter la vidéo entière ou un extrait de 10 minutes maximum.

## Sources vidéo prises en charge

Indiquez une URL de fichier de la plateforme, ou l'`identity` renvoyée par l'[API Upload](https://wayin.ai/fr/api-docs/upload/). Le téléversement local nécessite un abonnement **Starter** ou supérieur.

### Déroulement

1. **Envoyez** une tâche d'amélioration avec la vidéo source et une résolution cible
2. **Interrogez** le résultat jusqu'à ce que `status` soit `DONE` ou `ERROR`
3. Lorsque `status` est `DONE`, lisez `output_url`

---

## Points de terminaison

| Méthode | Chemin                                | Description                         |
| ------- | ------------------------------------- | ----------------------------------- |
| `POST`  | `/api/v2/video-enhancer`              | Envoyer une tâche d'amélioration    |
| `GET`   | `/api/v2/video-enhancer/results/{id}` | Récupérer le résultat de la tâche   |

Toutes les requêtes exigent :

```http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
x-wayinvideo-api-version: v2
```

---

## Envoyer une tâche d'amélioration

```http
POST https://wayinvideo-api.wayin.ai/api/v2/video-enhancer
```

### Corps de la requête

| Paramètre        | Type    | Obligatoire | Défaut | Description                                                                                                                                                                                          |
| ---------------- | ------- | ----------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `video_url`      | string  | Oui         | —      | URL de fichier de la plateforme, ou `identity` renvoyée par l'[API Upload](https://wayin.ai/fr/api-docs/upload/).                                                                                                      |
| `target_res`     | string  | Oui         | —      | Résolution de sortie. Valeurs autorisées : `1080p`, `2k`, `4k`.                                                                                                                                     |
| `enable_text_hd` | boolean | Non         | `true` | Renforcer le texte à l'écran. Si le champ est omis, la valeur par défaut est `true`.                                                                                                                |
| `start_ms`       | integer | Non         | —      | Début de l'extrait, en millisecondes. Omettez `start_ms` et `end_ms` pour traiter toute la vidéo, toujours dans la limite de 10 minutes. Envoyer un seul des deux champs est refusé.               |
| `end_ms`         | integer | Non         | —      | Fin de l'extrait, en millisecondes. Doit être supérieur à `start_ms` et ne pas dépasser la durée de la source.                                                                                      |

La plage traitée ne peut pas dépasser 10 minutes. La facturation utilise cette plage, arrondie à la seconde supérieure. Les tarifs sont sur la page [Facturation](https://wayin.ai/fr/api-docs/pricing/).

### Exemple de requête

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/video-enhancer \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -d '{
    "video_url": "EF_up_06wguq1afbwg1",
    "target_res": "1080p",
    "enable_text_hd": true,
    "start_ms": 0,
    "end_ms": 8000
  }'
```

```python
import requests

requests.post(
    "https://wayinvideo-api.wayin.ai/api/v2/video-enhancer",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "x-wayinvideo-api-version": "v2",
    },
    json={
        "video_url": "EF_up_06wguq1afbwg1",
        "target_res": "1080p",
        "enable_text_hd": True,
        "start_ms": 0,
        "end_ms": 8000,
    },
)
```

```javascript
await fetch('https://wayinvideo-api.wayin.ai/api/v2/video-enhancer', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'x-wayinvideo-api-version': 'v2',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    video_url: 'EF_up_06wguq1afbwg1',
    target_res: '1080p',
    enable_text_hd: true,
    start_ms: 0,
    end_ms: 8000,
  }),
});
```

### Réponse

Une tâche qui vient d'être envoyée est en général `PENDING` (en file d'attente) ou `IN_PROGRESS` (déjà en cours).

```json
{
  "data": {
    "id": "proj_01HQ2X8J3K4L5M6N7O8P9Q0R",
    "status": "IN_PROGRESS"
  }
}
```

| Champ        | Type   | Description                                                                                          |
| ------------ | ------ | ---------------------------------------------------------------------------------------------------- |
| `id`         | string | Identifiant du projet. À placer dans le chemin de résultat.                                         |
| `status`     | string | `PENDING` (en file), `IN_PROGRESS` (en cours), `DONE` (terminé) ou `ERROR` (échec).                  |
| `output_url` | string | URL de la vidéo améliorée. Présent uniquement lorsque `status` est `DONE`.                          |

---

## Récupérer le résultat

Interrogez l'`id` de la réponse d'envoi jusqu'à ce que `status` soit `DONE` ou `ERROR`. Lorsque `status` est `DONE`, lisez `output_url`.

```http
GET https://wayinvideo-api.wayin.ai/api/v2/video-enhancer/results/{id}
```

### Exemple de requête

```bash
curl -X GET https://wayinvideo-api.wayin.ai/api/v2/video-enhancer/results/proj_01HQ2X8J3K4L5M6N7O8P9Q0R \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2"
```

### Réponse

```json
{
  "data": {
    "id": "proj_01HQ2X8J3K4L5M6N7O8P9Q0R",
    "status": "DONE",
    "output_url": "https://cdn.viralhub.ai/user/video_0_8000_1080p.mp4"
  }
}
```

Les champs sont les mêmes que dans la réponse d'envoi. `output_url` est inclus une fois la tâche terminée.

---

## Facturation

Video Enhancer consomme des **API Units** pour la plage traitée, arrondie à la seconde supérieure. Moins d'une seconde compte pour 1 seconde.

| Résolution cible | API Units       |
| ---------------- | --------------- |
| 1080p            | 1 par seconde   |
| 2K (`2k`)        | 2 par seconde   |
| 4K (`4k`)        | 4 par seconde   |

Si le compte n'a pas assez d'API Units, la tâche n'est pas créée et aucune unité n'est débitée. Voir [Facturation](https://wayin.ai/fr/api-docs/pricing/) et [Codes de Statut](https://wayin.ai/fr/api-docs/status-codes/).

---

## Erreurs

Les requêtes en échec utilisent les codes de statut et formats de réponse habituels. Voir [Codes de Statut](https://wayin.ai/fr/api-docs/status-codes/).
