Are you doing something like
var request = (HttpWebRequest)WebRequest.Create(url);
?
I noticed with my own code that this sometimes had an issue with the client-id header, and a re-adding the header explicitly to the request after the .Create command helped reduce these errors to only being received during twitch deployment periods where various bits are in a weird state due to caching.
[Edit] Specifically, re-adding the Client-ID header after turning the WebRequest into the HttpWebRequest