# API Video Summarization

> Générez des résumés vidéo, des hashtags et des temps forts par IA.

> **Recommandation : utilisez l'[API Video Notes](https://wayin.ai/fr/api-docs/video-notes/)** — même coût, fonctionnalités plus riches et contrôle par prompt.
>
> _L'ancienne API Video Summarization reste entièrement prise en charge._

## API Video Summarization

Soumettez une vidéo de n'importe quelle durée et recevez une vue d'ensemble structurée, des hashtags et des temps forts générés par IA. L'API prend en charge tous les types de contenus, des clips courts aux vidéos de plusieurs heures, depuis les principales plateformes et les fichiers téléversés localement, avec des paramètres de langue.

## Sources Vidéo Prises en Charge

L'API accepte les URLs des plateformes suivantes : YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble et plus encore.

Vous pouvez également résumer [des fichiers vidéo locaux que vous téléversez](https://wayin.ai/fr/api-docs/upload/) — le téléversement local nécessite un abonnement **Starter** ou supérieur.

### Flux de Travail

1. **Soumettez** une tâche de résumé depuis une URL de vidéo
2. **Interrogez** les résultats jusqu'à ce que le statut soit `SUCCEEDED`

---

## Soumettre une Tâche de Résumé

Soumettez une nouvelle tâche de résumé. C'est le point d'entrée pour toutes les fonctionnalités de résumé.

```
POST https://wayinvideo-api.wayin.ai/api/v2/summaries
```

### Corps de la Requête

| Paramètre     | Type   | Obligatoire | Défaut | Description                                                                                                                                                                                                                    |
| ------------- | ------ | ----------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `video_url`   | string | Oui         | —      | L'URL de la vidéo source ou l'identifiant du fichier téléversé                                                                                                                                                                 |
| `source_lang` | string | Non         | `null` | Langue source de la vidéo (voir [Langues prises en charge](https://wayin.ai/fr/api-docs/supported-languages/)). Si `null`, le système détecte automatiquement la langue d'origine.                                                                |
| `target_lang` | string | Non         | `null` | Langue cible pour le contenu de sortie, y compris le résumé, les descriptions et les temps forts (voir [Langues prises en charge](https://wayin.ai/fr/api-docs/supported-languages/)). Si `null`, la langue de sortie correspond à `source_lang`. |

### Exemple de Requête

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/summaries \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -d '{
    "video_url": "https://www.youtube.com/watch?v=example",
    "target_lang": "en"
  }'
```

```python
import requests

requests.post(
    "https://wayinvideo-api.wayin.ai/api/v2/summaries",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "x-wayinvideo-api-version": "v2",
    },
    json={
        "video_url": "https://www.youtube.com/watch?v=example",
        "target_lang": "en",
    },
)
```

```javascript
await fetch('https://wayinvideo-api.wayin.ai/api/v2/summaries', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'x-wayinvideo-api-version': 'v2',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    video_url: 'https://www.youtube.com/watch?v=example',
    target_lang: 'en',
  }),
});
```

### Réponse

```json
{
  "data": {
    "id": "sum_proj_001",
    "name": "sample project name",
    "status": "CREATED"
  }
}
```

| Champ    | Type   | Description                                                   |
| -------- | ------ | ------------------------------------------------------------- |
| `id`     | string | Identifiant de la tâche (utilisé dans les requêtes suivantes) |
| `name`   | string | Nom de la tâche                                               |
| `status` | string | `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED`, `FAILED`         |

---

## Exemples

Scénarios courants de résumé. Remplacez `YOUR_API_KEY` par une clé issue du [Tableau de bord API](https://wayin.ai/wayinvideo/api-dashboard).

### Résumer une vidéo YouTube

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/summaries \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -H "Content-Type: application/json" \
  -d '{"video_url": "https://www.youtube.com/watch?v=EXAMPLE"}'
```

### Résumer un long épisode de podcast

Les podcasts de plusieurs heures fonctionnent de la même manière — soumettez et interrogez. La réponse inclut des temps forts de la timeline pour parcourir rapidement des heures d'audio.

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/summaries \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -H "Content-Type: application/json" \
  -d '{"video_url": "https://www.youtube.com/watch?v=EXAMPLE"}'
