# YouTube Transcript API: auch ohne Untertitel

> Mit der YouTube Transcript API bekommst du JSON, Text, SRT oder VTT aus einem Link: aus Untertiteln oder per KI, für 1 Credit je angefangene Minute.

Canonical: https://transcript1.com/de/features/youtube-transcript-api
Language: de
Last updated: 2026-10-19

Die YouTube Transcript API liefert dir zu einem Videolink das Transkript als JSON, Text, SRT oder VTT. Gibt es passende Untertitel, übernehmen wir sie. Fehlen sie, transkribiert KI die Tonspur.

- Erst Untertitel, bei Bedarf KI-Transkription
- Beide Wege kosten 1 Credit je angefangene Minute
- watch, youtu.be, Shorts und Embed-Links

## Du entscheidest, woher der Text kommt

### Videolink statt Video-ID

Schick den Link zur watch-Seite, einen youtu.be-Link, einen Short, Embed- oder /live/-Link. Mit oder ohne www: Wir ordnen die Adressen dem jeweiligen Video zu. Ein laufender Livestream lässt sich trotzdem nicht transkribieren.

### Vorhandene Untertitel nutzen

Mit source=auto bevorzugen wir Untertitel vom Creator. Erst danach kommen automatisch erzeugte Untertitel infrage. Automatisch übersetzte Spuren verwenden wir nicht.

### Direkt aus der Tonspur transkribieren

Ohne passende Untertitel übernimmt Speech-to-Text. Soll die Transkription immer aus dem Audio entstehen, setze source=stt.

### Die Herkunft im JSON nachlesen

transcript_source zeigt dir, ob der Text aus youtube_captions oder speech_to_text stammt. So kann deine Anwendung zwischen abgerufenen Untertiteln und einer neuen KI-Transkription unterscheiden.

### Abrechnung nach Videolänge

Untertitel und KI kosten gleich viel: 1 Credit pro Minute, aufgerundet. Schlägt die Transkription fehl oder brichst du sie ab, berechnen wir nichts.

## Ein Videolink genügt für den ersten Request

