Transkription
Audio-Dateien transkribieren, Job-Status abfragen und Dokumente exportieren.
Audio-Dateien transkribieren, Job-Status abfragen und Dokumente exportieren.
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.
Transkriptions-API
Auftrag abrufen
| 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. |
Eine Datei hochladen und die Erkennung starten. Die Antwort ist 202 mit der Job-ID.
/api/v1/transcriptionsmultipart/form-data mit der Datei und optionalen Schaltern. Das Transkript holst du später über GET.
| 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."
}Modi und Grenzen
1curl -X POST #0a3069">"https://app.anymize.ai/api/v1/transcriptions" \2 -H #0a3069">"Authorization: Bearer YOUR_API_KEY" \3 -F #0a3069">"file=@standup.m4a" \4 -F #0a3069">"mode=transcript" \5 -F #0a3069">"language=de"Status, Text, Abschnitte und bei Meetings die Notizen. Audio-Bytes sind nicht enthalten.
/api/v1/transcriptions/:idLiefert den aktuellen Stand. Poll, bis status completed oder failed ist. text ist null, solange es läuft.
{
"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"
}Auftrag abrufen
processing, pending, completed oder failed.
1curl #0a3069">"https://app.anymize.ai/api/v1/transcriptions/11111111-1111-4111-8111-111111111111" \2 -H #0a3069">"Authorization: Bearer YOUR_API_KEY"Deine Audio-Transkriptionen, ohne den vollen Text. Den holst du per GET auf die einzelne ID.
/api/v1/transcriptionsNur Audio-Jobs. Filtern nach mode und status. Ohne Text und ohne Segmente, damit die Liste klein bleibt.
| 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
}1curl #0a3069">"https://app.anymize.ai/api/v1/transcriptions?mode=transcript&limit=20" \2 -H #0a3069">"Authorization: Bearer YOUR_API_KEY"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.
Danach durch die Anonymisierung schicken. Unterstützt de, en, fr, es, it.
1curl -X POST #0a3069">"https://app.anymize.ai/api/v1/transcriptions" \2 -H #0a3069">"Authorization: Bearer YOUR_API_KEY" \3 -F #0a3069">"file=@meeting.wav" \4 -F #0a3069">"mode=meeting" \5 -F #0a3069">"speaker_detection=true" \6 -F #0a3069">"timestamps=true" \7 -F #0a3069">"anonymize=true"Der ältere Endpunkt bleibt. Er startet dieselbe Engine und antwortet mit der historischen 202-Form, damit bestehende Clients weiter /api/status/:id pollen.
/api/transcribeNur API-Schlüssel, kein Session-Cookie. Dieselben Formularfelder wie POST /api/v1/transcriptions, inklusive mode.
{
"job_id": "11111111-1111-4111-8111-111111111111",
"status": "processing",
"message": "Audio submitted for transcription. Use /api/status/{job_id} to check status."
}Legacy-Upload, gleiche Engine
1curl -X POST https://app.anymize.ai/api/transcribe \2 -H #0a3069">"Authorization: Bearer YOUR_API_KEY" \3 -F #0a3069">"file=@standup.mp3" \4 -F #0a3069">"language=de"Frage den aktuellen Status eines asynchronen Jobs ab.
/api/status/{jobId}| Parameter | Type | Default | Description |
|---|---|---|---|
jobIdrequired | string | - | Die Job-ID, die du beim Erstellen des Jobs erhalten hast. |
Ein Job durchläuft folgende Zustände:
{
"job_id": "job_abc123def456",
"status": "processing",
"progress": 45,
"created_at": "2025-01-15T10: 30: 00Z"
}Bei abgeschlossenem Job enthält die Antwort das Ergebnis.
{
"job_id": "job_abc123def456",
"status": "completed",
"result": {
"text": "The anonymized document content...",
"entities_found": 12,
"processing_time_ms": 2340
},
"created_at": "2025-01-15T10: 30: 00Z",
"completed_at": "2025-01-15T10: 30: 04Z"
}{
"job_id": "job_abc123def456",
"status": "failed",
"error": {
"message": "Unsupported file format",
"code": "invalid_format"
},
"created_at": "2025-01-15T10: 30: 00Z"
}Frage den Status in regelmäßigen Abständen ab, bis der Job fertig ist.
Tipp
1# Poll every 3 seconds until completed2while true; do3 RESULT=$(curl -s https://app.anymize.ai/api/status/job_abc123def456 \4 -H #0a3069">"Authorization: Bearer YOUR_API_KEY")5 STATUS=$(echo $RESULT | jq -r #0a3069">'.status')6 echo #0a3069">"Status: $STATUS"7 if [ #0a3069">"$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then8 echo $RESULT | jq .9 break10 fi11 sleep 312doneExportiere abgeschlossene Transkriptionen in verschiedenen Formaten.
/api/v1/jobs/{jobId}/exportGib Job-ID, Format und optional eine Variante an.
| Parameter | Type | Default | Description |
|---|---|---|---|
jobIdrequired | string | - | Die Job-ID der abgeschlossenen Transkription. |
format | string | pdf | Ausgabeformat: pdf, docx oder txt. |
textType | string | anonymized | Variante des Exports (z.B. anonymisiert oder original). |
pdfPDF — Formatiertes Dokument mit Layout und Metadaten.docxDOCX — Bearbeitbares Word-Dokument.txtTXT — Reiner Text ohne Formatierung.Der Download enthält passende Content-Type- und Content-Disposition-Header.
Content-Type: application/pdf
Content-Disposition: attachment; filename="document_anonymized.pdf"
Content-Length: 245832Wähle zwischen der originalen und der anonymisierten Version.
Tipp
1curl -OJ https://app.anymize.ai/api/v1/jobs/job_abc123def456/export?format=pdf \2 -H #0a3069">"Authorization: Bearer YOUR_API_KEY"1curl -OJ #0a3069">"https://app.anymize.ai/api/v1/jobs/job_abc123def456/export?format=docx&textType=original" \2 -H #0a3069">"Authorization: Bearer YOUR_API_KEY"Typische Fehler beim Export und deren Ursachen.
{
"error": {
"message": "Job not found or not yet completed",
"type": "not_found",
"code": "job_not_found"
}
}