```

### Résumer un webinaire dans une autre langue

Définissez `target_lang` pour traduire le résumé, les temps forts et les descriptions dans la langue cible même lorsque la vidéo source est dans une langue différente.

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/summaries \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://www.youtube.com/watch?v=EXAMPLE",
    "source_lang": "en",
    "target_lang": "ja"
  }'
```

---

## Récupérer les Résultats du Résumé

Récupérez le résumé, les temps forts et les tags. Interrogez jusqu'à ce que `status` soit `SUCCEEDED`.

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

### Paramètres de Chemin

| Paramètre | Type   | Obligatoire | Description                                         |
| --------- | ------ | ----------- | --------------------------------------------------- |
| `id`      | string | Oui         | L'ID de tâche retourné par l'endpoint de soumission |

### Exemple de Requête

```bash
curl -X GET https://wayinvideo-api.wayin.ai/api/v2/summaries/results/sum_proj_001 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2"
```

### Réponse

```json
{
  "data": {
    "status": "SUCCEEDED",
    "title": "sample title",
    "video_thumbnail": "https://cdn.example.com/thumb/video_001.jpg",
    "summary": "sample summary text",
    "tags": ["#topic1", "#topic2", "#topic3"],
    "highlights": [
      {
        "start": 0,
        "end": 196000,
        "desc": "sample section title",
        "events": [
          {
            "timestamp": 160,
            "desc": "sample event description"
          },
          {
            "timestamp": 17920,
            "desc": "sample event description"
          }
        ]
      }
    ],
    "cost_usage": 54.0
  }
}
```

### Champs de la Réponse de Résumé

| Champ             | Type     | Description                                                         |
| ----------------- | -------- | ------------------------------------------------------------------- |
| `status`          | string   | `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED`, `FAILED`               |
| `error_message`   | string   | Raison de l'erreur (présent uniquement quand `status` est `FAILED`) |
| `title`           | string   | Titre généré par IA                                                 |
| `video_thumbnail` | string   | URL de la miniature de la vidéo                                     |
| `summary`         | string   | Aperçu textuel complet                                              |
| `tags`            | string[] | Hashtags générés par IA                                             |
| `highlights`      | array    | Segments de temps forts de la timeline (voir ci-dessous)            |
| `cost_usage`      | number   | Crédits API consommés pour cette requête                            |

### Objet Highlight

| Champ    | Type   | Description                           |
| -------- | ------ | ------------------------------------- |
| `start`  | number | Temps de début en millisecondes       |
| `end`    | number | Temps de fin en millisecondes         |
| `desc`   | string | Titre / description de la section     |
| `events` | array  | Événements clés au sein du temps fort |

### Objet Event

| Champ       | Type   | Description                                |
| ----------- | ------ | ------------------------------------------ |
| `timestamp` | number | Horodatage de l'événement en millisecondes |
| `desc`      | string | Description de l'événement                 |

---

## FAQ

### Quelle est la durée maximale d'une vidéo ?

Il n'y a pas de limite stricte. L'API prend en charge les clips courts comme les vidéos longues, notamment les épisodes de podcast, les webinaires complets, les enregistrements de cours et les rediffusions de livestreams.

### Que contient la réponse du résumé ?

Une vue d'ensemble structurée, des hashtags et une timeline de segments de temps forts avec horodatages de début/fin et descriptions. Les temps forts facilitent le rendu d'une interface timeline ou la génération automatique de marqueurs de chapitres.

### Puis-je obtenir un résumé dans une langue différente de la source ?

Oui — passez `target_lang` pour traduire la vue d'ensemble, les descriptions et les temps forts dans la langue cible même lorsque la vidéo source est dans une langue différente.

### Quelles sources vidéo sont prises en charge ?

Les URLs de YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble et plus encore, ainsi que les téléversements de fichiers locaux via l'[API Upload](https://wayin.ai/fr/api-docs/upload/).
