# API Video Notes

> Générez des notes structurées par IA à partir de vidéos, avec des instructions personnalisées, des horodatages, un contrôle de la longueur et des images vidéo facultatives.

## API Video Notes

Soumettez une URL de vidéo ou un fichier téléversé afin de générer un résumé et, si vous le souhaitez, une note structurée par IA. Vous pouvez personnaliser les instructions de la note, sa langue de sortie, sa longueur souhaitée, ses horodatages et l'inclusion éventuelle d'images pertinentes extraites de la vidéo source.

Chaque réponse comprend une vue d'ensemble structurée, des hashtags et des temps forts de la chronologie. Lorsque la génération de notes par IA est activée, la réponse inclut également la note aux formats Markdown et texte brut. Lorsqu'elle n'est pas activée, la réponse contient uniquement les informations liées au résumé.

## Sources Vidéo Prises en Charge

L'API accepte les URL de vidéos provenant de YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble et bien d'autres plateformes.

Vous pouvez également traiter [les 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 Video Notes à l'aide d'une URL de vidéo ou de l'identifiant d'un fichier téléversé
2. **Interrogez** l'endpoint de résultats jusqu'à ce que `status` soit `SUCCEEDED`

---

## Soumettre une Tâche Video Notes

Créez une tâche avec ou sans génération de note par IA. Incluez `note_params` pour générer une note par IA ; omettez-le si vous avez uniquement besoin du résumé, des hashtags et des temps forts de la chronologie.

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

### Corps de la Requête

| Paramètre     | Type   | Obligatoire | Valeur par défaut | Description                                                                                                                                                                                       |
| ------------- | ------ | ----------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `video_url`   | string | Oui         | —                 | URL de la vidéo source ou 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 la valeur est `null`, le système détecte automatiquement la langue d'origine.                     |
| `target_lang` | string | Non         | `null`            | Langue cible du résumé et des temps forts générés (voir [Langues prises en charge](https://wayin.ai/fr/api-docs/supported-languages/)). Si la valeur est `null`, la langue de sortie suit la langue source détectée. |
| `note_params` | object | Non         | `null`            | Paramètres de génération de la note par IA. Omettez cet objet pour ignorer la génération de note par IA.                                                                                          |

### Paramètres de la Note

| Paramètre         | Type    | Obligatoire                     | Valeur par défaut | Description                                        |
| ----------------- | ------- | ------------------------------- | ----------------- | -------------------------------------------------- |
| `enable_note`     | boolean | Oui si `note_params` est fourni | —                 | Définissez sur `true` pour générer une note par IA |
| `generate_params` | object  | Oui si `note_params` est fourni | —                 | Paramètres de génération de la note par IA         |

### Paramètres de Génération de la Note

| Paramètre           | Type    | Obligatoire | Valeur par défaut | Description                                                                                                                                                                         |
| ------------------- | ------- | ----------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `prompt`            | string  | Oui         | —                 | Instructions décrivant la structure, le contenu ou le sujet souhaité pour la note                                                                                                   |
| `language`          | string  | Non         | `null`            | Langue de sortie de la note par IA uniquement ; elle n'affecte ni le résumé ni les temps forts (voir [Langues prises en charge](https://wayin.ai/fr/api-docs/supported-languages/))                    |
| `length_option`     | string  | Oui         | —                 | Longueur souhaitée de la note : `short`, `medium` ou `long`                                                                                                                         |
| `include_timestamp` | boolean | Oui         | —                 | Indique s'il faut ajouter des horodatages de la vidéo source aux sections et points clés concernés, afin d'aider les lecteurs à retrouver les passages correspondants dans la vidéo |
| `image_visual`      | boolean | Non         | `false`           | Indique s'il faut inclure des images pertinentes extraites de la vidéo source                                                                                                       |

### Exemple de Requête

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/notes \
  -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",
    "source_lang": "en",
    "target_lang": "en",
    "note_params": {
      "enable_note": true,
      "generate_params": {
        "prompt": "Organize the main ideas and action items",
        "language": "en",
        "length_option": "medium",
        "include_timestamp": true,
        "image_visual": false
      }
    }
  }'
```

```python
import requests

requests.post(
    "https://wayinvideo-api.wayin.ai/api/v2/notes",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "x-wayinvideo-api-version": "v2",
    },
    json={
        "video_url": "https://www.youtube.com/watch?v=EXAMPLE",
        "target_lang": "en",
        "note_params": {
            "enable_note": True,
            "generate_params": {
                "prompt": "Organize the main ideas and action items",
                "language": "en",
                "length_option": "medium",
                "include_timestamp": True,
            },
        },
    },
)
```

```javascript
await fetch('https://wayinvideo-api.wayin.ai/api/v2/notes', {
  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',
    note_params: {
      enable_note: true,
      generate_params: {
        prompt: 'Organize the main ideas and action items',
        language: 'en',
        length_option: 'medium',
        include_timestamp: true,
      },
    },
  }),
});
```

### Réponse de Soumission

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

| Champ    | Type   | Description                                                           |
| -------- | ------ | --------------------------------------------------------------------- |
| `id`     | string | Identifiant de la tâche utilisé pour récupérer les résultats          |
| `name`   | string | Nom de la tâche dérivé de la vidéo source                             |
| `status` | string | Statut initial de la tâche ; les tâches acceptées renvoient `CREATED` |

---

## Exemples

Les exemples ci-dessous présentent des cas d'usage courants de Video Notes. Remplacez `YOUR_API_KEY` par une clé provenant du [Tableau de bord API](https://wayin.ai/wayinvideo/api-dashboard).

### Générer des Notes Concises avec des Horodatages

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/notes \
  -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",
    "note_params": {
      "enable_note": true,
      "generate_params": {
        "prompt": "Create concise notes covering the main ideas",
        "length_option": "short",
        "include_timestamp": true
      }
    }
  }'
```

