n8n-io/n8n · error · UserError

Version "${flags.version}" not found for workflow "${workflo

Error message

Version "${flags.version}" not found for workflow "${workflows[0].name}" (${workflows[0].id})

What it means

Thrown by `export:workflow` when `--version` and `--id` are set, the workflow exists, but the specified version ID is not present in WorkflowHistoryRepository for that workflow. getWorkflowsToExport filters out the workflow because history lookup yields nothing.

Source

Thrown at packages/cli/src/commands/export/workflow.ts:141

			where: this.getWhereFilter(flags),
			relations: ['tags', 'shared', 'shared.project'],
		});

		if (workflows.length === 0) {
			throw new UserError('No workflows found with specified filters');
		}

		const workflowsToExport = await getWorkflowsToExport(workflows, flags);

		if (flags.published && workflowsToExport.length === 0) {
			if (flags.id)
				throw new UserError(
					`No published version found for workflow "${workflows[0].name}" (${workflows[0].id})`,
				);
			else throw new UserError('No workflows with published versions found.');
		}
		if (flags.version && flags.id && workflowsToExport.length === 0) {
			throw new UserError(
				`Version "${flags.version}" not found for workflow "${workflows[0].name}" (${workflows[0].id})`,
			);
		}
		if (workflowsToExport.length === 0) {
			throw new UserError('No workflows found with specified filters');
		}

		if (flags.separate) {
			let fileContents: string;
			let i: number;
			for (i = 0; i < workflowsToExport.length; i++) {
				fileContents = JSON.stringify(workflowsToExport[i], null, flags.pretty ? 2 : undefined);
				const filename = `${
					(flags.output!.endsWith(path.sep) ? flags.output : flags.output + path.sep) +
					workflowsToExport[i].id
				}.json`;
				fs.writeFileSync(filename, fileContents);
			}

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. List the workflow's versions from the history table to find a valid versionId.
  2. Drop `--version` to export the current version.
  3. Confirm the version belongs to this workflow: `SELECT * FROM workflow_history WHERE workflow_id=X`.

Example fix

// before
n8n export:workflow --id=X --version=abc-def
// after — find valid versions first
// SELECT version_id, saved_at FROM workflow_history WHERE workflow_id='X' ORDER BY saved_at DESC LIMIT 5;
n8n export:workflow --id=X --version=<valid-version-id>
Defensive patterns

Strategy: validation

Validate before calling

// Verify the version exists in history before exporting
async function versionExists(ds: DataSource, workflowId: string, versionId: string): Promise<boolean> {
  return await ds.getRepository('workflow_history').exist({ where: { workflowId, versionId } });
}
if (!(await versionExists(ds, workflowId, versionId))) {
  throw new Error(`Version ${versionId} not in history for workflow ${workflowId}`);
}

Try / catch

try {
  await execN8n(['export:workflow', '--id', id, '--version', vid]);
} catch (e) {
  if (e.message.startsWith('Version "')) {
    // list available versions and pick one
  } else throw e;
}

Prevention

When it happens

Trigger: `n8n export:workflow --id=X --version=nonexistent-uuid`. The version ID does not match any `workflowId/versionId` pair in the history table.

Common situations: Typing or copying the version ID incorrectly; version belonged to a different workflow; history retention policy deleted old versions; cross-environment export where version IDs differ.

Related errors


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/96462d00e105eafb. Report an issue: GitHub.