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.