Mastodonで画像のアップロードがうまくいったりいかなかったりする件、
APIの違いによるものと、
前処理の違いによるものがあります。
まずAPIの違いですが、
画像をアップロードし終わって内部処理が完了するまで一回で全部やりきるタイプ(旧API)と、
画像のアップロードまでは一気に行うがそこで一旦終了し、そのあとサーバ側で処理が完了するまで「おわったー?」ってちょこちょこ聞きながら待つタイプ(新API)がありまして、
後者の方が、大量の接続を捌くサーバにとってコネクション時間が短くなるメリットがあるのですが、おおむね前者の方が動作は安定しています。
WebUI(ブラウザからのアクセス)は、新APIで画像をアップロードします。
クライアントアプリは新旧どちらを使うかわかれており、これはアップロードできた、これはできない、という差につながっています。
もうひとつは前処理の違いです。
クライアントアプリは、画像をアップロードする前に、サイズを縮小したり、画像形式を変換したりします。
必ずしも望ましいことではないのですが、JPEGを指定しても全てPNGでアップロードするクライアントもあります。
画像が縮小されてファイルサイズが小さくなっていると、アップロードが成功しやすくなります。