7 de octubre de 2026 · En Ayotl
Subir un vídeo por la API de YouTube: tres trampas en una tarde
Un «argumento inválido» que no dice cuál, un permiso que deja subir pero no corregir, y una edición que apaga en silencio lo que no le mandaste.
Los retos de código de este sitio salen también en YouTube: un vídeo largo y un Short por día, subidos y programados por un script. La primera subida, con título, descripción, etiquetas, idioma, «no es para niños» y fecha de publicación, volvió con esto:
HttpError 400: Request contains an invalid argument.
reason: INVALID_REQUEST_METADATACon seis subidas al día no se puede ir probando a ciegas. Lo que funcionó fue cambiar de estrategia: subir el vídeo con lo mínimo (título, descripción, categoría, privado) y añadir el resto después con videos.update, que cuesta 50. Así se podía probar campo por campo. Y ahí vino la sorpresa: los cuatro campos pasaron, uno a uno y todos juntos. Lo que la subida rechaza, la edición lo acepta. Desde entonces el script sube en dos pasos.
La segunda trampa salió al intentar esa edición: 403 insufficient permissions. El permiso que uno pide para subir vídeos, youtube.upload, deja subir y nada más: ni corregir un título ni cambiar la fecha. Hace falta el permiso completo, youtube, y volver a autorizar.
La tercera es la más traicionera, porque no da error. Para programar el vídeo se mandó sólo la parte que importaba del status: privado, fecha y «no es para niños». Respuesta: 200. Pero update **reemplaza el objeto entero**, y lo que no va en él vuelve a su valor por omisión. El vídeo quedó con embeddable: false, o sea que el reproductor incrustado en la página del reto habría dicho «vídeo no disponible» el día del estreno. Ahora el script manda siempre el status completo.
Y una buena noticia que la documentación no deja clara: aunque el proyecto no haya pasado la auditoría de la API, un vídeo subido como privado con fecha de publicación se publica solo a su hora. La auditoría hace falta para subir más de seis vídeos al día, no para publicarlos.