La API de datos de YouTube sube videos mediante videos.insert, y dos hechos documentados determinan si es viable para tu producto. Los videos subidos desde proyectos de API no verificados creados después del 28 de julio de 2020 están restringidos al modo privado hasta que el proyecto pase una auditoría. Y videos.insert consume su propia cuota de 100 llamadas al día, separada del conjunto de 10.000 unidades que comparte el resto de la API.
Si lees ambos datos juntos, el panorama queda claro: sin una auditoría no puedes publicar públicamente, y sin un aumento de cuota no puedes publicar a menudo.
¿Qué puede publicar la API de datos de YouTube, y qué es la barrera de auditoría?
videos.insert sube un archivo de video y define sus metadatos: título, descripción, etiquetas, categoría y un privacyStatus de public, private o unlisted. El tamaño máximo de archivo documentado es de 256 GB, y los tipos MIME aceptados son video/* y application/octet-stream.
La barrera es la auditoría. La documentación de Google indica que los videos subidos desde proyectos de API no verificados creados después del 28 de julio de 2020 están restringidos al modo privado hasta que el proyecto pase una auditoría. En la práctica, eso significa que tu integración funciona de principio a fin durante el desarrollo, produce un id de video real, y el video es invisible para todos menos para el propietario del canal. Superar la auditoría es lo que levanta la restricción para que privacyStatus: 'public' se respete.
Nota: las cifras aquí se verificaron contra developers.google.com/youtube a fecha de septiembre de 2026. Las plataformas cambian esto sin previo aviso.
| Pregunta | Respuesta de la documentación |
|---|---|
| Endpoint de subida | POST https://www.googleapis.com/upload/youtube/v3/videos |
| Ámbitos | youtube.upload, youtube, youtubepartner o youtube.force-ssl |
| Tamaño máximo de archivo | 256 GB |
| Tipos MIME | video/*, application/octet-stream |
| Valores de privacidad | public, private, unlisted |
| Proyectos no verificados | Subidas restringidas a privado hasta que se audite el proyecto |
¿Cuál es el modelo de autenticación, y cuánto dura la auditoría?
OAuth 2.0 estándar con acceso sin conexión. Rediriges al propietario del canal a la pantalla de consentimiento de Google solicitando https://www.googleapis.com/auth/youtube.upload, intercambias el código por un token de acceso y un token de actualización, y renuevas el token de acceso a medida que caduca.
Como el ámbito de subida es un ámbito sensible, tu proyecto también pasa por la verificación de OAuth de Google además de la auditoría de la API de YouTube. Son dos revisiones distintas y la gente suele confundirlas: la verificación de OAuth rige la pantalla de consentimiento y cuántos usuarios pueden concederlo, la auditoría de YouTube rige si tus subidas pueden ser algo distinto de privadas.
No encontramos publicada una duración de resolución de la auditoría de la API de YouTube en la documentación oficial, así que no vamos a indicar una. Da por hecho que se mide en semanas, no en días, e inícala antes de necesitarla.
¿Cuál es la secuencia real de subida?
Las subidas son reanudables: abres una sesión de subida y luego envías los bytes al URI de la sesión. El video se procesa después de forma asíncrona en el lado de YouTube tras completarse tu solicitud.
- Abre una sesión reanudable.
POSTal endpoint de subida con los metadatos del video en JSON yuploadType=resumable. La respuesta devuelve un URI de sesión en la cabeceraLocation. Ten en cuenta queuploadType=resumabley el URI de sesiónLocationson la mecánica general de subida reanudable de Google, no algo que documente la página de subida específica de YouTube, que solo muestra la biblioteca de cliente en Python. - Haz PUT de los bytes a ese URI de sesión, en una sola solicitud o en fragmentos. Fragmentar te permite reanudar después de un fallo de red en lugar de empezar de nuevo con un archivo grande.
- Lee el id del video de la respuesta final. La subida ya está completa.
- Sondea el procesamiento. YouTube transcodifica de forma asíncrona. El id del video existe antes de que el video se pueda ver, y el procesamiento puede fallar después de una subida exitosa.
# 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 propia guía de subida de Google es un ejemplo en Python construido alrededor de MediaFileUpload con resumable=True y espera exponencial en los reintentos, y afirma sin rodeos que el script de ejemplo no gestiona errores. Tómalo al pie de la letra: el ejemplo es un punto de partida, no una plantilla para producción.
Nota: las cifras aquí se verificaron contra developers.google.com/youtube a fecha de septiembre de 2026. Las plataformas cambian esto sin previo aviso.
¿Cuánto cuesta una subida en cuota?
Este es el número que acaba con la mayoría de los planes de integración con YouTube, y merece la pena indicarlo con precisión.
| Método | Coste en cuota |
|---|---|
videos.insert | 1 unidad, contra una cuota dedicada de 100 llamadas al día |
videos.list | 1 unidad |
thumbnails.set | 50 unidades |
videos.update | 50 unidades |
La asignación por defecto, en palabras de Google, es “100 llamadas a search.list, 100 llamadas a videos.insert, y 10.000 unidades al día combinadas para el resto de endpoints”.
La restricción vinculante para publicar es por tanto un recuento, no una aritmética de unidades: 100 subidas por proyecto al día. El conjunto de 10.000 unidades es independiente y tiene que cubrir cada sondeo de estado, lectura de metadatos y ajuste de miniatura alrededor de esas subidas, lo cual resulta generoso en comparación. La cuota se reinicia a medianoche hora del Pacífico. Un producto multiinquilino que da servicio a más de un puñado de canales necesita solicitar un aumento de cuota, que es una solicitud aparte ante Google.
Guías antiguas (y algunas que siguen activas) indican que videos.insert cuesta 1.600 unidades del conjunto compartido de 10.000, lo que equivalía a seis subidas al día. Eso ya no es lo que dice la documentación de cuota de Google, y merece la pena revisar cualquier presupuesto que hayas hecho con esa cifra.
Nota: las cifras aquí se verificaron contra developers.google.com/youtube a fecha de septiembre de 2026. Las plataformas cambian esto sin previo aviso.
Qué es lo que realmente te va a costar tres semanas
- Dos revisiones, no una. La verificación de OAuth para el ámbito sensible de subida, y la auditoría de la API de YouTube que levanta la restricción de subida privada. Ninguna publica un plazo de resolución. Ambas bloquean el lanzamiento.
- La cuota, y la solicitud para aumentarla. 100 subidas por proyecto al día no es un presupuesto de producción en cuanto publicas para más de unas pocas docenas de canales. La solicitud de aumento es un formulario, una justificación y una espera.
- La transcodificación antes incluso de llegar a Google. Aceptar video arbitrario de usuarios significa normalizar el contenedor y el códec, generar una miniatura y guardar el archivo en algún sitio desde el que puedas transmitir 256 GB sin cargarlo en memoria.
- El fallo asíncrono después de una subida exitosa. Este es el que sorprende a la gente. Un 200 y un id de video significan que los bytes llegaron, no que el video esté publicado. El procesamiento puede fallar después, y una subida rechazada se manifiesta como un estado de procesamiento, no como un error HTTP. Necesitas un sondeador, un estado de publicación
processingy una forma de avisar a un usuario de que su video falló una hora después de que tu llamada a la API tuviera éxito.
Si además piensas subir el mismo video vertical a otras redes, la forma de ese trabajo se cubre en republicar Reels de Instagram en YouTube Shorts y en publicar en TikTok, Reels y Shorts a la vez. Cada una de esas plataformas tiene su propia auditoría, su propio modelo de cuota y su propio modo de fallo asíncrono, que es precisamente el problema.
La versión corta
videos.insertsube ahttps://www.googleapis.com/upload/youtube/v3/videos, máximo 256 GB, ámbitoyoutube.upload.- Los proyectos no verificados creados después del 28 de julio de 2020 solo pueden subir videos privados hasta que se audite el proyecto.
- El flujo es: abrir una sesión reanudable, hacer PUT de los bytes y luego sondear, porque el procesamiento es asíncrono y puede fallar después de que la subida tenga éxito.
videos.insertcuesta 1 unidad de una cuota dedicada de 100 llamadas al día. Otras 10.000 unidades al día cubren el resto.- No se publica ningún plazo de resolución de la auditoría. Inicia la revisión antes de necesitarla.
Hacer esto una vez en lugar de una vez por plataforma
El trabajo de YouTube descrito arriba es real, y nada de él se traslada a la siguiente plataforma. Pinterest tiene una revisión distinta, TikTok tiene su propia auditoría de la API de publicación de contenido, y cada una tiene una canalización de multimedia distinta. Esa repetición es lo que elimina nuestra API: BulkPublish publica en 15 plataformas a través de un único endpoint REST, con la autenticación OAuth, la renovación de tokens, la gestión de multimedia y el seguimiento de estado asíncrono gestionados de nuestro lado. Los estados de publicación incluyen processing y partial precisamente porque un 200 no significa que se haya publicado.
La documentación para desarrolladores enumera los endpoints, y la página de integración de la API REST cubre la autenticación y el ciclo de vida de la publicación. Si solo necesitas programar en lugar de integrar, cómo programar videos de YouTube lo cubre, y el contador de caracteres de YouTube gratuito comprueba los títulos y descripciones contra los límites.