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

# Ottieni dettagli del progetto

> Recupera i dettagli pubblici del progetto, la cronologia delle versioni tradotte e la cronologia della sincronizzazione labiale

# Ottieni dettagli del progetto

Recupera una vista pubblica normalizzata di un progetto. Utilizza questo endpoint quando hai bisogno della cronologia delle versioni tradotte, della cronologia della sincronizzazione labiale, dello stato dei sottotitoli dinamici o dello stato di pubblicazione.

Per un polling frequente, continua a utilizzare [Ottieni stato della traduzione](/docs/it/api-reference/translation-status). Questo endpoint è più ricco e restituisce intenzionalmente più dati.

## Richiesta

### Intestazioni

<ParamField header="x-api-key" type="string" required>
  La tua chiave API VoiceCheap. Ottienine una da [app.voicecheap.ai/page-api](https://app.voicecheap.ai/page-api).
</ParamField>

### Parametri del percorso

<ParamField path="projectId" type="string" required>
  L'identificatore univoco del progetto restituito da [Crea progetto](/docs/it/api-reference/create-project) o [Avvia traduzione](/docs/it/api-reference/translate).
</ParamField>

## Risposta

<ResponseField name="projectId" type="string" required>
  L'identificatore univoco del progetto.
</ResponseField>

<ResponseField name="projectName" type="string" required>
  Il nome del progetto.
</ResponseField>

<ResponseField name="status" type="string" required>
  Stato pubblico del progetto: `processing`, `success` o `failed`.
</ResponseField>

<ResponseField name="workflow" type="string" required>
  Flusso di lavoro API: `translation` o `transcription`. I flussi di lavoro di trascrizione raggiungono il successo quando la trascrizione della sorgente termina.
</ResponseField>

<ResponseField name="originalVideoUrl" type="string" required>
  URL del file video o audio originale caricato.
</ResponseField>

<ResponseField name="originalLanguage" type="string" required>
  La lingua originale rilevata o specificata.
</ResponseField>

<ResponseField name="targetLanguages" type="string[]" required>
  Lingue di destinazione associate al progetto.
</ResponseField>

<ResponseField name="duration" type="number" required>
  Durata del contenuto in secondi.
</ResponseField>

<ResponseField name="createdAt" type="number" required>
  Timestamp Unix di quando il progetto è stato creato.
</ResponseField>

<ResponseField name="progress" type="object" required>
  Progresso attuale a livello di progetto.

  <Expandable title="proprietà di progresso">
    <ResponseField name="progress.step" type="string">
      Fase attuale di creazione o trascrizione del progetto.
    </ResponseField>

    <ResponseField name="progress.transcriptionProgress" type="number">
      Percentuale approssimativa di progresso della creazione/trascrizione del progetto.
    </ResponseField>

    <ResponseField name="progress.transcriptionStatus" type="string" required>
      Stato della trascrizione della sorgente: `processing`, `success` o `failed`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="translations" type="array" required>
  Cronologia delle versioni tradotte, ordinata con la versione più recente per prima.

  <Expandable title="proprietà di traduzione">
    <ResponseField name="translations[].workId" type="string">
      Identificatore del lavoro di traduzione.
    </ResponseField>

    <ResponseField name="translations[].translatedVersionId" type="string">
      Identificatore della versione tradotta.
    </ResponseField>

    <ResponseField name="translations[].targetLanguage" type="string">
      Lingua di destinazione per questa versione.
    </ResponseField>

    <ResponseField name="translations[].status" type="string">
      Stato della versione di traduzione: `in-progress`, `completed`, `not-started` o `failed`.
    </ResponseField>

    <ResponseField name="translations[].currentStep" type="string">
      Fase attuale di doppiaggio per questa versione.
    </ResponseField>

    <ResponseField name="translations[].progress" type="number">
      Percentuale approssimativa di progresso del doppiaggio.
    </ResponseField>

    <ResponseField name="translations[].createdAt" type="number">
      Timestamp di quando questa versione tradotta è stata creata.
    </ResponseField>

    <ResponseField name="translations[].completedAt" type="number">
      Timestamp di completamento quando disponibile.
    </ResponseField>

    <ResponseField name="translations[].failedAt" type="number">
      Timestamp di errore quando disponibile.
    </ResponseField>

    <ResponseField name="translations[].timedOutAt" type="number">
      Timestamp di timeout quando disponibile.
    </ResponseField>

    <ResponseField name="translations[].translatedVideoUrl" type="string">
      URL del video tradotto.
    </ResponseField>

    <ResponseField name="translations[].translatedAudioUrl" type="string">
      URL dell'audio tradotto.
    </ResponseField>

    <ResponseField name="translations[].settings" type="object">
      Impostazioni pubbliche utilizzate per la versione tradotta, come sottotitoli, SmartSync, audio di sottofondo e modalità di qualità.
    </ResponseField>

    <ResponseField name="translations[].error" type="object">
      Codice di errore e messaggio quando la versione tradotta non è riuscita.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="translations[].lipSync" type="object">
  Cronologia della sincronizzazione labiale per la versione tradotta, presente solo quando è stata richiesta la sincronizzazione labiale.

  <Expandable title="proprietà lipSync">
    <ResponseField name="translations[].lipSync.latest" type="object">
      Ultimo tentativo di sincronizzazione labiale.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history" type="array">
      Tutti i tentativi di sincronizzazione labiale per questa versione tradotta, in ordine di creazione.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history[].jobId" type="string">
      Identificatore del lavoro di sincronizzazione labiale.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history[].status" type="string">
      Stato della sincronizzazione labiale: `PENDING`, `PROCESSING`, `COMPLETED`, `FAILED`, `REJECTED` o `CANCELED`.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history[].videoUrl" type="string">
      URL del video con sincronizzazione labiale una volta completato.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history[].type" type="string">
      Modalità di sincronizzazione labiale: `standard`, `pro` o `studio`.
    </ResponseField>

    <ResponseField name="translations[].lipSync.history[].activeSpeakerDetectionEnabled" type="boolean">
      Indica se il rilevamento del parlante attivo era abilitato per questo tentativo.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="translations[].dynamicSubtitles" type="object">
  Stato dei sottotitoli dinamici quando disponibili.
</ResponseField>

<ResponseField name="translations[].publicationAttempts" type="array">
  Stato del tentativo di pubblicazione pubblica quando disponibile.
</ResponseField>

<ResponseField name="translations[].publishedVideos" type="array">
  Riferimenti al video pubblicato pubblicamente quando disponibili.
</ResponseField>

## Esempio

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

## Errori

| Stato | Codice                | Descrizione                                 |
| ----- | --------------------- | ------------------------------------------- |
| 401   | `MISSING_API_KEY`     | È richiesta la chiave API                   |
| 401   | `INVALID_API_KEY`     | La chiave API fornita non è valida          |
| 403   | `FORBIDDEN`           | Non hai il permesso di accedere al progetto |
| 404   | `PROJECT_NOT_FOUND`   | Il progetto non esiste                      |
| 429   | `RATE_LIMIT_EXCEEDED` | Troppe richieste                            |
| 500   | `INTERNAL_ERROR`      | Errore imprevisto del server                |
