# Première transcription avec l'API

> Créez votre clé API, envoyez un lien vidéo ou un fichier, puis récupérez la transcription avec cURL, Python ou Node.js.

Canonical: https://transcript1.com/fr/docs/getting-started
Language: fr
Last updated: 2026-10-14

Pour appeler l'API, utilisez l'adresse `https://api.transcript1.com` et transmettez votre clé dans l'en-tête `Authorization`. Créez votre clé, envoyez un lien vidéo ou un fichier, puis récupérez le texte avec les exemples ci-dessous.

## 1. Préparer votre clé API

Commencez par [créer un compte](https://transcript1.com/signup) avec votre adresse e-mail, Google ou Microsoft. Vous disposez de 60 minutes gratuites pour tester l'API, sans carte bancaire. Vous les recevez une seule fois par compte, après avoir vérifié votre adresse e-mail. Si vous vous inscrivez avec Google ou Microsoft, les minutes sont disponibles immédiatement.

Dans le tableau de bord, ouvrez la page [« API keys »](https://transcript1.com/dashboard/account/tokens), à l'adresse `/dashboard/account/tokens`, et créez une clé. Elle commence par `t1_`. Copiez-la dès qu'elle s'affiche : vous ne pourrez pas l'afficher une seconde fois. Définissez ensuite la variable `TRANSCRIPT1_API_KEY` :

```bash
export TRANSCRIPT1_API_KEY="t1_..."
```

## 2. Envoyer un lien vidéo

Vous pouvez envoyer un lien YouTube, X, TikTok, Instagram, Facebook, Bluesky, Twitch, Dailymotion, Pinterest, LinkedIn ou Snapchat. La page [Sources et options](https://transcript1.com/fr/docs/sources-and-options) précise quels enregistrements publics sont acceptés et avec quelles limites. Inutile de renseigner `platform` : l'API reconnaît la plateforme dans l'URL. L'exemple ci-dessous utilise YouTube.

Appelez `POST /v1/transcriptions` avec l'URL de la vidéo. Ajoutez `wait=60` à l'URL de l'API pour attendre jusqu'à 60 secondes avant de recevoir la réponse.

La réponse à cet appel ne contient pas le texte. Dans l'exemple Python, un second appel à `GET /v1/transcriptions/:id?wait=60` permet de le récupérer. Avec le SDK Node.js, vous n'avez pas à gérer cette attente : le SDK s'en charge et lit votre clé dans `TRANSCRIPT1_API_KEY`.

### cURL

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'
```

### Python

```python
import os
import requests

headers = {"Authorization": f"Bearer {os.environ['TRANSCRIPT1_API_KEY']}"}
response = requests.post(
    "https://api.transcript1.com/v1/transcriptions?wait=60",
    headers=headers,
    json={"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"},
)
response.raise_for_status()
transcription = response.json()
while True:
    transcription = requests.get(
        f"https://api.transcript1.com/v1/transcriptions/{transcription['id']}?wait=60",
        headers=headers,
    ).json()
    if transcription["status"] in ("completed", "failed", "canceled"):
        break

if transcription["status"] == "completed":
    print(transcription["transcript"]["text"])
else:
    print(transcription["status"], transcription["error"])
```

### Node.js

Enregistrez le code dans `index.mjs`, puis exécutez `node index.mjs`. Si vous préférez un fichier `.js`, ajoutez `"type": "module"` à votre `package.json`.

```javascript
// npm i @transcript1/sdk
import { Transcript1 } from '@transcript1/sdk';

const t1 = new Transcript1();
const transcription = await t1.transcribe('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
console.log(transcription.transcript.text);
```

Par défaut, transcript1 cherche d'abord des sous-titres utilisables dans la langue d'origine sur YouTube, X, TikTok, Bluesky, Dailymotion et LinkedIn. S'il n'en trouve pas, l'IA transcrit l'audio. Le traitement des sous-titres YouTube et X reste inchangé. En dehors de YouTube, les sous-titres fournissent seulement les temps des segments, sans horodatage par mot. Leur disponibilité dépend de la vidéo.

Pour transcrire directement l'audio, choisissez `source=stt` ou activez l'identification des locuteurs. À l'inverse, le mode `captions` (sous-titres uniquement) ne télécharge jamais l'audio et ne lance pas de STT. La page [Sources et options](https://transcript1.com/fr/docs/sources-and-options) détaille ces réglages.

## 3. Récupérer la transcription

Le statut HTTP vous indique s'il faut encore attendre :

- `200` : la transcription a atteint un état final pendant l'attente. Vérifiez lequel : `completed`, `failed` ou `canceled`.
- `202` : le traitement continue. Appelez `GET /v1/transcriptions/:id?wait=60` pour attendre à nouveau jusqu'à 60 secondes. Répétez cet appel tant que `status` n'a pas atteint un état final.

Voici un exemple abrégé de transcription terminée :

```json
{
  "id": "tr_8fK2Lm0PqRsTuVwXyZaBcD",
  "object": "transcription",
  "status": "completed",
  "transcript_source": "youtube_captions",
  "language": "en",
  "billed_minutes": 4,
  "transcript": {
    "text": "Welcome back to the channel. Today we are looking at how transcripts are made.",
    "speakers": [],
    "segments": [
      { "start": 0, "end": 4.2, "speaker": null, "language": "en", "text": "Welcome back to the channel." },
      { "start": 4.2, "end": 9.8, "speaker": null, "language": "en", "text": "Today we are looking at how transcripts are made." }
    ]
  }
}
```

Récupérez le texte complet dans `transcript.text`. Pour retrouver chaque passage dans l'enregistrement, utilisez `transcript.segments` : chaque segment indique son début dans `start` et sa fin dans `end`, en secondes.

Vous pouvez aussi demander du texte brut avec `text`, ou un fichier de sous-titres avec `srt` ou `vtt` :

```bash
curl "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD?format=srt" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY"
```

Cet appel utilise `GET /v1/transcriptions/:id?format=srt`. Le fichier demandé n'est disponible qu'au statut `completed`. Avant cela, l'API renvoie l'objet JSON avec le statut du traitement.

## 4. Envoyer un fichier audio ou vidéo

Si le fichier se trouve sur votre machine et ne dépasse pas 95 Mo, envoyez-le directement dans une requête `multipart/form-data` :

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -F file=@interview.m4a
```

Au-delà de cette taille, envoyez le fichier en plusieurs blocs, jusqu'à 2 Go. Vous pourrez reprendre l'envoi s'il s'interrompt. La page [Imports de fichiers](https://transcript1.com/fr/docs/uploads) décrit la marche à suivre.

## Pour aller plus loin

- [Sources et options](https://transcript1.com/fr/docs/sources-and-options) : choisissez entre sous-titres et IA, identifiez les locuteurs et réglez la langue.
- [Imports de fichiers](https://transcript1.com/fr/docs/uploads) : envoyez un fichier en une fois ou en plusieurs blocs.
- [Webhooks](https://transcript1.com/fr/docs/webhooks) : recevez une requête signée à la fin d'une transcription.
- [Serveur MCP](https://transcript1.com/fr/docs/mcp) : lancez vos transcriptions depuis Claude, ChatGPT, Cursor, VS Code ou Claude Code.
- [Référence de l'API](https://transcript1.com/fr/docs/api-reference) : retrouvez tous les endpoints et leurs paramètres.
