## TL;DR

`` npm install @pinecone-database/pinecone `` Keep the key out of source; the constructor with no arguments is the safe default.

## Steps

1. ```
npm install @pinecone-database/pinecone
```

2. Index creation is asynchronous. Poll `pc.describeIndex('quickstart')` until `status.ready` is true, then:

```
const index = pc.index('quickstart');
await index.upsert([{ id: 'vec1', values: [0.1, 0.2, 0.3] }]);
```

3. The package moved from `pinecone-client` (old, v0) to `@pinecone-database/pinecone`. If `npm install pinecone-client` appears in generated code, it is a stale tutorial artifact; use the scoped package.
2. Server code that calls the browser bundle or vice versa: the SDK is isomorphic, but never ship your API key to the browser. Browser-direct calls also hit CORS limits; keep Pinecone calls server-side.
3. Top-level await needs ESM (`"type": "module"`) or an async wrapper. In CommonJS, wrap setup in an async main.

## When to use

You are seeing this: `` import { Pinecone } from '@pinecone-database/pinecone'; const pc = new Pinecone(); `` The SDK README shows this as option B: "Instantiate the client using the PINECONE_API_KEY environment variable". Use this skill when you run into "Pinecone Node.js SDK first setup: env key, client, serverless index".

## When not to use

If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.

## Versions

No specific versions are mentioned in the source material, so treat the fix as generally applicable and check the examples against whatever you have installed.

## Why this happens

The original report does not dig into a root cause. It documents the symptom and the fix that resolved it.
