I'm not sure what the question is here.
You seem to understand the limitations of the way uploads work with the YouTube API, and those limitations still apply with v3 of the YouTube Data API. At the time that a response is returned from the videos.insert()
request, the status of the video is not known, because it hasn't been processed yet. The actual processing might happen a second or two after the video has been uploaded, or it might happen a few minutes (or longer) after the video has been uploaded, especially for larger video files. It's not done in real time, and it's not reasonable to expect the videos.insert() API call to block waiting for the processing to be finished.
I'd disagree with your assessment that performing a videos.list(id=...,part=status)
is a "very costly operation". The amount of bandwidth and YouTube API quota that consumes is minimal compared to an actual video upload. It would be nice to provide a way to communicate back the processing status independent of the videos.insert()
call via some sort of callback or push update mechanism, but we don't have anything available like that at this time. You have to poll videos.list(id=...,part=status)
.