n8n-io/n8n · error · NodeOperationError

Index ${index} not found

Error message

Index ${index} not found

What it means

NodeOperationError (with remediation description) thrown by the Pinecone vector store when the configured index name does not appear in `client.listIndexes()`. The node enumerates the user's Pinecone indexes and refuses to proceed if the selected one is not among them — this prevents a confusing 404 from Pinecone at query time.

Source

Thrown at packages/@n8n/nodes-langchain/nodes/vector_store/VectorStorePinecone/VectorStorePinecone.node.ts:113

	},
	async populateVectorStore(context, embeddings, documents, itemIndex) {
		const index = context.getNodeParameter('pineconeIndex', itemIndex, '', {
			extractValue: true,
		}) as string;
		const options = context.getNodeParameter('options', itemIndex, {}) as {
			pineconeNamespace?: string;
			clearNamespace?: boolean;
		};
		const credentials = await context.getCredentials('pineconeApi');

		const client = new Pinecone({
			apiKey: credentials.apiKey as string,
		});

		const indexes = ((await client.listIndexes()).indexes ?? []).map((i) => i.name);

		if (!indexes.includes(index)) {
			throw new NodeOperationError(context.getNode(), `Index ${index} not found`, {
				itemIndex,
				description: 'Please check that the index exists in your vector store',
			});
		}

		const pineconeIndex = client.Index(index);

		if (options.pineconeNamespace && options.clearNamespace) {
			const namespace = pineconeIndex.namespace(options.pineconeNamespace);
			try {
				await namespace.deleteAll();
			} catch (error) {
				// Namespace doesn't exist yet
				context.logger.info(`Namespace ${options.pineconeNamespace} does not exist yet`);
			}
		}

		await PineconeStore.fromDocuments(documents, embeddings, {

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Open the Pinecone console and confirm the index exists and is `Ready`.
  2. Pick the index from the node's dropdown (which calls listIndexes) instead of typing the name.
  3. Verify the API key credential corresponds to the same project that owns the index.
  4. Recreate the index if it was deleted, then re-run.

Example fix

// before
const indexes = ((await client.listIndexes()).indexes ?? []).map((i) => i.name);
if (!indexes.includes(index)) {
  throw new NodeOperationError(context.getNode(), `Index ${index} not found`, {
    itemIndex,
    description: 'Please check that the index exists in your vector store',
  });
}

// after: list available indexes and check Ready state
const indexList = (await client.listIndexes()).indexes ?? [];
const names = indexList.map((i) => i.name);
if (!names.includes(index)) {
  throw new NodeOperationError(context.getNode(), `Index ${index} not found`, {
    itemIndex,
    description: `Available indexes: ${names.join(', ') || 'none'}. Create the index in Pinecone if missing.`,
  });
}
const status = indexList.find((i) => i.name === index)?.status;
if (status?.ready === false) {
  throw new NodeOperationError(context.getNode(), `Index ${index} is not ready (state: ${status.state})`, { itemIndex });
}
Defensive patterns

Strategy: validation

Validate before calling

// Pre-flight: confirm the index exists and is Ready before the workflow runs.
async function ensurePineconeIndex(client: Pinecone, name: string): Promise<void> {
  const list = (await client.listIndexes()).indexes ?? [];
  const match = list.find((i) => i.name === name);
  if (!match) throw new Error(`Index ${name} not found. Available: ${list.map((i) => i.name).join(', ')}.`);
  if (match.status?.ready === false) throw new Error(`Index ${name} not ready (state: ${match.status.state}).`);
}

Type guard

function indexExists(names: string[], target: string): boolean {
  return names.some((n) => n === target);
}

Try / catch

const indexes = ((await client.listIndexes()).indexes ?? []).map((i) => i.name);
if (!indexExists(indexes, index)) {
  throw new NodeOperationError(context.getNode(), `Index ${index} not found`, {
    itemIndex,
    description: `Available: ${indexes.join(', ') || 'none'}. Create the index in Pinecone if missing.`,
  });
}

Prevention

When it happens

Trigger: Index name typed manually and misspelled; index was deleted in the Pinecone console after the workflow was saved; index is in a different project/region than the API key; index still being created (Pinecone reports `Ready: false`).

Common situations: Pinecone free-tier index auto-deleted after inactivity; wrong API key environment selected; region mismatch; index name has different casing (`MyIndex` vs `myindex`).

Related errors


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