Hi Leafo, thanks for reading through all that :)
Interestingly enough, butler login did work... that one time. It hasn't worked since, so most of my latest experiments have been tried without it. I still get the "ContentLength=71 with Body length 0" error.
As far as I can tell, the butler_creds file has a valid API key. I unmasked it and put a `cat` line in there and it looked identical to the one I have on my local machine. I copied it to my local machine and verified it was working. Then I revoked it and got a new one because that project's visible to the whole world :)
Everything works perfectly fine on my local windows machine. Using an invalid key here gives me an invalid key error, so whatever the problem is remotely, it's (probably) not that.