# YouTube transcript API che trascrive anche i video senza sottotitoli

> Con la YouTube transcript API invii un link e ricevi JSON, TXT, SRT o VTT: sottotitoli se disponibili, altrimenti IA. 1 credito al minuto.

Canonical: https://transcript1.com/it/features/youtube-transcript-api
Language: it
Last updated: 2026-10-19

Con la YouTube transcript API passi il link di un video e ricevi la trascrizione in JSON, TXT, SRT o VTT. Se YouTube ha una traccia di sottotitoli utilizzabile, prendiamo quella. Altrimenti trascriviamo l’audio con IA.

- Prima i sottotitoli, poi l’audio se serve
- 1 credito al minuto, con sottotitoli o IA
- Link watch, youtu.be, Shorts ed embed

## Decidi da dove prendere il testo

### Usa il link che hai

Accettiamo link watch, youtu.be, Shorts, embed e live, con o senza www. Riconosciamo il video anche se cambia la forma del link. Le dirette ancora in corso non si possono trascrivere.

### Recupera i sottotitoli pubblicati

Con source=auto diamo la precedenza ai sottotitoli caricati dal creator, poi a quelli generati automaticamente. Non usiamo le tracce tradotte automaticamente.

### Trascrivi l’audio quando serve

Se non troviamo sottotitoli utilizzabili, passiamo allo speech-to-text. Imposta source=stt se vuoi partire sempre dall’audio, anche quando i sottotitoli ci sono.

### Sai da dove arriva la trascrizione

Leggi transcript_source nella risposta: youtube_captions indica i sottotitoli di YouTube, speech_to_text la trascrizione dell’audio.

### Stesso costo per entrambe le opzioni

Ogni minuto iniziato del video costa 1 credito. Il prezzo non cambia tra sottotitoli e IA. Se la trascrizione non riesce o la annulli, non paghi.

## Chiama l’API dal tuo codice

