n8n-io/n8n · error · NodeOperationError
Binary property name or download URL is required
Error message
Binary property name or download URL is required
What it means
Guard in getFileStreamFromUrlOrBinary: this branch runs when no downloadUrl was passed in. It then reads the 'binaryPropertyName' parameter (default 'data'); if that resolves falsy, the node can neither download nor read a binary, so it throws. Note the description 'Error uploading file' is somewhat misleading — the failure is in sourcing the input, not the upload itself.
Source
Thrown at packages/@n8n/nodes-langchain/nodes/vendors/GoogleGemini/helpers/utils.ts:149
method: 'GET',
url: downloadUrl,
qs,
returnFullResponse: true,
encoding: 'stream',
})) as { body: Stream; headers: IDataObject };
const contentType = downloadResponse.headers['content-type'] as string | undefined;
const mimeType = contentType?.split(';')?.[0] ?? fallbackMimeType ?? 'application/octet-stream';
return {
stream: downloadResponse.body,
mimeType,
};
}
const binaryPropertyName = this.getNodeParameter('binaryPropertyName', i, 'data');
if (!binaryPropertyName) {
throw new NodeOperationError(
this.getNode(),
'Binary property name or download URL is required',
{
description: 'Error uploading file',
},
);
}
const binaryData = this.helpers.assertBinaryData(i, binaryPropertyName);
if (!binaryData.id) {
const buffer = await this.helpers.getBinaryDataBuffer(i, binaryPropertyName);
return {
buffer,
mimeType: binaryData.mimeType,
};
}
return {View on GitHub (pinned to 5ac6606e81)
Solutions
- Set the binary property name (default 'data') to the key under which the upstream node wrote the file.
- If you intended to fetch from a URL, fill the download URL field / pass downloadUrl so this branch is skipped.
- Verify the upstream node (Read Binary File, HTTP Request, etc.) actually wrote binary data under that property name.
Example fix
// before — empty binaryPropertyName and no url const binaryPropertyName = ''; // after const binaryPropertyName = 'data';
Defensive patterns
Strategy: validation
Validate before calling
const binaryPropertyName = String(this.getNodeParameter('binaryPropertyName', i, 'data') ?? '').trim();
if (!downloadUrl && !binaryPropertyName) {
throw new Error('Provide either a download URL or a binary property name');
} Type guard
function hasFileSource(downloadUrl: unknown, binaryPropertyName: unknown): boolean {
return (typeof downloadUrl === 'string' && downloadUrl.length > 0)
|| (typeof binaryPropertyName === 'string' && binaryPropertyName.trim().length > 0);
} Prevention
- Always default binaryPropertyName to 'data'.
- In the UI, never clear the binary property name without supplying a URL.
- Validate upstream that either a URL or binary is present per item.
When it happens
Trigger: Caller invoked transferFile/uploadToFileSearchStore without a downloadUrl AND the node's 'binaryPropertyName' parameter is empty/blank — e.g. user cleared the field, or an expression evaluated to ''.
Common situations: The File/Search operation is configured to read from binary but the binary property name field was emptied; the operation expected a URL but none was supplied and no binary fallback was set.
Related errors
- ${uploadResponse.file.error?.message ?? 'Unknown error'}
- Model ${model} is not supported for image generation
- The operation "${operation}" is not supported!
- A non-empty prompt is required.
- A non-empty prompt is required.
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/e09b05eb48ace6e0.
Report an issue: GitHub.