Pinecone Node.js SDK
Install and use the Pinecone Node.js and TypeScript SDK to manage indexes, upsert vectors, run semantic search, and call the Admin and Inference APIs.
Requirements
Section titled “Requirements”The Pinecone Node SDK requires TypeScript 4.1 or later and Node 18.x or later.
SDK versions
Section titled “SDK versions”SDK versions are pinned to specific API versions. When a new API version is released, a new version of the SDK is also released.
The mappings between API versions and Node.js SDK versions are as follows:
| API version | SDK version |
|---|---|
2026-04 |
v8.x |
2025-10 |
v7.x |
2025-04 |
v6.x |
2025-01 |
v5.x |
2024-10 |
v4.x |
2024-07 |
v3.x |
2024-04 |
v2.x |
When a new stable API version is released, you should upgrade your SDK to the latest version to ensure compatibility with the latest API changes.
Install
Section titled “Install”To install the latest version of the Node.js SDK, written in TypeScript, run the following command:
npm install @pinecone-database/pineconeTo check your SDK version, run the following command:
npm list | grep @pinecone-database/pineconeUpgrade
Section titled “Upgrade”If you already have the Node.js SDK, upgrade to the latest version as follows:
npm install @pinecone-database/pinecone@latestInitialize
Section titled “Initialize”Once installed, you can import the library and then use an API key to initialize a client instance:
import { Pinecone } from '@pinecone-database/pinecone';
const pc = new Pinecone({
apiKey: 'YOUR_API_KEY'
});To manage organizations, projects, API keys, and role-based access control, initialize an AdminClient with service account credentials instead. This requires v8.2.0 or later:
import { AdminClient } from '@pinecone-database/pinecone';
// Reads PINECONE_CLIENT_ID and PINECONE_CLIENT_SECRET from the environment
const admin = new AdminClient();You can also pass clientId and clientSecret directly to the constructor instead of setting environment variables.
Proxy configuration
Section titled “Proxy configuration”If your network setup requires you to interact with Pinecone through a proxy, you can pass a custom ProxyAgent from the undici library. Below is an example of how to construct an undici ProxyAgent that routes network traffic through a mitm proxy server while hitting Pinecone's /indexes endpoint.
import {
Pinecone,
type PineconeConfiguration,
} from '@pinecone-database/pinecone';
import { Dispatcher, ProxyAgent } from 'undici';
import * as fs from 'fs';
const cert = fs.readFileSync('path/to/mitmproxy-ca-cert.pem');
const client = new ProxyAgent({
uri: 'https://your-proxy.com',
requestTls: {
port: 'YOUR_PROXY_SERVER_PORT',
ca: cert,
host: 'YOUR_PROXY_SERVER_HOST',
},
});
const customFetch = (
input: string | URL | Request,
init: RequestInit | undefined
) => {
return fetch(input, {
...init,
dispatcher: client as Dispatcher,
keepalive: true, # optional
});
};
const config: PineconeConfiguration = {
apiKey:
'YOUR_API_KEY',
fetchApi: customFetch,
};
const pc = new Pinecone(config);
const indexes = async () => {
return await pc.listIndexes();
};
indexes().then((response) => {
console.log('My indexes: ', response);
});