Sende die URL mit deinem API-Schlüssel an POST /v1/transcriptions. Das geht mit Python oder jedem anderen HTTP-Client. Mit wait=60 bleibt der Request bis zu 60 Sekunden offen. Alle Felder und Statuscodes findest du in der [API-Referenz](https://transcript1.com/de/docs/api-reference#create-a-transcription).

Erstelle den Schlüssel im Dashboard und verwende ihn auf deinem Server oder in einem Script. Speichere die ID, sobald die API die Transkription angelegt hat. Reicht die Wartezeit nicht aus, läuft die Verarbeitung weiter. Lies den Status mit GET /v1/transcriptions/:id ab, statt denselben Auftrag neu anzulegen.

Dein Client sollte queued, fetching und transcribing von den abschließenden Zuständen unterscheiden. Bei completed kannst du das Transkript abrufen. Bei failed behandelst du den Fehler. Eine langsame Verbindung oder ein nicht verfügbares Video darf in deiner App nicht wie ein erfolgreiches, aber leeres Transkript aussehen.

### cURL

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

## An transcript\_source erkennst du die Textquelle

Die Antwort nennt die Quelle und bei YouTube-Untertiteln auch die Art der Spur. billed_minutes enthält die aufgerundete Videolänge. Die [Referenz zum Transkriptionsobjekt](https://transcript1.com/de/docs/api-reference#the-transcription-object) beschreibt die Felder.

Speichere transcript_source und caption_kind, wenn die Herkunft für deine Anwendung wichtig ist. Untertitel vom Creator behalten ihren veröffentlichten Wortlaut, liefern aber keine Wort-Zeitstempel. Automatisch erzeugte YouTube-Untertitel enthalten Wortanfänge. Bei Speech-to-Text bekommst du Anfang, Ende und confidence pro Wort. Fordere diese zusätzlichen Daten nur bei Bedarf mit include=words an.

Die Segmente enthalten Text sowie Anfang und Ende in Sekunden. Damit kannst du Textstellen mit der Wiedergabe verknüpfen oder einem Assistenten genau die gesuchte Passage geben. Das JSON-Beispiel zeigt die Struktur der Antwort; der Beispieltext ist kein Zitat aus dem verlinkten Video.

### Gekürzte JSON-Antwort

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

## Untertitel abrufen oder das Audio neu transkribieren

source=auto ist voreingestellt. Mit captions verlangst du ausschließlich Untertitel. Fehlt eine passende Spur, bekommst du no_captions und zahlst nichts. Mit stt nutzt du immer die Tonspur. Die [Doku zur Quellenwahl](https://transcript1.com/de/docs/sources-and-options#source) erklärt das Zusammenspiel mit Sprache und Sprecherzuordnung.

Brauchst du den veröffentlichten Untertiteltext, wähle captions. Für eine neue Audio-Transkription oder Sprecherzuordnung brauchst du Speech-to-Text. Bei auto und diarize=true überspringen wir deshalb die Untertitel. captions zusammen mit diarize=true lehnen wir ab, statt eine deiner Einstellungen zu ignorieren.

Auch language beeinflusst die Auswahl: Die Untertitelspur muss zur angefragten Sprache passen. Bei automatischer Sprachwahl gilt die Originalsprache des Videos. Automatisch übersetzte Spuren bleiben ausgeschlossen. Ein Sprachhinweis für Speech-to-Text hilft bei der Erkennung, übersetzt die Aufnahme aber nicht.

### Request-Body für source=stt

```
{
  "platform": "youtube",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "source": "stt"
}
```

## Vor einem neuen Versuch erst den Status prüfen

Ein privates Video, eine Altersbeschränkung oder ein laufender Livestream braucht eine andere Quelle. Ein neuer Request ändert daran nichts. Bei no_captions entscheidest du, ob eine Audio-Transkription für deine Anwendung infrage kommt. Läuft der Auftrag noch, ruf ihn erneut über seine ID ab. Die [Fehlerübersicht](https://transcript1.com/de/docs/errors) hilft bei der Einordnung.

Musst du einen Create-Request nach einem Verbindungsfehler wiederholen, nutze den [Idempotency-Key](https://transcript1.com/de/docs/api-reference#idempotency). Davon getrennt ist die Wiederverwendung einer früheren Transkription mit demselben Video und denselben Optionen. Ein Transkript aus dem Cache kann trotzdem als neuer Auftrag kostenpflichtig sein. Ein bereits fertiges Transkript über seine ID zu lesen, kostet keine weiteren Minuten.

Für Anwendungen mit mehreren Plattformen gilt: Auch YouTube, X, TikTok und Bluesky können Untertitel liefern, bevor auto auf Speech-to-Text zurückgreift. Derselbe Create-Endpoint nimmt etwa [TikTok-Videos](https://transcript1.com/de/features/tiktok-transkript) und [Instagram Reels](https://transcript1.com/de/features/instagram-transkript) an. Prüfe die erlaubten Optionen je Plattform in der [Quellenübersicht](https://transcript1.com/de/docs/sources-and-options), bevor du sie in deiner Oberfläche anbietest.

## Häufige Fragen

### Klappt das auch ohne Untertitel?

Ja. Mit source=auto transkribiert KI das Audio, wenn keine passenden Untertitel verfügbar sind. Soll dein Request in diesem Fall stattdessen fehlschlagen, wähle source=captions.

### Welche YouTube-Links kann ich senden?

watch-Links, youtu.be-Links, Shorts, Embed- und /live/-Links. Ein laufender Livestream bleibt ausgeschlossen. Eine Kanalseite oder ein reiner Playlist-Link führt zu 422 invalid_url.

### Kann ich ein privates Video transkribieren?

Nicht über den YouTube-Link. Wir können öffentliche und nicht gelistete Videos abrufen. Private Videos, Videos mit Altersbeschränkung und laufende Livestreams funktionieren nicht. Hast du die eigene Aufnahme als Datei, kannst du sie hochladen.

### Was kostet ein Transkript?

1 Credit je angefangene Videominute, egal ob der Text aus Untertiteln oder KI stammt. Nach der E-Mail-Bestätigung bekommst du einmalig 60 Minuten kostenlos. Eine Kreditkarte brauchst du dafür nicht.

### Ist das das Python-Paket youtube-transcript-api?

Nein. transcript1 ist eine gehostete REST API. Aus Python schickst du einen HTTP-Request mit deinem API-Schlüssel, um ein YouTube-Transkript automatisch abzurufen.

## Passend dazu

- [Zeitstempel, SRT und VTT](https://transcript1.com/de/features/srt-datei-erstellen)
- [Audio- und Video-API](https://transcript1.com/de/features/speech-to-text-api)
- [Webhooks](https://transcript1.com/de/features/transkription-webhook)
- [Inhalte weiterverwenden](https://transcript1.com/de/use-cases/video-in-blogartikel-umwandeln)
