# Deine erste Transkription

> Erstelle deinen API-Schlüssel, transkribiere einen Video-Link oder eine Datei und hole das Transkript mit cURL, Python oder Node.js ab.

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

Hier richtest du deinen API-Zugang ein und holst dein erstes Transkript ab. Die API erreichst du unter `https://api.transcript1.com`. Deinen API-Schlüssel sendest du im `Authorization`-Header mit.

## 1. Konto anlegen und API-Schlüssel holen

Lege unter [/signup](https://transcript1.com/signup) ein Konto an. Du kannst dich mit E-Mail-Adresse, Google oder Microsoft registrieren. Nach der E-Mail-Bestätigung bekommst du einmalig 60 kostenlose Minuten pro Konto. Mit Google oder Microsoft stehen sie dir sofort zur Verfügung. Eine Kreditkarte brauchst du nicht.

Öffne im Dashboard die [API-Schlüssel](https://transcript1.com/dashboard/account/tokens) unter `/dashboard/account/tokens` und erstelle einen Schlüssel. Er beginnt mit `t1_`. Kopiere ihn direkt, denn du siehst ihn nur dieses eine Mal. Setze anschließend die Umgebungsvariable `TRANSCRIPT1_API_KEY`:

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

## 2. Einen Video-Link an die API senden

Du kannst Links von YouTube, X, TikTok, Instagram, Facebook, Bluesky, Twitch, Dailymotion, Pinterest, LinkedIn und Snapchat übergeben. Unter [Quellen und Einstellungen](https://transcript1.com/de/docs/sources-and-options) findest du die erlaubten öffentlichen Aufnahmen und die jeweiligen Einschränkungen. `platform` musst du nicht setzen: Die API erkennt die Plattform am Link. Für die folgenden Beispiele nehmen wir ein YouTube-Video.

Starte die Transkription mit `POST /v1/transcriptions` und der Video-URL. Mit dem Query-Parameter `wait=60` wartet der Request bis zu 60 Sekunden auf den Abschluss. Das Transkript selbst ist in dieser Antwort noch nicht enthalten.

Im Python-Beispiel holst du es danach mit `GET /v1/transcriptions/:id?wait=60` ab. Das Node.js-SDK übernimmt das Warten und liest den Schlüssel aus `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

Speichere den Code in `index.mjs` und führe `node index.mjs` aus. Für eine `.js`-Datei brauchst du stattdessen `"type": "module"` in deiner `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);
```

Auf YouTube, X, TikTok, Bluesky, Dailymotion und LinkedIn prüft transcript1 zuerst, ob sich Untertitel in der Originalsprache nutzen lassen. Fehlt eine passende Spur, transkribiert die KI den Ton. Am bisherigen Untertitelabruf für YouTube und X ändert sich nichts. Außerhalb von YouTube liefern Untertitel nur Zeitstempel für ganze Segmente, nicht für einzelne Wörter.

Mit `source=stt` oder aktivierter Sprecherzuordnung nutzt du direkt die KI-Transkription. Im reinen Untertitelmodus lädt transcript1 dagegen nie Audio herunter und führt kein STT aus. Die verfügbaren Modi stehen unter [Quellen und Einstellungen](https://transcript1.com/de/docs/sources-and-options).

## 3. Status prüfen und Transkript abrufen

Am HTTP-Status erkennst du, ob du noch warten musst:

- `200`: Die Transkription hat während der Wartezeit einen der abschließenden Status erreicht: `completed`, `failed` oder `canceled`.
- `202`: Die Transkription läuft noch. Frage mit `GET /v1/transcriptions/:id?wait=60` erneut ab. Auch dieser Request wartet bis zu 60 Sekunden. Wiederhole ihn, bis `status` den Abschluss meldet.

Bei `completed` enthält die Antwort das Transkript. Hier ein gekürztes Beispiel:

```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." }
    ]
  }
}
```

Den vollständigen Text findest du in `transcript.text`. In `transcript.segments` stehen die einzelnen Abschnitte. Deren `start` und `end` geben Anfang und Ende in Sekunden an.

Brauchst du eine Text- oder Untertiteldatei, wähle `text`, `srt` oder `vtt`. So rufst du zum Beispiel SRT ab:

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

Der Aufruf lautet `GET /v1/transcriptions/:id?format=srt`. Text- und Untertitelformate bekommst du erst bei `completed`. Solange die Transkription noch nicht fertig ist, antwortet die API auch bei gewähltem Format mit dem JSON-Objekt samt Status.

## 4. Eine eigene Datei hochladen

Eine Audio- oder Videodatei von deinem Rechner kannst du bis 95 MB mit einem einzigen Request hochladen. Verwende dafür `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
```

Größere Dateien bis 2 GB lädst du in Chunks hoch. Wenn die Verbindung abbricht, setzt du den Upload später fort. Wie das geht, steht unter [Dateien hochladen](https://transcript1.com/de/docs/uploads).

## Hier geht es weiter

- [Quellen und Einstellungen](https://transcript1.com/de/docs/sources-and-options): Wähle zwischen Untertiteln und KI-Transkription und stelle Sprecherzuordnung und Sprache ein.
- [Dateien hochladen](https://transcript1.com/de/docs/uploads): Sende Dateien mit einem Request oder in Chunks.
- [Webhooks einrichten](https://transcript1.com/de/docs/webhooks): Lass dich nach Abschluss der Transkription mit einem signierten Request benachrichtigen.
- [MCP-Server](https://transcript1.com/de/docs/mcp): Verbinde transcript1 mit Claude, ChatGPT, Cursor, VS Code oder Claude Code.
- [API-Referenz](https://transcript1.com/de/docs/api-reference): Schlage Endpoints und Parameter nach.
