Using Youtube Data API makes my videos private on upload
Solution 1:
According to Google support's article Videos locked as private, the issue that you've described happens by design:
For videos that have been locked as private due to upload via an unverified API service, you will not be able to appeal. You’ll need to re-upload the video via a verified API service or via the YouTube app/site. The unverified API service can also apply for an API audit.
To ensure your video isn’t locked private again, don’t post content that:
- [...]
- Has been uploaded by an unverified third party API service.
As unfortunate as it is, until your app gets approved by Google, if needing to make video content publicly available, you have no other option than to upload that content manually by means of YouTube's Web UI (or use a tool that accesses that UI programmatically; but, as far as I know, this kind of activity is forbidden by the TOS docs).
The official document of the Videos.insert
API endpoint specifies the very same requirement as above:
All videos uploaded via the
videos.insert
endpoint from unverified API projects created after 28 July 2020 will be restricted to private viewing mode. To lift this restriction, each API project must undergo an audit to verify compliance with the Terms of Service. Please see the API Revision History for more details.
The entry of API Revision History related to this issue reads as follows:
All videos uploaded via the
videos.insert
endpoint from unverified API projects created after 28 July 2020 will be restricted to private viewing mode. To lift this restriction, each project must undergo an audit to verify compliance with the Terms of Service.Creators who use an unverified API client to upload video will receive an email explaining that their video is locked as private, and that they can avoid the restriction by using an official or audited client.
API projects created prior to 28 July 2020 are not currently affected by this change. However, we strongly recommend that all developers complete a compliance audit for their projects to ensure continued access to the YouTube API Services.
Solution 2:
If your app is inteded for private usage, they won't approve it. The only solution is not to use their API, but luckily there are some good modules to upload without API. Here's one I made (node.js): https://www.npmjs.com/package/node-apiless-youtube-upload
import YoutubeUploader from 'node-apiless-youtube-upload'
const youtubeUploader = new YoutubeUploader()
youtubeUploader.promptLoginAndGetCookies().then(() => {
youtubeUploader.uploadVideo({
videoPath: 'C:/PATH/TO/VIDEO.mp4',
title: 'TITLE',
description: 'DESCRIPTION',
thumbnailPath: 'C:/PATH/TO/THUMBNAIL.mp4',
visibility: 'public'
})
})
Also there's one for python if you search for it (it's selenium based). Good luck!