### Générer des Notes de Réunion Axées sur l'Action

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/notes \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "UPLOADED_FILE_ID",
    "note_params": {
      "enable_note": true,
      "generate_params": {
        "prompt": "Create meeting notes with decisions, owners, and action items",
        "length_option": "medium",
        "include_timestamp": true
      }
    }
  }'
```

### Traiter une Vidéo sans Note par IA

Omettez `note_params` pour obtenir le résumé, les hashtags et les temps forts de la chronologie sans données de note.

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/notes \
  -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",
    "target_lang": "en"
  }'
```

---

## Récupérer les Résultats Video Notes

Après avoir soumis une tâche, interrogez cet endpoint jusqu'à ce que `status` soit `SUCCEEDED`. La réponse obtenue contient les informations du résumé et, lorsqu'elle a été demandée, la note générée par IA.

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

### Paramètres de Chemin

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

### Requête de Résultats

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

```python
import requests

requests.get(
    "https://wayinvideo-api.wayin.ai/api/v2/notes/results/note_proj_001",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "x-wayinvideo-api-version": "v2",
    },
)
```

```javascript
await fetch(
  'https://wayinvideo-api.wayin.ai/api/v2/notes/results/note_proj_001',
  {
    method: 'GET',
    headers: {
      Authorization: 'Bearer YOUR_API_KEY',
      'x-wayinvideo-api-version': 'v2',
    },
  }
);
```

### Exemple de Réponse Réussie

```json
{
  "data": {
    "summary_id": "vdsmr_001",
    "status": "SUCCEEDED",
    "title": "sample title",
    "video_thumbnail": "https://cdn.example.com/thumb/video_001.jpg",
    "summary": "sample summary text",
    "note_data": "# Main Ideas\n\n- **00:45** First key point\n- **03:20** Second key point",
    "note_text": "Main Ideas\n\n00:45 First key point\n03:20 Second key point",
    "tags": ["#topic1", "#topic2"],
    "highlights": [
      {
        "start": 0,
        "end": 196000,
        "desc": "sample section title",
        "events": [
          {
            "timestamp": 45000,
            "desc": "sample event description"
          }
        ]
      }
    ],
    "cost_usage": 54.0
  }
}
```

### Champs de la Réponse

| Champ             | Type     | Description                                                                                                    |
| ----------------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| `summary_id`      | string   | Identifiant du résumé généré                                                                                   |
| `status`          | string   | Statut de la tâche : `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED` ou `FAILED`                                   |
| `error_message`   | string   | Motif de l'erreur ; présent uniquement lorsque `status` vaut `FAILED`                                          |
| `title`           | string   | Titre généré par IA                                                                                            |
| `video_thumbnail` | string   | URL de la miniature de la vidéo source                                                                         |
| `summary`         | string   | Vue d'ensemble structurée de la vidéo                                                                          |
| `note_data`       | string   | Note par IA conservant la structure Markdown, adaptée à un rendu Markdown ; omise si elle n'a pas été demandée |
| `note_text`       | string   | Version en texte brut de la note par IA, sans syntaxe Markdown ; omise si elle n'a pas été demandée            |
| `tags`            | string[] | Hashtags générés par IA                                                                                        |
| `highlights`      | array    | Sections de la chronologie avec horodatages et événements clés                                                 |
| `cost_usage`      | number   | API Units consommées par la tâche                                                                              |

### Objet Highlight

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

### Objet Event

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

---

## FAQ

### Quelle est la Différence entre Video Notes et Video Summarization ?

L'[API Video Summarization](https://wayin.ai/fr/api-docs/video-summarization/) génère une vue d'ensemble, des hashtags et des temps forts de la chronologie. L'API Video Notes renvoie les mêmes informations de résumé et peut également générer une note personnalisable aux formats Markdown et texte brut.

### La Génération d'une Note par IA est-elle Obligatoire ?

Non. Omettez `note_params` pour obtenir les informations de résumé sans note par IA. Pour générer une note, fournissez `note_params`, définissez `enable_note` sur `true` et incluez `generate_params.prompt`.

### Quelle est la Différence entre `note_data` et `note_text` ?

`note_data` conserve la structure Markdown générée pour afficher les titres, listes, emphases et autres éléments de mise en forme. `note_text` contient la même note sans la syntaxe Markdown, ce qui convient à l'indexation de recherche, aux embeddings, aux aperçus ou au stockage en texte brut.

### Puis-je Contrôler le Format de la Note ?

Oui. Utilisez `generate_params.prompt` pour les instructions, `language` pour la langue de la note, `length_option` pour la longueur souhaitée, `include_timestamp` pour les horodatages et `image_visual` pour inclure des images pertinentes de la vidéo.

### Quelles Sources Vidéo sont Prises en Charge ?

Les URL de YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble et bien d'autres plateformes, ainsi que les fichiers locaux téléversés via l'[API Upload](https://wayin.ai/fr/api-docs/upload/).
