The sendPhoto endpoint requires a photo parameter which can be either an InputFile or a string representing a file ID. For new images, submit the file using multipart/form-data.
I have been playing around with sending images over Telegram Bot API using C#, and what really helped me was understanding the multipart/form-data approach when working with HttpClient. After several attempts at figuring out how to format the content properly, I finally managed to upload an image by setting the right headers and ensuring my file stream was correctly attached. What worked for me was converting the file to a byte array and using it with MultipartFormDataContent. My experience is that starting from simple examples and gradually adapting them to your needs is the best approach.