# API Video Transcription

> Extrayez des transcriptions mot à mot avec diarisation des locuteurs (étiquettes de locuteur) depuis des contenus vidéo ou audio.

## API Video Transcription

Soumettez une vidéo ou un fichier audio et recevez une transcription mot à mot avec diarisation des locuteurs (chaque segment étiqueté avec le locuteur détecté). L'API prend en charge les vidéos des principales plateformes et les fichiers vidéo/audio 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 transcrire [des fichiers audio ou 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 transcription depuis une URL de vidéo
2. **Interrogez** les résultats jusqu'à ce que le statut soit `SUCCEEDED`

---

## Soumettre une Tâche de Transcription

Soumettez une nouvelle tâche de transcription depuis une URL de vidéo ou audio.

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

### Corps de la Requête

| Paramètre | Type | Obligatoire | Défaut | Description |
|-----------|------|-------------|--------|-------------|
| `video_url` | string | Oui | — | L'URL de la vidéo/audio 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 la transcription (voir [Langues prises en charge](https://wayin.ai/fr/api-docs/supported-languages/)). Si `null`, aucune traduction n'est appliquée. Si `target_lang` diffère de la langue d'origine de la vidéo, la transcription sera automatiquement traduite dans la langue cible. |

### Exemple de Requête

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/transcripts \
  -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/transcripts",
    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/transcripts", {
  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": "trans_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 |
| `status` | string | `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED`, `FAILED` |

---

## Exemples

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

### Transcrire une vidéo YouTube

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

### Transcrire un podcast avec plusieurs intervenants

Passez n'importe quelle URL audio de podcast (ou un [identifiant de fichier téléversé](https://wayin.ai/fr/api-docs/upload/)) — la diarisation des locuteurs est automatique ; chaque segment de la réponse porte une étiquette `speaker`.

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

### Traduire une transcription non anglaise vers l'anglais

Définissez `target_lang` pour traduire à la volée. Combinez avec `source_lang` si vous connaissez déjà la langue source.

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

---

## Récupérer les Résultats de Transcription

Récupérez la transcription avec les horodatages mot à mot et les étiquettes de locuteur. Interrogez jusqu'à ce que `status` soit `SUCCEEDED`.

```
GET https://wayinvideo-api.wayin.ai/api/v2/transcripts/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/transcripts/results/trans_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",
    "cost_usage": 27.0,
    "transcript": [
      {
        "text": "Welcome to today's presentation",
        "language": null,
        "start": 200,
        "end": 4500,
        "speaker": "Speaker 1"
      },
      {
        "text": "Thanks for coming",
        "language": null,
        "start": 5000,
        "end": 8200,
        "speaker": "Speaker 2"
      }
    ]
  }
}
```

### Champs de la Réponse

| Champ | Type | Description |
|-------|------|-------------|
| `status` | string | `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED`, `FAILED` |
| `error_message` | string | Raison de l'erreur (présent uniquement quand `status` est `FAILED`) |
| `cost_usage` | number | Crédits API consommés pour cette requête |
| `transcript` | array | Liste des segments de transcription (voir ci-dessous) |

### Segment de Transcription

| Champ | Type | Description |
|-------|------|-------------|
| `text` | string | Texte transcrit |
| `language` | string \| null | Code de langue détecté, ou `null` si non détecté |
| `start` | integer | Temps de début en millisecondes |
| `end` | integer | Temps de fin en millisecondes |
| `speaker` | string | Étiquette du locuteur (ex. `"Speaker 1"`) |


---

## 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 contenus vidéo ou audio longs sur les plateformes sources compatibles.

### L'API retourne-t-elle des horodatages mot à mot ?

Oui. Chaque segment de transcription inclut des horodatages `start` et `end` en millisecondes, le `text` transcrit, le `language` détecté et l'étiquette `speaker` assignée par la diarisation des locuteurs.

### Comment fonctionne la diarisation des locuteurs ?

Les locuteurs sont détectés automatiquement et étiquetés (`Speaker 1`, `Speaker 2`, …) par segment. Aucune configuration n'est nécessaire — la diarisation s'exécute sur chaque tâche de transcription.

### Quels formats audio et vidéo sont pris en charge ?

Les URLs sources sont prises en charge depuis YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble et plus encore. Pour les téléversements locaux, envoyez `mp4`, `mov`, `webm` ou `avi` (les fichiers audio seuls peuvent être muxés dans l'un de ces conteneurs).

### Puis-je traduire la transcription dans une autre langue ?

Oui — passez le paramètre `target_lang`. La transcription est traduite lorsque `target_lang` diffère de la langue source. Voir [Langues prises en charge](https://wayin.ai/fr/api-docs/supported-languages/) pour la liste complète des codes de langue.
