Uploading an image with JSON:API; getting "Access denied"
I wasn't able to get it working with Flow 2 in the docs; I kept getting a Needs &quot;administer users&quot; permission error (which is incorrect; users have permission to edit the field).
So instead, I used Flow 1:
POST /jsonapi/node/article/{uuid}/field_image HTTP/1.1
Content-Type: application/octet-stream
Accept: application/vnd.api+json
Content-Disposition: file; filename=&quot;filename.jpg&quot;

[… binary file data …]

This requires the user to already be created, which is OK for my user case, but may not be the case for everyone.
Additional notes

I had to turn off the popular Filefield Paths module for my image field because it breaks JSON:API.

I had to uncheck Alt field required in the image field settings; if you leave the alt field required, you get this nasty error:
  &quot;detail&quot;: &quot;The controller result claims to be providing relevant cache metadata, but leaked metadata was detected. Please ensure you are not rendering content too early. Returned object class: Drupal\\Core\\Cache\\CacheableResponse.&quot;,