GuidesPar Péter Nagy

Obtenir la transcription YouTube avec une API (curl, Python, JavaScript)

Récupère la transcription de n'importe quelle vidéo YouTube publique avec une seule requête HTTP. Exemples curl, Python et JavaScript, formats, codes d'erreur et coûts.

Résume une vidéo YouTube maintenant

Colle un lien et obtiens les points clés avec des horodatages cliquables.

Pour obtenir la transcription YouTube avec une API, envoie une requête HTTP avec l'URL ou l'identifiant de la vidéo et une clé d'API, puis lis la transcription dans la réponse. Ce guide montre la requête en curl, Python et JavaScript avec l'API de transcription sum.video, puis aborde les formats, les erreurs et les coûts.

Ce que renvoie l'API

Le point d'accès renvoie les sous-titres existants d'une vidéo YouTube publique, écrits par le créateur ou générés automatiquement par YouTube. Il ne transcrit pas l'audio. Si une vidéo n'a pas de sous-titres, tu obtiens une erreur plutôt qu'une supposition (plus bas).

L'essentiel :

  • Point d'accès : POST https://sum.video/api/v1/transcript (GET fonctionne aussi)
  • Authentification : ta clé dans l'en-tête X-API-Key, ou Authorization: Bearer <key>
  • Entrée : url ou video_id
  • lang facultatif (en par défaut)
  • format facultatif : json, text ou srt

La réponse indique aussi la vraie langue de la piste de sous-titres et si elle est générée automatiquement, pour que tu saches à quelle qualité t'attendre.

Étape 1 : Crée une clé d'API

Connecte-toi et crée une clé dans le tableau de bord de l'API (/dashboard/api sur sum.video). Tu peux avoir jusqu'à 5 clés actives, pratique pour séparer une clé de test d'une clé de production. Ta première clé est fournie avec 10 crédits gratuits, de quoi faire 5 transcriptions, donc tu peux tout tester ci-dessous sans frais.

Résume une vidéo YouTube maintenant

Colle un lien et obtiens les points clés avec des horodatages cliquables.

Étape 2 : Envoie ta première requête

curl

curl -X POST https://sum.video/api/v1/transcript \
  -H "X-API-Key: $SUMVIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "lang": "en", "format": "text"}'

Comme GET fonctionne aussi, tu peux tester depuis un script qui ne fait que construire des URL. Préfère l'en-tête pour la clé, afin qu'elle ne finisse pas dans les journaux.

Python

import os
import requests

resp = requests.post(
    "https://sum.video/api/v1/transcript",
    headers={"X-API-Key": os.environ["SUMVIDEO_API_KEY"]},
    json={"video_id": "dQw4w9WgXcQ", "lang": "en", "format": "text"},
    timeout=30,
)

if resp.status_code == 404:
    print("No captions for this video")
else:
    resp.raise_for_status()
    print(resp.text)

JavaScript (Node 18+ ou navigateur)

const resp = await fetch("https://sum.video/api/v1/transcript", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.SUMVIDEO_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    video_id: "dQw4w9WgXcQ",
    lang: "en",
    format: "text",
  }),
});

if (resp.status === 404) {
  console.log("No captions for this video");
} else if (!resp.ok) {
  throw new Error(`Request failed: ${resp.status}`);
} else {
  console.log(await resp.text());
}

Garde la clé sur un serveur. Une clé placée dans le code du navigateur peut être copiée par quiconque ouvre les outils de développement.

Étape 3 : Choisis le bon format

Format Ce que tu obtiens Idéal pour
json Des segments, chacun avec offset et duration en secondes Horodatages, liens vers un instant précis, découpage par durée
text Transcription en texte brut Prompts, index de recherche, résumés
srt Contenu d'un fichier de sous-titres Logiciels de montage, outils de sous-titrage

Si tu veux créer des liens vers un moment de la vidéo, utilise json et construis le lien à partir de l'offset du segment. Pour alimenter un LLM, text est plus léger et plus simple. Si tu veux plus tard chercher à la main dans une transcription, vois comment chercher dans la transcription d'une vidéo YouTube.

Étape 4 : Choisis une langue

