Transkription
Audiodateien transkribieren, optional mit Sprechererkennung und Meeting-Notizen. Status abfragen und Dokumente exportieren.
Auf dieser Seite
Lade eine Audiodatei hoch, erhalte eine Job-ID und hole dir das Transkript, sobald es fertig ist. Große Dateien laufen asynchron: der Upload antwortet sofort mit 202.
Zwei Modi: transcript liefert nur den Text. meeting erzeugt zusätzlich einen Titel und Zusammenfassungen, wie in der Meeting-Ansicht der App.
POST legt den Auftrag an und antwortet, bevor die Erkennung fertig ist. Frage GET mit der Job-ID ab, bis status completed oder failed ist.
| Parameter | Type | Default | Description |
|---|---|---|---|
id | uuid | - | UUID des Auftrags. id und job_id sind dieselbe Kennung. |
mode | "transcript" | "meeting" | - | transcript (nur Text) oder meeting (Text plus Notizen). |
status | "processing" | "pending" | "completed" | "failed" | - | processing, pending, completed oder failed. |
text | string | null | - | Das fertige Transkript. Bei Anonymisierung der geschwärzte Text, nie die Rohfassung. |
segments | array | null | - | Abschnitte mit Zeit und optionalem Sprecher. Nur wenn angefordert und nicht anonymisiert. |
summaries | array | - | Nur im meeting-Modus: vorbereitete Notizen je Vorlage. |
1curl "https://app.anymize.ai/api/v1/transcriptions" \2 -H "Authorization: Bearer YOUR_API_KEY" Auftrag anlegen
Eine Datei hochladen und die Erkennung starten. Die Antwort ist 202 mit der Job-ID.
Audiodatei hochladen und Transkription starten
multipart/form-data mit der Datei und optionalen Schaltern. Das Transkript holst du später über GET.
/api/v1/transcriptionsRequest: multipart/form-data
Body
| Parameter | Type | Default | Description |
|---|---|---|---|
filerequired | File | - | Die Audio-Datei. MP3, WAV, M4A, OGG, WEBM. |
mode | "transcript" | "meeting" | transcript | transcript oder meeting. Vorgabe transcript. |
speaker_detection | boolean | - | Sprechererkennung. Vorgabe an bei meeting, sonst aus. |
timestamps | boolean | - | Abschnitte mit Millisekunden. Bei Sprechererkennung immer an. |
language | string | - | ISO-639-1, oder weglassen bzw. auto für Erkennung nach der Transkription. |
prompt | string | - | Kurzer Hinweis an die Erkennung, höchstens 1000 Zeichen. |
context_bias | string | - | Kommagetrennte Begriffe, damit Namen richtig geschrieben werden. Höchstens 100 Tokens. |
anonymize | boolean | false | Danach durch die Anonymisierung schicken. Unterstützt de, en, fr, es, it. |
{
"id": "11111111-1111-4111-8111-111111111111",
"job_id": "11111111-1111-4111-8111-111111111111",
"status": "processing",
"mode": "transcript",
"title": "standup.m4a",
"filename": "standup.m4a",
"message": "Audio submitted for transcription. Poll GET /api/v1/transcriptions/:id until status is completed or failed."
}| 401 | UNAUTHORIZED | Kein gültiger Schlüssel und keine Sitzung. |
| 400 | NO_FILE | Im Formular fehlt das Feld file. |
| 400 | INVALID_FORMAT | Kein unterstütztes Audioformat. |
| 400 | FILE_TOO_LARGE | Die Datei überschreitet das Limit des gewählten Modus. |
| 429 | RATE_LIMIT | Zu viele Uploads in dieser Minute. |
1curl -X POST "https://app.anymize.ai/api/v1/transcriptions" \2 -H "Authorization: Bearer YOUR_API_KEY" \3 -F "file=@standup.m4a" \4 -F "mode=transcript" \5 -F "language=de" Auftrag abrufen
Status, Text, Abschnitte und bei Meetings die Notizen. Audio-Bytes sind nicht enthalten.
Ein Transkriptionsauftrag
Liefert den aktuellen Stand. Poll, bis status completed oder failed ist. text ist null, solange es läuft.
/api/v1/transcriptions/:id{
"id": "11111111-1111-4111-8111-111111111111",
"job_id": "11111111-1111-4111-8111-111111111111",
"status": "completed",
"mode": "transcript",
"title": "standup.m4a",
"filename": "standup.m4a",
"language": "de",
"words": 12,
"duration_ms": 18400,
"has_audio": true,
"speaker_detection": false,
"anonymize": false,
"anonymization_applied": false,
"text": "Guten Morgen. Lasst uns mit dem Stand-up beginnen.",
"segments": [
{
"start_ms": 0,
"end_ms": 18400,
"speaker": "",
"text": "Guten Morgen. Lasst uns mit dem Stand-up beginnen."
}
],
"created_at": "2026-09-11T08: 15: 00.000Z"
}{
"id": "11111111-1111-4111-8111-111111111111",
"job_id": "11111111-1111-4111-8111-111111111111",
"status": "completed",
"mode": "meeting",
"title": "Q3 Planung",
"filename": "meeting.wav",
"language": "de",
"words": 842,
"duration_ms": 3120000,
"has_audio": true,
"speaker_detection": true,
"anonymize": false,
"anonymization_applied": false,
"text": "(((Speaker 1))) Guten Morgen. (((Speaker 2))) Danke, dass ihr da seid.",
"segments": [
{
"start_ms": 0,
"end_ms": 2100,
"speaker": "Speaker 1",
"text": "Guten Morgen."
},
{
"start_ms": 2200,
"end_ms": 5400,
"speaker": "Speaker 2",
"text": "Danke, dass ihr da seid."
}
],
"summaries": [
{
"template_key": "general",
"title": null,
"content": "Stand-up zur Q3-Planung. Naechster Schritt: Budget bis Freitag.",
"status": "completed",
"locale": "de"
}
],
"created_at": "2026-09-11T08: 15: 00.000Z"
}| 401 | UNAUTHORIZED | Kein gültiger Schlüssel und keine Sitzung. |
| 404 | NOT_FOUND | Kein Audio-Auftrag mit dieser ID, oder er gehört dir nicht. |
1curl "https://app.anymize.ai/api/v1/transcriptions/11111111 -1111 -4111 -8111 -111111111111 " \2 -H "Authorization: Bearer YOUR_API_KEY" Aufträge listen
Deine Audio-Transkriptionen, ohne den vollen Text. Den holst du per GET auf die einzelne ID.
Transkriptionen auflisten
Nur Audio-Jobs. Filtern nach mode und status. Ohne Text und ohne Segmente, damit die Liste klein bleibt.
/api/v1/transcriptionsQuery
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | "transcript" | "meeting" | - | Nur transcript (kind input oder live) oder nur meeting. |
status | string | - | processing, pending, completed oder failed. |
limit | integer | 50 | Anzahl pro Seite, höchstens 100. |
offset | integer | 0 | Offset für die nächste Seite. |
{
"data": [
{
"id": "11111111-1111-4111-8111-111111111111",
"job_id": "11111111-1111-4111-8111-111111111111",
"status": "completed",
"mode": "transcript",
"title": "standup.m4a",
"filename": "standup.m4a",
"language": "de",
"words": 12,
"created_at": "2026-09-11T08: 15: 00.000Z"
}
],
"total": 1
}| 401 | UNAUTHORIZED | Kein gültiger Schlüssel und keine Sitzung. |
1curl "https://app.anymize.ai/api/v1/transcriptions?mode=transcript&limit=20 " \2 -H "Authorization: Bearer YOUR_API_KEY" Modi und Grenzen
Welchen Modus du wählst, entscheidet, was nach der Erkennung passiert, nicht die Qualität des Texts.
transcript speichert nur den Text. Keine automatischen Notizen, kein Meeting-Titel.
meeting erkennt Sprecher standardmäßig, vergibt einen Titel und erzeugt die Standard-Zusammenfassung.
Formate: MP3, WAV, M4A, OGG, WEBM. Transkripte bis 100 MB, Meetings bis 250 MB. Rate Limit: 50 Uploads pro Minute.
1curl -X POST "https://app.anymize.ai/api/v1/transcriptions" \2 -H "Authorization: Bearer YOUR_API_KEY" \3 -F "file=@meeting.wav" \4 -F "mode=meeting" \5 -F "speaker_detection=true" \6 -F "timestamps=true" Alias /api/transcribe
Der ältere Endpunkt bleibt. Er startet dieselbe Engine und antwortet mit der historischen 202-Form, damit bestehende Clients weiter /api/status/:id pollen.
Legacy-Upload, gleiche Engine
Nur API-Schlüssel, kein Session-Cookie. Dieselben Formularfelder wie POST /api/v1/transcriptions, inklusive mode.
/api/transcribeRequest: multipart/form-data
Body
| Parameter | Type | Default | Description |
|---|---|---|---|
filerequired | File | - | Die Audio-Datei. MP3, WAV, M4A, OGG, WEBM. |
mode | "transcript" | "meeting" | - | transcript oder meeting. Vorgabe transcript. |
speaker_detection | boolean | - | Sprechererkennung. Vorgabe an bei meeting, sonst aus. |
timestamps | boolean | - | Abschnitte mit Millisekunden. Bei Sprechererkennung immer an. |
language | string | - | ISO-639-1, oder weglassen bzw. auto für Erkennung nach der Transkription. |
prompt | string | - | Kurzer Hinweis an die Erkennung, höchstens 1000 Zeichen. |
context_bias | string | - | Kommagetrennte Begriffe, damit Namen richtig geschrieben werden. Höchstens 100 Tokens. |
anonymize | boolean | false | Danach durch die Anonymisierung schicken. Unterstützt de, en, fr, es, it. |
{
"job_id": "11111111-1111-4111-8111-111111111111",
"status": "processing",
"message": "Audio submitted for transcription. Use /api/status/{job_id} to check status."
}1curl -X POST https://app.anymize.ai/api/transcribe \2 -H "Authorization: Bearer YOUR_API_KEY" \3 -F "file=@standup.mp3" \4 -F "language=de" Job Status
Endpunkt
Frage den aktuellen Status eines asynchronen Jobs ab.
/api/status/{jobId}Parameter
| Parameter | Type | Default | Description |
|---|---|---|---|
jobIdrequired | string | - | Die Job-ID, die du beim Erstellen des Jobs erhalten hast. |
Status-Werte
Ein Job durchläuft folgende Zustände:
Status: Verarbeitung
{
"job_id": "11111111-1111-4111-8111-111111111111",
"status": "processing"
}Status: Abgeschlossen
Bei abgeschlossenem Job enthält die Antwort das Ergebnis.
{
"job_id": "11111111-1111-4111-8111-111111111111",
"status": "completed",
"anonymized_text_raw": "Max [[Person-A1B2C3]] lives in [[Location-D4E5F6]].",
"original_text": "Max Mustermann lives in Berlin.",
"metadata": {
"filename": "document.pdf",
"language": "en",
"words": 6
}
}Status: Fehlgeschlagen
{
"job_id": "11111111-1111-4111-8111-111111111111",
"status": "failed"
}Polling-Strategie
Frage den Status in regelmäßigen Abständen ab, bis der Job fertig ist.
Tipp
1# Poll every 3 seconds until completed 2while true; do3 RESULT=$(curl -s https://app.anymize.ai/api/status/11111111 -1111 -4111 -8111 -111111111111 \4 -H "Authorization: Bearer YOUR_API_KEY" )5 STATUS=$(echo $RESULT | jq -r '.status' )6 echo "Status: $STATUS" 7 if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then8 echo $RESULT | jq .9 break10 fi11 sleep 3 12doneDokument Export
Endpunkt
Exportiere abgeschlossene Transkriptionen in verschiedenen Formaten.
/api/v1/jobs/{jobId}/exportParameter
Gib Job-ID, Format und optional eine Variante an.
| Parameter | Type | Default | Description |
|---|---|---|---|
jobIdrequired | string | - | Die Job-ID der abgeschlossenen Transkription. |
format | string | txt | Ausgabeformat: pdf oder txt. docx liefert HTTP 501. |
textType | string | anonymized | Variante des Exports (z.B. anonymisiert oder original). |
Verfügbare Formate
pdfPDF — Formatiertes Dokument mit Layout und Metadaten.txtTXT — Reiner Text ohne Formatierung.Response-Header
Der Download enthält passende Content-Type- und Content-Disposition-Header.
Content-Type: application/pdf
Content-Disposition: attachment; filename="document_anonymized.pdf"
Content-Length: 245832Export-Varianten
Wähle zwischen der originalen und der anonymisierten Version.
Tipp
Beispiel-Requests
1curl -OJ https://app.anymize.ai/api/v1/jobs/11111111 -1111 -4111 -8111 -111111111111 /export?format=pdf \2 -H "Authorization: Bearer YOUR_API_KEY" Fehlerfälle
DOCX liefert 501. Nicht gefundene Jobs liefern 404, nicht abgeschlossene Jobs 400.
{
"error": "DOCX export not yet implemented"
}{
"error": "Job not found"
}