multipart/form-data (the same shape as curl -F). No base64, no payload doubling.
Browser
Node, from disk
Node, from a Blob
Multiple files
files.<fieldName> multipart part. Mix files and scalar inputs freely; scalars ride in the input JSON part automatically.
Nested files are not extracted
Only top-level file values become multipart fields. Files inside arrays or nested objects stay in theinput JSON part and the server will not see them as uploads:
Do not base64 yourself
File, Blob, or { content, filename, mimeType }. Plain strings pass through as scalar inputs.