Inline base64

Payload embedded in JSON. Simple but wire cost = 1.33x file size due to base64. Server must decode + hold in memory. Use for files < 5MB.

Advertisement

Direct URL

{"file": {"uri": "https://cdn.example.com/uploads/abc.pdf", "mimeType": "application/pdf"}}

Public URL. Server GETs it. Simple, fast. Assumes URL is publicly fetchable — often not true.

Advertisement

Signed URL

Time-limited URL with signature (S3 presigned, GCS signed URL). Fetchable without long-term credentials. Good for private files.