Invia il link a POST /v1/transcriptions con la tua chiave API. Puoi usare Python o qualsiasi client HTTP. Con wait=60 la connessione resta aperta fino a 60 secondi. I campi e i codici di risposta sono nella [documentazione della request](https://transcript1.com/it/docs/api-reference#create-a-transcription).

Crea la chiave nella dashboard e usala dal server o da uno script. Salva subito l’ID che ricevi. Se l’attesa finisce prima della trascrizione, il lavoro continua: controllalo con GET /v1/transcriptions/:id, senza inviare di nuovo il video.

Gestisci gli stati queued, fetching e transcribing separatamente da completed e failed. Una trascrizione ancora in corso, un errore e un testo pronto da leggere devono restare casi distinti anche nella tua app.

### cURL

```
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"youtube","url":"https://youtu.be/dQw4w9WgXcQ"}'
```

## Controlla transcript\_source e i timestamp

La risposta indica se il testo arriva dai sottotitoli e distingue le tracce del creator da quelle automatiche. billed_minutes contiene la durata arrotondata per eccesso. Trovi gli altri campi nello [schema della trascrizione](https://transcript1.com/it/docs/api-reference#the-transcription-object).

Conserva transcript_source e caption_kind se devi documentare la provenienza del testo. I sottotitoli del creator mantengono le parole pubblicate, senza timestamp delle parole. Quelli automatici di YouTube hanno i tempi di inizio; lo speech-to-text aggiunge anche fine e confidence.

Ogni segmento ha inizio e fine in secondi: puoi collegare una citazione al video o sincronizzare testo e riproduzione. Aggiungi include=words al JSON solo se ti servono i dati delle singole parole. Il JSON qui sotto mostra la struttura della risposta, non le parole del video di esempio.

### Risposta JSON abbreviata

```
{
  "id": "tr_8fK2Lm0PqRsTuVwXyZaBcD",
  "status": "completed",
  "transcript_source": "youtube_captions",
  "caption_kind": "auto_generated",
  "language": "en",
  "billed_minutes": 4,
  "transcript": {
    "text": "Welcome back to the channel. Today we are looking at how transcripts are made.",
    "segments": [
      { "start": 0, "end": 4.2, "speaker": null, "language": "en", "text": "Welcome back to the channel." }
    ]
  }
}
```

## Scegli tra sottotitoli e speech-to-text

source=auto è il valore predefinito. Con source=captions chiedi solo i sottotitoli: se non sono utilizzabili, ricevi no_captions e non paghi. Con source=stt trascriviamo sempre l’audio. La [guida alle sorgenti](https://transcript1.com/it/docs/sources-and-options#source) spiega anche come incidono lingua e riconoscimento dei parlanti.

Scegli captions (solo sottotitoli) quando ti serve proprio la traccia pubblicata. Scegli stt quando vuoi una nuova trascrizione dell’audio o le etichette dei parlanti. Con source=auto, diarize=true passa direttamente allo speech-to-text. La combinazione di captions e diarize=true viene rifiutata: non ignoriamo una delle due opzioni.

La traccia deve corrispondere alla lingua richiesta, oppure alla lingua originale del video quando la lingua è auto. Escludiamo le traduzioni automatiche. Nello speech-to-text, language aiuta il riconoscimento: non traduce la registrazione.

### Corpo della request per trascrivere l’audio

```
{
  "platform": "youtube",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "source": "stt"
}
```

## Gestisci gli errori senza duplicare le trascrizioni

Prima di riprovare, leggi l’errore. Un video privato, un limite di età o una diretta in corso richiedono un’altra sorgente. Con no_captions puoi decidere se accettare una trascrizione dell’audio. Se il lavoro è ancora in corso, rileggilo tramite ID. I casi da gestire sono nella [guida agli errori](https://transcript1.com/it/docs/errors).

Per ripetere una request di creazione dopo un problema di rete, usa [Idempotency-Key](https://transcript1.com/it/docs/api-reference#idempotency). Il riuso di una trascrizione recente è un’opzione distinta e richiede lo stesso video e le stesse opzioni. Una trascrizione in cache può comunque costituire un nuovo lavoro a pagamento; rileggere un lavoro già completato non consuma minuti.

Lo stesso endpoint accetta anche [TikTok](https://transcript1.com/it/features/trascrizione-tiktok), [Instagram](https://transcript1.com/it/features/trascrivere-reel-instagram) e gli altri link supportati. YouTube, X, TikTok e Bluesky sono tra le piattaforme con sottotitoli utilizzabili prima dello speech-to-text. Controlla la [tabella delle sorgenti](https://transcript1.com/it/docs/sources-and-options) prima di proporre opzioni nella tua app.

## Domande frequenti

### Funziona anche se il video non ha sottotitoli?

Sì. Con source=auto trascriviamo l’audio se non troviamo una traccia utilizzabile. Se vuoi evitare questo passaggio e usare solo i sottotitoli, scegli source=captions.

### Quali link YouTube posso inviare?

Link watch, youtu.be, Shorts, embed e live. La diretta deve essere terminata. Una pagina canale o un link alla sola playlist non identifica un video e restituisce 422 invalid_url.

### Posso trascrivere un video privato?

No. Possiamo recuperare video pubblici e non in elenco. I video privati, con limiti di età o ancora in diretta non funzionano. Se hai il file originale, caricalo direttamente.

### Quanto costa una trascrizione da YouTube?

1 credito per ogni minuto iniziato, sia con i sottotitoli sia con IA. Dopo aver confermato l’email ricevi 60 minuti gratis, una sola volta e senza carta.

### È il pacchetto Python youtube-transcript-api?

No. transcript1 è un’API REST ospitata. Da Python la chiami via HTTP con la tua chiave API: non devi installare quel pacchetto.

## Approfondisci

- [Timestamp e sottotitoli](https://transcript1.com/it/features/creare-file-srt)
- [API per file audio e video](https://transcript1.com/it/features/speech-to-text-api)
- [Webhook](https://transcript1.com/it/features/webhook-trascrizione)
- [Riutilizzo dei contenuti](https://transcript1.com/it/use-cases/trasformare-video-in-articolo-blog)
