DocumentazioneGestire gli errori

Gestire gli errori

Distingui le chiamate rifiutate dalle trascrizioni non riuscite. Consulta i codici e verifica quando ha senso riprovare.

Un errore può arrivare in due momenti. Se l'API rifiuta la chiamata, ricevi subito un errore nella risposta. Se invece accetta la trascrizione e qualcosa va storto durante l'elaborazione, ritrovi la trascrizione con status uguale a failed.

Come leggere un errore API

Quando una chiamata /v1 non viene accettata, la risposta segue sempre questa struttura:

{
  "error": {
    "code": "insufficient_minutes",
    "message": "Not enough minutes",
    "retryable": false,
    "action_url": "https://transcript1.com/dashboard/billing",
    "minutes_needed": 20,
    "minutes_remaining": 3
  }
}

Nel codice della tua applicazione, distingui gli errori usando code. Usa message solo per mostrare la spiegazione all'utente: il testo può cambiare. Con retryable uguale a true, puoi riprovare la stessa chiamata più tardi.

In alcuni casi trovi altri campi oltre a retryable:

CampoCodice associatoA cosa serve
action_urlinsufficient_minutesLink per acquistare un piano o aggiungere minuti con una ricarica.
minutes_needed, minutes_remaininginsufficient_minutesMinuti necessari per la chiamata e saldo disponibile. I minuti necessari valgono null se non li conosciamo ancora.
supported_platformsunsupported_platformElenco delle piattaforme accettate: ["youtube", "x", "tiktok", "instagram", "facebook", "bluesky", "twitch", "dailymotion", "pinterest", "linkedin", "snapchat"].
missing_chunksupload_incompleteIndici delle parti del file che devi ancora inviare.
max_bytesmedia_too_largeLimite di dimensione del file per il tuo account, in byte.
paramsinvalid_requestNegli errori di validazione del body o della query, associa ogni campo alla spiegazione del problema.

Quando l'API rifiuta la chiamata

Stato HTTPcodePuoi riprovare senza modifiche?Causa
400, 422invalid_requestNoManca un parametro o un campo del body, oppure il valore non è valido. Succede anche con diarize insieme a source: "captions", con reuse_recent insieme a webhook_url o con un body che non contiene JSON valido.
422invalid_urlNoIl link non è valido oppure platform non corrisponde al link. Usa YouTube, X, TikTok, Instagram, Facebook, Bluesky o una delle altre piattaforme in Link e opzioni di trascrizione.
422unsupported_platformNoIl valore di platform non rientra tra quelli accettati.
422unsupported_mediaNoL'estensione del file non è tra quelle supportate.
401unauthorizedNoManca la credenziale, oppure non è valida, è scaduta o è stata revocata. Vale anche per un token di caricamento non valido o scaduto.
403insufficient_scopeNoIl token OAuth non ha lo scope transcriptions:read o transcriptions:write necessario per la chiamata.
403email_not_verifiedNoDevi confermare l'indirizzo email prima di avviare una trascrizione.
402insufficient_minutesNoHai 0 minuti utilizzabili, oppure non bastano per questa trascrizione.
402no_active_planNoPer acquistare una ricarica serve un piano a pagamento attivo. Questo errore arriva dall'endpoint di fatturazione della dashboard, non dagli endpoint di trascrizione.
404not_foundNoNessuna trascrizione corrisponde all'ID, oppure appartiene a un altro team.
409upload_incompleteNoIl file non è completo: invia i chunk mancanti e richiama il completamento.
409invalid_stateNoLa trascrizione non è più in attesa del file. Non puoi inviare altri chunk né completare il caricamento.
409idempotency_conflictNoHai già usato Idempotency-Key con parametri diversi.
413media_too_largeNoLa dimensione del file supera il limite del tuo account. Consulta Caricare file.
413invalid_requestNoIl body JSON supera 1 MB. Per i file, il codice corrispondente è media_too_large.
429rate_limitedSìHai superato il numero di chiamate al minuto. Aspetta quanto indicato da Retry-After, in secondi.
429too_many_active_jobsSìHai troppe trascrizioni in corso o troppi caricamenti aperti. Aspetta quanto indicato da Retry-After, in secondi.
500internal_errorSìSi è verificato un errore nei nostri sistemi. Puoi riprovare tra poco.
503service_unavailableSìIl servizio non è disponibile al momento. Puoi riprovare tra poco.

Se il browser si autentica con un cookie di login anziché con una credenziale bearer, controlliamo anche l'origine della chiamata. Da un altro sito ricevi 403 forbidden_origin. Il controllo non si applica alle chiamate API con l'header Authorization.

In tutte le risposte 429, l'header Retry-After indica quanti secondi aspettare. Trovi le soglie per piano in Costi e limiti.

Quando e come riprovare

  • Ripeti la chiamata senza modificarla solo con retryable uguale a true: vale per rate_limited, too_many_active_jobs, internal_error e service_unavailable. Aspetta i secondi di Retry-After, se presente; altrimenti aumenta l'intervallo tra i tentativi.
  • Per ripetere POST /v1/transcriptions, mantieni lo stesso Idempotency-Key. Se la prima chiamata era riuscita, eviti un secondo addebito.
  • Con gli altri codici, risolvi prima il problema della chiamata.

Quando la trascrizione non riesce

Una trascrizione può non riuscire anche dopo che l'API ha risposto alla chiamata iniziale. In quel caso ha status uguale a failed e contiene error: { "code", "message" }. Controlla error quando leggi lo stato o ricevi il webhook transcription.failed.

error.codeCosa è successoCosa fare
media_unavailableIl video non esiste oppure non è più accessibile.Non riprovare lo stesso link: controlla l'URL.
media_privateNon possiamo accedere al video perché è privato.Usa un post pubblico o un video YouTube pubblico o non in elenco.
login_requiredPer vedere il video serve il login sulla piattaforma.Non riproviamo: è un errore permanente.
no_audioManca la traccia audio del video.Non riproviamo: è un errore permanente.
age_restrictedLa piattaforma applica un limite di età al video.Non riprovare il link; carica il file.
live_streamLa diretta è in corso o deve ancora iniziare.Aspetta che sia finita, poi riprova.
no_captionsHai scelto source uguale a captions, ma manca una traccia di sottotitoli adatta.Passa a source: "auto" o "stt".
media_too_longLa registrazione supera il limite di 5 ore per lo speech-to-text.Dividila in parti più brevi prima di inviarla.
unsupported_mediaNon riusciamo a leggere il file, oppure manca la traccia audio.Invia un file in un formato supportato.
no_speechNessun parlato rilevato.Non riprovare la stessa registrazione.
unsupported_languageNon supportiamo la lingua della registrazione.Correggi language con un codice supportato oppure "auto".
insufficient_minutesAl momento dell'addebito non avevi più abbastanza minuti.Fai una ricarica, poi riprova.
fetch_failedNon siamo riusciti a scaricare la registrazione dopo più tentativi.Puoi riprovare più tardi.
transcription_failedLa trascrizione dell'audio non è riuscita dopo più tentativi.Puoi riprovare più tardi.

Se la trascrizione non riesce o la annulli, non paghi. Se avevamo già scalato dei minuti, li restituiamo al tuo saldo.

Ultimo aggiornamento 19 ottobre 2026