n8n-io/n8n · error · Error

seed.endpoint "${endpoint}" matches no configured LangSmith

Error message

seed.endpoint "${endpoint}" matches no configured LangSmith tenant (home: ${homeHost}; secondary: ${usHost}). Set LANGSMITH_ENDPOINT_US + LANGSMITH_API_KEY_US, or omit endpoint to use the home tenant.

What it means

Thrown by configFor() when a seed's endpoint host matches neither the home tenant (LANGSMITH_ENDPOINT / LANGCHAIN_ENDPOINT) nor the secondary US tenant (LANGSMITH_ENDPOINT_US). The error lists both configured hosts so the developer can see the mismatch. The harness refuses to guess which tenant a key belongs to.

Source

Thrown at packages/@n8n/instance-ai/evaluations/harness/langsmith-seed.ts:108

		process.env.LANGSMITH_ENDPOINT ?? process.env.LANGCHAIN_ENDPOINT ?? US_DEFAULT_ENDPOINT,
	);
	const homeKey = process.env.LANGSMITH_API_KEY ?? process.env.LANGCHAIN_API_KEY ?? '';
	if (!endpoint) return { apiUrl: homeHost, apiKey: homeKey };

	const host = bareHost(endpoint);
	if (host === homeHost) return { apiUrl: host, apiKey: homeKey };

	const usHost = bareHost(process.env.LANGSMITH_ENDPOINT_US ?? US_DEFAULT_ENDPOINT);
	if (host === usHost) {
		const usKey = process.env.LANGSMITH_API_KEY_US ?? '';
		if (!usKey) {
			throw new Error(
				`seed.endpoint "${endpoint}" is the secondary (US) tenant but LANGSMITH_API_KEY_US is not set — refusing to read it with the home key. Set LANGSMITH_API_KEY_US.`,
			);
		}
		return { apiUrl: usHost, apiKey: usKey };
	}
	throw new Error(
		`seed.endpoint "${endpoint}" matches no configured LangSmith tenant (home: ${homeHost}; secondary: ${usHost}). Set LANGSMITH_ENDPOINT_US + LANGSMITH_API_KEY_US, or omit endpoint to use the home tenant.`,
	);
}

/** Workspaces a key can access on a host. Returns [] on any failure so the
 *  caller falls back to the key's default workspace. */
async function listAccessibleWorkspaces(
	apiUrl: string,
	apiKey: string,
): Promise<Array<{ id: string; name: string }>> {
	if (!apiKey) return [];
	try {
		const res = await fetch(`${apiUrl}/api/v1/workspaces`, { headers: { 'x-api-key': apiKey } });
		if (!res.ok) return [];
		const data: unknown = await res.json();
		if (!Array.isArray(data)) return [];
		return data.flatMap((entry) => {
			if (typeof entry !== 'object' || entry === null) return [];

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Set seed.endpoint to the home host, the US host, or omit it to default to home.
  2. If you need a third tenant, extend configFor() to recognize it (home/US are the two supported).
  3. Compare the offending endpoint against LANGSMITH_ENDPOINT and LANGSMITH_ENDPOINT_US in your env.
Defensive patterns

Strategy: validation

Validate before calling

// Validate the endpoint against the two known hosts before resolving config.
function assertKnownTenant(endpoint: string | undefined, homeHost: string, usHost: string): void {
  if (!endpoint) return;
  const host = bareHost(endpoint);
  if (host !== homeHost && host !== usHost) {
    throw new Error(`Endpoint ${endpoint} matches no configured LangSmith tenant (home: ${homeHost}, US: ${usHost}).`);
  }
}

Prevention

When it happens

Trigger: seed.endpoint (or LANGSMITH_ENDPOINT) is set to a host that is neither the home nor the US default; a typo in the host; LANGSMITH_ENDPOINT_US overridden to a different host while the seed points at the old US default.

Common situations: Typo in an endpoint URL; a custom LangSmith deployment not configured as either tenant; env drift between author and runner of a seed.

Related errors


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