> ## 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.

# Projektdetails abrufen

> Öffentliche Projektdetails, Verlauf der übersetzten Versionen und Verlauf der Lippensynchronisation abrufen

# Projektdetails abrufen

Abrufen einer normalisierten öffentlichen Ansicht eines Projekts. Verwenden Sie diesen Endpunkt, wenn Sie den Verlauf der übersetzten Versionen, den Verlauf der Lippensynchronisation, den Status der dynamischen Untertitel oder den Veröffentlichungsstatus benötigen.

Für häufiges Abfragen verwenden Sie weiterhin [Übersetzungsstatus abrufen](/docs/de/api-reference/translation-status). Dieser Endpunkt ist umfangreicher und liefert absichtlich mehr Daten.

## Anfrage

### 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>

### Pfadparameter

<ParamField path="projectId" type="string" required>
  Die eindeutige Kennung des Projekts, die von [Projekt erstellen](/docs/de/api-reference/create-project) oder [Übersetzung starten](/docs/de/api-reference/translate) zurückgegeben wird.
</ParamField>

## Antwort

<ResponseField name="projectId" type="string" required>
  Die eindeutige Kennung des Projekts.
</ResponseField>

<ResponseField name="projectName" type="string" required>
  Der Projektname.
</ResponseField>

<ResponseField name="status" type="string" required>
  Öffentlicher Projektstatus: `processing`, `success` oder `failed`.
</ResponseField>

<ResponseField name="workflow" type="string" required>
  API-Workflow: `translation` oder `transcription`. Transkriptions-Workflows erreichen den Erfolg, wenn die Quelltranskription abgeschlossen ist.
</ResponseField>

<ResponseField name="originalVideoUrl" type="string" required>
  URL zur ursprünglich hochgeladenen Video- oder Audiodatei.
</ResponseField>

<ResponseField name="originalLanguage" type="string" required>
  Die erkannte oder angegebene Originalsprache.
</ResponseField>

<ResponseField name="targetLanguages" type="string[]" required>
  Zielsprachen, die mit dem Projekt verknüpft sind.
</ResponseField>

<ResponseField name="duration" type="number" required>
  Dauer des Inhalts in Sekunden.
</ResponseField>

<ResponseField name="createdAt" type="number" required>
  Unix-Zeitstempel, wann das Projekt erstellt wurde.
</ResponseField>

<ResponseField name="progress" type="object" required>
  Aktueller Fortschritt auf Projektebene.

  <Expandable title="Fortschrittseigenschaften">
    <ResponseField name="progress.step" type="string">
      Aktueller Schritt der Projekterstellung oder Transkription.
    </ResponseField>

    <ResponseField name="progress.transcriptionProgress" type="number">
      Ungefährer Prozentsatz des Fortschritts bei der Projekterstellung/Transkription.
    </ResponseField>

    <ResponseField name="progress.transcriptionStatus" type="string" required>
      Status der Quelltranskription: `processing`, `success` oder `failed`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="translations" type="array" required>
  Verlauf der übersetzten Versionen, sortiert mit der neuesten Version zuerst.

  <Expandable title="Übersetzungseigenschaften">
    <ResponseField name="translations[].workId" type="string">
      Kennung der Übersetzungsarbeit.
    </ResponseField>

    <ResponseField name="translations[].translatedVersionId" type="string">
      Kennung der übersetzten Version.
    </ResponseField>

    <ResponseField name="translations[].targetLanguage" type="string">
      Zielsprache für diese Version.
    </ResponseField>

    <ResponseField name="translations[].status" type="string">
      Status der Übersetzungsversion: `in-progress`, `completed`, `not-started` oder `failed`.
    </ResponseField>

    <ResponseField name="translations[].currentStep" type="string">
      Aktueller Synchronisationsschritt für diese Version.
    </ResponseField>

    <ResponseField name="translations[].progress" type="number">
      Ungefährer Prozentsatz des Synchronisationsfortschritts.
    </ResponseField>

    <ResponseField name="translations[].createdAt" type="number">
      Zeitstempel, wann diese übersetzte Version erstellt wurde.
    </ResponseField>

    <ResponseField name="translations[].completedAt" type="number">
      Zeitstempel der Fertigstellung, falls verfügbar.
    </ResponseField>

    <ResponseField name="translations[].failedAt" type="number">
      Zeitstempel des Fehlers, falls verfügbar.
    </ResponseField>

    <ResponseField name="translations[].timedOutAt" type="number">
      Zeitstempel des Timeouts, falls verfügbar.
    </ResponseField>

    <ResponseField name="translations[].translatedVideoUrl" type="string">
      URL des übersetzten Videos.
    </ResponseField>

    <ResponseField name="translations[].translatedAudioUrl" type="string">
      URL des übersetzten Audios.
    </ResponseField>

    <ResponseField name="translations[].settings" type="object">
      Öffentliche Einstellungen für die übersetzte Version, wie Untertitel, SmartSync, Hintergrundaudio und Qualitätsmodus.
    </ResponseField>

    <ResponseField name="translations[].error" type="object">
      Fehlercode und Nachricht, wenn die übersetzte Version fehlgeschlagen ist.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="translations[].lipSync" type="object">
  Verlauf der Lippensynchronisation für die übersetzte Version, nur vorhanden, wenn eine Lippensynchronisation angefordert wurde.

  <Expandable title="Eigenschaften der Lippensynchronisation">
    <ResponseField name="translations[].lipSync.latest" type="object">
      Letzter Versuch der Lippensynchronisation.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history" type="array">
      Alle Versuche der Lippensynchronisation für diese übersetzte Version, in der Reihenfolge der Erstellung.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history[].jobId" type="string">
      Auftragskennung der Lippensynchronisation.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history[].status" type="string">
      Status der Lippensynchronisation: `PENDING`, `PROCESSING`, `COMPLETED`, `FAILED`, `REJECTED` oder `CANCELED`.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history[].videoUrl" type="string">
      URL des lippensynchronisierten Videos nach Fertigstellung.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history[].type" type="string">
      Modus der Lippensynchronisation: `standard`, `pro` oder `studio`.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history[].activeSpeakerDetectionEnabled" type="boolean">
      Ob die Erkennung aktiver Sprecher für diesen Versuch aktiviert war.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="translations[].dynamicSubtitles" type="object">
  Status der dynamischen Untertitel, falls verfügbar.
