An HttpWebRequest has the properties ContentLength and ContentType, but how do you actually set the content of the request?
Here's a different option for posting info without messing with Bytes and Streams. I personally find it easier to follow, read, and debug.
// Convert Object to JSON
var requestMessage = JsonConvert.SerializeObject(requestObject);
var content = new StringContent(requestMessage, Encoding.UTF8, "application/json");
// Create the Client
var client = new HttpClient();
client.DefaultRequestHeaders.Add(AuthKey, AuthValue);
// Post the JSON
var responseMessage = client.PostAsync(requestEndPoint, content).Result;
var stringResult = responseMessage.Content.ReadAsStringAsync().Result;
// Convert JSON back to the Object
var responseObject = JsonConvert.DeserializeObject(stringResult);