You need a user token not a server to server token.
You generated a token that doesn’t represent anyone/a user.
Then tried to upload a video as “no user” so there was no user to own the video.
Also you requested user:read:email/user_read on a token that can’t have a user.
You need
not
TLDR: You have the wrong type of token.
“OAuth” and “Bearer” are just “prefixes” that kraken and helix return. Any token is an “OAuth Token” and is a “Bearer Token”. It’s not secretely anything it’s just an oAuth token.
No that doesn’t make a user be present in the token, that grants access to non public information about the user (in this case the email) when generating a regular user token.
But client_credentials doesn’t have a user attached to it.
The validate endpoint didn’t return a UserID in the response though did it?