n8n-io/n8n · error · NodeOperationError

Unauthorized for this project

Error message

Unauthorized for this project

What it means

Error-status mapper attached to ChatVertexAI attempts: the Vertex API answered 401/403, so the credentials are not authorized for the configured project. The mapper replaces Google's raw error with this plain message before it reaches the execution.

Solutions

  1. Verify the service account / Application Default Credentials have access to the project
  2. Confirm project id, location, and that the Vertex AI API is enabled for it
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at packages/@n8n/nodes-langchain/nodes/llms/LmChatGoogleVertex/LmChatGoogleVertex.node.ts:220 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


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

Appendix: source

Thrown at packages/@n8n/nodes-langchain/nodes/llms/LmChatGoogleVertex/LmChatGoogleVertex.node.ts:220

				location,
				...(endpoint ? { endpoint } : {}),
				model: modelName,
				topK: options.topK,
				topP: options.topP,
				temperature: options.temperature,
				maxOutputTokens: options.maxOutputTokens,
				safetySettings,
				callbacks: [new N8nLlmTracing(this, { errorDescriptionMapper })],
				// Handle ChatVertexAI invocation errors to provide better error messages
				onFailedAttempt: makeN8nLlmFailedAttemptHandler(this, (error: any) => {
					// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
					const status = Number(error?.response?.status);
					const customError = makeErrorFromStatus(status, {
						modelName,
					});

					if (customError) {
						throw new NodeOperationError(this.getNode(), error as JsonObject, customError);
					}

					if (status === 400) {
						// Surface Google's error detail; a bare rethrow would hide it behind a
						// generic "Bad request" wrapper
						throw new NodeOperationError(this.getNode(), error as JsonObject, {
							message: 'Bad request - please check your parameters',
							description:
								extractGoogleErrorMessage(error as { message?: string }) ??
								// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
								(typeof error?.message === 'string' ? (error.message as string) : undefined),
						});
					}

					throw error;
				}),
			};

View on GitHub (pinned to 5ac6606e81)