Guida all’upload con YouTube Data API per sviluppatori (2026)

Guida all’upload con YouTube Data API per sviluppatori (2026)

Come funziona videos.insert, perché i progetti non verificati possono caricare solo video privati, la sequenza di upload riprendibile e cosa costa in quota un videos.insert.

La YouTube Data API carica i video tramite videos.insert, e due fatti documentati decidono se è praticabile per il tuo prodotto. I video caricati da progetti API non verificati creati dopo il 28 luglio 2020 sono limitati alla modalità privata finché il progetto non supera un audit. E videos.insert attinge a un proprio tetto di quota di 100 chiamate al giorno, separato dal pool di 10.000 unità condiviso dal resto dell’API.

Leggendo questi due fatti insieme il quadro è chiaro: senza un audit non puoi pubblicare pubblicamente, e senza un aumento di quota non puoi pubblicare spesso.

Cosa può pubblicare la YouTube Data API, e cos’è il vincolo dell’audit?

videos.insert carica un file video e ne imposta i metadati: titolo, descrizione, tag, categoria e un privacyStatus tra public, private o unlisted. La dimensione massima del file documentata è 256GB, e i tipi MIME accettati sono video/* e application/octet-stream.

Il vincolo è l’audit. La documentazione di Google afferma che i video caricati da progetti API non verificati creati dopo il 28 luglio 2020 sono limitati alla modalità privata finché il progetto non viene sottoposto a un audit. In pratica questo significa che la tua integrazione funziona end-to-end durante lo sviluppo, produce un ID video reale, e il video è invisibile a chiunque tranne il proprietario del canale. Superare l’audit è ciò che rimuove la limitazione così privacyStatus: 'public' viene rispettato.

Nota: i dati qui riportati sono stati verificati rispetto a developers.google.com/youtube a settembre 2026. Le piattaforme li modificano senza preavviso.

DomandaRisposta dalla documentazione
Endpoint di uploadPOST https://www.googleapis.com/upload/youtube/v3/videos
Scopeyoutube.upload, youtube, youtubepartner o youtube.force-ssl
Dimensione massima file256GB
Tipi MIMEvideo/*, application/octet-stream
Valori privacypublic, private, unlisted
Progetti non verificatiUpload limitati alla modalità privata finché il progetto non è sottoposto ad audit

Qual è il modello di autenticazione, e quanto dura l’audit?

OAuth 2.0 standard con accesso offline. Reindirizzi il proprietario del canale alla schermata di consenso di Google richiedendo https://www.googleapis.com/auth/youtube.upload, scambi il codice con un token di accesso e un refresh token, e rinnovi il token di accesso quando scade.

Poiché lo scope di upload è uno scope sensibile, il tuo progetto passa anche attraverso la verifica OAuth di Google, oltre all’audit dell’API YouTube. Sono due revisioni separate e le persone le confondono spesso: la verifica OAuth regola la schermata di consenso e quanti utenti possono concederlo, l’audit YouTube regola se i tuoi upload possono essere qualcosa di diverso dal privato.

Non siamo riusciti a trovare una durata pubblicata per l’audit dell’API YouTube nella documentazione ufficiale, quindi non ne indicheremo una. Presumi che si misuri in settimane, non giorni, e avviala prima di averne bisogno.

Qual è la vera sequenza di upload?

Gli upload sono riprendibili: apri una sessione di upload, poi invii i byte all’URI della sessione. Il video viene poi elaborato in modo asincrono lato YouTube dopo il completamento della tua richiesta.

  1. Apri una sessione riprendibile. POST all’endpoint di upload con i metadati del video come JSON e uploadType=resumable. La risposta restituisce un URI di sessione nell’header Location. Nota che uploadType=resumable e l’URI di sessione Location sono i meccanismi generali di upload riprendibile di Google, non qualcosa che la pagina di upload specifica di YouTube documenta, che mostra solo la libreria client Python.
  2. Esegui un PUT dei byte su quell’URI di sessione, in un’unica richiesta o a blocchi. La suddivisione in blocchi permette di riprendere dopo un errore di rete invece di ricominciare un file grande.
  3. Leggi l’ID video dalla risposta finale. L’upload è ora completo.
  4. Controlla periodicamente l’elaborazione. YouTube transcodifica in modo asincrono. L’ID video esiste prima che il video sia guardabile, e l’elaborazione può fallire dopo un upload riuscito.
# 1. open the resumable session
curl -X POST \
  "https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Upload-Content-Type: video/mp4" \
  -d '{"snippet":{"title":"Release notes","categoryId":"28"},
       "status":{"privacyStatus":"private"}}' -D -

# 2. PUT the bytes to the Location URI returned above
curl -X PUT "$SESSION_URI" \
  -H "Content-Type: video/mp4" --data-binary @video.mp4

# 3. then poll videos.list for processing status using the returned video id

La guida di upload di Google è un esempio Python costruito attorno a MediaFileUpload con resumable=True e backoff esponenziale sui tentativi, e dichiara chiaramente che lo script di esempio non fa gestione degli errori. Prendilo alla lettera: l’esempio è un punto di partenza, non un modello per la produzione.

Nota: i dati qui riportati sono stati verificati rispetto a developers.google.com/youtube a settembre 2026. Le piattaforme li modificano senza preavviso.

Cosa costa in quota un upload?

Questo è il numero che pone fine alla maggior parte dei piani di integrazione con YouTube, e vale la pena indicarlo con precisione.

MetodoCosto in quota
videos.insert1 unità, a valere su un tetto dedicato di 100 chiamate al giorno
videos.list1 unità
thumbnails.set50 unità
videos.update50 unità

L’allocazione predefinita, nelle parole di Google, è “100 chiamate search.list, 100 chiamate videos.insert, e 10.000 unità al giorno complessive per tutti gli altri endpoint”.

Il vincolo determinante sulla pubblicazione è quindi un conteggio, non un’aritmetica di unità: 100 upload per progetto al giorno. Il pool di 10.000 unità è separato e deve coprire ogni controllo di stato, lettura di metadati e impostazione di miniatura attorno a quegli upload, il che è generoso in confronto. La quota si azzera a mezzanotte, ora del Pacifico. Un prodotto multi-tenant che serve più di una manciata di canali ha bisogno di una richiesta di aumento della quota, che è a sua volta una domanda a Google.

Guide più vecchie (e alcune ancora online) affermano che videos.insert costa 1.600 unità a valere sul pool condiviso di 10.000 unità, il che equivaleva a sei upload al giorno. Non è più quello che dice la documentazione sulla quota di Google, e vale la pena controllare qualsiasi budget costruito su quel dato.

Nota: i dati qui riportati sono stati verificati rispetto a developers.google.com/youtube a settembre 2026. Le piattaforme li modificano senza preavviso.

Cosa ti costerà davvero tre settimane

  • Due revisioni, non una. La verifica OAuth per lo scope di upload sensibile, e l’audit dell’API YouTube che rimuove la limitazione degli upload privati. Nessuna delle due pubblica una durata. Entrambe bloccano il lancio.
  • La quota, e la richiesta per aumentarla. 100 upload per progetto al giorno non è un budget di produzione una volta che pubblichi per più di qualche decina di canali. La richiesta di aumento è un modulo, una giustificazione e un’attesa.
  • La transcodifica prima ancora di raggiungere Google. Accettare video utente arbitrari significa normalizzare contenitore e codec, generare una miniatura, e conservare il file da qualche parte da cui puoi trasmettere in streaming 256GB senza tenerlo in memoria.
  • Fallimento asincrono dopo un upload riuscito. Questo è quello che sorprende le persone. Un 200 e un ID video significano che i byte sono arrivati, non che il video è live. L’elaborazione può fallire in seguito, e un upload rifiutato emerge come uno stato di elaborazione, non come un errore HTTP. Ti serve un controllo periodico, uno stato post processing, e un modo per dire a un utente che il suo video è fallito un’ora dopo che la tua chiamata API è riuscita.

Se prevedi anche di pubblicare lo stesso video verticale su altre reti, la forma di quel lavoro è coperta in cross-posting dei Reel Instagram su YouTube Shorts e pubblicare su TikTok, Reels e Shorts insieme. Ognuna di quelle piattaforme ha il proprio audit, il proprio modello di quota e la propria modalità di fallimento asincrono, ed è proprio questo il punto.

La versione breve

  • videos.insert carica su https://www.googleapis.com/upload/youtube/v3/videos, massimo 256GB, scope youtube.upload.
  • I progetti non verificati creati dopo il 28 luglio 2020 possono caricare solo video privati finché il progetto non viene sottoposto ad audit.
  • Il flusso è: apri una sessione riprendibile, esegui il PUT dei byte, poi controlla periodicamente, perché l’elaborazione è asincrona e può fallire dopo che l’upload è riuscito.
  • videos.insert costa 1 unità a valere su un tetto dedicato di 100 chiamate al giorno. Un pool separato di 10.000 unità al giorno copre tutto il resto.
  • Non è pubblicata alcuna durata dell’audit. Avvia la revisione prima di averne bisogno.

Farlo una volta sola invece che una volta per piattaforma

Il lavoro su YouTube descritto sopra è reale, e niente di esso si trasferisce alla piattaforma successiva. Pinterest ha una revisione diversa, TikTok ha il proprio audit della Content Posting API, e ognuna ha una pipeline media separata. Questa ripetizione è ciò che la nostra API elimina: BulkPublish pubblica su 15 piattaforme tramite un unico endpoint REST, con OAuth, rinnovo dei token, gestione dei media e monitoraggio asincrono dello stato gestiti dal nostro lato. Gli stati dei post includono processing e partial proprio perché un 200 non è una pubblicazione.

I documenti per sviluppatori elencano gli endpoint, e la pagina di integrazione dell’API REST copre l’autenticazione e il ciclo di vita del post. Se ti serve solo la programmazione e non un’integrazione, come programmare i video YouTube copre questo caso, e il contatore di caratteri YouTube gratuito controlla titoli e descrizioni rispetto ai limiti.

Correlati