@rchoi I still haven’t been able to reproduce this at will, but found a likely culprit on our side … before upload, the image data is fetched via an old library that assumed urllib2.urlopen(...).read() is guaranteed to return all the data, which is false. Anytime that assumption is violated, we’d be uploading truncated data. If I manually truncate the data to an arbitrary length, I have verified that Twitter (sometimes) gives this “media type unrecognized” response.
I’m going to push out a fix for this and watch the logs to see if this solves the problem for good. Optimistic, but we’ll see 
Thanks again. I’ll report back here with my results.