</ResponseField>

<ResponseField name="translations[].publicationAttempts" type="array">
  Status des öffentlichen Veröffentlichungsversuchs, falls verfügbar.
</ResponseField>

<ResponseField name="translations[].publishedVideos" type="array">
  Öffentliche Referenzen des veröffentlichten Videos, falls verfügbar.
</ResponseField>

## Beispiel

```bash cURL theme={null}
curl -X GET "https://api.voicecheap.ai/v1/projects/abc123-def456-ghi789" \
  -H "x-api-key: vc_your-api-key"
```

```json Response theme={null}
{
  "projectId": "abc123-def456-ghi789",
  "projectName": "Launch Demo",
  "status": "success",
  "workflow": "translation",
  "originalVideoUrl": "https://storage.example.com/input.mp4",
  "originalLanguage": "en",
  "targetLanguages": ["french"],
  "duration": 120,
  "createdAt": 1791280000000,
  "progress": {
    "step": "done",
    "transcriptionProgress": 100,
    "transcriptionStatus": "success"
  },
  "translations": [
    {
      "workId": "work_123",
      "translatedVersionId": "version_456",
      "targetLanguage": "french",
      "status": "completed",
      "currentStep": "done",
      "progress": 100,
      "createdAt": 1791280200000,
      "completedAt": 1791280800000,
      "translatedVideoUrl": "https://storage.example.com/translated.mp4",
      "translatedAudioUrl": "https://storage.example.com/translated.mp3",
      "settings": {
        "voiceCloning": true,
        "uploadType": "video",
        "keepBackgroundMusic": true,
        "keepOriginalVoice": false,
        "originalVoiceVolume": 30,
        "subtitles": {
          "isEnable": true,
          "source": "translated"
        },
        "smartSync": true,
        "voiceIsolatorOption": "studio",
        "translationQualityMode": "max"
      },
      "lipSync": {
        "latest": {
          "jobId": "lip_789",
          "status": "COMPLETED",
          "videoUrl": "https://storage.example.com/lipsync.mp4",
          "errorMessage": null,
          "type": "pro",
          "createdAt": "2026-06-08T10:00:00.000Z",
          "completedAt": "2026-06-08T10:20:00.000Z",
          "activeSpeakerDetectionEnabled": true
        },
        "history": [
          {
            "jobId": "lip_789",
            "status": "COMPLETED",
            "videoUrl": "https://storage.example.com/lipsync.mp4",
            "errorMessage": null,
            "type": "pro",
            "createdAt": "2026-06-08T10:00:00.000Z",
            "completedAt": "2026-06-08T10:20:00.000Z",
            "activeSpeakerDetectionEnabled": true
          }
        ]
      }
    }
  ]
}
```

## Fehler

| Status | Code                  | Beschreibung                                              |
| ------ | --------------------- | --------------------------------------------------------- |
| 401    | `MISSING_API_KEY`     | API-Schlüssel ist erforderlich                            |
| 401    | `INVALID_API_KEY`     | Der bereitgestellte API-Schlüssel ist ungültig            |
| 403    | `FORBIDDEN`           | Sie haben keine Berechtigung, auf das Projekt zuzugreifen |
| 404    | `PROJECT_NOT_FOUND`   | Das Projekt existiert nicht                               |
| 429    | `RATE_LIMIT_EXCEEDED` | Zu viele Anfragen                                         |
| 500    | `INTERNAL_ERROR`      | Unerwarteter Serverfehler                                 |