lang vaut en par défaut. Mets la langue souhaitée, par exemple de ou es. La réponse indique la langue de la piste réellement renvoyée, vérifie-la donc au lieu de la supposer. Une vidéo n'a souvent qu'une seule piste de sous-titres, et l'API renvoie de vrais sous-titres, elle ne les traduit donc pas pour toi.

Étape 5 : Gère les erreurs

Prévois ces cas dès le premier jour :

  • 404 no_transcript : la vidéo n'a pas de sous-titres, ou c'est un direct, une vidéo privée ou supprimée. Il n'y a rien à retenter. Ignore-la, ou demande une autre vidéo à l'utilisateur.
  • 402 budget_exceeded : tu as atteint la limite mensuelle de crédits que tu as configurée. Voir la section suivante.
  • Limite de débit : chaque clé autorise 60 requêtes par minute. Espace les traitements par lots et ralentis quand on te limite.
  • Échecs de notre côté : réessaie après un court délai. Ils ne coûtent rien.

Une simple boucle qui réessaie sur les erreurs serveur et ignore les 404 couvre la plupart des besoins en production.

Ce que ça coûte

Chaque transcription coûte 2 crédits. Les requêtes qui ne renvoient pas de transcription, ou qui échouent du côté de sum.video, ne coûtent rien, donc un 404 ne vide jamais ton solde. Tu peux vérifier ton solde avec GET /api/v1/credits.

Les crédits se vendent en packs uniques qui n'expirent jamais :

Pack Prix Par transcription
100 crédits $4.49 $0.090
500 crédits $13.99 $0.056
2,000 crédits $37.99 $0.038
5,000 crédits $74.99 $0.030

Les abonnés Pro reçoivent aussi 100 crédits bonus chaque mois. Pour une charge plus lourde, comme l'ingestion d'une chaîne entière, lis le scénario transcriptions YouTube pour une application RAG à grande échelle, qui traite de la recharge automatique et des budgets. Voir aussi les tarifs.

Limites à connaître avant de construire

  • Seules les vidéos avec sous-titres fonctionnent. C'est la principale raison du 404 no_transcript.
  • Les sous-titres générés automatiquement peuvent contenir des erreurs, surtout avec les noms, les accents et les termes techniques.
  • L'API ne renvoie que la transcription. Elle ne résume pas. Si tu veux des résumés, des horodatages et un chat par-dessus une transcription, le résumeur YouTube s'en charge, et l'outil de transcription est la version sans code pour une seule vidéo.
  • L'API officielle YouTube Data n'est pas un substitut ici. Sa méthode de téléchargement des sous-titres exige l'autorisation de modifier la vidéo, elle est donc destinée à tes propres vidéos (documentation Google).

Sources

Questions fréquentes

Puis-je obtenir une transcription YouTube sans l'API officielle YouTube Data ?

Oui. L'API de transcription sum.video prend l'URL ou l'identifiant d'une vidéo et renvoie les sous-titres existants, sans projet Google Cloud. La méthode de téléchargement des sous-titres de Google exige l'autorisation de modifier la vidéo, elle ne convient donc qu'à tes propres vidéos.

L'API transcrit-elle les vidéos sans sous-titres ?

Non. Elle renvoie les sous-titres YouTube existants, manuels ou générés automatiquement. Les vidéos sans sous-titres, les directs, les vidéos privées et supprimées renvoient 404 no_transcript, et cette requête ne coûte rien.

Combien coûte une transcription ?

2 crédits par transcription. Les packs vont de 100 crédits pour $4.49 ($0.090 par transcription) à 5,000 crédits pour $74.99 ($0.030 par transcription), et les crédits n'expirent jamais.

Quels formats de sortie sont disponibles ?

json (segments avec offset et duration en secondes), text et srt. Renseigne le champ format dans la requête.

Comment l'essayer gratuitement ?

Ta première clé d'API est fournie avec 10 crédits gratuits, soit 5 transcriptions. Les abonnés Pro reçoivent en plus 100 crédits bonus chaque mois.

Résume une vidéo YouTube maintenant

Colle un lien et obtiens les points clés avec des horodatages cliquables.

api de transcription youtubetutoriel apipythonjavascriptcurl

À lire aussi

Derniers articles

Résume n'importe quelle vidéo YouTube en quelques secondes

Essayer sum.video