> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.voicecheap.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Übersetzung starten

> Laden Sie eine Video- oder Audiodatei hoch und starten Sie ein neues Übersetzungsprojekt

# Übersetzung starten

Erstellen Sie ein neues Übersetzungsprojekt durch Hochladen einer Video- oder Audiodatei. Der Übersetzungsprozess läuft asynchron im Hintergrund. Verwenden Sie den [Status-Endpunkt](/docs/de/api-reference/translation-status), um den Fortschritt zu verfolgen und Ergebnisse abzurufen. Verwenden Sie [Projektdetails abrufen](/docs/de/api-reference/project-details), wenn Sie eine übersetzte Versionshistorie oder Lippensynchronisationshistorie benötigen.

## Gleichzeitige Ausführungsgrenze

Sie können bis zu 10 Übersetzungen gleichzeitig pro Konto ausführen. Wenn bereits 10 Übersetzungen laufen, geben neue Anfragen `CONCURRENT_TRANSLATION_LIMIT_REACHED` (HTTP 429) zurück.

## Anfrage

Dieser Endpunkt akzeptiert `multipart/form-data` mit einem Datei-Upload.

### Header

<ParamField header="x-api-key" type="string" required>
  Ihr VoiceCheap API-Schlüssel. Erhalten Sie einen von [app.voicecheap.ai/page-api](https://app.voicecheap.ai/page-api).
</ParamField>

### Body-Parameter

<ParamField body="file" type="file" required>
  Die zu übersetzende Video- oder Audiodatei.

  **Unterstützte Videoformate:** `video/mp4`, `video/quicktime`, `video/x-matroska`, `video/webm`, `video/mpeg`

  **Unterstützte Audioformate:** `audio/mpeg`, `audio/wav`, `audio/mp4`, `audio/x-m4a`, `audio/flac`, `audio/ogg`, `audio/aac`, `audio/webm`

  **Maximale Dateigröße nach Plan:** Beginner 5 GB, Starter 10 GB, Creator 20 GB, Pro 30 GB, Scale 40 GB und Enterprise 60 GB.
</ParamField>

<ParamField body="targetLanguage" type="string" required>
  Die Sprache, in die der Inhalt übersetzt werden soll. Muss kleingeschrieben sein.

  **Zulässige Werte (70+):** `afrikaans`, `albanian`, `amharic`, `arabic`, `armenian`, `assamese`, `azerbaijani`, `basque`, `belarusian`, `bengali`, `bosnian`, `bulgarian`, `catalan`, `croatian`, `czech`, `danish`, `dutch`, `english`, `british english`, `estonian`, `finnish`, `french`, `french canadian`, `galician`, `german`, `greek`, `gujarati`, `hebrew`, `hindi`, `hungarian`, `icelandic`, `indonesian`, `irish`, `italian`, `japanese`, `kannada`, `kazakh`, `khmer`, `korean`, `lao`, `latvian`, `lithuanian`, `macedonian`, `malay`, `malayalam`, `mandarin`, `marathi`, `mongolian`, `nepali`, `norwegian`, `persian`, `polish`, `portuguese`, `brazilian portuguese`, `punjabi`, `romanian`, `russian`, `serbian`, `slovak`, `slovenian`, `spanish`, `swahili`, `swedish`, `tagalog`, `tamil`, `telugu`, `thai`, `turkish`, `ukrainian`, `urdu`, `vietnamese`, `welsh`, `yoruba`, `zulu`
</ParamField>

<ParamField body="originalLanguage" type="string">
  Die Quellsprache des Inhalts unter Verwendung von ISO-Sprachcodes (z. B. `en`, `es`, `fr`, `de`, `ja`, `zh`).

  <Warning>
    **Dringend empfohlen: Lassen Sie dies für die automatische Erkennung leer.**

    Geben Sie diesen Parameter nur an, wenn Sie zu 100 % sicher sind, dass der Sprachcode korrekt ist und im gültigen ISO-Format vorliegt. Falsche Sprachcodes führen zu Transkriptionsfehlern. Unsere automatische Erkennung unterstützt über 80 Sprachen und ist hochpräzise.
  </Warning>

  **Standard:** `auto-detect`
</ParamField>

<ParamField body="projectName" type="string">
  Ein benutzerdefinierter Name für das Projekt. Nützlich zur Identifizierung von Projekten in Ihrem Dashboard.

  **Standard:** Die Projekt-ID wird verwendet, falls keine Angabe gemacht wird.
</ParamField>

<ParamField body="webhookUrl" type="string">
  Ein https-Endpunkt, der die [Webhook-Ereignisse](/docs/de/api-reference/webhooks) für dieses Projekt empfängt,
  und den für Ihr Konto konfigurierten Endpunkt überschreibt.

  **Standard:** Der Webhook-Endpunkt des Kontos, sofern einer konfiguriert ist.
</ParamField>

<ParamField body="numberOfSpeakers" type="string">
  `auto-detect` oder eine Ganzzahl von `1` bis `32`. Eine bekannte Sprecheranzahl kann die Diarisierung verbessern.

  **Standard:** `auto-detect`
</ParamField>

<ParamField body="brandVocabulary" type="string">
  Ein JSON-String-Array von anfragespezifischen Namen, Marken, Akronymen oder Fachbegriffen. Diese Begriffe werden mit dem gespeicherten Konto- oder Team-Glossar zusammengeführt.
</ParamField>

<ParamField body="removeFillerWords" type="boolean">
  Entfernen Sie häufige Füllwörter aus dem Quelltranskript vor der Übersetzung.

  **Standard:** `true`
</ParamField>

<ParamField body="sourceSrt" type="string">
  Ein vorhandenes SRT-Transkript in der Quellsprache. `originalLanguage` muss explizit angegeben werden, wenn dieses Feld bereitgestellt wird.
</ParamField>

<ParamField body="keepBackgroundMusic" type="boolean">
  Ob das Hintergrundaudio in der Ausgabe beibehalten werden soll.

  Wenn aktiviert, bleiben Hintergrundmusik, Umgebungsgeräusche, Lachen, Klatschen und Publikumsgeräusche erhalten, während nur die Originalstimme entfernt wird (Stems-Trennung). Deaktivieren Sie dies, wenn Ihre Quelle kein Hintergrundaudio enthält.

  **Standard:** `true`
</ParamField>

<ParamField body="keepOriginalVoice" type="boolean">
  Behalten Sie den ursprünglichen Sprecher leise unter der übersetzten Stimme bei.

  **Standard:** `false`
</ParamField>

<ParamField body="originalVoiceVolume" type="number">
  Lautstärke der Originalstimme von `1` bis `70`, wenn `keepOriginalVoice` aktiviert ist.

  **Standard:** `30`
</ParamField>

<ParamField body="voiceIsolatorOption" type="string">
  Stimmisolationsmodus, wenn `keepBackgroundMusic` aktiviert ist. Steuert die Qualität und Eigenschaften der Stimmtrennung.

  <Accordion title="Studio (Empfohlen)">
    Unsere Standard-Stimmverarbeitung, entwickelt für professionelle Audioqualität:

    * Entfernt Echos und Nachhall
    * Bereinigt technische Unvollkommenheiten
    * Erzeugt eine klare und deutliche Stimme

    **Empfohlen für:** Die meisten Projekte, bei denen Audioqualität oberste Priorität hat. Ideal für Tutorials, Bildungsinhalte, Marketingvideos und alle Inhalte, die eine optimale Stimmklarheit erfordern.
  </Accordion>

  <Accordion title="Realistisch">
    Bewahrt die natürlichen Eigenschaften der Aufnahmeumgebung:

    * Behält einen Klang bei, der der Originalaufnahme näher kommt
    * Bewahrt Umgebungseigenschaften

    **Empfohlen für:** Inhalte, bei denen die Authentizität der Umgebung wichtig ist, wie z. B. Outdoor-Vlogs, Dokumentationen oder Inhalte, bei denen das Klangambiente ein wesentlicher Bestandteil des Erlebnisses ist.

    <Warning>Diese Option kann in einigen Fällen aufgrund der Bewahrung von Hintergrundelementen Artefakte oder unerwartete Effekte erzeugen.</Warning>
  </Accordion>

  **Zulässige Werte:** `studio`, `realistic`

  **Standard:** `studio`
</ParamField>

<ParamField body="subtitles" type="boolean">
  Ob Untertitel für das übersetzte Video generiert werden sollen.

  Wenn aktiviert, werden saubere Untertitel im Netflix-Stil in Schwarz-Weiß hinzugefügt. Verwenden Sie `subtitlesSource`, um zwischen Originaltext (Quellsprache) oder übersetztem Text (Zielsprache) zu wählen. Untertitel werden automatisch für optimale Lesbarkeit synchronisiert.

  **Hinweis:** Eingebrannte Untertitel erfordern FFmpeg mit dem `subtitles`-Filter (libass). Falls nicht verfügbar, greift die API stattdessen auf das Einbetten einer Untertitelspur zurück, anstatt ein fest eingebranntes Styling zu verwenden.

  **Standard:** `false`
</ParamField>

<ParamField body="subtitlesSource" type="string">
  Wählen Sie die Untertitel-Textquelle, wenn `subtitles` aktiviert ist.

  **Zulässige Werte:** `translated`, `original`

  **Standard:** `translated`

  **Hinweis:** Wenn `original` ausgewählt ist, aber die ursprüngliche Transkription nicht verfügbar ist, greifen die Untertitel auf `translated` zurück.
</ParamField>

<ParamField body="lipSyncMode" type="string">
  Löst die Lippensynchronisation-Verarbeitung nach Abschluss der Synchronisation aus.

  * `standard` = Lip Sync
  * `pro` = Lip Sync Pro
  * `studio` = Lip Sync Studio

  Premium-Modi erzwingen ihre normalen Plan-, Dauer- und Guthabenanforderungen.

  **Standard:** Lassen Sie das Feld weg, um die Lippensynchronisation zu überspringen.
</ParamField>

<ParamField body="activeSpeakerDetectionEnabled" type="boolean">
  Aktivieren Sie die Erkennung aktiver Sprecher für den angeforderten Lippensynchronisation-Durchlauf.

  **Standard:** `false`
</ParamField>

<ParamField body="lipsyncPro" type="boolean">
  Legacy-Lippensynchronisation-Auswahl für Abwärtskompatibilität beibehalten.

  * `false` = Standard-Lippensynchronisation (**4 Minuten Guthaben pro 1 Minute Video**)
  * `true` = Lip Sync Pro (**9 Minuten Guthaben pro 1 Minute Video**)

  Lip Sync Pro ist ab dem Creator-Plan verfügbar.

  <Warning>
    **Maximale Dauer:** 30 Minuten pro Video.

    **Latenz:** Die Lippensynchronisation-Verarbeitung fügt normalerweise das **2- bis 4-fache** der ursprünglichen Videodauer hinzu.
  </Warning>

  <Info>
    E-Mails zum Abschluss oder Fehler der Lippensynchronisation werden für API-ausgelöste Anfragen nicht gesendet. Verwenden Sie den [Status-Endpunkt](/docs/de/api-reference/translation-status), um
    den Fortschritt zu verfolgen.
  </Info>

  **Standard:** nicht aktiviert (lassen Sie das Feld weg, um die Lippensynchronisation zu überspringen)

  **Form-data:** Senden Sie boolesche Werte als `true`- oder `false`-Strings (z. B. `-F "lipsyncPro=false"`).

  <Warning>Kombinieren Sie `lipsyncPro` nicht mit einem widersprüchlichen `lipSyncMode`.</Warning>
</ParamField>

<ParamField body="voiceMode" type="string">
  Sprachstrategie: `cloning` oder `custom`.

  **Standard:** `cloning`
</ParamField>

<ParamField body="voiceId" type="string">
  Erforderlich, wenn `voiceMode` auf `custom` gesetzt ist. Die Stimme muss dem effektiven Projektinhaber gehören. Beliebige oder nicht zugeordnete Sprach-IDs werden abgelehnt.
</ParamField>

<ParamField body="voiceCloningSettings" type="object">
  Feinabstimmung der Parameter für das Stimmklonen für eine erweiterte Kontrolle über die generierte Stimme. Übergeben Sie dies als JSON-String bei Verwendung von form-data. Alle Werte müssen zwischen 0 und 1 liegen (mit einer Schrittweite von 0,01).

  <Info>Diese Einstellungen gelten nur, wenn `voiceMode` auf `cloning` gesetzt ist.</Info>

  <Expandable title="Eigenschaften der Stimmklonen-Einstellungen">
    <ParamField body="stability" type="number" default="0.60" placeholder="0.60">
      **Stimmstabilität (0,00 - 1,00)**

      Bestimmt, wie stabil die Stimme ist und die Zufälligkeit zwischen jeder Generierung.

      * **Niedrigere Werte** ermöglichen eine größere emotionale Bandbreite, können aber zu seltsamer oder gehetzter Sprache führen
      * **Höhere Werte** erzeugen ein konsistenteres Ergebnis, können aber monoton klingen

      **Standard:** `0.60`

      **Tipp:** Um die Wiedergabe von Akzenten zu vermeiden, verwenden Sie `0.80`
    </ParamField>

    <ParamField body="similarity" type="number" default="0.85" placeholder="0.85">
      **Stimmähnlichkeit (0,00 - 1,00)**

      Steuert, wie genau die KI an der Originalstimme festhält.

      * **Höhere Werte** machen die geklonte Stimme ähnlicher zum Original
      * Wenn das Originalaudio verrauscht ist und die Ähnlichkeit zu hoch eingestellt ist, können Artefakte oder Hintergrundgeräusche in die generierte Stimme übertragen werden

      **Standard:** `0.85`

      **Tipp:** Um die Wiedergabe von Akzenten zu vermeiden, verwenden Sie `0.20`
    </ParamField>

    <ParamField body="speakerBoost" type="number" default="0.60" placeholder="0.60">
      **Sprecherverstärkung (0,00 - 1,00)**

      Verstärkt die Ähnlichkeit zum ursprünglichen Sprecher. Dies ist eine subtile Verbesserung, die die Ähnlichkeit zur Quellstimme erhöht.

      **Hinweis:** Höhere Werte erhöhen die Rechenzeit und Latenz.

      **Standard:** `0.60`

      **Tipp:** Um die Wiedergabe von Akzenten zu vermeiden, verwenden Sie `0.00`
    </ParamField>
  </Expandable>

  **Standardwerte (ausgewogen):**

  ```json theme={null}
  {
    "stability": 0.6,
    "similarity": 0.85,
    "speakerBoost": 0.6
  }
  ```

  **Empfohlen zur Vermeidung der Wiedergabe von Akzenten:**

  ```json theme={null}
  {
    "stability": 0.8,
    "similarity": 0.2,
    "speakerBoost": 0.0
  }
  ```
</ParamField>

<ParamField body="translationTimeSkips" type="string">
  Ein JSON-Array von Quellzeitbereichen, die in der Originalsprache verbleiben sollten.

  ```json theme={null}
  [
    { "startTime": 10.2, "endTime": 12.8 }
  ]
  ```

  Zeitübersprünge erfordern Videoeingabe und `keepBackgroundMusic=true`. Sie können nicht mit `keepOriginalVoice` kombiniert werden und dürfen sich nicht mit Transkriptsegmenten überschneiden.
</ParamField>

## Antwort

<ResponseField name="success" type="boolean" required>
  Immer `true` bei erfolgreichen Anfragen
</ResponseField>

<ResponseField name="message" type="string" required>
  Eine für Menschen lesbare Nachricht, die das Ergebnis beschreibt
</ResponseField>

<ResponseField name="projectId" type="string" required>
  Die eindeutige Kennung für das erstellte Synchronisationsprojekt. Verwenden Sie diese ID, um den Status zu überprüfen.
</ResponseField>

<ResponseField name="estimatedDuration" type="number" required>
  Grobe Verarbeitungsschätzung in Minuten. Die aktuelle Schätzung liegt bei fünf Minuten Verarbeitungszeit pro begonnener Minute Quellmedium.
</ResponseField>

## Beispiele

<Info>
  Gespeicherte Glossar-Regeln und benutzerdefinierte Synchronisationsanweisungen des aktiven Kontos oder Teams werden automatisch angewendet.
</Info>

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.voicecheap.ai/v1/translate \
    -H "x-api-key: vc_your-api-key" \
    -F "file=@video.mp4" \
    -F "targetLanguage=spanish" \
    -F "projectName=My Spanish Translation" \
    -F "numberOfSpeakers=2" \
    -F 'brandVocabulary=["VoiceCheap","SmartSync"]' \
    -F "removeFillerWords=true" \
    -F "keepBackgroundMusic=true" \
    -F "keepOriginalVoice=false" \
    -F "voiceIsolatorOption=studio" \
    -F "subtitles=true" \
    -F "subtitlesSource=translated" \
    -F "lipSyncMode=standard" \
    -F "activeSpeakerDetectionEnabled=true"
  ```

  ```typescript TypeScript theme={null}
  interface StartTranslationResponse {
    success: boolean;
    message: string;
    projectId: string;
    estimatedDuration: number;
  }

  interface VoiceCloningSettings {
    stability: number; // 0.00 - 1.00
    similarity: number; // 0.00 - 1.00
    speakerBoost: number; // 0.00 - 1.00
  }

  interface StartTranslationRequest {
    targetLanguage: string;
    originalLanguage?: string;
    projectName?: string;
    numberOfSpeakers?: 'auto-detect' | string;
    brandVocabulary?: string[];
    removeFillerWords?: boolean;
    keepBackgroundMusic?: boolean;
    keepOriginalVoice?: boolean;
    originalVoiceVolume?: number;
    voiceMode?: 'cloning' | 'custom';
    voiceId?: string;
    voiceIsolatorOption?: 'studio' | 'realistic';
    subtitles?: boolean;
    subtitlesSource?: 'translated' | 'original';
    lipSyncMode?: 'standard' | 'pro' | 'studio';
    activeSpeakerDetectionEnabled?: boolean;
    voiceCloningSettings?: VoiceCloningSettings;
    translationTimeSkips?: Array<{ startTime: number; endTime: number }>;
  }

  async function startTranslation(
    file: File,
    targetLanguage: string,
    options?: {
      originalLanguage?: string;
      projectName?: string;
      numberOfSpeakers?: 'auto-detect' | string;
      brandVocabulary?: string[];
      removeFillerWords?: boolean;
      keepBackgroundMusic?: boolean;
      keepOriginalVoice?: boolean;
      originalVoiceVolume?: number;
      voiceMode?: 'cloning' | 'custom';
      voiceId?: string;
      voiceIsolatorOption?: 'studio' | 'realistic';
      subtitles?: boolean;
      subtitlesSource?: 'translated' | 'original';
      lipSyncMode?: 'standard' | 'pro' | 'studio';
      activeSpeakerDetectionEnabled?: boolean;
      voiceCloningSettings?: VoiceCloningSettings;
      translationTimeSkips?: Array<{ startTime: number; endTime: number }>;
    },
  ): Promise<StartTranslationResponse> {
    const formData = new FormData();
    formData.append('file', file);
    formData.append('targetLanguage', targetLanguage);

    if (options?.projectName) {
      formData.append('projectName', options.projectName);
    }
    if (options?.originalLanguage) {
      formData.append('originalLanguage', options.originalLanguage);
    }
    if (options?.numberOfSpeakers) {
      formData.append('numberOfSpeakers', options.numberOfSpeakers);
    }
    if (options?.brandVocabulary) {
      formData.append('brandVocabulary', JSON.stringify(options.brandVocabulary));
    }
    if (options?.removeFillerWords !== undefined) {
      formData.append('removeFillerWords', String(options.removeFillerWords));
    }
    if (options?.keepBackgroundMusic !== undefined) {
      formData.append('keepBackgroundMusic', String(options.keepBackgroundMusic));
    }
    if (options?.keepOriginalVoice !== undefined) {
      formData.append('keepOriginalVoice', String(options.keepOriginalVoice));
    }
    if (options?.originalVoiceVolume !== undefined) {
      formData.append('originalVoiceVolume', String(options.originalVoiceVolume));
    }
    if (options?.voiceMode) {
      formData.append('voiceMode', options.voiceMode);
    }
    if (options?.voiceId) {
      formData.append('voiceId', options.voiceId);
    }
    if (options?.voiceIsolatorOption) {
      formData.append('voiceIsolatorOption', options.voiceIsolatorOption);
    }
    if (options?.subtitles !== undefined) {
      formData.append('subtitles', String(options.subtitles));
    }
    if (options?.subtitlesSource) {
      formData.append('subtitlesSource', options.subtitlesSource);
    }
    if (options?.lipSyncMode) {
      formData.append('lipSyncMode', options.lipSyncMode);
    }
    if (options?.activeSpeakerDetectionEnabled !== undefined) {
      formData.append('activeSpeakerDetectionEnabled', String(options.activeSpeakerDetectionEnabled));
    }
    if (options?.voiceCloningSettings) {
      formData.append('voiceCloningSettings', JSON.stringify(options.voiceCloningSettings));
    }
    if (options?.translationTimeSkips) {
      formData.append('translationTimeSkips', JSON.stringify(options.translationTimeSkips));
    }

    const response = await fetch('https://api.voicecheap.ai/v1/translate', {
      method: 'POST',
      headers: {
        'x-api-key': 'vc_your-api-key',
      },
      body: formData,
    });

    if (!response.ok) {
      const error = await response.json();
      throw new Error(error.message || 'Translation failed');
    }

    return response.json();
  }

  // Usage example
  const file = document.querySelector<HTMLInputElement>('#fileInput')?.files?.[0];
  if (file) {
    const result = await startTranslation(file, 'spanish', {
      projectName: 'My Spanish Translation',
      keepBackgroundMusic: true,
      voiceIsolatorOption: 'studio',
      subtitles: true,
      subtitlesSource: 'translated',
      voiceCloningSettings: {
        stability: 0.6,
        similarity: 0.85,
        speakerBoost: 0.6,
      },
    });
    console.log('Project ID:', result.projectId);
  }
  ```

  ```javascript JavaScript theme={null}
  const formData = new FormData();
  formData.append('file', videoFile);
  formData.append('targetLanguage', 'spanish');
  formData.append('projectName', 'My Spanish Translation');
  formData.append('keepBackgroundMusic', 'true');
  formData.append('voiceIsolatorOption', 'studio');
  formData.append('subtitles', 'true');
  formData.append('subtitlesSource', 'translated');
  formData.append(
    'voiceCloningSettings',
    JSON.stringify({
      stability: 0.6,
      similarity: 0.85,
      speakerBoost: 0.6,
    }),
  );

  const response = await fetch('https://api.voicecheap.ai/v1/translate', {
    method: 'POST',
    headers: {
      'x-api-key': 'vc_your-api-key',
    },
    body: formData,
  });

  const data = await response.json();
  console.log('Project ID:', data.projectId);
  ```

  ```python Python theme={null}
  import requests
  import json

  files = {'file': open('video.mp4', 'rb')}
  data = {
      'targetLanguage': 'spanish',
      'projectName': 'My Spanish Translation',
      'keepBackgroundMusic': 'true',
      'voiceIsolatorOption': 'studio',
      'subtitles': 'true',
      'subtitlesSource': 'translated',
      'voiceCloningSettings': json.dumps({
          'stability': 0.60,
          'similarity': 0.85,
          'speakerBoost': 0.60
      })
  }
  headers = {'x-api-key': 'vc_your-api-key'}

  response = requests.post(
      'https://api.voicecheap.ai/v1/translate',
      headers=headers,
      files=files,
      data=data
  )

  result = response.json()
  print(f"Project ID: {result['projectId']}")
  ```

  ```php PHP theme={null}
  <?php
  $curl = curl_init();

  $voiceCloningSettings = json_encode([
      'stability' => 0.60,
      'similarity' => 0.85,
      'speakerBoost' => 0.60
  ]);

  $postFields = [
      'file' => new CURLFile('video.mp4'),
      'targetLanguage' => 'spanish',
      'projectName' => 'My Spanish Translation',
      'keepBackgroundMusic' => 'true',
      'voiceIsolatorOption' => 'studio',
      'subtitles' => 'true',
      'subtitlesSource' => 'translated',
      'voiceCloningSettings' => $voiceCloningSettings
  ];

  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://api.voicecheap.ai/v1/translate',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_POSTFIELDS => $postFields,
      CURLOPT_HTTPHEADER => [
          'x-api-key: vc_your-api-key'
      ]
  ]);

  $response = curl_exec($curl);
  $result = json_decode($response, true);
  echo "Project ID: " . $result['projectId'];
  ```
</CodeGroup>

## Antwortbeispiel

```json theme={null}
{
  "success": true,
  "message": "Translation started successfully. Use the status endpoint to track progress.",
  "projectId": "abc123-def456-ghi789",
  "estimatedDuration": 15
}
```

## Fehler

| Status | Code                                            | Beschreibung                                                                                   |
| ------ | ----------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| 400    | `FILE_REQUIRED`                                 | Es wurde keine Datei mit der Anfrage hochgeladen                                               |
| 400    | `INVALID_FILE_TYPE`                             | Der hochgeladene Dateityp wird nicht unterstützt                                               |
| 400    | `DURATION_DETECTION_FAILED`                     | Die Dauer der hochgeladenen Datei konnte nicht ermittelt werden                                |
| 400    | `INVALID_MULTIPART_REQUEST`                     | Multipart-Formulardaten sind fehlerhaft oder überschreiten Feldgrenzen                         |
| 400    | `INVALID_BOOLEAN_VALUE`                         | Ein boolescher Parameter hat einen ungültigen Wert (verwenden Sie "true" oder "false")         |
| 400    | `INVALID_JSON_FORMAT`                           | Das voiceCloningSettings JSON ist fehlerhaft                                                   |
| 400    | `INVALID_BRAND_VOCABULARY`                      | Ein anfragespezifischer Glossar-Eintrag ist ungültig                                           |
| 400    | `INVALID_SOURCE_SRT`                            | Die bereitgestellte Quell-SRT ist fehlerhaft                                                   |
| 400    | `SOURCE_LANGUAGE_REQUIRED_FOR_SRT`              | sourceSrt erfordert eine explizite originalLanguage                                            |
| 400    | `VOICE_ID_REQUIRED`                             | Der Modus für benutzerdefinierte Stimmen wurde ohne eine Stimmen-ID ausgewählt                 |
| 400    | `VOICE_ID_NOT_ALLOWED_WITH_CLONING`             | Eine Stimmen-ID wurde mit Stimmklonen kombiniert                                               |
| 400    | `VOICE_CLONING_SETTINGS_NOT_ALLOWED`            | Klon-Einstellungen wurden mit dem Modus für benutzerdefinierte Stimmen kombiniert              |
| 400    | `CONFLICTING_LIPSYNC_OPTIONS`                   | lipSyncMode steht im Konflikt mit dem veralteten lipsyncPro                                    |
| 400    | `TRANSLATION_TIME_SKIP_CONFLICT`                | Zeitübersprünge stehen im Konflikt mit einer anderen Audio-Option                              |
| 400    | `TRANSLATION_TIME_SKIP_REQUIRES_BACKGROUND`     | Zeitübersprünge erfordern Hintergrundaudio                                                     |
| 400    | `TRANSLATION_TIME_SKIP_OUT_OF_RANGE`            | Ein Zeitübersprung reicht über die Mediendauer hinaus                                          |
| 400    | `INVALID_TRANSLATION_TIME_SKIPS`                | Ein Zeitübersprung überschneidet sich mit einem Transkriptionssegment                          |
| 400    | `SUBTITLES_NOT_AVAILABLE_FOR_AUDIO`             | Eingebrannte Untertitel wurden für Audio-Input angefordert                                     |
| 400    | `LIPSYNC_NOT_AVAILABLE_FOR_AUDIO`               | Lippensynchronisation wurde für Audio-Input angefordert                                        |
| 400    | `TRANSLATION_TIME_SKIP_NOT_AVAILABLE_FOR_AUDIO` | Zeitübersprünge wurden für Audio-Input angefordert                                             |
| 400    | `LIPSYNC_VIDEO_TOO_LONG`                        | Lippensynchronisation wurde für Medien angefordert, die länger als die unterstützte Dauer sind |
| 413    | `FILE_TOO_LARGE`                                | Die hochgeladene Datei überschreitet das Plan-Limit des Benutzers                              |
| 401    | `MISSING_API_KEY`                               | API-Schlüssel ist erforderlich                                                                 |
| 401    | `INVALID_API_KEY_FORMAT`                        | API-Schlüssel muss mit `vc_` beginnen                                                          |
| 401    | `INVALID_API_KEY`                               | Der bereitgestellte API-Schlüssel ist ungültig                                                 |
| 403    | `API_ACCESS_REQUIRED`                           | API-Zugriff ist für dieses Konto erforderlich                                                  |
| 403    | `SUBSCRIPTION_REQUIRED`                         | API-Zugriff erfordert ein kostenpflichtiges Abonnement                                         |
| 403    | `INSUFFICIENT_CREDITS`                          | Nicht genügend Credits, um diese Datei zu verarbeiten                                          |
| 403    | `CUSTOM_VOICE_ACCESS_DENIED`                    | Die benutzerdefinierte Stimme gehört nicht dem effektiven Projekteigentümer                    |
| 403    | `LIPSYNC_MODE_ACCESS_DENIED`                    | Der Premium-Lippensynchronisationsmodus ist im aktuellen Plan nicht verfügbar                  |
| 429    | `RATE_LIMIT_EXCEEDED`                           | Zu viele Anfragen (Limit: 10 Anfragen pro Minute)                                              |
| 429    | `CONCURRENT_TRANSLATION_LIMIT_REACHED`          | Zu viele Synchronisationen in Bearbeitung (Limit: 10 gleichzeitige Synchronisationen)          |
