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.
| Domanda | Risposta dalla documentazione |
|---|---|
| Endpoint di upload | POST https://www.googleapis.com/upload/youtube/v3/videos |
| Scope | youtube.upload, youtube, youtubepartner o youtube.force-ssl |
| Dimensione massima file | 256GB |
| Tipi MIME | video/*, application/octet-stream |
| Valori privacy | public, private, unlisted |
| Progetti non verificati | Upload 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.
- Apri una sessione riprendibile.
POSTall’endpoint di upload con i metadati del video come JSON euploadType=resumable. La risposta restituisce un URI di sessione nell’headerLocation. Nota cheuploadType=resumablee l’URI di sessioneLocationsono 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. - 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.
- Leggi l’ID video dalla risposta finale. L’upload è ora completo.
- 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.
| Metodo | Costo in quota |
|---|---|
videos.insert | 1 unità, a valere su un tetto dedicato di 100 chiamate al giorno |
videos.list | 1 unità |
thumbnails.set | 50 unità |
videos.update | 50 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.insertcarica suhttps://www.googleapis.com/upload/youtube/v3/videos, massimo 256GB, scopeyoutube.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.insertcosta 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.